1. Форумный чат переехал в Telegram.
  2. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

Инкубатор под управлением ардуино

Тема в разделе "Arduino", создана пользователем Ралиф, 22 фев 2015.

  1. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.842
    Симпатии:
    311
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    От чего нагреватель питается? Если от сети 220В - то нельзя, убьет:)
  2. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.262
    Симпатии:
    328
    Адрес:
    Талгар
    надо поставить мосфет и реле, мосфет включает реле, а реле 220, и всё :)
  3. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Нагреватель питается от 12 вольт, ток нагревателя около 6 ампер, инкубатор полностью будет питаться от 12 вольт.
  4. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.262
    Симпатии:
    328
    Адрес:
    Талгар
    тогда можно мосфет n-channel поставить например IRF3205
  5. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Есть такой транзистор, только как его подключить? Там от ардуины надо будет резистор какой то цеплять или пару резисторов или на прямую без ничего?
  6. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.262
    Симпатии:
    328
    Адрес:
    Талгар
    резистор на затвор полюбому нужен, иначе мосфет сгорит, 1кОм вполне хватит, исток на землю а сток к нагревателю,
    второй конец нагревателя на +12в
  7. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Подключил часы, датчики температуры, датчики влажности, запустил терморегуляцию и влаго регуляцию. Теперь надо разобраться с поворотом лотка из одной стороны в другую с интервалом хотя бы два или три часа. Еще желательно запустить отсчет дней с момента закладки яиц. Примерно как это вписать в скетч?
    Код:
    #include <Wire.h>
    #include <DS1307.h>
    #include <LiquidCrystal_I2C.h>
    #include <OneWire.h>//DS18B20 temperature sensor support
    #include <DallasTemperature.h>//DS18B20 sensor pin
    #include "DHT.h"
    DHT dht;
    #define ONE_WIRE_BUS 4
    #define heater_pin 3                  // нагреватель
    #define humidifer_pin 2               // увлажнитель
    
    
    OneWire oneWire(ONE_WIRE_BUS);
    
    DallasTemperature sensor(&oneWire);
    
    LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
    
    
    
    void setup()
    {
      lcd.init();
      lcd.backlight();
      sensor.begin();
      Wire.begin();
      dht.setup(7);
      pinMode(heater_pin, OUTPUT);
      pinMode(humidifer_pin, OUTPUT);
      lcd.print("Incubator" );
      lcd.setCursor(1, 1);
      lcd.print("Ralif");
      delay(3000);
      }
    
    void loop()
    {
      sensor.requestTemperatures();
      //Read first sensor
      float temp = sensor.getTempCByIndex(0);
      //Print first sensor results
      lcd.setCursor (0, 0 );
      lcd.print("T");
      lcd.print(temp);
      lcd.print("      ");
      (dht.getMinimumSamplingPeriod());
    
      float humidity = dht.getHumidity();
      float temperature = dht.getTemperature();
      lcd.setCursor (0, 1 );
      lcd.print("H");
      lcd.print(humidity);
      lcd.print("      ");
      lcd.setCursor (7, 1 );
      lcd.print("T");
      lcd.print(temperature);
      lcd.print("      ");
    
     if (temp<30)//условия терморегуляции
     {
     digitalWrite(heater_pin,HIGH);
     lcd.setCursor(15, 1);
     lcd.print("^");//вывод инфо состояния на LCD
     //delay (500);
     }
     else
     { 
     digitalWrite(heater_pin,LOW);
     lcd.setCursor(15, 1);
     lcd.print("~");//вывод инфо на LCD
     }
    
     if (humidity<55)//условия терморегуляции
     {
     digitalWrite(humidifer_pin,HIGH);
     lcd.setCursor(14, 1);
     lcd.print("#");//вывод инфо состояния на LCD
     //delay (500);
     }
     else
     { 
     digitalWrite(humidifer_pin,LOW);
     lcd.setCursor(14, 1);
     lcd.print("~");//вывод инфо состояния
     }
     {
     lcd.setCursor(7, 0);
     lcd.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
     lcd.print(":");
     lcd.setCursor(10,0);
     lcd.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
     }
    }
    
    
  8. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.523
    Симпатии:
    344
    Адрес:
    Алматы
    В #arduino есть функция millis(), которая использует Timer0 и считает время от запуска МК в миллисекундах, сбрасывается он кажется раз в 50 дней или что-то около того. Считать как-то так:
    Код:
    unsigned long timeStart = millis();
    .... // код твоей программы
    unsigned long timeStop = millis();
    unsigned long interval = timeStop - timeStart; // время между стартом программы (кода) и программным стопом какого-либо процесса
  9. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    В принципе все понятно, только мне не понятно. Допустим пишу я это в loop
    unsigned long timeStop = millis();
    unsigned long interval = timeStop - timeStart;
    А дальше что писать? Надо забивать какие то цифры? И как это дело опять вывести на lcd?
  10. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.523
    Симпатии:
    344
    Адрес:
    Алматы
    Вводишь интервал и считаешь время millis(). Потом просто проверяешь условие
    Код:
    if (timeStop - timeStart > interval) {...}
  11. Валерий

    Валерий Модератор Команда форума

    Сообщения:
    9
    Симпатии:
    11
    Если еще нужна библиотека для DHT, то вот: СКАЧАТЬ
    Вот пример кода: GITHUB
  12. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Пока не нужна но спасибо за наводку, я так и не могу осилить свой скетч мозгов не хватает. Нашел в инете классный скетч только опять проблемы с компиляцией, буду разбираться. Есть также несколько сложностей первое в скетче использован lcd 2004 а у меня в ниличии только 1602 следущее несоответствие это в скетче использован датчик влажности sht10 а у меня в наличии dht22. И так же с поворотом лотка до конца не понятно как организовать.
  13. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Вот он, как код не вставляется слишком много символов

    Вложения:

  14. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Тот скетч который нашел не получается закомпилировать, свой скетч не могу дописать. Нашел не большую инструкцию чтоб сделать поворот лотка по таймеру.
    В начале кода объявляем три переменные:

    int povorot = 9;
    unsigned long currentTime;
    unsigned long loopTime;

    В секции void setup() добавляем:

    pinMode(povorot, OUTPUT);
    currentTime = millis();
    loopTime = currentTime;

    И в цикле loop() управляем выходом:

    currentTime = millis();
    if(currentTime >= (loopTime + 3600)){
    digitalWrite(povorot, !digitalRead(povorot));
    loopTime = currentTime;
    }

    Значение +3600 задает интервал поворота в миллисекундах. Тут взято 3600 для наглядности, то есть поворот происходит каждые 3,6 секунды, видно как зажигается светодиод выхода. Для поворота раз в час нужно задать 3600000. Все очень просто!!!


    Вписал это все в свой код но с ардуины не идет никакой сигнал на поворот толи ошибку допустил толи ардуино время не отсчитывает
  15. tohagtn

    tohagtn Частый гость

    Сообщения:
    11
    Симпатии:
    0
    Добрый день! решил тоже заняться изготовлением инкубатора на Ардуино. Почему Вы не хотите использовать в качестве механизма переворота сервопривод?
  16. tohagtn

    tohagtn Частый гость

    Сообщения:
    11
    Симпатии:
    0
  17. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Сервопривод говорят слабый для инкубатора из за этого не стал с этим заморачиватся. Я для переворота использовал обычный маленький моторчик приварил к нему шпильку с резьбой а к лотку приварил нормально крутит впринципе.
    Можно и такое использовать только зря почем ток кушать будет, я поставил кулер на ванночку с водой влажность поднимает и тока мало ест. На данный момент инкубатор собран заложил яйца буду ждать результатов тестирования. На дисплей вывел показания температуры с двух датчиков потом влажность время и напряжение, куча настроек через меню выбирается кнопками на самом инкубаторе, температура, влажность, время поворота, сигнализация, аварийное проветривание. Ну и плюс ко всему дополнительный нагреватель ну и также имеется пид регулятор. Пока все работает четко.
  18. tohagtn

    tohagtn Частый гость

    Сообщения:
    11
    Симпатии:
    0
    по поводу сервы, я думал код легче писать. я не программист. а, сервы у меня при повороте руками держать тяжело. Скинте фотки привода пожалуйста. Что вы взяли за основу , ящик. Я хочу для начала 800 мм пенопласт из под рыбы.
  19. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Фотки не могу скинуть когда собирал не фотографировал а сейчас яйца заложены, как вылупятся попробую зафоткать и видео попробую записать. Под обычный мотор легче думаю код написать чем под серву.
  20. tohagtn

    tohagtn Частый гость

    Сообщения:
    11
    Симпатии:
    0
    Да понятно нельзя трогать!!!

Поделиться этой страницей