Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Monster Moto Shield

2016-03-25

Все статьи →

Петр

Мой вариант подключения Monster Moto Shield к ардуино Mega 2560 и управление высокотоковыми моторами через джойстики.

Соединяем такие пины шилда и контроллера:
 
7 8 5
4 9 6 
 
И понятное дело соединяем пины питания. Кроме того на шилд подаем отдельное питание – для высокотоковых моторов.
Первая строка (три пина) будет управлять мотором А шилда, а вторая – мотором Б шилда.
Первые два пина характеризируют полярность подключения мотора и дают возможность управлять направлением вращения мотора (это делается меняя значения LOW и HIGH),
а третий пин через ШИМ управляет скоростью вращения мотора.
Для запуска мотора надо на первые два пина подать разные логические значения LOW и HIGH, а для смены направления вращения надо их поменять местами на HIGH и LOW. При подаче одинаковых значений мотор остановится.
Значения ШИМ лежат в пределах от 0 до 255.
Еще подключим два джойстика для управления моторами по отдельности. На видео упрощенный вариант управления двумя моторами (они будут  синхронными) одним джойстиком: 
Подключаем пины питания джойстиков и один пин оси, например по оси х, соединяем с аналоговым входом ардуино – пин 3 и пин 4 от каждого джойстика.
В эксперименте была замечена некорректная работа моторов в своих средних оборотах (были перебои) – оказалось что частота замыкания ламелей мотора совпадала с частотой ШИМ (моторы колекторные), чтобы этого избежать пришлось увеличить частоту ШИМ.
Дальше представлю скетч, в котором комментарии дополнительно раскрывают все нюансы программы:
 
#define pwmmax 255 //значение максимальной мощности моторов - для возможности ее уменьшения програмно
int y = 0; //значение шим одного мотора
int x = 0;  //значение шим другого мотора
void setup() {
   //TCCR0B = TCCR0B & 0b11111000 | 0x01;
   //TCCR2B = TCCR2B & 0b11111000 | 0x01;
   //TCCR1B = TCCR1B & 0b11111000 | 0x01;
   TCCR3B = TCCR1B & 0b11111000 | 0x01; //увеличиваем частоту ШИМ для наших управляющих пинов
   TCCR4B = TCCR1B & 0b11111000 | 0x01;
   pinMode(4, OUTPUT);  //все пины устанавливаем как выход
   pinMode(5, OUTPUT);
   pinMode(6, OUTPUT);
   pinMode(7, OUTPUT);
   pinMode(8, OUTPUT);
   pinMode(9, OUTPUT);
   digitalWrite(4, LOW);   //все пины устанавливаем на логический ноль - моторы стоят
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);
   digitalWrite(7, LOW);
   digitalWrite(8, LOW);
   digitalWrite(9, LOW);
}
void loop() {
   int yVal = analogRead(4);  //читаем значения с джойстиков
   int xVal = analogRead(3);
   if (yVal < 1023 && yVal > 524)   //условие когда мы увеличиваем скорость мотора вперед для одного мотора
      y = map (yVal,524,1023,0,pwmmax);  //переводим диапазон значений джойстика в диапазон значений шим
   digitalWrite(8, LOW);  //вращение вперед
   digitalWrite(7, HIGH);    //вращение вперед
   analogWrite(5, y);   //включаем мотор на скорость у в выбранном направлении
   if (xVal < 1023 && xVal > 524)  //условие когда мы увеличиваем скорость мотора вперед для другого мотора
      x = map (xVal,524,1023,0,pwmmax);
   digitalWrite(9, HIGH);
   digitalWrite(4, LOW);    //вращение вперед
   analogWrite(6, x);
   if (yVal < 500 && yVal > 0)  //условие когда мы увеличиваем скорость мотора назад для одного мотора
        y = map (yVal,500,0,0,pwmmax);
   digitalWrite(7, LOW);
   digitalWrite(8, HIGH);   //вращение назад
   analogWrite(5, y);
   if (xVal < 500 && xVal > 0)   //условие когда мы увеличиваем скорость мотора назад для другого мотора
        x = map (xVal,500,0,0,pwmmax);
   digitalWrite(4, HIGH);
   digitalWrite(9, LOW);  //вращение назад
   analogWrite(6, x);
}
На все дополтительные вопросы отвечу в комментариях под видео.

Решил предоставить вам видео материал по подключению и логике работы Monster Moto Shield в моем исполнении, думаю это будет полезно другим любителям ардуино.

 

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Monster Moto Shield"
4 из 5
сделана на основе 1 оценки 1 клиентских отзыва.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Павел
27.11.2020 12:49:50
Не совсем понятна схема подключения. Можно разрисовать схематически? И еще, возможно ли дополнительными резисторами ограничивать скорость вращения мотора?Если можно, ответ на p.veselkov@gmail.com
оплата картами Visa и MasterCard