Инструменты пользователя

Инструменты сайта


doc:1308:mgul.130080.001

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:1308:mgul.130080.001 [2017/02/08 16:38]
toha5057
doc:1308:mgul.130080.001 [2018/04/28 23:47] (текущий)
Строка 1: Строка 1:
  ​=====Самоходная платформа для тестирования и отработки блоков полезных нагрузок=====  ​=====Самоходная платформа для тестирования и отработки блоков полезных нагрузок=====
 +
 +^ No  ^ Обозначене ​ ^ Наименование ​                                                 ^ Кол-во ​ ^ Примечание ​   ^
 +|     ​| ​            | **Документация** ​                                             |         ​| ​              |
 +|     ​| ​            | [[doc:​1308:​MGUL.130080.001e4|Схема подключения]] ​             |         ​| ​              |
 +|     ​| ​            | [[doc:​1308:​MGUL.130080.001i1|Ультразвуковой датчик HC-SR04]] ​ |         ​| ​              |
 +|     ​| ​            | Драйвер моторов L293n                                         ​| ​        ​| ​              |
 +|     ​| ​            | Bluetooth модуль HC-06                                        |         ​| ​              |
 +|     ​| ​            | Raspberry pi3                                                 ​| ​        ​| ​              |
 +|     ​| ​            | **Сборочные единицы** ​                                        ​| ​        ​| ​              |
 +|     ​| ​            | Шасси гусеничное ​                                             | 1       ​| ​              |
 +|     ​| ​            | Аккумуляторная батарея ​                                       | 1       ​| ​              |
 +|     ​| ​            | Блок бортовой телеметрической системы ​                        | 1       ​| ​              |
 +|     ​| ​            | Power bank (raspberry) ​                                       |         ​| ​              |
 +|     ​| ​            | Модуль поворотной платформы ​                                  | 1       ​| ​              |
 +|     ​| ​            | **Детали** ​                                                   |         ​| ​              |
 +|     ​| ​            | Стойки ​                                                       | 4       ​| ​              |
 +|     ​| ​            | **Стандартные изделия** ​                                      ​| ​        ​| ​              |
 +|     ​| ​            | Винты, гайки, саморезы ​                                       |         ​| ​              |
 +|     ​| ​            | Ультразвуковой дальномер ​                                     | 1       ​| ​              |
 +|     ​| ​            | Bluetooth модуль ​                                             | 1       ​| ​              |
 +|     ​| ​            | Микроконтроллер arduino mega                                  | 1       ​| ​              |
 +|     ​| ​            | Драйвер для управления моторами ​                              | 1       ​| ​              |
 +|     ​| ​            | **Материалы** ​                                                ​| ​        ​| ​              |
 +|     ​| ​            | Фанера/​платик/​оргстекло ​                                      | 2       | 400х250х5 мм  |
 +|     ​| ​            | Соединительные провода ​                                       | 10 м    |               |
 +|     ​| ​            | Изолента ​                                                     | 2 м     ​| ​              |
 +|     ​| ​            | **Программное обеспечение** ​                                  ​| ​        ​| ​              |
 +|     ​| ​            | Скетч для работы подвижной платформы ​                         |         ​| ​              |
 +
 в состав нашей подвижной платформы входят:​ в состав нашей подвижной платформы входят:​
   * Микроконтроллер arduino mega    * Микроконтроллер arduino mega 
