Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:1308:mgul.130080.001 [2017/02/08 16:43] imbalanceone |
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 | ||
Строка 35: | Строка 64: | ||
{{ :doc:1308:description07.png?500 | }} | {{ :doc:1308:description07.png?500 | }} | ||
- | <code c> | + | В приведенном ниже скетче два мотора будут вращаться в обе стороны с плавным нарастанием скорости. |
+ | |||
+ | <code> | ||
int IN1 = 5; // Input1 подключен к выводу 5 | int IN1 = 5; // Input1 подключен к выводу 5 | ||
Строка 85: | Строка 116: | ||
} | } | ||
- | </code c> | + | </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> | ||
+ | |||