Делаем простые весы с помощью arduino – arduino+

Тензодатчики и весы на Arduino и НХ711

Датчик веса — очень важный ‘элемент многих проектов Ардуино. По изменению массы можно отследить и фиксировать изменения объекта, а затем и выполнить какие-то действия. В этой статье мы узнаем, как реализовать датчик веса в Ардуино на основе тензодатчиков различного номинала и микросхемы HX711 в качестве аналого-цифрового преобразователя.

Принцип работы тензорного датчика

Работа датчика веса основана на изменении какого-либо физического параметра, пропорционально весу измеряемого предмета. Параметр зависит от того, какой элемент используется в датчике.

Так при изменении нагрузки на пьезокерамическую пластину меняется напряжение, снимаемое с электродов на концах пьезодатчика. При использовании ёмкостного датчика меняется ёмкость переменного конденсатора.

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

Датчик представляет собой прямоугольный брусок из алюминиевого сплава, с отверстием в центре. На его боковые поверхности нанесены тонкоплёночные резисторы, соединённые по мостовой схеме, поэтому резистивный датчик имеет 4 гибких вывода. Все элементы датчика залиты эпоксидным компаундом.

На бруске предусмотрены резьбовые отверстия для крепления его к основанию и для установки пластины под измеряемый груз. На торцевой стороне датчика нанесена маркировка, указывающая максимальный вес измеряемого груза.

Для того чтобы резисторы изменяли своё сопротивление, тензометрический датчик должен одним концом фиксироваться на основании, а на другой его конец должен действовать груз так, чтобы возникла деформация бруска и, соответственно, плёночных резисторов.

Для того чтобы преобразовать аналоговый сигнал с выхода тензорного датчика в двоичный код, применяется аналого-цифровой преобразователь (АЦП) НХ711.

Тензодатчик и НХ711

Интегральная микросхема НХ711 представляет собой аналого-цифровой преобразователь с частотой дискретизации 24 бит и встроенным малошумящим операционным усилителем.

Мультиплексор позволяет выбирать один из двух имеющихся входных каналов. Канал А имеет программируемый выбор коэффициента усиления, который может быть 64 или 128.

Канал В работает с предустановленным коэффициентом, равным 32.

В состав микросхемы входит интегральный стабилизатор напряжения, что исключает необходимость применения внешнего стабилизатора. На вход синхронизации может быть подан любой импульсный сигнал от внешнего источника, вместе с тем АЦП допускает работу от встроенного генератора.

Основные технические характеристики НХ711:

  • Разрядность АЦП – 24 бит
  • Усиление по входу А – 64 или 128
  • Усиление по входу В – 32
  • Частота измерений – 10 или 80 раз в секунду
  • Питающее напряжение – 2,6-5,5 В
  • Потребляемый ток – менее 10 мА
  • Входное напряжение – ± 40 мВ

На плате с АЦП имеются два разъёма – J1 и JP2, на которых имеются следующие обозначения:

  • J1
    • E –, E + питание тензорного моста
    • A –, A + дифференциальный вход канала А
    • В –, В + дифференциальный вход канала В
  • JP2
    • GND, VCC питание
    • DT, SCK — информационные шины

Подключение НХ711 к ардуино

Поскольку резисторы тензорного датчика включены по мостовой схеме, от устройства отходят 4 проводника, имеющих разную цветовую маркировку. На два плеча моста подаётся опорное напряжение, а с двух других плеч снимается выходное напряжение, которое подаётся на вход операционного усилителя микросхемы НХ711. Подключение по цветам проводов осуществляется следующим образом:

  • Красный – Е +
  • Чёрный – Е –
  • Белый – А –
  • Зелёный – А +

Для дальнейшей обработки и передачи информации осуществляется подключение НХ711 к Ардуино UNO.

Для этого контакты питания GND и VCC HX711 подключаются к точкам GND и 5V разъёма POWER модуля Arduino UNO, а контакты DT и SCK подключаются к точкам A1 и A0 разъёма ANALOG IN.

Тензодатчик НХ711 через контроллер Arduino UNO можно подключить к жидкокристаллическому дисплею LCD 1602 или компьютеру, используя USB порт и стандартные библиотеки для Ардуино.

Поскольку на выходе измерительного моста изменяется напряжение, то именно оно преобразуется в бинарный код. Диапазон контролируемых напряжений зависит от выбранного коэффициента усиления.

Если коэффициент равен 128, диапазон измеряемых напряжений варьируется от – 20 mV до + 20 mV, выбор коэффициента усиления 64 определяет пределы измерения от – 40 mV до + 40 mV и при коэффициенте равном 32 пределы измерения определяются величинами – 80 mV и + 80 mV. Эти данные будут корректными только при напряжении питания +5 V.

Если входное напряжение выйдет за нижнюю границу диапазона, АЦП выдаст код 800000h, а если за верхнюю, то код будет 7FFFFFh. Для калибровки и измерений можно использовать следующие коды:

