Это старая версия документа!
в состав нашей подвижной платформы входят:
В нашем случаем передвижная платформа оснащена гусеничным шасси, которое управляется 2-мя мотор-редукторами, каждый из которых отвечает за движение одной из гусениц.
В качестве микроконтроллера управления гусеничным шасси была использована плата Arduino Mega 2560. Она обладает большим количеством аналоговых, цифровых, коммуникационных и ШИМ выходов, что позволяет подключать к ней всё необходимое, для движения платформы, а также может пригодиться для дальнейшей разработки платформы.
Модуль драйвера двигателей L298N позволяет управлять двумя моторами постоянного тока, либо шаговым двигателем с потребляемым током до 2 Ампер.
Пары выводов (IN1, IN2) и (IN3, IN4) задают направление вращения моторов. Таким образом, подавая на выводы IN1, IN2 разноименные логические сигналы например (0 и 1) или (1 и 0) мы установим направление движения левого мотора. Установка одноименных логических сигналов любой из пар выводов например: (0 и 0) остановит движение мотора. Выводы ENABLE A, B (ENA привязан к IN1, IN2. ENB к IN3, IN4) отвечают за скорость движения моторов. Для регулировки скорости моторов, на «EN» выводы подается ШИМ (PWM) сигнал. Высокий логический уровень разрешает вращение моторов, низкий запрещает вне зависимости от состояния выводов «IN». На рис.а2 выводы «EN» замкнуты с высоким уровнем (+5V). Для этого на плате, рядом с выводами ENA и ENB находятся штырьки соединенные с +5V. Замыкаем выводы с помощью джамперов. В данном режиме мы не сможем регулировать скорость двигателей, они будут всегда вращаться в полную скорость (зато для управления экономится 2 вывода контроллера). Направление вращения будет задаваться по-прежнему, а вот для остановки в данном варианте, состояние выводов будет уже играть роль. Для остановки нужно будет подавать одноименные сигналы на выводы «IN».
В приведенном ниже скетче два мотора будут вращаться в обе стороны с плавным нарастанием скорости.
int IN1 = 5; // Input1 подключен к выводу 5 int IN2 = 4; // Input2 подключен к выводу 4 int IN3 = 3; // Input3 подключен к выводу 3 int IN4 = 2; // Input4 подключен к выводу 2 int ENA = 9; // EnableA подключен к выводу 9 int ENB = 3; // EnableB подключен к выводу 3 int i; void setup() { pinMode (EN1, OUTPUT); // объявляем наши выводы pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (EN2, OUTPUT); pinMode (IN4, OUTPUT); pinMode (IN3, OUTPUT); } void loop() { digitalWrite (IN1, LOW); // устанавливаем направление движения digitalWrite (IN2, HIGH); digitalWrite (IN3, LOW); digitalWrite (IN4, HIGH); for (i = 50; i <= 180; ++i) { analogWrite(EN1, i); analogWrite(EN2, i); delay(30); } analogWrite (EN1, 0); // останавливаем наши моторы analogWrite (EN2, 0); delay(500); digitalWrite (IN1, HIGH); // устанавливаем обратное направление digitalWrite (IN2, LOW); digitalWrite (IN3, HIGH); digitalWrite (IN4, LOW); for (i = 50; i <= 180; ++i) { analogWrite(EN1, i); analogWrite(EN2, i); delay(30); } analogWrite (EN1, 0); analogWrite (EN2, 0); delay(8000); }