Строка 24: Строка 53:
 ====Модуль драйвера двигателей L298N==== ====Модуль драйвера двигателей L298N====
 Модуль драйвера двигателей L298N позволяет управлять двумя моторами постоянного тока, либо шаговым двигателем с потребляемым током до 2 Ампер. Модуль драйвера двигателей L298N позволяет управлять двумя моторами постоянного тока, либо шаговым двигателем с потребляемым током до 2 Ампер.
 +
 +{{ :​doc:​1308:​description02.png?​500 | }}
 +
 +{{ :​doc:​1308:​description06.png?​500 | }}
  
 Пары выводов (IN1, IN2) и (IN3, IN4) задают направление вращения моторов. Таким образом,​ подавая на выводы IN1, IN2 разноименные логические сигналы например (0 и 1) или (1 и 0) мы установим направление движения левого мотора. Установка одноименных логических сигналов любой из пар выводов например:​ (0 и 0) остановит движение мотора. Пары выводов (IN1, IN2) и (IN3, IN4) задают направление вращения моторов. Таким образом,​ подавая на выводы IN1, IN2 разноименные логические сигналы например (0 и 1) или (1 и 0) мы установим направление движения левого мотора. Установка одноименных логических сигналов любой из пар выводов например:​ (0 и 0) остановит движение мотора.
