- Что такое н-мост?
- Основа конструкции
- Шаг 2: что такое робот?
- Введение
- Ardu remote: очень простая и дешёвая аппаратура управления своими руками
- Видео. управление led лентой через реле
- Задача
- Индикатор состояния и обвязка реле
- Исходный код
- Как использовать релейный модуль с устройствами высокого напряжения
- Комплектующие
- Контакты выбора управляющих пинов
- Немного об уровне, авторе и предостережения
- Обзор
- Ограничения питания логической части
- Определение угла поворота
- Передатчик
- Питание
- Подключение bluetooth
- Подключение угла и код
- Понадобится
- Пример использования
- Распараллеливание ходовых колес
- Результат
- Реле ардуино: распиновка, характеристики
- Система отправки команд
- Скетч для управления реле от ардуино
- Управление реле ардуино уно / нано
- Урок 13. arduino и реле
- Установка arduino
- Шаг 1: нужные части и инструмент
- Шаг 10: входы / датчики
- Шаг 11: источник питания
- Шаг 12: установка компонентов
- Шаг 13: электропроводка
- Шаг 14: логика управления
- Шаг 15: софт
- Шаг 16: тестирование
- Шаг 17: планы на будущее
- Шаг 3: структура / шасси
- Шаг 4: приводы
- Шаг 5: подготавливаем клеммы моторчиков
- Шаг 6: устанавливаем мотор
- Шаг 7: устанавливаем крышу
- Шаг 8: контроллер
- Заключение первой части
Что такое н-мост?
Термин Н-мост произошел от типичного графического представления этой схемы. Это схема, которая может вращать мотор как в прямом, так и в обратном направлении.
Принцип работы:Посмотрите приложенную картинку для понимания принципа работы схемы Н-моста. Мост состоит из 4 электронных выключателей S1, S2, S3, S4 (транзисторы / MOSFET/ IGBTS).
Когда выключатели S1 и S4 закрыты, а остальные два открыты, положительное напряжение будет проходить через мотор, и он будет вращаться в прямом направлении. Таким же образом, когда закрыты выключатели S2 и S3, а S1 и S4 открыты, обратное напряжение будет даваться на мотор и он начнёт вращаться в обратном направлении.
Заметка: выключатели на одной руке (то есть S1, S2 или S3, S4) никогда не закрываются одновременно – это создаст короткое замыкание.
Н-мосты доступны в виде интегральных схем, либо можно собрать свой мост при помощи 4 транзисторов или MOSFET. В моём случае используется интегральная схема Н-моста LM298, которая позволяет управлять скоростью и направлением моторов.
Описание распиновки:
Out 1: DC мотор 1 « » или шаговый двигатель A Out 2: DC мотор 1 «-» или шаговый двигатель A-Out 3: DC мотор 2 « » или шаговый двигатель B Out 4: вывод мотора B12v: вход 12V, но можно использовать от 7 до 35VGND: Земля5v: выход 5V, если джампер 12V стоит на месте, идеально для питания Arduino (и т.п.)EnA: позволяет получать сигналы PWM для мотора A (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)IN1: включает мотор AIN2: включает мотор AIN3: включает мотор BIN4: включает мотор BBEnB: позволяет получать сигналы PWM для мотора B (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)
Основа конструкции
За основу была взята машина Lego Outdoor Challenger (в реальности выглядит менее пафосно). Все, что от нее осталось: корпус (все элементы украшения сняты) и три двигателя.
У машинки была своя плата, но одна из задач подразумевала универсальность: это сделал я, это смогут повторить другие. Мозги вынул, поставил Arduino Uno.
Шаг 2: что такое робот?
Робот – это электромеханическое устройство, которое способно каким-либо образом реагировать на окружающую обстановку и принимать самостоятельные решения или действия, чтобы достичь определенных целей.
Робот состоит из следующих компонентов:
- Структура / Шасси
- Привод / Мотор
- Контроллер
- Вводные устройства / Датчики
- Источник питания
В следующих шагах я опишу каждый из этих компонентов, и вы всё легко поймёте.
Введение
Подробная история того, как из трех двигателей была собрана машина на Arduino, управляемая Android-устройством по Bluetooth. В нескольких десятках абзацев постараюсь максимально пошагово изложить, куда подключить каждый из проводов, как написать фирменное приложение и на каких детских граблях пришлось попрыгать больше недели.
Ardu remote: очень простая и дешёвая аппаратура управления своими руками
Всем привет. Захотелось мне однажды маленькую удобную аппаратуру для дрона/крыла; usb-джойстик для симуляторов и Open.HD; найти оправдание построенной дельте (3d-принтеру) и пострадать ардуино. Сразу фото итога:
Размышления и гуглеж привели к выбору BetaFPV Lite radio как образца для внешнего вида. Хотелось, конечно, Taranis X-Lite, но стики были только крупные, от подаренной товарищем бесполезной ввиду древности аппаратуры. Переключатели на 60% были использованы от неё же.
Изначально делал только USB-версию. Оно отлично работало в симуляторе FPV Freerider и как управление в Open.HD линке, но мысль прилепить QCZEK и автономное питание уже овладела мной бесповоротно.
В итоге вышло что вышло.
→ Гитхаб
Видео:
На гитхабе скетч, схема, используемые библиотеки и всякое полезное, включая 3d-модели и исходники для solid.
Схема относительно проста и требует только пайки проводов за исключением резистивного делителя и светодиодов. Работу с qczek lrs я обойду стороной, для этого есть сайт разработчика и неплохие видеотуториалы в ютубе от Юлиана и Сани areyouroo.
Можно ограничиться только usb-версией без питания и lrs, в качестве lrs можно использовать другие проекты, где принимают на вход CPPM 8/10ch сигнал. При выборе QCZEK появляется выбор между 0.1 и 1вт модулями и частотами 433/868/915 МГц. Я не рекомендую 433, наводки от них дикие. Также не увидел смысла в 1вт, при 100мвт вполне реально пульнуть на 10км. Если планируете покупать антенны — смотрите на версии 915мгц и готовые антенны для популярных дальнобоек frsky. Недорого и какая-то гарантия попадания в приемлемый КСВ. Я же просто подпаял к хвосту с ipex два отрезка медной проволоки D0.4mm, длиной 8.21см и заложил это всё в корпус антенны прямо в середине печати на 3д-принтере. Побегал с аппаратурой по этажам многоквартирного дома — обрыва или падения rssi на модели в квартире не добился, устроило.
Для Open.HD (usb-версия) пока нет смысла в свичах sw4 и sw5, так как число каналов ограничено 8-ю. Возможно, в дальнейшем это ограничение будет снято. Имейте ввиду, что подключение к Open.HD с модулем зарядки даёт дополнительную нагрузку на usb-порт наземной raspberry по питанию. Имеет смысл заюзать хаб с внешним питанием.
Калибровка аппаратуры: подаём питание с зажатой SW_CALIBRATE при средних положениях yaw/roll/pitch и минимальных throttle/aux1; ждём гудка; двигаем всё с осями от минимума до максимума, пока есть пищание. Когда пищать уже не может — выключаем, калибровка завершена.
Также есть защита от высоких значений каналов при включении, пока не переместите первые три свича и газ вниз — будет коротко попискивать.
Каждые 30 секунд, если значения не изменились — короткий ненавязчивый писк. Естественно, все это легко изменить/отключить в скетче. Например, просто закоментировав дефайн.
В общем, заготовка для творчества вполне себе ничего. Нет триммирования, но оно и не нужно для полетов с полётным контроллером, а без него эта аппаратура врядли может пригодится.
Также я прилепил блютус-модуль jdy-30 к qczek и гоню в него мавлинк телеметрию, которую принимает DroidPlanner 2.8 или Telemetry Viewaver на андроид-смартфоне. Наверное, также засуну и mavlink-display. Пусть будет красиво, как у дорогих crossfire xD
Спасибо за внимание, жду вопросов и повторений / развитий сего рукожопства.
Видео. управление led лентой через реле
Реле может использоваться для создания автоматического светильника, где используется лампа накаливания 220 Вольт, а микроконтроллер Arduino Uno включает лампу, когда уровень освещенности в помещении станет меньше заданной величины. Также можно сделать автоматическое управление электрообогревателем в комнате, включая реле Ардуино, в зависимости от температуры в помещении.
Задача
Задача легчайшая – заставить ездить машинку, управляемую Arduino, а пульт заменить андроидом. Но в большинстве моментов пришлось изобретать колесо, потому что в интернетах подходящего решения найдено не было.
Индикатор состояния и обвязка реле
Микроконтроллер не может напрямую управлять реле: оно потребляет слишком большой ток и порождает выбросы обратного напряжения при отключении. Поэтому каждое реле подключено к управляющим контактам через транзистор, а обратный диод защищает остальную схему от выбросов напряжения.
Исходный код
Осталось написать простой код для нашего реле Ардуино и протестировать модуль на то, как он будет работать. Сам код достаточно простой, мы будем просто использовать контакт 7 для управления реле, поэтому мы определим его как выход и создадим программу, которая будет просто активировать и деактивировать реле каждые 3 секунды.
int in1 = 7; void setup() { pinMode(in1, OUTPUT); digitalWrite(in1, HIGH); } void loop() { digitalWrite(in1, LOW); delay(3000); digitalWrite(in1, HIGH); delay(3000); }
Были протестирована 3 устройства на основе данного примера. Сначала лампочка мощностью 100 Вт, затем настольная лампа и тепловентилятор. Все эти устройства работают на 220В. Таким образом возможно управлять любым высоковольтным устройством с помощью Arduino или любого другого микроконтроллера.
Как использовать релейный модуль с устройствами высокого напряжения
Сначала давайте посмотрим на принципиальную схему. Как описано ранее, мы будем использовать адаптер 5 В в качестве отдельного источника питания для электромагнита, подключенного к JDVcc и заземляющему выводу. Вывод Arduino 5V будет подключен к выводу Vcc модуля, а вывод 7 к входному выводу In1 для управления реле.
Теперь для части “высокое напряжение” нам понадобится вилка, розетка и кабель с двумя проводами. Один из двух проводов будет обрезан и подключен к общему и нормально разомкнутому контакту выходного разъема модуля. Таким образом, в этой конфигурации, когда мы активируем реле, мы получим замкнутую и рабочую высоковольтную цепь.
Ниже коснемся того, как сделать кабель. Нам нужны вилка, розетка и кабель. Аккуратно обрезаем кабель и обрезаем один из проводов, как показано на рисунке ниже. Подключаем их к нормально разомкнутым контактам релейного модуля. Также подключаем концы кабеля к вилке и розетке.
Примечание! Убедитесь, что вы используете другие провода, а не желтый и зеленый, так как они предназначены для заземления.
Окончательный вид кабеля, готового к использованию, ниже. Прежде чем использовать кабель, убедитесь, что он работает правильно. Вы можете проверить это с помощью мультиметра или сначала проверить его при низком напряжении.
Комплектующие
Компоненты, необходимые для этого урока мы перечислим ниже. Вы можете заказать все комплектующие в удобном вам интернет-магазине:
- Модуль реле 5 В
- Плата Arduino
- Макетная плата и провода-перемычки
- Кабель, вилка, розетка
Контакты выбора управляющих пинов
Контакты 4, 5, 6 и 7, используемые для управления реле, подключены к вспомогательной логике управления реле через джамперы. Если в вашем устройстве какие-то из этих пинов уже заняты (например эти же пины используются для управления motor-shield), вы можете использовать любой свободный цифровой пин для управления реле. Для этого необходимо снять джампер напротив занятого пина, и припаять проводок между луженым отверстием рядом со снятым джампером и луженым отверстием рядом с нужным пином.
На этой картинке мы перекинули управление первым реле с контакта 7 на контакт 9, а управление четвёртым реле с контакта 4 на контакт 2.
Немного об уровне, авторе и предостережения
Я, автор, пацан 16-17 лет с подмосковной деревни, специализируюсь на написании android-приложений (а там сложнее что-то сжечь), поэтому ответственность за оптимальный подход к решению задач с себя снимаю.
Практически каждый из нижеописанных этапов занимал у меня больше, чем стоило бы, времени. Наверно, именно по этой причине хочу поделиться опытом. И при этом буду очень рад, если поругаете за ошибки и подскажите за оптимизацию.
Обзор
Мы можем управлять высоковольтными электронными устройствами с помощью реле. Реле на самом деле является переключателем, который электрически приводится в действие электромагнитом. Электромагнит активируется низким напряжением, например, 5 В от микроконтроллера, и он тянет контакт, чтобы создать или разорвать цепь высокого напряжения.
Ограничения питания логической части
Отдельное реле в замкнутом состоянии потребляет 80 мА из логической цепи в 5 вольт. Все 4 реле при одновременном включении потребляют 320 мА. Если этот сценарий возможен в вашем проекте, необходимо удостовериться, что необходимый ток доступен.
Иными словами, все реле одновременно могут не работать в одном из следующих случаев.
Вы питаете Arduino от USB-порта с пределом по току в 200 мА, например, от разветвителя в клавиатуре. Используйте полноценный USB 2.0 или USB 3.0, чтобы обеспечить стабильное питание от USB
Вы питаете Arduino внешним источником питания с высоким входным напряжением. Несмотря на то, что линейный регулятор напряжения на плате Arduino выдаёт до 800 мА, их можно получить только, если обеспечена температура регулятора в 25 °C. Излишек напряжения линейный регулятор превращает в рассеиваемое тепло, компонент нагревается, предельный ток снижается. В этом случае используйте либо источник питания на 7–8 вольт вместо 8 , либо установите радиатор на регулятор напряжения, либо подавайте ровные 5 вольт непосредственно на пины 5V и GND или в порт USB.
Определение угла поворота
За поворот машинки отвечает на удивление не сервопривод, а обычный двигатель. Встает проблема: хорошо бы было его не сжечь, ведь угол поворота ограничен, а крутиться двигатель может сколько угодно.
Вариант с методом тыка отпадает, так как при разном уровне батареи количество тока, подаваемое на двигатель, будет изменяться, что приведет к постоянно меняющемуся углу. Крутить до упора тоже нельзя, рано или поздно рассыплются шестеренки.
Решение проблемы: отслеживать угол через замыкание. На фото продемонстрирована небольшая штучка, которая крепится недалеко от поворотного механизма. На часть, которая крутится вместе с колесами влево/вправо двигателем, прикрепляется гребешок с железными контактами.
Принцип работы: к каждой линии припаивается провод (всего их четыре), нижний подключается к плюсу (он зажат гребешком всегда, см. картинку), остальные провода уходят на минус. Когда зубик гребешка попадает и на нижний ряд, и на, допустим, третий, происходит замыкание, ток течет, это замечает Arduino.
Благодаря различным комбинациям трех полос, можно определить до семи углов. Например, когда ток есть на всех линиях, колеса повернуты в крайнее правое положение, когда ток есть только на верхней, колеса повернуты максимально влево. В таблице предоставлены все варианты.
Передатчик
// Библиотека передатчика
#include <VirtualWire.h>
void setup()
{
// Запуск передатчика
vw_set_ptt_inverted(true);
vw_setup(1000); // Bits per sec
}
void loop()
{
// чтение показаний с переменного резистора
int sensorValue = analogRead(A0);
// отправляем значение
send(sensorValue);
}
void send(int param)
{
// конвертируем int в массив из 2 байт
uint8_t msg[2];
int len = 2;
msg[0] = highByte(param);
msg[1] = lowByte(param);
// отправляем непосредственно в радиоканал
vw_send(msg, len);
// ждем пока сообщение не уйдет целиком
vw_wait_tx();
}
Питание
Радиомодуль MX-05V очень простой, из-за этого он очень восприимчив к внешним помехам. И даже такой маленький мотор как в серво-машинке способен нарушить его работу. Для того, чтобы минимизировать влияние электромотора (это касается только колекторных моторов), нужно разделить питание силовой части от приемника. При этом «минус» у них должен быть общий. Итоговая схема подключения приемника выглядит так.
Подключение bluetooth
Я использовал модель HC-05, что сыграло роковую шутку. Подключаются все блютузы одинаково: один провод на 3.3В (иногда начинал работать только от 5В), второй на минус, еще два на порт 0 и 1 (чтение и отправка соответственно). Провод, подписанный RXD на bluetooth, втыкается в TXD ардуино, а TXD в RXD (если перепутаете, то данных не увидите).
Есть оговорка: порты 0 и 1 по умолчанию используются Serial, через который заливает скетч. То есть, пока воткнут блютуз, скетч не зальется. Есть два выхода: вынимать блютуз на время заливки или переназначить входы и выходы блютуза. Второй вариант осуществляется двумя строчками
#include <SoftwareSerial.h> \подключение библиотеки
SoftwareSerial BTSerial(8, 9); \установка 8 и 9 пина заместо 0 и 1
Подводный камень, съевший у меня трое суток работы – скорость общения. По привычке установил 9600 и пошел пробовать. То данные не приходили, то была каша символов. И в конце концов ответ – модель HC-05 общается на 38400! Очень сильно обратите внимание на то, что в Setup() я выполню BTSerial.begin(39400), хотя Serial.begin(9600).
Подключение угла и код
Для каждого уровня был выбран свой цвет: нижний – зеленый, первый снизу – красный, второй – черный, третий – белый. На начальном этапе использовались breadboard и светодиоды для визуальной отладки.
Схема подключения показана на рисунке. Плюс тянем к зеленому, остальные протягиваем к минусу. Через резистор, установленный для устранения помех и отсутствия КЗ, подключаем провода к выходам A0-A2. Выбраны они просто из экономии остальных портов.
Код дан с комментариями. Подключаем пины и опрашиваем их через digitarRead(). Если напряжение есть, вернется значение true. Далее смотрим, если результат означает, что колеса в крайних положениях, запрещаем дальнейший поворот в эту сторону.
Небольшая хитрость: поскольку выходы на 5В и 3.3В понадобятся в будущем, можно поставить плюс на один из digital-пинов. Перед каждой проверкой угла выдавать ток через digitalWrite(whitePin), потом проверять угол и убирать ток.
int speedTurn = 180; //скорость поворота, от 0 до 255
//пины для определения поворота
int pinRed = A0;
int pinWhite = A1;
int pinBlack = A2;
int pinAngleStop = 12; //выводит ток на светодиод, если достигнут максимальный угол, нужен
//только для отладки
void setup() {
//пины поворота на считывание
pinMode(pinRed, INPUT);
pinMode(pinBlack, INPUT);
pinMode(pinWhite, INPUT);
//светодиод
pinMode(pinAngleStop, OUTPUT);
//пины драйвера двигателя, направление и скорость
pinMode(angleDirection, OUTPUT);
pinMode(angleSpeed, OUTPUT);
Serial.begin(9600);
}
//функция вызывается из loop(), когда приходит команда с андроида
void turn(int angle) {
digitalWrite(pinAngleStop, HIGH); //выдаем ток на провод, подключенный к плюсу
delay(5); //немного ждем, чтобы ток "успел" дойти
if(angle > 149) {
if( digitalRead(pinWhite) == HIGH && digitalRead(pinBlack) == LOW && digitalRead(pinBlack) == LOW) {
//если достигнуто крайне правое положение, выйти из функции не подавая ток, чтобы не
//сжечь мотор
return;
}
//если угол не максимальный, поворачиваем
digitalWrite(angleDirection, HIGH);
analogWrite(angleSpeed, speedTurn);
} else if (angle < 31) {
if(digitalRead(pinRed) == HIGH && digitalRead(pinBlack) == HIGH && digitalRead(pinWhite) == HIGH) {
//если достигнуто крайне левого положение, выйти из функции не подавая ток, чтобы не
//сжечь мотор
return;
}
//если угол не максимальный, поворачиваем
digitalWrite(angleDirection, LOW);
analogWrite(angleSpeed, speedTurn);
}
digitalWrite(pinAngleStop, LOW); //убираем ток с определителя угла
delay(5);
}
Понадобится
- Arduino
- Motor Shield (в моем случае две)
- Bluetooth
- Android
- Провода обычные
Пример использования
- relayClick.ino
//Определяем на каких пинах находятся реле#define RELAY_1 7#define RELAY_2 6#define RELAY_3 5#define RELAY_4 4 void setup(){// Конфигурируем нужные пины на выходfor(int i =4; i <=7; i){ pinMode(i, OUTPUT);}} void loop(){ //Включаем реле 1 на 5 секунд digitalWrite(RELAY_1, HIGH); delay(5000);//Отключаем реле 1 digitalWrite(RELAY_1, LOW); //через секунду включаем реле 2 на 5 секунд delay(1000); digitalWrite(RELAY_2, HIGH); delay(5000); digitalWrite(RELAY_2, LOW); //Повторим с оставшимися реле то же самое delay(1000); digitalWrite(RELAY_3, HIGH); delay(5000); digitalWrite(RELAY_3, LOW); delay(1000); digitalWrite(RELAY_4, HIGH); delay(5000); digitalWrite(RELAY_4, LOW); delay(1000);}
Распараллеливание ходовых колес
Изначально два ходовых двигателя соединены вместе. Их рассоединил по двум причинам: поворот эффективней, если колеса крутятся в разные стороны, и два мощных двигателя одна плата не вытянет.
Проблема: у motor shield два выхода, каждый из которых выдает до 2 ампер. Каждый двигатель ест по 0,7А. Вроде меньше, но не при максимальных нагрузках. Допустим, машинка застряла в песке или уперлась, ток возрастает выше ампера. Не критично, но потенциально опасно.
А вот критичным оказалось то, что плата греется. Через минуты полторы после заезда, motor shield нагревалась и начинала работать безобразно: токи подаются не те, колеса не крутятся и прочее.
Решение обоих проблем: один двигатель подключил к одной motor shield, второй – к другой. Как ни странно, помогло. Температура упала, перегрев отсутствует. Можно было поставить радиатор, но крепить тяжело.
Результат
Данные радиомодуль слишком восприимчив к помехам, и управлять летательной техникой на нем нельзя. Но для игрушечной машинки или лодки вполне подойдет.
Реле ардуино: распиновка, характеристики
Реле – это электромеханическое устройство, которое служит для замыкания и размыкания электрической цепи с помощью электромагнита. Принцип работы силового реле srd-05vdc очень прост. При подаче управляющего напряжения на электромагнитную катушку, в ней возникает электромагнитное поле, которое притягивает металлическую лапку и контакты мощной нагрузки замыкаются.
Если контакты реле замыкаются при подаче управляющего напряжения, то такое реле называют замыкающим. Если при подаче управляющего напряжения контакты реле размыкаются, а в нормальном состоянии контакты сомкнуты, то реле называется размыкающим. Также реле бывают постоянного и переменного тока, одноканальными, многоканальными и переключающими. Принцип действия у всех одинаковый.
Согласно характеристикам реле SRD-05VDC-SL-C, для переключения контактов достаточно около 5 Вольт 20 мА, выводы на Ардуино способны выдавать до 40 мА. Таким образом с помощью Ардуино мы можем управлять не только лампой накаливания, но и любым бытовым прибором — обогревателем, холодильником и т.д. Полевые транзисторы на Ардуино могут управлять токами только до 100 Вольт.
Система отправки команд
Статья становится слишком длинной, поэтому рассмотрение кода Arduino и Android вынесу в отдельную вторую часть, а сейчас опишу принцип.
На андроид устройстве есть джойстик (круг, о реализации которого также во второй части). Андроид считывает показания с него и конвертирует их в подходящие для ардуино числа: скорость из пикселей превращает в значение от -255 до 255 (отрицательные – задний ход), а также определяет угол.
После установки сокета данные отправляются в следующем формате: @скорость#*угол#. @ — говорит о том, что следующие цифры содержат скорость, # — извещает об окончании значения скорости, * — начало значения угла, # — закончить запись угла. Цикл бесконечен, команды отправляются каждые 100 миллисекунд (цифра подобрана оптимальная). Если ничего не нажато на андроиде, то ничего и не отправляется.
Алгоритм приема данных подробно описан в коде скетча. Он не раз переписывался и, как по мне, работает идеально.
Скетч для управления реле от ардуино
voidsetup() { pinMode(3, OUTPUT); // объявляем пин 3 как выход } voidloop() { digitalWrite(3, HIGH); // замыкаем релеdelay(3000); // ждем 3 секундыdigitalWrite(3, LOW); // размыкаем релеdelay(1000); // ждем 1 секунду }
После загрузки скетча включите блок питания в цепь. Реле при этом должно устанавливаться в разрыве одного из проводов, идущего к LED ленте. Для безопасности лучше устанавливать реле в провод заземления. К минусам реле следует отнести щелчки при замыкании/размыкании контакта, поэтому для включения LED ленты и других приборов до 40 Вольт удобнее использовать транзисторы.
Управление реле ардуино уно / нано
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- блок питания 12 Вольт;
- светодиодная лента;
- провода «папа-папа» и «папа-мама».
Соберите схему, как показано на картинке ниже. Подобная схема использовалась в проекте Светильник с управлением от пульта, где светодиодная лента включалась при помощи реле. Модуль имеет три контакта для управления от микроконтроллера Ардуино и два контакта для подключения мощной электрической цепи. Схема подключения реле к Ардуино УНО, Нано или Ардуино Мега ничем не отличается:
GND — GNDVCC — 5VIn — любой цифровой порт
После сборки электрической схемы, загрузите следующий скетч в микроконтроллер. Данная программа ничем не отличается от скетча для мигания светодиода на Ардуино, мы только поменяли в скетче порт и задали большее время задержки.
Урок 13. arduino и реле
В этом опыте, мы будем управлять реле, точнее сказать не мы, а ардуино, и для этого попробуем воспользоваться полученными знаниями из предыдущих 12 уроков. Реле это электрически управляемый, механический переключатель. Внутри этого простенького на первый взгляд, пластмассового корпуса, находится мощный электромагнит, и когда он получает заряд энергии, происходит срабатывание, в результате чего якорь притягивается к электро магниту, контактная группа замыкает или размыкает цепь питания нагрузки. В этой схеме вы узнаете, как управлять реле, придав Arduino еще больше способностей!
На тот случай, если у вас в наборе идет не просто реле, а именно модуль, т.е уже собранная схема на печатной плате, Вам не нужно собирать схему (см. ниже), а нужно правильно подключить модуль к плате Arduino.
VCC — питание 5 Вольт
GND — общий (земля) — минус.
IN1 — управление
NO — нормально разомкнутый (Normally Open)
NC — нормально замкнутый (Normally Closed)
COM — обший (Common)
К контактам NC и NO подключаются светодиоды, общий COM подключается к питания ( 5V), GND к земле (-), VCC к 5 Вольт, IN1 (управление, обозначение может быть другим) к порту ардуино Pin 2.
Когда реле выключено, общий контакт «COM» (common) будет подключен к нормально замкнутому контакту «NC» (Normally Closed). Когда же реле сработает «общий» контакт COM соединится с «нормально разомкнутым» контактом «NO» (Normally Open).
Выше, вы видите саму принципиальную схему к уроку 13, думаю сложностей возникнуть не должно, при правильном соединении, т.е соблюдая указания маркировки и «полюсность», все должно получиться.
Для этого опыта вам понадобится:
1. Arduino UNO — 1 шт.
2. Реле или «Электронный модуль Реле» — 1 шт.
3. Транзистор 2N222A — 1 шт.
4. Диод 1N4148 — 1 шт.
5. Резистор 330 Ом.
6. Светодиоды различных цветов — 2 шт.
7. Соединительные провода.
8. Макетная плата.
Далее идет схема электрических соединений к уроку 13.
Скачать код к опыту 13. Скетч и подробное описание (Обязательно прочтите весь скетч!):
Набор для экспериментов ArduinoKit
Код программы для опыта №13: sketch 13
Вид созданного урока на макетной схеме:
В результате проделанного опыта Вы должны увидеть…
Вы должны услышать щелчки переключающегося реле, а также увидеть два светодиода по переменно загорающимися с секундным интервалом. Если этого нет, — проверьте правильно ли вы собрали схему, и загружен ли код в Arduino.
Возможные трудности:
Светодиоды не светятся
Дважды проверьте правильность установки светодиодов, — длинный вывод является плюсовым контактом..
Не слышны щелчки реле
Проверьте правильность подключение реле и транзистора.
Срабатывает через раз
Проверьте надежность подключение реле, у реле, если это не электронный модуль очень короткие выводы, попробуйте слегка придавить его в макетную плату.
Всем удачи! Ждём ваши комментарии к ARDUINO УРОК 13 — ARDUINO УПРАВЛЯЕТ РЕЛЕ.
Установка arduino
Создатели почему-то не предусмотрели места для Arduino, потому крепил на шурупы, просверлив пластик. Под плату подложил фанеру, чтобы ничего не закоротило. Под шурупы лучше подсунуть что-то пластиковое (кусочек бутылки), ибо плата от железный болтов не защищена.
Поверх платы сразу поставил две motor shiled, так надо. Чтобы управлять второй, придется прокинуть один провод с любого digital порта на H1 (направление) и второй с пина с поддержкой шима (помечены знаком «~», обычно 10, 11) на E1 (скорость).
Шаг 1: нужные части и инструмент
Я воспользовался готовыми решениями, и все запчасти и инструменты были приобретены через интернет.
Запчасти:
- Набор шасси 4WD для робота (GearBest)
- Arduino Nano (GearBest)
- Модуль H-моста LM298 (GearBest)
- Модуль bluetooth HC-06 (Amazon)
- Литий-ионные батарейки 2 x 18650 (GearBest)
- Отсек для батареек 2x 18650 (GearBest)
- Небольшая макетная плата (GearBest)
- Провода сечением 0.5 мм2
- Провода с джамперами папа-мама (Amazon)
- Провода с джамперами мама-мама (Amazon)
- Малярная лента, изолента или что-то подобное (Amazon)
Для робота, объезжающего препятствия:
Ультразвуковой модуль измерения расстояния HC — SR04 (GearBest)
Необходимый инструмент :
- Паяльник (Amazon)
- Кусачки (Amazon)
- Стриппер для провод (GearBest)
- Клеевой пистолет (GearBest)
Шаг 10: входы / датчики
В отличие от людей, роботы не ограничены лишь зрением, звуком, осязанием, обонянием и вкусом. Роботы используют различные датчики для взаимодействия с внешним миром.
Датчик – это устройство, которое выявляет и отвечает на определенные типы входящей информации из окружающего мира. Этой информацией может быть свет, тепло, движение, влажность, давление или любое другое явление окружающей среды.
Входящие сигналы могут идти от датчиков, удалённо, или со смартфона. В этом руководстве я использую смартфон в качестве девайса, отправляющего сигналы, управляющие роботом.
Шаг 11: источник питания
Чтобы управлять приводами (моторами) и питать контроллер, роботу нужен источник питания. Большинство роботов питается от батарей. Когда мы говорим о батареях, то имеем в виду множество вариантов:
- Алкалиновые батарейки AA (не заряжаются)
- Никель-металгидридные или никель-кадмиевые батарейки AA (заряжаются)
- Литий-ионные батареи
- Литий-полимерные батареи
В зависимости от ваших нужд, нужно выбрать подходящий вид батарей. По-моему мнению, нужно всегда выбирать заряжаемые батареи достаточной ёмкости. Я использовал 2 литий-ионные батареи стандарта 18650 ёмкостью 2600mAh. Если для автономности вам нужно больше мощности, используйте большой комплект батарей, например 5A turnigy.
Отсек для батарей:Отсек для батарей я заказал в Китае, он не подходил для батарей с плоским верхом, поэтому я использовал два неодимовых магнита для придания батарейкам нужной формы.
Зарядка:Для зарядки батарей нужен хороший зарядник. По моему опыту, эти зарядники хорошо зарекомендовали себя:
- PowerEx AA Charger-Analyzer (Amazon)
- XTAR LiIon Battery Charger (Amazon)
- Turnigy LiPo Battery Charger (Amazon)
Шаг 12: установка компонентов
Цельная схема устанавливается на крыше. Отсек для батарей, драйвер двигателей LM 298 и маленькую макетную плату я закрепил горячим клеем, но можно просто прикрутить их. Модуль bluetooth закрепляется скотчем. Ардуино нано вставьте в макетную плату.
Шаг 13: электропроводка
Для соединения модулей понадобятся провода с джамперами.Соедините красные провода двух моторов вместе (на каждой стороне) и затем черные провода. В итоге у вас выйдет по две клеммы с каждой стороны.
MOTORA отвечает за два правых мотора, соответственно два левых мотора соединены с MOTORB.Для соединения всех компонентов следуйте инструкции:
Соединение моторов:
Out1 -> красный провод левостороннего мотора ( )Out2 -> черный провод левостороннего мотора ( — )Out3 -> красный провод правостороннего мотора ( )Out4 -> черный провод правостороннего мотора ( — )LM298 — > ArduinoIN1 ->
D5IN2-> D6IN2 ->D9IN2-> D10Модуль Bluetooth -> ArduinoRx-> TxTx ->RxGND -> GNDVcc -> 3.3VПитание12V — > красный провод батарейGND -> черный провод батарей и пин GND на Arduino5V -> соедините с пином 5V Arduino
Шаг 14: логика управления
Чтобы понять принцип работы, я создал эту логическую таблицу. Она очень пригождается во время написания кода.
Шаг 15: софт
Часть с фотом очень проста, она не требует никаких библиотек. Если вы поняли таблицу логики из прошлого шага, то сможете написать свой код. Я не тратил на код много времени и просто скопировал чей-то готовый вариант. Чтобы управлять роботом-машиной, я использую смартфон, соединённый с контроллером через модуль Bluetooth (HC-06).
Шаг 16: тестирование
Чтобы проверить робота-машину, я положил её на маленькую картонную коробку. Таким образом, колёса будут крутиться, но машинка будет оставаться на месте. Проверьте работоспособность, нажимая все доступные кнопки. Если всё работает, то можно по-настоящему управлять ей.
Заметка: если моторы вращаются в противоположном направлении, то просто поменяйте местами провода.
Шаг 17: планы на будущее
В этом руководстве я объяснил, как создать простенькую машинку. Дальше я хочу добавить в неё некоторые улучшения. Вы можете присоединить к ней различные датчики, вот некоторые идеи:
- Добавление ультразвукового датчика для объезда препятствий
- Использование модуля WiFi, например ESP8266 или Node MCU вместо Bluetooth, для удлинения дистанции управления.
- Добавление солнечной панели для зарядки батарей.
Шаг 3: структура / шасси
Структура состоит из физических компонентов. Робот имеет один или несколько физических компонентов, которые каким-либо образом двигаются для выполнения задания. В нашем случае структура робота – это шасси и колёса.
Шаг 4: приводы
Под приводом можно понимать устройство, которое преобразовывает энергию (в робототехнике под энергией понимается электрическая энергия) в физическое движение. Большинство приводов производят вращательное или линейное движение.
В нашем случае привод – это DC-мотор, скорость которого равна 3000 оборотам в минуту, а вращающий момент 0.002 Н•м. Теперь добавим к нему шестерню с передаточным числом 1:48. Новая скорость уменьшается на коэффициент 48 (в результате давая 3000/44 = 68 оборотов в минуту) и вращающий момент увеличивается на коэффициент 48 (в результате давая 0.002 x 48 = 0.096 Н•м).
Шаг 5: подготавливаем клеммы моторчиков
Отрежьте по 4 провода красного и черного цвета длиной примерно 12-15 см. Я использовал провода сечением 0.5 мм2. Оголите концы проводов. Припаяйте провода к клеммам моторчиков.
Вы можете проверить полярность моторчиков, соединив их с отсеком для батареек. Если он движется в прямом направлении (с красным проводом на позитивной и черным на негативной клеммах батареек), то с соединением все в порядке.
Шаг 6: устанавливаем мотор
Прикрепите две акриловые распорки к каждому мотору при помощи двух длинных болтов и двух гаек. Для наглядности вы можете посмотреть видео.
Возьмите на заметку, что провода на каждом моторе ведут к центру шасси. Соедините оба красных и оба черных провода от моторов с каждой стороны шасси. После соединения у вас будет две клеммы на левой стороне и две на правой.
Шаг 7: устанавливаем крышу
Послу установки 4 моторов нужно установить крышу. Приладьте 6 медных стоек при помощи гаек, клеммы проводов выведите сквозь отверстие в крыше.
Шаг 8: контроллер
Теперь у нас установлены шасси и приводы, но нам не хватает контроллера. Шасси без контроллера никуда не поедут. Робот будет оставаться на месте, оставаясь безжизненным. Поэтому, для того чтобы робот перемещался, нам нужен мозг (контроллер).
Контроллер – программируемое устройство, способное работать по заданной программе и отвечающее за все вычисления, принятие решений и коммуникацию. В нашем случае в качестве контроллера мы используем микроконтроллер Ардуино Нано.
Контроллер принимает входные данные (с датчиков, удалённо и т.д.), обрабатывает их и затем даёт команду приводам (моторам) выполнить выбранное задание.
Если вы подключите позитивный провод от батарей на одну строну моторчика, затем подключите негативный провод от батарей на другой контакт моторчика, то он начнёт крутиться вперёд. Если вы поменяете провода местами, то мотор начнёт вращаться в другую сторону.
Микроконтроллер можно использовать, чтобы вращать мотор в одном направлении, но если вам хочется с помощью микроконтроллера вращать мотор и вперёд, и назад, то вам нужна дополнительная схема – H-мост. В следующем шаге я объясню, что это такое.
Заключение первой части
В этой статье я попытался раскрыть все, что касается физической части машинки. Вероятнее всего, что-то упустил, так что обязательно спрашивайте.
Но самое интересное, как по мне, осталось на второе – программа Arduino и приложение на Android, там творится настоящая магия, по крайней мере, для молодого меня.