Данный пример демонстрирует как управлять двигателем постоянного тока с помощью [[Arduino]]. Код примера демонстрирует постепенный '''"разгон"''' и замедление двигателя постоянного тока.
Данный пример демонстрирует как управлять двигателем постоянного тока с помощью [[Arduino]]. Код примера демонстрирует постепенный "разгон" и замедление двигателя постоянного тока.
Данный пример демонстрирует как управлять двигателем постоянного тока с помощью Arduino. Код примера демонстрирует постепенный "разгон" и замедление двигателя постоянного тока.
Дополнительный источник питания(например крона 9В)
Цепь
При сборке схемы обратите внимание на распиновку транзистора - эмитор соединяется с минусом, база через резистор на 1кОм соединяется с 9 выходом Arduino, а коллектор
с одним из выводов двигателя, другой вывод двигателя соединяется с плюсом источника питания на 9В. Параллельно двигателю подключается керамический конденсатор(для фильтрации помех от работы двигателя) и диод(для защиты блока питания от обратного напряжения при выключении двигателя). Не забудьте объединить минус источника питания и GNDArduino.
Двигатели постоянного тока, потребляют ток больше чем может выдать Arduino. Также они создают опасные выбросы напряжения. Для этого необходимо изолировать двигатель постоянного тока от платы Arduino и запитывать его через отдельный источник питания. Использование транзистора позволит безопасно управлять двигателем используя ШИМ. Транзистор работает как простой электрически управляемый переключатель. Каждый биполярный транзистор имеет три контакта: эмиттер, база, коллектор. Между коллектором и эмиттером течет большой ток, при малом токе базы. Изменяя ток базы, мы будем регулировать ток через коллектор-эмиттер и менять скорость вращения двигателя. Т.к. двигатель обладает инерцией, быстрое переключения транзистора с помощью ШИМ приведет к регулировке скорости вращения.
Код
#define MOTOR 9 //используем 9 вывод для управления DC-мотором voidsetup(){pinMode(MOTOR,OUTPUT);//конфигурируем 9-вывод как выход}voidloop(){for(inti=0;i<256;i++){analogWrite(MOTOR,i);//в цикле, выдаем постепенно увеличивающуюся величину напряжения на 9 выход, тем самым "разгоняя" мотор delay(10);//ожидание 10 мкс}delay(2000);//ожидание 2000 мкс for(inti=255;i>=0;i--){analogWrite(MOTOR,i);//в цикле, выдаем постепенно уменьшающуюся величину напряжения на 9 выход, тем самым "тормозя" мотор delay(10);//ожидание 10 мкс}delay(2000);//ожидание 2000 мкс}