Эта статья посвящена направлению вращения мотора. Продумывая направление движения машинки на радиоуправлении задался вопросом - как заставить машинку двигаться вперед и назад? Заставить двигаться в одну сторону - это не проблема, подаем напряжение на мотор и все. Но вот как быть движением в обратную сторону? Не разбирать же и не перевидывать провода. Тут меня спасае так называемый H-Bridge.
Итак, мы будем использовать внешний источник питания на 9V. В качестве ключей мы будем использовать транзисторы, а контролировать их базы будет Arduino, причем целых два пина: один вперед, а второй назад. Хочу заметить, что используются два типа транзисторов - p-n-p и n-p-n. Так же поставим резисторы на 10 кОм перед каждой базой транзистора для перестраховки. На схеме видно, что есть еще 4 диода. Сам мотор так же генерирует магнитное поле и в момент переключения может происходить разрядка. Такое поведение способно повредить транзисторы, а диоды этого не допустят.
На последок прикладываю картинку всего собранного и ссылку, где можно все это посмотреть.
H-Мост
Название появилось благодяря графическому изображению. Тут важно знать, ключи S1 и S2 или S3 и S4 никогда не должны замыкаться одновременно, иначе будет короткое замыкание. Если замыкать S1 и S4 или S3 и S2, то мотор будет вращаться в разные стороны, поскольку при такой схеме полярность в моторе будет меняться на противоположную. Понятно, что для машинок на радиоуправлении кнопками это делать нельзя. Этим должен управлять компьютер или Arduino, в нашем случае. По идее, оператор говорит "ехать вперед" или "ехать назад", а уже на уровне Arduino контролируется замыкание ключей.Схема для работы с мотором
Скеч
Скеч для Arduino я прокомменторовал достаточно подробно. Сама программа достаточно простая - сначала разгоняем моторчик в одну сторону, потом замедляем до полной остановки, затем снова разгоняем, но уже в другую сторону и так же замедляем. Этот процесс будет повторяться постоянно.int led = 13; // 13-й пин, пин светодиода на Arduino int cwPin = 9; // Пин для вращения вправо int cwwPin = 6; // Пин для вращения влево // Установка void setup() { // Говорим, что все пины - это вывод pinMode(led, OUTPUT); pinMode(cwPin, OUTPUT); pinMode(cwwPin, OUTPUT); } // Бесконечный цикл void loop() { int i = 0; // Переменная для цикла digitalWrite(led, HIGH); // Включаем светодиод digitalWrite(cwwPin, LOW); // Отключаем вращение влево for(i = 0; i <= 255; i++){ // Цикл ускорения вращения analogWrite(cwPin, i); // Разгоняем моторчик delay(15); // Ждем 15 мкСек } for(i = 255; i >= 0; i--){ // Цикл замедления вращения analogWrite(cwPin, i); // Замедляем моторчик delay(15); // Ждем 15 мкСек } delay(1000); // Ждем 1 сек digitalWrite(led, LOW); // Выключаем светодиод digitalWrite(cwPin, LOW); // Отключаем вращение вправо for(i = 0; i <= 255; i++){ // Цикл ускорения вращения analogWrite(cwwPin, i); // Разгоняем моторчик delay(15); // Ждем 15 мкСек } for(i = 255; i >= 0; i--){ // Цикл замедления вращения analogWrite(cwwPin, i); // Замедляем моторчик delay(15); // Ждем 15 мкСек } delay(1000); // Ждем 1 сек }
На последок прикладываю картинку всего собранного и ссылку, где можно все это посмотреть.
Комментариев нет:
Отправить комментарий