Я пытаюсь управлять реле 5 В (SRD-05VDC-SL-C) с помощью ATtiny85. У меня загружен простой скетч (пример Blink без задержки):
const int ledPin = 0; // the number of the LED pin
int ledState = LOW; // ledState used to set the LED
unsigned long previousMillis = 0; // will store last time LED was updated
const long interval = 1000; // interval at which to blink (milliseconds)
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState);
}
}
Все это питается от литий-ионной батареи 18650 (3,7–4,2 В), а измеренное входное напряжение составляет в среднем 3,88 В. Вот краткий набросок того, как выглядит схема:
Некоторые проблемы возникают БЕЗ подключенного двигателя:
Вы не должны управлять катушкой реле напрямую от вывода микроконтроллера.
Вместо этого я бы рекомендовал использовать NPN-транзистор между GND (эмиттер) и катушкой (коллектор), а затем напрямую подключить другую сторону катушки к положительному источнику питания.
Подключите диод параллельно катушке (т.е. катод диода к положительному источнику питания, анод диода к коллектору транзистора). Это «обратный» диод для защиты от обратной ЭДС, которую вы получаете с катушечными переключателями.
Поместите что-то вроде резистора на 330 Ом последовательно между базой транзистора и выводом микроконтроллера. Это ограничивает ток в базе транзистора до уровня, который находится в пределах возможностей микроконтроллера.
Это самый распространенный известный мне способ управления реле с помощью контакта GPIO микроконтроллера.
Порекомендуйте добавить в этот скетч некоторые последовательные отладочные данные. Двигатели + микро без какого-либо типа изоляции питания в норме равны микроконтроллеру, который постоянно перезагружается. Последовательный вывод количества циклов может показать, что он просто продолжает сбрасываться.
Вам, вероятно, понадобится несколько конденсаторов для фильтрации. Может даже LC-фильтр.
Выходная цепь процессора не является переключателем с нулевым сопротивлением. Это пара полевых МОП-транзисторов, которые имеют конечное сопротивление при включении, и разница в напряжении, которую вы видите, связана с падением напряжения на МОП-транзисторе из-за тока, который вы пытаетесь получить от выходного контакта. В таблице данных для ATTiny должен быть указан максимальный рекомендуемый выходной ток и падение напряжения при этом токе.
У вас должен быть выходной контакт, управляющий транзистором или полевым транзистором, который, в свою очередь, управляет реле. Это должно позволить почти полное Vcc быть доступным для управления реле.
ПГТ
ПГТ
викатку