//код для калибровки
//код для калибровки
#include “HX711.h” HX711 scale(A1, A0); // DT, CLK float Calibration_Factor_Of_Load_cell = -3.7; // этот калибровочный коэффициент настраивается в соответствии с тензодатчиком
float U;
float O; void setup() { Serial.begin(9600); Serial.println(“HX711 calibration sketch”); Serial.println(“Remove all weight from scale”); Serial.println(“After readings begin, place known weight on scale”); Serial.println(“Press + or a to increase calibration factor”); Serial.println(“Press – or z to decrease calibration factor”); scale.set_scale(); scale.tare(); //Сбросьте масштаб до 0 long zero_factor = scale.read_average(); //Получаем базовое чтение Serial.print(“Zero factor: “); //Это можно использовать, чтобы устранить необходимость тарирования шкалы. Полезно в проектах постоянного масштаба. Serial.println(zero_factor);
} void loop() { scale.set_scale(Calibration_Factor_Of_Load_cell); //Отрегулируйте этот калибровочный коэффициент Serial.print(“Reading: “); U = scale.get_units(); if (U < 0) { U = 0.00; } O = U * 0.035274; Serial.print(O); Serial.print(" grams"); Serial.print(" Calibration_Factor_Of_Load_cell: "); Serial.print(Calibration_Factor_Of_Load_cell); Serial.println(); if (Serial.available()) { char temp = Serial.read(); if (temp == '+' || temp == 'a') Calibration_Factor_Of_Load_cell += 1; else if (temp == '-' || temp == 'z') Calibration_Factor_Of_Load_cell -= 1; } }

Источник: https://ArduinoMaster.ru/datchiki-arduino/tenzodatchiki-i-vesy-na-arduino-i-nh711/

Программирование Arduino с помощью ArduBloсk на примере робота, движущегося по полосе

Здравствуйте! Я Аликин Александр Сергеевич, педагог дополнительного образования, веду кружки «Робототехника» и «Радиотехника» в ЦДЮТТ г. Лабинска. Хотел бы немного рассказать об упрощенном способе программирования Arduino с помощью программы «ArduBloсk».

Эту программу я ввел в образовательный процесс и восхищен результатом, у детей она пользуется особым спросом, особенно при написании простейших программ или для создания какого-то начального этапа сложных программ. ArduBloсk является графической средой программирования, т. е.

все действия выполняются с нарисованными картинками с подписанными действиями на русском языке, что в разы упрощает изучение платформы Arduino. Дети уже со 2-го класса с легкостью осваивают работу с Arduino благодаря этой программе. Да, кто-то может сказать, что еще существует Scratch и он тоже очень простая графическая среда для программирования Arduino.

Но Scratch не прошивает Arduino, а всего лишь управляет им по средством USB кабеля. Arduino зависим от компьютера и не может работать автономно. При создании собственных проектов автономность для Arduino — это главное, особенно при создании роботизированных устройств.

Даже всеми известные роботы LEGO, такие как NXT или EV3 нашим ученикам уже не так интересны с появлением в программировании Arduino программы ArduBloсk. Еще Arduino намного дешевле любых конструкторов LEGO и многие компоненты можно просто взять от старой бытовой электронной техники.

Программа ArduBloсk поможет в работе не только начинающим, но и активным пользователям платформы Arduino.

Итак, что же такое ArduBloсk? Как я уже говорил, это графическая среда программирования. Практически полностью переведена на русский язык. Но в ArduBloсk изюминка не только это, но и то, что написанную нами программу ArduBloсk конвертирует в код Arduino IDE. Эта программа встраивается в среду программирования Arduino IDE, т. е. это плагин.

Ниже приведен пример мигающего светодиода и конвертированной программы в Arduino IDE. Вся работа с программой очень проста и разобраться в ней сможет любой школьник.

В результате работы на программе можно не только программировать Arduino, но и изучать непонятные нам команды в текстовом формате Arduino IDE, ну а если же «лень» писать стандартные команды — стоит быстрыми манипуляциями мышкой набросать простенькую программку в ArduBlok, а в Arduino IDE её отладить.

Чтобы установить ArduBlok, необходимо для начала загрузить и установить Arduino IDE с официального сайта Arduino и разобраться с настройками при работе с платой Arduino UNO. Как это сделать описано на том же сайте или же на Амперке, либо посмотреть на просторах YouTube.

Ну, а когда со всем этим разобрались, необходимо скачать ArduBlok с официального сайта, вот ссылка. Последние версии скачивать не рекомендую, для начинающих они очень сложны, а вот версия от 2013-07-12 — самое то, этот файл там самый популярный.

Затем, скачанный файл переименовываем в ardublock-all и в папке «документы». Создаем следующие папки: Arduino > tools > ArduBlockTool > tool и в последнею кидаем скачанный и переименованный файл.

ArduBlok работает на всех операционных системах, даже на Linux, проверял сам лично на XP, Win7, Win8, все примеры для Win7. Установка программы для всех систем одинакова.

Ну, а если проще, я приготовил на Mail-диске 7z архив, распаковав который найдете 2 папки.

В одной уже рабочая программа Arduino IDE, а в другой папке содержимое необходимо отправить в папку документы.

Для того, чтобы работать в ArduBlok, необходимо запустить Arduino IDE. После чего заходим во вкладку Инструменты и там находим пункт ArduBlok, нажимаем на него — и вот она, цель наша.Теперь давайте разберемся с интерфейсом программы.

Как вы уже поняли, настроек в ней нет, а вот значков для программирования предостаточно и каждый из них несет за собой команду в текстовом формате Arduino IDE. В новых версиях значков еще больше, поэтому разобраться с ArduBlok последней версии сложно и некоторые из значков не переведены на русский.

В разделе «Управление» мы найдем разнообразные циклы.В разделе «Порты» мы можем с вами управлять значениями портов, а также подключенными к ним звукоизлучателя, сервомашинки или ультразвукового датчика приближения.

В разделе «Числа/Константы» мы можем с вами выбрать цифровые значения или создать переменную, а вот то что ниже вряд ли будите использовать.В разделе «Операторы» мы с вами найдем все необходимые операторы сравнения и вычисления.В разделе «Утилиты» в основном используются значки со временем.

«TinkerKit Bloks»- это раздел для приобретенных датчиков комплекта TinkerKit. Такого комплекта у нас, конечно же, нет, но это не значит, что для других наборов значки не подойдут, даже наоборот — ребятам очень удобно использовать такие значки, как включения светодиода или кнопка. Эти знаки используются практически во всех программах.

Но у них есть особенность — при их выборе стоят неверные значки обозначающие порты, поэтому их необходимо удалить и подставить значок из раздела «числа/константы» самый верхний в списке.«DF Robot» — этот раздел используется при наличии указанных в нем датчиков, они иногда встречаются.

И наш сегодняшний пример — не исключение, мы имеем «Регулируемый ИК выключатель» и «Датчик линии». «Датчик линии» отличается от того, что на картинке, так как он от фирмы Амперка. Действия их идентичны, но датчик от Амперки намного лучше, так как в нем имеется регулятор чувствительности.

«Seeedstudio Grove» — датчики этого раздела мной ни разу не использовались, хотя тут только джойстики. В новых версиях этот раздел расширен.И последний раздел это «Linker Kit». Датчики, представленные в нем, мне не попадались. Хочется показать пример программы на роботе, двигающемся по полосе. Робот очень прост, как в сборке, так и в приобретении, но обо всем по порядку. Начнем с его приобретения и сборки.

Вот сам набор деталей все было приобретено на сайте Амперка.

  1. AMP-B001 Motor Shield (2 канала, 2 А) 1 890 руб
  2. AMP-B017 Troyka Shield 1 690 руб
  3. AMP-X053 Батарейный отсек 3×2 AA 1 60 руб
  4. AMP-B018 Датчик линии цифровой 2 580 руб
  5. ROB0049 Двухколёсная платформа miniQ 1 1890 руб
  6. SEN0019 Инфракрасный датчик препятствий 1 390 руб
  7. FIT0032 Крепление для инфракрасного датчика препятствий 1 90 руб
  8. A000066 Arduino Uno 1 1150 руб

Для начала соберем колесную платформу и припаяем к двигателям провода.Затем установим стойки, для крепления платы Arduino UNO, которые были взяты от старой материнской платы ну или иные подобные крепления.Затем крепим на эти стойки плату Arduino UNO, но один болтик прикрутить не получиться — разъемы мешают. Можно, конечно, их выпаять, но это уже на ваше усмотрение.Следующим крепим инфракрасный датчик препятствий на его специальное крепление. Обратите внимание, что регулятор чувствительности находиться сверху, это для удобства регулировки.Теперь устанавливаем цифровые датчики линии, тут придется поискать пару болтиков и 4 гайки к ним Две гайки устанавливаем между самой платформой и датчиком линии, а остальными фиксируем датчики.Следующим устанавливаем Motor Shield или по другому можно назвать драйвер двигателей. В нашем случае обратите внимание на джампер. Мы не будем использовать отдельное питание для двигателей, поэтому он установлен в этом положение. Нижняя часть заклеивается изолентой, это чтобы не было случайных замыканий от USB разъема Arduino UNO, это на всякий случай.Сверху Motor Shield устанавливаем Troyka Shield. Он необходим для удобства соединения датчиков. Все используемые нами сенсоры цифровые, поэтому датчики линии подключены к 8 и 9 порту, как их еще называют пины, а инфракрасный датчик препятствий подключен к 12 порту. Обязательно обратите внимание, что нельзя использовать порты 4, 5, 6, 7 так как оны используются Motor Shield для управлением двигателями. Я эти порты даже специально закрасил красным маркером, чтобы ученики разобрались.Если вы уже обратили внимание, мной была добавлена черная втулка, это на всякий случай, чтобы установленный нами батарейный отсек не вылетел. И наконец, всю конструкцию мы фиксируем обычной резинкой. Подключения батарейного отсека может быть 2-х видов. Первый подключение проводов к Troyka Shield. Также возможно подпаять штекер питания и подключать уже к самой плате Arduino UNO.Вот наш робот готов. Перед тем как начать программировать, надо будет изучить, как все работает, а именно: — Моторы: Порт 4 и 5 используются для управления одним мотором, а 6 и 7 другим; Скоростью вращения двигателей мы регулируя ШИМом на портах 5 и 6; Вперед или назад, подавая сигналы на порты 4 и 7. — Датчики: У нас все цифровые, поэтому дают логические сигналы в виде 1 либо 0; А что бы их отрегулировать, в них предусмотрены специальные регуляторы а при помощи подходящей отвертки их можно откалибровать.

Читайте также:  Уроки arduino: основы работы с семисегментными дисплеями

Подробности можно узнать на Амперке. Почему тут? Потому что там очень много информации по работе с Arduino.

Источник: https://habr.com/post/240441/

Самодельный силовой шилд для Ардуино

Настала пора выполнить обещание, которое я дал несколько месяцев назад в статье о визуализации данных при помощи LabView. Саму статью, если кому интересно, можно найти здесь: arduino-kit.com.ua/arduino-i-labview-ili-vizualizacija-dannyh.html . В данной статье я расскажу, как своими руками можно изготовить шилд (плату расширения) для Ардуино.

Зачем это делать? Вопрос резонный, тем более, что на arduino-kit.com.ua есть целый раздел, посвященный этой тематике, в котором целых 5 страниц (на момент написания данной статьи) а это практически 100 вариантов разнообразных плат arduino-kit.com.ua/shildy , и это не считая макетных плат (досок) представленных в разделе arduino-kit.com.ua/doski-bread-board .

Искренне советую изучить – вполне возможно, что плата, которой Вам не хватает, там уже есть, и вместо того, чтобы бегать по радиорынку, зачастую находящемуся еще и не в вашем городе можно просто заказать и она приедет через несколько дней. Но почему я все-таки решил создать еще одну? Так получилось, что для моих экспериментов не хватает именно такой.

Окончательную необходимость создания данной платы я осознал при написании статьи о термодатчиках (arduino-kit.com.ua/tsifrovoy-termometr-ds18b20-i-arduino-uno.html ) в этом проекте пришлось подключать к одному из контактов (+5V) целых 4 проводника.

В принципе не много, если учесть, что проект учебный, а проводочки тоненькие, но если бы это был бы проект по серьезней, а провода, хотя бы сечением 0,5 кв.мм было бы намного сложнее. Кроме того – не всегда есть возможность воспользоваться паяльником.

Хорошо, когда весь проект начинается и заканчивается в стенах мастерской, или просто на рабочем столе, а если предполагается, что Ардуинка будет управлять, например скважиной до которой идти несколько сотен метров по зимней степи… Да и 40 мА, которыми может оперировать плата – честно говоря маловато.

Их, конечно хватит, чтобы помигать диодиком и даже несколькими, или небольшое реле но на этом практически все, а иногда хочется немного большего, ну хотя бы 0,5 А на выход. Кроме того – 5 В не всегда то напряжение, которым нужно оперировать, существует много очень полезной автоматики управляемой 9, 12, 24 В… И еще – было бы хорошо не таскать лишние блоки питания, чтобы Ардуинка могла запитываться непосредственно от шилда. Вот у нас фактически и сформировалось техническое задание для нашего нового силового шилда:

1. Иметь возможность подключения проводников без помощи пайки.

2. Непосредственно управлять нагрузкой до 0,5 (2) А.
3. Возможность подключения питания Ардуино непосредственно от шилда.

Платы Raspberry Pi на портале Arduino-kit.com.ua

Данную плату я нарисовал в программе Sprint-layout_5.0 – очень удобная, интуитивно понятная программа, которую, при желании можно загрузить с этой страницы. При разработке платы я ориентировался только на самые распространенные компоненты, которые будет довольно легко приобрести практически в любом магазине радиотоваров. Для реализации данного проекта мне понадобилось:

Диодный мост BR610 – 1 шт.

Стабилизатор напряжения 7806 – 1 шт.
Конденсатор 35Вх1000мкФ – 1 шт.
Конденсатор 50Вх1мкФ – 1 шт.
Конденсатор 50Вх2,2мкФ – 1 шт.
Резистор 75Ом – 1 шт. (минимум 1 Вт)
Резистор SMD 50Ом – 14 шт.
Транзистор IRF3205 – 14 шт.
Колодка 7,5 мм двойная – 1 шт.
Колодка 5 мм двойная большая – 5 шт.
Колодка 5 мм двойная малая – 7 шт.
Колодка 5 мм тройная большая – 8 шт.
Колодка 5 мм тройная малая – 4 шт.
Штырьки платы – 28 шт.
Фольгированный стеклотекстолит 90х100 мм – 1 шт.
Штекер питания – 1 шт.
Хлорное железо, канифоль, припой.

Также были куплены 2 сверла. Одно диаметром 0,8 мм Р6М5 с покрытием нитридом титана, второе – диаметром 1,2 мм твердосплавное ВК8. Брать сверла HSS не рекомендую. На стеклотекстолите садятся моментально, а заточить без специальных навыков и инструмента практически невозможно. 

 
Рисунок 1. Макет платы с пояснениями.

После окончательной отрисовки платы совершенно не лишним будет распечатать то, что получилось, проделать отверстия иголкой, вставить компоненты и посмотреть, не нужны ли какие-либо изменения, потому, как на готовой плате что-то изменить будет гораздо сложнее. 

 
Рисунок 2. Предварительный макет платы и некоторые детали. 
Рисунок 3. Компоненты размещенные на плате. Одна из колодок питания и большинство транзисторов не показаны.

Далее делаем плату при помощи ЛУТ. ЛУТ это Лазерно-Утюжная Технология. Разработана радиолюбителями специально для возможности изготовления печатных плат в домашних условиях. Делается просто, но есть и нюансы.

Если в двух словах – распечатываем макет платы при помощи лазерного принтера (я использовал светодиодный Xerox Phaser 3010, что в принципе одно и тоже) на бумагу (бумагу лучше брать с «глянцевых» журналов или рекламных проспектов), при помощи нагрева утюгом (между утюгом и распечаткой платы лучше подложить чистый лист бумаги, во избежания загрязнения подошвы утюга) переносим изображение на фольгированную сторону стеклотекстолита, травим, лудим, сверлим. И все – плата готова. Дальше предлагаю посмотреть картинки с небольшими пояснениями нюансов этого достаточно несложного процесса. 

 
Рисунок 4. Распечатанная плата и заготовка.

Для нашего проекта целиком подойдет фольгированный односторонний стеклотекстолит. Перед нанесением (переводом) тонера вырезается нужный кусок (режется обычной ножовкой по металлу), очищается и обезжиривается, например, ацетоном или 646-м растворителем. В некоторых случаях можно применить наждачную бумагу «нулёвку» (Р1000 – Р2400). 

 
Рисунок 5. Перенос тонера при помощи утюга.

На Рисунке 5 чистый лист бумаги условно не показан. Честно говоря «приклеить» бумагу к текстолиту проще без него, особенно, если утюг пока не успел нагреться. Но потом чистый лист обязателен. Краска с бумаги может перейти на подошву утюга и впоследствии пачкать выглаживаемую одежду.

Температуру на утюге лучше выставлять либо «среднюю» («две точки») либо чуть меньше, поверхность для работы (на которой проглаживается текстолит) должна быть жесткой и ровной. Показатель максимальной температуры – небольшое потемнение чистого листа бумали, через который проглаживается плата.

Проглаживать нужно тщательно, чтобы «приклеились» все фрагменты рисунка платы, но без особого нажима, чтобы тонер не «потек» и соседние дорожки не «слиплись». 

 
Рисунок 6. Проклеенная и зашкуренная плата.

После успешной проклейки (переноса рисунка) наждачной бумагой слегка «зашкуриваем» бумагу. Делать это нужно практически без нажима, чтобы просто остались царапины. Чем больше царапин тем легче и быстрее удаляется бумага. 

 
Рисунок 7. Удаление бумаги.

Для того, чтобы удалить бумагу набираем в миску подходящего размера теплой воды, и аккуратно пальцами скатываем начинающую раскисать бумагу. Можно для этих целей также использовать старую зубную щетку. Для прочистки отверстий и промежутков между дорожками можно использовать острую иглу или булавку.

После того, как плата очищена от остатков бумаги, необходим внимательный осмотр. Все дефекты на данном этапе можно исправить перманентным маркером, или лаком для ногтей. Маркер лучше выбирать по тоньше, равно, как и кисточку для лака.

После этого помещаем плату в раствор хлорного железа. Раствор готовится просто: берется стеклянная банка, на 250 мл фильтрованной, кипяченой, охлажденной до теплого состояния воды берется 80…110 грамм кристаллического хлорного железа.

Размешивается стеклянной, деревянной, либо пластмассовой палочкой. Для травления платы подойдет старая фотографическая ванночка (кювета), но лично я использовал для этого процесса ненужную канистру.

Плату можно положить сверху на пленку, которая образовывается на поверхности жидкости – при определенной сноровке это не сложно. Емкость с хлорным железом и платой нужно периодически (без фанатизма) покачивать. Лучше, если температура раствора будет «чуть теплая».

Для предупреждения образования пузырей раз в 10…15 минут плата извлекается и осматривается. Я поддеваю спичками и приподнимаю пальцами, удерживая за ребра. 

 
Рисунок 8. Травление платы.

Надо внимательно следить, чтобы под «плавающей» платой не остались пузырьки воздуха. Это может сильно увеличить время травления, или просто ухудшить внешний вид получившийся платы. 

 
Рисунок 9. Протравленная плата с остатками тонера.

С протравленной платы остатки тонера и бумаги можно удалить, соскребая тупой стороной ножа, счищая наждачкой, но самый безопасный способ – смыть ацетоном, либо 646-м растворителем. 

 
Рисунок 10. Остатки тонера смыты растворителем.

Затем плата лудится (наносится слой припоя на дорожки), а только после этого сверлится. Лудить плату легче, если предварительно все дорожки платы обработать тампоном смоченным в паяльной кислоте. 

 
Рисунок 11. Луженая плата.

Я сверлю обычным шуруповертом в горизонтальном положении, на мой взгляд, так меньше шансов сломать сверло. Для наметки центров отверстий можно использовать шило.

Лучше всего использовать твёрдосплавное, центровочное сверло, оно хоть и стоит раза в 4 дороже обычного, но ресурс у него на порядок выше, а если учесть, что оно двухстороннее, то при аккуратной периодической эксплуатации его может хватить на несколько лет. Диаметр сверла под мелкие детали – 0,8…0,9 мм, под крупные, например колодки и мост – 1,2 мм.

Да, и еще одно… После сверловки очень желательно снять фаски, с той стороны, с которой будут вставляться детали. Собирать потом плату будет гораздо комфортнее. Снятие фаски можно сделать сверлом диаметром примерно 3 мм, удерживая сверло в руках. 

 
Рисунок 12. Засверленная плата.

Еще хотелось бы сказать, что этот проект имеет маленький нюанс. Все элементы, которые должны управляться управляются «минусами», это нужно учитывать. Неудобство не столь уж большое, если судить по распространённости комплектующих и низкой стоимости всего проекта.

Также к особенностям проекта относится «нестандартная» пайка силовых транзисторов. Так, как я решил обойтись без радиаторов (коммутируемый ток несколько процентов от максимального это прощает), пришлось несколько «доработать» их выводы путём аккуратного изгиба.

Как именно они согнуты видно из Рисунка 14. 

 
Рисунок 13. Изгиб выводов транзисторов.

Особое внимание нужно обратить, чтобы после пайки ножки транзисторов не соприкасались между собой.

А теперь немного практики. Для начала попробуем «поуправлять» лампочкой на 24В. Да не просто «включить/выключить», а с помощью ШИМ (Широтно-Импульсная Модуляция) плавно её зажечь, потом не менее плавно погасить. Для этого нам понадобится элементарный код:

void setup() { }

void loop() {
for (int i=0; i

Источник: https://arduino-kit.com.ua/samodelnyy-silovoy-shild-dlya-arduino.html

Квадрокоптер на Ардуино: поэтапная сборка и настройка своими руками

Здравствуйте, наши уважаемые читатели. В этой статье мы поговорим про то, как собрать квадрокоптер на Ардуино.

Это не самая простая, хотя и очень увлекательная задача, результатом решения которой станет появление небольшого беспилотника, спроектированного, собранного, и настроенного собственными руками.

Читайте также:  Ардуино светофор: делаем своими руками на основе уно

Сразу оговоримся, что речь идет о максимально дешевом дроне из наиболее доступных по цене комплектующих.

Необходимые детали и узлы

Прежде чем приступить к сборке квадрокоптера своими руками, необходимо обзавестись всеми необходимыми деталями. Мозгом нашей самоделки станет полетный контроллер Arduino Uno. Его возможностей более чем достаточно для того, чтобы управлять беспилотником.

Помимо микроконтроллера, нам понадобятся:

  • Аккумулятор (лучше несколько) на 3.7В
  • Плата MPU-6050 (на ней установлены гироскоп и акселерометр)
  • Транзистор ULN2003A
  • Коллекторные двигатели с полым ротором 0820
  • Провода

Необходимо сделать несколько замечаний. Так как мы собираем дешевый самодельный дрон, то наш выбор пал на коллекторные движки с полым ротором (так называемые coreless motors). Они далеко не так надежны, как бесколлекторные двигатели, но зато гораздо дешевле стоят. Кроме того, можно обойтись без дополнительных контроллеров скорости.

Зато невозможно обойтись без гироскопа и акселерометра. Гироскоп необходим для того, чтобы квадрокоптер мог удерживать заданное направление движения, тогда как акселерометр используется для измерения ускорения. Без этих устройств управлять коптером было бы гораздо сложнее (если вообще возможно), так как именно они предоставляют данные для сигнала, регулирующего скорость вращения винтов.

Мы не указали в списке необходимых деталей раму. Ее можно приобрести, а можно распечатать на 3D принтере каркас, лучи и крепления для двигателей. Второй вариант нам кажется более предпочтительным, тем более, что в интернете можно без труда найти проекты квадрокоптера.

Пошаговая инструкция по сборке

Как напечатать раму и крепеж

3D принтеры можно найти во многих университетах, лабораториях, коворкингах. Зачастую доступ к ним бесплатный. Модели для печати можно создать самостоятельно, используя для этого, например, Solidworks. А можно воспользоваться уже готовыми решениями, при необходимости изменив параметры.

Как настроить акселерометр гироскопа

Для настройки акселерометра-гироскопа (I2C)мы рекомендуем использовать следующую библиотеку. Ни в коем случае не подключайте плату к напряжению 5В, иначе вы моментально ее испортите.

Вкратце расскажем, чем интересна плата I2C с датчиками. Она заметно отличается от обычной платы акселерометра с тремя аналоговыми выходами для осей X, Y, Z. I2C представляет собой интерфейсную шину, обеспечивающую передачу значительных объемов данных через логические цифровые импульсы.

Аналоговых выходов на плате не много, и в этом большой плюс I2C, ведь в противном случае нам бы пришлось использовать все порты на Arduino, чтобы получить данные от гироскопа и акселерометра.

Схема подключения к Arduino

Прежде чем плата I2C сможет обмениваться данными с Arduino, ее необходимо подключить к контроллеру.

Схема следующая:

  • VDD -3.3v
  • GND — GND
  • INT- digital 2
  • SCL — A5
  • SDA — A4
  • VIO – GND

Еще раз обращаем внимание на то, что для питания необходимо использовать необходимо именно 3.3В. Подключение платы к 5В скорее всего приведет к ее поломке (спасти может только регулятор напряжения, но он далеко не всегда присутствует на плате).

Если на плате присутствует контакт AD0, он подключается к земле (GND).

В библиотеке, на которую мы дали ссылку выше, используются перечисленные каналы.

Скетч для Arduino

Преимуществом выбранного для сборки дрона микроконтроллера является относительная простота работы с ним. Вам не придется читать специальные книги, документы и техническую документацию. Достаточно знать основы программирования Arduino, которые, как вы сейчас убедитесь, не так сложны.

Подсоединив плату MPU-6050 к контроллеру, включите его и перейдите по ссылке.

Нас интересует скетч I2C scanner code, вернее, его код.

Скопируйте программный код, вставьте в пустой скетч, после чего запустите его. Убедитесь, что подключение установлено к 9600 (для этого запустите Arduino IDE через Tools-Serial Monitor). Должно появиться устройство I2C с адресом 0×68 либо 0×69. Запишите или запомните адрес. Если же адрес не присвоился, скорее всего проблема в подключении к электронике Arduino.

Затем нам понадобится скетч, умеющий обрабатывать данные гироскопа и акселерометра. В интернете есть множество вариантов, и найти подходящий не проблема. Скорее всего, он будет в заархивированном виде. Разархивируйте скачанный архив, отройте Arduino IDE и добавьте библиотеку (sketch-import library-add library). Нам понадобятся папки MPU6050 и I2Cdev.

Открываем MPU6050_DMP6 и внимательно просматриваем код. Никаких сложных действий производить не придется, но если был присвоен адрес 0×60, то необходимо расскоментировать строку в верхней части (ее можно найти за #includes) и написать верный адрес. Изначально таv указан 0×68.

Загружаем программу, открываем окно монитора через 115200 и просто следуем инструкции. Через несколько мгновений вы получите данные с гироскопа/акселерометра. Затем следует провести калибровку датчиков.

Установите плату на ровную поверхность и запустите скетч MPU6050_calibration.ino (легко ищется в интернете). Просмотрите код, по умолчанию в нем указан адрес 0×68. После запуска программы у вас появится информация по отклонениям (offset). Запишите ее, она нам понадобится в скетче MPU6050_DMP6.

Все, вы получили функционирующие гироскоп и акселерометр.

Программа для Arduino

По ссылке вы сможете скачать программу для Arduino, с помощью которой коптер будет стабилизирован в полете и сможет зависнуть над землей. В дополнение к программе обязательно скачайте библиотеку с Arduino PID по ссылке.

Программа поможет вам управлять дроном. Алгоритм, используемый для стабилизации, основан на двух PID-контроллерах. Один предназначен для крена, другой – для тангажа.

Разница в скоростях вращения пары винтов 1 и 2 равна разнице в скоростях пары винтов 3 и 4. Тоже самое справедливо и для пар 1, 3 и 2, 4. PID-регулятор производит изменение разницы в скорости, после чего крен и тангаж становятся равными нулю.

Обратите внимание на цифровые пины Arduino для моторов и не забудьте изменить скетч.

Подключение к контроллеру

Для того, чтобы управлять коптером, нам необходимо получить контроль над моторами, подключив их к Arduino. Контроллер дает на выходе лишь небольшое напряжение и силу тока, поэтому подключение двигателей напрямую лишено смысла. Вместо этого можно поставить несколько транзисторов, позволяющих увеличить напряжение.

Для составления схемы нам необходимы:

  • Arduino
  • Двигатели
  • Транзисторы

Все это собирается на монтажной плате и соединяется коннекторами.

На первом этапе следует подсоединить 4 ШИМ выхода (обозначены ~) к транзистору. Затем подсоедините коннекторы к движкам, подключенным к питанию. В нашем случае мы используем аккумулятор на 5В, но подойдет и аккумулятор на 3-5В.

Транзисторы должны быть заземлены, а земля на плате Arduino должна быть подключена к земле аккумулятора. Двигатели должны вращаться в правильном направлении, то есть работать на подъем коптера, а не на его крен.

Переключив контакт двигателя с напряжения 5В на транзистор, вы увидите, что ротор изменит направление вращения. Единожды совершив настройку, больше возвращаться к изменению направления вращения ротора не придется. Теперь нас интересует скорость.

Запустив и проверив акселерометр, мы устанавливаем нашу схему на ProtoBoard. За ее неимением, можно использовать и обычную монтажную плату, предварительно напаяв на ней рельсы для контроллера.

Как еще можно модернизировать квадрик

Узким местом коптера являются его коллекторные движки. Если поискать, можно найти чуть более крупные и более мощные моторы, чем предложены в нашей статье, но значительного выигрыша в характеристиках не произойдет.

Впрочем, у нас была цель собрать недорогой квадрокоптер своими руками, и именно поэтому использовались дешевые моторы. Бесколлекторные двигатели заметно дороже, но зато они дадут вам заметно большую мощность и надежность. К ним придется докупить еще и контроллеры скорости, но это действительно эффективная модернизация.

Выбор платы Arduino Uno обусловлен тем, что с нее можно довольно легко снять чип и поставить его на ProtoBoard. Это позволяет уменьшить вес дрона на 30 грамм, но придется включить в схему дополнительные конденсаторы. Подойдет и плата Arduino Pro Mini.

Что касается программы Arduino, то ее можно сравнительно легко изменить и дополнить новыми функциями. Главное, что с ее помощью дрон способен в автоматическом режиме стабилизовать свое положение.

На квадрокоптер могут быть установлены дополнительные модули, например, плата приемника, что позволит организовать дистанционное управление дроном.

Источник: https://DronGeek.ru/profi/kvadrokopter-na-arduino

ШИМ-регулятор на Arduino

  Простой ШИМ-регулятор легко можно сделать с помощью Arduino. Для примера возьмём всем известный контроллер Arduino UNO , который построен на ATmega328.

  Он имеет 14 цифровых входов/выходов ( 6 из которых могут использоваться как выходы ШИМ)  и  6 аналоговых входов. Arduino UNO недорого можно купить здесь – http://ali.

pub/y24f1

   Для наших целей понадобится один аналоговый вход – А0, который используем для подключения переменного резистора, а также один выход ШИМ – возьмём 11. Соберём простую схему : 

 

      И напишем простую программу для управления яркостью светодиода , подключённого к 11 выходу ШИМ. Регулировать будем переменным резистором, который подключен к аналоговому входу А0.

   Получаем первый результат  –  яркость светодиода изменяется с помощью переменного резистора. Для управления какой-нибудь силовой нагрузкой включённой в сеть 220 вольт такой ШИМ тоже сгодится, только желательно сделать гальваническую развязку между силовой частью и Arduino.  Можно взять готовый кусочек схемы из предыдущей страницы ” ШИМ-регулятор 220 В( IGBT)”

    Провёл небольшие испытания этого ШИМ-регулятора – сначала как обычно подключил активную нагрузку ( лампочку накаливания) а затем и коллекторный двигатель. Всё работает. Снял видео – 

                                       

 Далее по плану использовать обратную связь от таходатчика коллекторного двигателя для поддержания стабильных оборотов, а также увеличить частоту ШИМ. 

   Добавил обратную связь по таходатчику для регулятора оборотов . Для этого собрал простую схему обработки сигнала таходатчика 

и подал это сигнал на аналоговый вход  А1.  Для защиты входа Ардуино от перенапряжения поставил ещё стабилитрон на 5.1  вольт. Получилась такая схема

 Для написания программы  управления оборотами коллекторного двигателя  использовал библиотеку PID – регулятора для Arduino.

#include // подключаем библиотеку PID-регулирования

double pwmSet, pwmSpeed, pwmOut; //  //переменные для пид-регулятора PID myPID(&pwmSpeed, &pwmOut, &pwmSet, 0.2, 0.5, 0, DIRECT); // Подобрал коэфф пид-регулятора Kp=0.2, Ki=0.5, Kd=0 . #define PWM_PIN   11 // выход ШИМ #define SET_PIN    0 // установка оборотов  0-5 вольт  мин-макс #define TACHO_PIN  1 // сигнал от таходатчика 0-5 вольт  мин-макс void setup() {     myPID.SetMode(AUTOMATIC); } void loop()  {     pwmOut = constrain ( pwmOut , 0, 250); // это необязательно – по умолчанию 0-255     pwmSet  =  analogRead(SET_PIN); // считываем показания потенциометра регулировки скорости     pwmSpeed = analogRead(TACHO_PIN); // считываем показания таходатчика     myPID.Compute(); //  здесь происходят вычисления пид-регулятора – то есть pwmOut     analogWrite(PWM_PIN, pwmOut);//  получаем выходной сигнал ШИМ }

В результате получилось очень даже неплохо – регулируются обороты двигателя с поддержанием мощности. Снял по этому поводу видео – 

Источник: http://www.motor-r.info/p/blog-page_19.html

Как сделать простой калькулятор на Arduino

В данной статье мы рассмотрим, как использовать LCD дисплей совместно с клавиатурой и отладочной платой Arduino, чтобы создать простой калькулятор.

Хотя калькуляторы существуют уже очень давно, их электронные версии доминировали в мире в течение десятков лет. Калькуляторы, от простых до научных, бывают всех форм и размеров.

Но в современном мире, где практически у каждого есть смартфон, от них нет никакой пользы. Это не значит, что они нам не нравятся.

Так что давайте отдадим им дань уважения, собрав свой собственный простой калькулятор на Arduino.

Что нам понадобится, чтобы завершить этот проект:

Перед тем, как начать

Чтобы иметь возможность скомпилировать программу, необходимо, чтобы в Arduino IDE были установлены библиотеки LiquidCrystal.h и Keypad.h. Это можно сделать одним из двух способов. Если у вас установлена Arduino IDE версии 1.6.

2 и выше, просто используйте менеджер библиотек. Если вы используете более раннюю версию, то вам необходимо скопировать эти библиотеки в каталог библиотек в месте установки Arduino IDE. Ссылка на руководство, как устанавливать библиотеки.

Arduino Uno

Принцип действия

Это простое устройство стартует с очистки экрана LCD и ждет нажатий кнопок на клавиатуре. В зависимости от нажатых пользователем кнопок оно формирует числа.

Как только пользователь нажимает на кнопку операции, оно запоминает первое число и операцию, которую необходимо выполнить, и продолжает обрабатывать ввод второго числа. Когда пользователь закончит ввод второго числа и нажмет кнопку «равно» на клавиатуре, программа выполнит требуемую операцию и выведет на экран результат.

Читайте также:  Блок питания на ардуино: виды, особенности, возможная схема

После чего она ожидает нажатия кнопки «очистить» ('C'), чтобы начать всё с начала (пользователь также может в любой момент сбросить программу).

LCD дисплей 1602

Arduino IDE обладает встроенной библиотекой (LiquidCrystal.h), которая поддерживает LCD дисплеи на базе чипсета Hitachi HD44780 (и на базе совместимых аналогов). Кроме отображения текста на LCD, эта библиотека также может обрабатывать печать чисел с плавающей запятой с заданным количеством цифр после запятой, что делает работу разработчика проще. Например:

double Pi = 3.1415926535; Lcd.print (Pi,4);

Этот код напечатает на LCD дисплее 3.1415, так как число 4 в вызове функции означачает вывод только 4 цифр после запятой.

LCD дисплей в данном примере использует 4-битный режим передачи данных через выводы D4-D7 (11-14 на плате). Потенциометр действует, как делитель напряжения, и управляет контрастностью отображаемого текста. Его средний вывод подключен к выводу V0 (вывод 3) дисплея.

LCD дисплей 1602

Давайте подключим наш LCD к плате Arduino. Сначала подключите выводы +5V и GND от Arduino к линиям питания на макетной плате. Подключите свой LCD к макетной плате и соедините вывод 1 с шиной корпуса, а вывод 2 с шиной +5V.

Далее установите на макетную плату потенциометр и подключите две его крайние ноги: первую к +5V, вторую к GND (какая из них будет первой или второй, значения не имеет). Теперь подключите средний вывод потенциометра к выводу 3 LCD дисплея.

Нам понадобится подать питание на подсветку дисплея. Выводы 15 и 16 LCD дисплея – это анод и катод встроенного светодиода, который служит в качестве подсветки LCD.

Мы подключаем их к шинам питания, как и любой другой светодиод к источнику напряжения 5 вольт: анод к положительному выводу напряжения, а катод к GND, с последовательно включенным токоограничивающим резистором. Вы можете использовать резистор номиналом 100–220 Ом.

Я использовал 1 кОм, так как с резистором 220 Ом подсветка была слишком яркой для моей камеры, чтобы снять видео. Если хотите, то можете заменить резистор потенциометром и сделать подсветку регулируемой.

Продолжаем.

Выполните следующие соединения: вывод 4 LCD дисплея к выводу 7 платы Arduino, вывод 5 LCD дисплея к GND, вывод 6 LCD дисплея к выводу 8 платы Arduino, и последние выводы 11, 12, 13, 14 LCD дисплея к выводам 9, 10, 11, 12 платы Arduno, соответственно. Если вы хотите убедиться, что выполнили все соединения правильно, я добавил простой код для проверки дисплея. Вы можете просто записать его в свою плату Arduno и посмотреть, работает ли ваш LCD дисплей правильно.

#include LiquidCrystal lcd(7,8,9,10,11,12); // Выделить выводы для LCD дисплея // Убедитесь, что правильно объявили выводы void setup() { lcd.begin(16,2); // инициализация LCD lcd.setCursor(0,0); lcd.print(“This is row 1”); lcd.setCursor(0,1); lcd.print(“This is row 2”); } void loop() { // Главный цикл } Простой калькулятор на Arduino – Подключение LCD дисплея

Клавиатура

Большинство проектов, которые чуть сложнее, чем просто мигание светодиодам (проекты, использующие только вывод), потребует от пользователя какого-либо ввода. В многих случаях для получения пользовательского ввода используются кнопки. Для Arduino существует библиотека Keypad.

h (если у вас ее нет, проверьте ссылки в конце статьи), которая способна обрабатывать ввод с матричной клавиатуры и проста в использовании.

Эта библиотека устраняет необходимость использования внешних подтягивающих резисторов, так как она использует встроенные в микросхему подтягивающие резисторы, а также обрабатывает/устанавливает высокое сопротивление на всех выводах неиспользуемого столбца. Она, по сути, сканирует столбец за столбцом.

Выполняется это путем установки низкого уровня на выводе текущего столбца и чтения значений выводов строк для этого столбца, а затем перехода к следующему столбцу и так далее, пока не просканирует все подключенные/назначенные выводы. Кроме использования встроенных подтягивающих резисторов, библиотека также обрабатывает дребезг контактов.

Библиотека не использует задержки; вместо этого, она периодически использует встроенную функцию millis() Arduino и определяет, как долго была нажата кнопка, и было изменение состояния определенной кнопки. Без задержек код выполняется более эффективно и не потребляет вычислительные ресурсы, устраняя необходимость обработки дребезга контактов с использованием программных задержек.

Я хотел использовать выводы на плате Arduino только с одной стороны с 0 по 13, так как это как раз необходимое количество выводов (и было бы проще подключать провода, расположенные на одной стороне, и не получить в итоге спутанную лапшу из проводов).

Но после нескольких тестов светодиод на выводе 13 стал раздражать, поэтому я решил не использовать вывод 13. Я также не стал использовать выводы 0–1. Я подключил LCD к выводам 7–12, а клавиатуру к выводам 2–5 и аналоговым выводам A2–A5 для строк и столбцов.

Таким образом, вы можете подключить клавиатуру, как вам удобно; просто убедитесь, что разделили строки и столбцы. Либо подключите строки к выводам A2–A5 или к выводам 2–5, а столбцы подключите к оставшимся выводам на противоположной стороне платы Arduino.

Так, если вы подключаете строку 1 к выводу A2, то подключайте столбец 1 к выводу 2.

Простой калькулятор на Arduino – Подключение клавиатуры

Если вы подключили что-то не так, не волнуйтесь! Просто откройте исходный код программы калькулятора и измените порядок выводов клавиатуры в соответствии с вашей схемой:

byte rowPins[ROWS] = {A2,A3,A4,A5}; // подключите выводы строк клавиатуры byte colPins[COLS] = {2,3,4,5}; // подключите выводы столбцов клавиатуры

Если вы хотите проверить вашу клавиатуру, есть простой код, который поможет вам сделать это. Просто скомпилируйте и загрузите его в плату Arduino с подключенной клавиатурой:

#include const byte ROWS = 4; const byte COLS = 4; char button; char keys[ROWS][COLS] = { {'1','2','3','+'}, {'4','5','6','-'}, {'7','8','9','*'}, {'C','0','=','/'} }; byte rowPins[ROWS] = {A2,A3,A4,A5}; // подключение к строкам клавиатуры byte colPins[COLS] = {2,3,4,5}; // подключение к столбцам клавиатуры Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Этот код выполняется только один раз: при включении платы void setup() { Serial.begin(9600); } // Этот код выполняется постоянно void loop() { button = customKeypad.getKey(); // Определение нажатой кнопки if (button) Serial.print(button); }Матричная клавиатура

У меня не было готовой клавиатуры, а ждать месяц доставки из Китая не хотелось, поэтому я сделал ее сам. Клавиатура показана на рисунке ниже. Если вы планируете сделать ее сами, то вам понадобятся:

  • 16 кнопок;
  • небольшая макетная печатная плата;
  • 8 проводов (4 для разводки строк и 4 для разводки столбцов);
  • паяльник и припой.

Матричная клавиатура на макетной плате

Программа/код

Код состоит из трех циклов. Первый цикл сканирует клавиатуру на наличие нажатий клавиш и выводит их на дисплей, одну клавишу за раз.

В то же время, когда он сдвигает предыдущее число на один порядок вверх, он добавляет новую цифру на место единиц.

Это продолжается, пока пользователь не нажмет на кнопку одного из операторов или не сбросит, нажав 'C'. Затем программа прерывает первый цикл и переходит ко второму.

Второй цикл в основном такой же, как и первый, но он ждет уже нажатия только кнопки '='. В этом месте, программа рассчитывает результат на основе выбранного оператора, печатает результат и переходит к следующему и завершающему циклу.

В третьем цикле программа просто ждет нажатия кнопки 'C' на клавиатуре. При нажатии кнопки 'C', программа перезапускается.

#include #include LiquidCrystal lcd(7,8,9,10,11,12); // Выделить выводы для LCD дисплея long num1,num2 ; double total; char operation,button; const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','+'}, {'4','5','6','-'}, {'7','8','9','*'}, {'C','0','=','/'} }; byte rowPins[ROWS] = {A2,A3,A4,A5}; // подключение к строкам клавиатуры byte colPins[COLS] = {2,3,4,5}; // подключение к столбцам клавиатуры Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Этот код выполняется только один раз: при включении платы void setup() { pinMode(13, OUTPUT); digitalWrite(13, LOW); lcd.begin(16,2); // инициализация LCD } void loop() { // Циклы удобны для чтения нажатых кнопок клавиатуры while(1) { // Первый цикл. Здесь мы читаем клавиатуру и составляем наше первое число. // Он выполняется, пока мы не нажмем кнопку оператора, и цикл прервется, // или, если будет нажата кнопка 'C', всё начнется с начала. button = customKeypad.getKey(); // Чтение кнопки if (button=='C') // Если пользователь хочет сбросить набор первого числа { num1=0; num2=0; total=0; operation=0; lcd.clear(); } if (button >='0' && button ='0' && button

Источник: https://radioprog.ru/post/133

Радиоуправление на ардуино

Используя arduino можно самостоятельно изготовить сложную систему радиоуправления не затрачивая, при этом, много усилий. Для популярной, на данный момент, платформы arduino существует огромное количество модулей расширяющих возможности данной платформы. Например модули nrf24l01 для радиосвязи.

Существует некоторое колличество разновидностей данного модуля. Есть модули для связи на расстояниях до 100м они небольшие и недорогиеРадиомодули рассчитанные на дальность до 100м можно запитать от вывода 3.3В с Arduino uno а радиомодули на дальность до 1100м от этого вывода запитать нельзя т.к.

данный вывод не способен выдать достаточный для нормальной работы модуля ток, поэтому если необходимо использовать модуль с дальностью радиосвязи до 1100м то необходимо использовать внешний стабилизатор на 3.3В для питания радиомодуля. О том как самостоятельно изготовить стабилизатор постоянного напряжения написано в статье http://electe.blogspot.

ru/2015/10/lm317.html там же есть программа для рассчёта. Этот стабилизатор просто надо сделать на 3.3В для того чтобы можно было им запитать радиомодуль. Ещё для того чтобы сделать систему радиоуправления на ардуино нужно само ардуино. Можно использовать почти любое (если не любое) ардуино.

Например (самый простой и лучше подходящий для начинающих вариант)1) Arduino UNO http://ali.pub/236t0v

Если необходима компактность то можно использовать другие ардуины например:

2) Arduino nano http://got.by/23nhej

Также можно использовать любое другое ардуино но эти два (описанных выше) проще всего. Есть например 

3) Arduino pro mini http://got.by/23ni7b для программирования Arduino pro mini нужен usb-uart переходник или другое ардуино.

Теперь давайте рассмотрим схему передатчика:

Рисунок 1 – Передатчик на ардуино

У данного передатчика имеется 10 кнопок и 5 потенциометров. Допустим нам надо управлять дистанционно двумя серврмрторами, 3мя ШИМами, одним пьезодинамиком и 8ю цифровыми выходами для каких либо целей (напр.

сделать 8 фонарей на радиоуправлямый автомобиль или 1 фонарь а 7 выводов оставить для чего нибудь на будущее).

На схеме выше показна ардуино уно но аналогично можно соединить радиомодуль кнопки и потенциометры с другим ардуино для этого надо использовать надписи на плате ардуино. Давайте теперь рассмотрим приемник:

Рисунок 2 – Приемник на Ардуино

 Напрямую к выводам ардуино можно подключать только маломощный пьезодинамик иначе слишком большой нагрузкой можно ардуино сломать. То же самое относится и ко всем остальным выводам на приёмнике.

К ним нельзя подключать слишком большую нагрузку для того чтобы Ардуино не испортилось. Для питания сервомоторов можно использовать отдельный источник питания. Если сервомоторы мощные то их вывод питания нельзя подключать к выводу питания ардуино.

Теперь давайте рассмотрим скетчь передатчика:

Скачать скетчь передатчика можно по ссылке https://yadi.sk/d/II58CGgc3QV8gz

В начале скетча подключаются заголовочные файлы для связи с радиомодулем потом назначаются пины для связи с радиомодулем по SPI, указывается идентификатор трубы который должен совпадать с идентификатором трубы указанном в скетче приемника (см.

ниже), создаётся массив для передачи данных на приемник. Далее идёт функция инициализации в которой инициализируется и настраивается радиомодуль после чего он устанавливается на передачу данных, инициализируются входы ардуино и делается небольшая задержка на всякий случай.

В основном цикле считываются значения с потенциометров для сервомоторов и преобразуются в градусы функцией map. Далее, в следующую ячейку массива, запихиваются состояния входов ардуино побитно. После чего считываются значения с потенциометров для управления ШИМами, делятс на 4 т.к. аппаратный ШИМ ардуино принимает 1 байт.

Оставшиеся два состояния, с кнопок, пропихиваются в оставшуюся ячейку массива и он, наконец таки, отправляется на приемник.

Теперь скетчь приемника:

Скачать скетчь приемника можно по ссылке https://yadi.sk/d/FtO9F5HZ3QV8Ct

В приемнике помимо заголовочных файлов для связи с радиомодулем есть ещё заголовочный файл для работы с сервомоторами. Радиомодуль теперь настраивается на прием. В основном цикле происходит прием и раздача информации на периферию микроконтроллера ардуины. 

Посмотреть видео по данной теме с испытаниями системы радиоуправления на ардуино:

Источник: http://electe.blogspot.com/2017/12/blog-post.html

Ссылка на основную публикацию
Adblock
detector