Строка 29: Строка 62:
 На рис.а2 выводы "​EN"​ замкнуты с высоким уровнем (+5V). Для этого на плате, рядом с выводами ENA и ENB находятся штырьки соединенные с +5V. Замыкаем выводы с помощью джамперов. В данном режиме мы не сможем регулировать скорость двигателей,​ они будут всегда вращаться в полную скорость (зато для управления экономится 2 вывода контроллера). Направление вращения будет задаваться по-прежнему,​ а вот для остановки в данном варианте,​ состояние выводов будет уже играть роль. Для остановки нужно будет подавать одноименные сигналы на выводы "​IN"​. На рис.а2 выводы "​EN"​ замкнуты с высоким уровнем (+5V). Для этого на плате, рядом с выводами ENA и ENB находятся штырьки соединенные с +5V. Замыкаем выводы с помощью джамперов. В данном режиме мы не сможем регулировать скорость двигателей,​ они будут всегда вращаться в полную скорость (зато для управления экономится 2 вывода контроллера). Направление вращения будет задаваться по-прежнему,​ а вот для остановки в данном варианте,​ состояние выводов будет уже играть роль. Для остановки нужно будет подавать одноименные сигналы на выводы "​IN"​.
  
 +{{ :​doc:​1308:​description07.png?​500 | }}
 +
 +В приведенном ниже скетче два мотора будут вращаться в обе стороны с плавным нарастанием скорости.
 +
 +<​code>​
 +
 +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);​
 +}
 +
 +</​code>​
 +
 +При старте двигатель в среднем потребляет ток в 2-4 раза больше номинального,​ а при резком реверсе еще больше. Данный скачок можно снизить или вообще убрать,​ если разгонять двигатель плавно и дать на разгон какой-то промежуток времени.
 +
 +====Автономный источник питания====
 +В качестве автономного источника питания желательно использовать батарею,​ которая способна выдавать более 7 вольт. Для продолжительной работы передвижной платформы потребуется батарея большой емкости. На нашей платформе используется батарея емкостью 3600 мАч(ну так по крайней мере написано),​ и выходным напряжением 7.2 вольта. на практике мы практически всегда использовали полностью заряженную батарею,​ и редко замечали падения напряжения ниже 7.5 вольт.
 +
 +====ИК приемник====
 +Инфракрасный приемник служит для получения сигналов в прямой видимости в инфракрасном спектре.
 +
 +{{ :​doc:​1308:​description05.png?​300 | }}
 +
 +Данная программа считывает ИК сигнал и возвращает данные,​ которые он принял в COM порт.
 +<​code>​
 +#include "​IRremote.h"​
 +IRrecv irrecv(6);​ //​ Указываем пин, к которому подключен приемник
 +decode_results results;
 + 
 +void setup()
 +{
 +        Serial.begin(9600);​ //​ Выставляем скорость COM порта
 + irrecv.enableIRIn();​ //​ Запускаем прием
 +}
 +
 +void loop()
 +{
 + if (irrecv.decode(&​results)) //​ Если данные пришли ​
 +{
 +Serial.println(results.value,​ HEX); // Отправляем полученную данную в консоль
 +irrecv.resume();​ //​ Принимаем следующую команду
 +}
 +}
 +</​code>​
 +
 +====Bluetooth модуль====
 +
 +{{ :​doc:​1308:​description09.png?​500 | }}
 +
 +Будьте внимательны,​ подключать подключать нужно TX -> RXD ,RX -> TXD.
 +Во время загрузки скетча необходимо,​ чтобы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется,​ потому что связь с Bluetooth модулем происходит по одному и тому же порту RX и TX, что и USB. Работа с bluetooth модулем ничем не отличается от работы с COM портом.
 +<​code>​
 +int val;
 +int LED = 13;
 +void setup()
 +{
 + Serial.begin(9600);​
 + pinMode(LED,​ OUTPUT);
 + digitalWrite(LED,​ HIGH);
 +}
 +
 +void loop()
 +{
 + if (Serial.available())
 + {
 + val = Serial.read();​ //​ При символе "​1"​ включаем светодиод
 +if (val == '​1'​)
 +{
 +digitalWrite(LED,​ HIGH);
 +} // При символе "​0"​ выключаем светодиод
 +if ( val == '​0'​)
 + {
 + ​ digitalWrite(LED,​ LOW);
 +}
 +}
 +}
 +</​code>​
 +
 +====HC-SR04====
 +
 +{{ :​doc:​1308:​description03.png?​500 | }}
 +
 +Этот дальномер может служить прекрасным датчиком для робота,​ благодаря которому он сможет определять расстояния до объектов,​ объезжать препятствия,​ или строить карту помещения. Его можно также использовать в качестве датчика для сигнализации,​ срабатывающего при приближении объектов.
 +
 +Принцип действия
 +Ультразвуковой дальномер определяет расстояние до объектов точно так же, как это делают дельфины и летучие мыши. Он генерирует звуковые импульсы на частоте 40 кГц и слушает эхо. По времени распространения звуковой волны туда и обратно можно однозначно определить расстояние до объекта.
 +В отличие от инфракрасных дальномеров,​ на показания ультразвукового дальномера не влияют засветки от солнца или цвет объекта. Но могут возникнуть трудности с определением расстояния до пушистых или очень тонких предметов. Сенсор излучает короткий ультразвуковой импульс (в момент времени 0), который отражается от объекта и принимается сенсором. Расстояние рассчитывается исходя из времени до получения эха и скорости звука в воздухе.
 +
 +{{ :​doc:​1308:​description00.png?​500 | }}
 +
 +Т.о., сенсор получает сигнал эха, и выдаёт расстояние,​ которое кодируется длительностью электрического сигнал на выходе датчика (Echo). ​
 +Следующий импульс может быть излучен,​ только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс. 
 +Если на сигнальный пин (Trig) подается импульс длительностью 10 мкс, то ультразвуковой модуль будет излучать восемь пачек ультразвукового сигнала с частотой 40 кГц и обнаруживать их эхо. Измеренное расстояние до объекта пропорционально ширине эха (Echo) и может быть рассчитано по формуле,​ приведенной на графике выше. ​
 +Документация на сенсор,​ также указывает,​ что если никаких препятствий не обнаружено,​ то на выходе будет сигнал с длительностью 38 ms.
 +Пример кода для использования ультразвукового датчика без использования библиотек.
 +<​code>​
 +long getEchoTiming()
 +{
 +digitalWrite(trigPin,​ LOW);
 + delayMicroseconds(2);​
 + ​ digitalWrite(trigPin,​ HIGH);
 + ​ delayMicroseconds(10);​
 + ​ digitalWrite(trigPin,​ LOW);
 +  long duration = pulseIn(echoPin,​ HIGH);
 + ​ return duration;
 +}
 +</​code>​
  
  
  
    
doc/1308/mgul.130080.001.1486561130.txt.gz · Последние изменения: 2018/04/28 23:47 (внешнее изменение)