Печать

Предлагаем Вам познакомиться с проектом инкубатора, выполненным младшими школьниками в ЦМИТ Бионик-лаб ГДМ. Над проектом работали 7 мальчиков и девочек в возрасте от 7-ми до 15 лет. Младшим детям помогали их родители. Инкубатор, в итоге, у каждого участника проекта получился собственной конструкции. 

Управление яркостью свечения ламп накаливания или светодиодных прожекторов, температурой паяльника и др. устройствами большой мощности сопряжено с управлением большими токами. Управление большим током нагрузки аналоговым методом приводит к перегреву регулирующего элемента и к снижению коэффициента полезного действия (КПД) регулирующего прибора.

Управление мощностью лампы накаливания, применяемой для обогрева инкубатора, мы осуществляем регулятором с широтно импульсной модуляцией (ШИМ). Предлагаем Вам познакомиться со схемой ШИМ регулятора мощности нагрузки с использованием Ардуино модуля.

Принципиальная электрическая схема инкубатора

Рис. 1. Принципиальная электрическая схема ШИМ регулятора мощности нагрузки с использованием Ардуино модуля.

ШИМ управление мощностью нагрузки с использованием микроконтроллеров AVR оправдано как экономически так и функционально. Экономически – так как микроконтроллеры AVR самые дешёвые. Функционально – на программируемых микроконтроллерах можно реализовать не только ручной режим управления, но и автоматический и полуавтоматический.

В  системе с ручным управлением мощностью нагрузки резистор  R1, см. рис. 1 является задатчиком, с его помощью мы задаём электрическую мощность в нагрузке, а микроконтроллер, изменяя ширину импульсов на выходе D9 меняет среднее напряжение и ток в нагрузке. Так как мощности выходов микроконтроллера недостаточно для подключения нагрузки, например лампочки, мы подключаем лампочку через мощный транзистор Q1. Использование транзистора, работающего в ключевом режиме, на выходе нашей схемы позволяет нам запитать нагрузку более высоким напряжением +Vcc. Например, если в качестве нагрузки мы используем автомобильную лампочку на 12 Вольт, мы можем запитать нашу схему через клемму +Vcc напряжением 12 Вольт. Напряжение питания для платы Arduino понижает до +9 Вольт транзистор Q2.

В полу-автоматической системе управления мощностью нагрузки резистором R1, см. рис. 1, выставляют задание, а дополнительные датчики, подключаемые к аналоговым входам микроконтроллера непрерывно измеряют регулируемые параметры системы. Микроконтроллер, при этом, поддерживает неизменным заданный человеком параметр, увеличивая или уменьшая ширину импульсов на выходе D9.

Например, ваша схема предназначена для поддержания заданной температуры жала паяльника. В ручном режиме в можете задать максимальную температуру жала, но как только вы прикоснётесь жалом паяльника к металлу, температура жала упадёт. В системе с ручным управлением нет обратной связи. Микроконтроллер не имеет информации о реальной температуре. В полуавтоматической системе в качестве датчика мы подключим датчик температуры. Теперь, микроконтроллер будет сравнивать реальную температуру жала паяльника с заданной с помощью резистора R1. У микроконтроллера в полуавтоматической системе появилась возможность поддерживать заданную температуру при изменяющихся внешних условиях.

В автоматической системе, вместо резистора R1 можно подключить к микроконтроллеру датчик, а микроконтроллер сможет автоматически поддерживать заданный в программе параметр.

Например, если мы будем использовать нашу схему рис. 1 для управления работой инкубатора и выведения птицы с использованием датчика температуры, то микроконтроллер сможет устанавливать и поддерживать оптимальную температуру в инкубаторе для для разных временных интервалов инкубации яиц. При этом, заданная температура в инкубаторе будет поддерживаться в независимости от внешних условий, как то отрывание крышки инкубатора, включение вентиляции и другие.

На схеме рис. 1 транзистор Q2 включён по схеме эмиттерного повторителя и снижает напряжение питания 12 В до 7,5 В для питания платы Arduino.

#include <Servo.h>
#define lamp 3                           // лампа нагреватель
#define led 13                           // индикатор положения сервопривода
#define sensor 2                         // контроль срабатывания термореле
Servo servo1;                            // объект Servo привод
int x = 55;                              // ток 0,3 А
int y = 144;                             // ток 0,6 А
const int a[3] {40, 140, 50};  // угол поворота сервопривода (вперёд, назад, среднее)
boolean z = 0;                           // сохранённое состояние термореле
boolean q = 0;                           // положение сервопривода (см. угол поворота)

void setup()
{
  servo1.attach(5);                      // pin сервопривода
  servo1.write(a[0]);                    // сервопривод в исходное состояние
  delay(1000);
  pinMode(led, OUTPUT);
  pinMode(lamp, OUTPUT);
  pinMode(sensor, INPUT_PULLUP);
  for (int i = 0; i < y; i++) {          // включаем обогрев плавно
    analogWrite(lamp, i);
    delay(50);
  }
}
void loop()
{
  if (z != digitalRead(sensor)) {
    z = digitalRead(sensor);
    if (z) {                             // термореле отключилось, понижаем температуру
      for (int i = y; i > x; i--) {      // уменьшаем обогрев плавно
        analogWrite(lamp, i);
        delay(50);
      }
    }
    else {                                // термореле включилось, повышаем температуру
      q = !q; // поворот сервопривода (движение воздуха дополнительно повышает температуру)
      for (int i = a[!q]; i != a[q]; i = i + q - !q) {
        servo1.write(i);
        delay(20);
      }
      digitalWrite (led, q);              // переключаем индикатор положения сервопривода
      for (int i = x; i < y; i++) {       // повышаем обогрев плавно
        analogWrite(lamp, i);
        delay(50);
      }
    }
  }
  delay(20);
}

Рис. 2. Программа

incubator

Рис. 2. Инкубатор