Ардуино контроль температуры и управление двигателем

Управление щёточными моторами с Arduino

Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер – логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. “Драйвером” мотора могут быть разные железки, рассмотрим некоторые из них.

При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние) , прямо как светодиод:

При помощи двойного модуля реле (или просто двух реле) можно включать мотор в одну или другую сторону, а также выключать:

Купить модуль реле можно на Aliexpress.

Мосфет

Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость) .

Вместо “голого” мосфета можно использовать готовый китайский модуль:

Купить мосфет модуль можно на Aliexpress.

Реле и мосфет

Если объединить реле и мосфет – получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:

Специальный драйвер

Лучше всего управлять мотором при помощи специального драйвера, они бывают разных форм и размеров и рассчитаны на разное напряжение и ток, но управляются практически одинаково. Рассмотрим основные драйверы с китайского рынка:

Драйвер Vmot Ток (пик)

Стоимость

Aliexpress
L298N 4-50V 1A (2A) 100р Купить
MX1508 2-9.6V 1.5A (2.5A) 20р Купить
TA6586 3-14V 5A (7A) 100р (чип 30р) Купить, купить, купить чип
L9110S 2.5-12V 0.8A (1.5A) 50р Купить
TB6612 4.5-13.5V 1.2A (3A) 80р Купить
BTS7960 5.5-27V 10A (43A) 300р Купить
Большой 3-36V 10A (30A) 700р Купить

Остальные драйверы смотри у меня вот тут. Схемы подключения и таблицы управления:




Пины направления управляются при помощи digitalWrite(pin, value) , а PWM – analogWrite(pin, value) . Управление драйвером по двум пинам может быть двух вариантов:

Моторы переменного тока

Мотором переменного тока (220V от розетки) можно управлять при помощи диммера на симисторе, как в уроке про управление нагрузкой.

Библиотеки

У меня есть удобная библиотека для управления мотором – GyverMotor, документацию можно почитать вот здесь. Особенности библиотеки:

  • Контроль скорости и направления вращения
  • Работа с ШИМ любого разрешения
  • Программный deadtime
  • Отрицательные скорости
  • Поддержка всех типов драйверов
  • Плавный пуск и изменение скорости
  • Режим “минимальная скважность”

Помехи и защита от них

Индуктивный выброс напряжения

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

Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:

  • При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
  • При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx ) или диоды Шоттки (например серии 1N58xx).
  • Максимальный ток диода должен быть больше или равен максимальному току мотора.
  • Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
  • В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
  • Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный “паразитный” диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!

Помехи от щёток

Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.

Помехи по питанию, просадка

Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.

Разделение питания

Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.

Экранирование

В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.

Видео

Источник

Контроль температуры в серверных шкафах с помощью Ардуино

В одном из предыдущих постов я рассказывал о проектах созданных пользователями программы FLProg. А сегодня я хочу рассказать о системе созданной мною самим.

Серверная на станции где я работаю, как и положено находится в отдельном помещении. Для охлаждения серверов там установлено два кондиционера. К сожалению это обычные бытовые модели, так что регулярно то один, то другой находятся в ремонте. Руководство отдела, зная о моей работе над проектом FLProg, предложило создать систему мониторинга температуры в серверных шкафах, и управления работой их вентиляторов. Информация о текущей температуре должна отображаться на табло в помещении дежурных инженеров, и в случае повышения температуры свыше определенного порога выдавать звуковую сигнализацию. Я взялся за эту работу, и вот что получилось…

Ситуация осложнялась тем что мы находимся где то в 200 километров от ближайшей цивилизации, и собирать систему пришлось из тех запасов что у меня были с собой, плюс что то из старого хлама из кладовок. В наличии у меня были:

1. Arduino Nano
2. Датчик температуры DS18B20
3. Два датчика температуры и влажности DHT-22
4. Четырехстрочный дисплей на 20 символов в строке с платой I2C

Была разработана схема устройства: Принципиальная схема

Потом разработаны печатные платы:


Основная плата в программе Sprint-Layout_6


Кнопочная плата в программе Sprint-Layout_6

Утюга и специальной бумаги для технологии ЛУТ не нашлось так что пришлось вспоминать детство и рисовать платы ручками лаком, выпрошенным у уборщицы.




После первоначальной сборки и заливки пробного скетча возникли первые проблемы. Во первых, реле отказались срабатывать, хотя на катушки приходило 5 вольт. Перед установкой на плату я естественно проверял сопротивление катушек и подавал на них питание с проверкой сработки. Оказалось что реле очень хитрое. Хотя внутри и нет диодов (в обе стороны катушки прозваниваются одинаково), для них играет роль полярность питания на катушках. Скорее всего, у них подмагниченный якорь для снижения тока срабатывания. Из-за этого, релюшки переехали на другую сторону платы. После переезда релюшек все нормально заработало.


Затем была разработана окончательная прошивка для платы.

Как работает система.
При подаче питания на контроллер, из EEPROM вычитываются уставки порогов включения ступеней вентиляторов шкафов, и аварийной сигнализации.
Каждые 5 секунд считываются данные из датчиков и отображаются на дисплее. При превышении температуры в шкафу первого порога включается первый вентилятор, второго порога – второй, а при превышении порога аварийной температуры включается двухтональная звуковая сигнализация и начинает моргать подсветка дисплея. Квитирование аварии происходит при нажатии любой из кнопок. При падении температуры ниже уставки отключения вентиляторов оба вентилятора останавливаются.
При каждом нажатии кнопки “Меню” на экран дисплея выводится последовательно все уставки. Каждую уставку можно изменить кнопками “Прибавить” и “Убавить”. При этом новое значение уставки сразу записывается в EEPROM.
Если в течение 1 минуты не производить никаких действий с кнопками происходит переход на основной экран индикации температуры
При нажатии сразу трех кнопок все уставки сбрасываются на начальные значения, записанные в программе. Это необходимо при первом запуске контроллера, когда в EEPROM находятся непредсказуемые значения. У меня, например, аварийная температура оказалась 387 градусов, и я бы очень устал ее сваливать до 35 градусов нажатиями на кнопку “Убавить”.
Запуск системы на столе и прогрев датчиков феном показал работоспособность программы.

Были установлены датчики и проложены кабеля до шкафов




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

Прошу не обращать внимание на оригинальное крепление дисплея, но я посчитал слишком жирно ставить четырехстрочный дисплей на постоянную основу, и на следующей вахте заменю его на двухстрочный.
На текущий момент система работает третью неделю без зависанй и отказов 24/7.
Теперь немного гик-порно. Я не удержался и распотрошил сгоревший датчик DHT-22. Внутри он оказался очень умным.

Источник

Читайте также:  Плавают обороты на холодном двигателе ваз 21074 инжектор
Adblock
detector