Дата на обновяване:14.06.2013

   ПЧЕЛАР / ЕЛЕКТРОНЧИК - пробвай-сам.bg

     Страница за пчеларство, пчеларски и ел.  разработки, представени като статии

Комютърът на пчелина | Нестандартни кошери | Пчеларски сайтове | Пчеларски инвентар | Размисли и идеи за пчеларството Физиотерапия, Апитерапия, Фитотерапия | Книги, Списания, РС, Интернет |  Пчеларски технологии |  Видове мед  | Пчеларски хумор

Сезонни и месечни задължения на пчеларя | Пчеларски статии на руски език | Малки Oбяви свързани с пчеларството

Информация, която е полезна за начинаещия пчелар | Използване на автомобила ... не само за предвижване - видеоклипове

 

 

 
Информация  от  ОБЛАСТЕН  ПЧЕЛАРСКИ  СЪЮЗ  - ПЛЕВЕН

 

 

Полезна и забавна информация за начинаещи с ел., радио и електронен характер, част от която с приложение и в пчеларството

- Електронни схеми, радиосхеми и устройства удобни за повторение от начинаещи;

- Снимки на фигурки изработени от електрически, разноцветни кабели. Други ел. снимки;

- Детски любителски набори - радиоконструктори за сглобяване на радиоприемници наричани играчки;

- Детекторни радиоприемници, техни модели;

- Сувенирни радиоприемници - играчки, някои от тях предназначени за ученици;

- Модулни набори - радиоконструктори от типа "Електронни кубчета" или "Мозайка" с които се работи без поялник и се захранват с батерии;

Информация за електрически и електронни компоненти и устройства, някои от които приложими и в пчеларството

- Токозахранващи устройства. Стабилизатори, преобразуватели, удвоители на напрежение;

- Импулсни стабилизатори на напрежение. Инвертори на напрежение;

- Устройства за дозареждане и компенсиране на саморазряда на акумулаторни батерии;

- Релета за време. Процедурни часовници. Схеми с ИСх 555;

- Цветомузикални устройства. Светлинни ефекти;

- Схеми за регулиране и поддържане на температура;

- Измерване на топлинния режим на радиоелектронна апаратура. Електронни термометри;

- Мрежови трансформатори. Опростени методики за изчисляването им. Електрожен;

- Зарядни устройства за Ni-Cd акумулатори;

- Устройства за имитиране гласовете на животни и птици. Мелодични звънци;

- Уреди, пробници, индикатори, генератори, тестери, измервателни приставки за любителската лаборатория;

- Металотърсачи, включително такива за откриване на метални предмети и кабели;

- Схеми на устройства, приложими за и около автомобила;

- Схеми на устройства с приложение на оптрони;

- Измерване на относителна влажност. Прецизен влагорегулатор. Поддържане на влажността на въздуха;

- Регулатори и сигнализатори за ниво на течност;

- Регулатори на мощност и на обороти;

- Опростено изчисляване на повърхността на радиатори за полупроводникови елементи;

- Схеми за управление на стъпков двигател, включително четирифазен. Енкодер/Валкодер, някои от които реализирани със стъпков двигател;

- Мощни, широколентови, операционни усилватели. Логаритмичен и антилогаритмичен усилвател;

- Електронни реле - регулатори. Реле - регулатор за лек автомобил. Стенд за проверка на реле - регулатори;

- Променливотоков регулатор. Стабилизатор за променлив ток. Ферорезонансен стабилизатор;

- Електронни схеми и устройства приложими в медицината;

- Няколко светодиодни индикатора. Икономичен светодиод. Светодиодна стрелка;

Практически приложими ел. устройства с учебна цел, реализирани с PIC16F84A, PIC16F88, PIC16F628 ... Arduino и др.

Подобряване със свои ръце възпроизвеждането на звука в дома, офиса, автомобила - subwoofer и други варианти

Радиоелектронни сайтове | Електронни библиотеки

 

 Разработки     Главна (съдържание на статиите)                         
Собствено Търсене

 

 

 

 


Плата расширения Arduino для создания роботов. Часть 1 - Общие элементы аппаратной части.Часть 2 - конструкции роботов, алгоритмы работы и настройки.Часть 3 - Описание общих для трех роботов функций в программе микроконтроллера. (Платка за расширение на платката Arduino при создаването на роботи. Част 1 - Общи элементи на апаратната част.Часть 2 - конструкции на роботи, алгоритми на работа и настройки.Част 3 - Описание на общите за трите роботи функции в програмата на микроконтролера.)
 

Часть 1 - Общие элементы аппаратной части.

Идея этой статьи заключается в объединении некоторых конструкций роботов и преобразовании их в устройство с новой аппаратной и стандартной программной частью (Arduino, конечно), и, таким образом, в упрощении разработки и использования подобных устройств. Представленные в статье конструкции роботов имеют три общих момента: механическая структура, аппаратное и программное обеспечение. В то время, как механика роботов обязательно отличается друг от друга, мы хотели понять, есть ли аппаратная процессорная плата, которая может стать общей для них, имея при этом свою среду разработки. При выборе, что вполне очевидно, остановились на платформе Arduino, которая со своей средой разработки идеально подходит для создания подобных проектов (Рисунок 1).
 

Рисунок 1. Внешний вид роботов под управлением Arduino.

В статье рассматриваются три различных робота, которые получили условные имена Filippo, Bipe и Spider.
Первое, что было нами проанализировано, это возможность управлять с помощью платы Arduino несколькими сервоприводами, в случае с роботом Spider восемью. Питание для платы Arduino может быть в пределах 6 – 12 В, на самой плате установлен регулятор напряжения 5 В, необходимого для работы микроконтроллера, периферии и наших плат расширения. Мы могли питать наших роботов от аккумуляторов. Для стандартного сервопривода требуется питание 4.8 - 6 В, которое легко получить с помощью четырех аккумуляторов, включенных последовательно. При полном заряде аккумуляторов напряжение питания составит 1.5 В × 4 = 6 В, но при полном разряде напряжение питания составит лишь 4 В. Такие условия не являются оптимальными для нашего проекта. Поэтому было решено создать специальную плату расширения (Рисунок 2), которая проста в установке и использовании, и отвечает следующим требованиям функции:
• имеет широкий диапазон напряжения питания;
• обеспечивает стабилизированное выходное напряжение для питания сервоприводов;
• обеспечивает питанием плату Arduino;
• оборудована датчиком препятствий;
• оборудована приемником команд с ИК пульта дистанционного управления;
• поддерживает слежение за напряжением питания и напряжением батареи.
Для питания платы можно использовать один аккумулятор с напряжением 6 – 12 В или несколько LiPo, NiMh или NiCd аккумуляторов. Для сервоприводов требуется напряжение 5 В, поэтому нам необходимо получить его непосредственно от входного напряжения. Оптимальным решением для этого является использование импульсного понижающего преобразователя, который обеспечивает эффективность свыше 80% в любой ситуации.

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

Простая микросхема серии LM2576-5 содержит в себе все необходимые элементы для создания импульсного источника питания. Требуется лишь добавить катушку индуктивности, диод и конденсатор. Микросхема обеспечивает максимальный выходной ток до 3 А и работает при входном напряжении 4 – 40 В.
 

Рисунок 3. Принципиальная схема платы расширения Arduino для создания робота.

На принципиальной схеме (Рисунок 3) вы видите коннектор BAT, к которому подключается батарея (аккумулятор), выключатель питания SW1, регулятор напряжения U1 LM2576. Резистор R5 и светодиод LD1 предназначены для индикации наличия питания. Стабилизированное выходное напряжение микросхемы U1 используется для питания всех сервоприводов, плата Arduino Uno питается непосредственно от батареи (вывод Vin) сразу после выключателя питания.
Для мониторинга напряжения батареи используется аналоговый вход платы Arduini A0. Делитель напряжения на резисторах R1 и R2 предназначен для снижения диапазона входного напряжения 0 – 20 В до диапазона 0 – 5 В. Мы выбрали эти конкретные значения сопротивлений, потому что при преобразовании аналоговой величины напряжения с помощью Arduino потребуется лишь разделить полученные данные на 50, чтобы получить значение напряжения батареи в вольтах.
В качестве датчика препятствий мы выбрали ультразвуковой сенсор SRF05, который, благодаря своей конструкции и форме, напоминает два глаза и улучшает эстетический вид наших роботов. Данные с датчика передаются в цифровой форме, поэтому подключается он к выводу D11 платы Arduino.
Для дистанционного управления была выбрана система управления на ИК лучах. Это самый простое и экономически выгодное решение, достаточно установить приемник команд, совместимый с пультом ДУ от телевизора или DVD плеера, например интегрированный фотодатчик PNA4602.
Также на плате установлена кнопка сброса, пользовательская кнопка и пользовательский светодиод, подключенный к выводу D13 платы Arduino.


Список использованных компонентов
 


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


Загрузки


Gerber-файлы платы расширения - скачать


open-electronics.org


На английском языке: Robot shield for Arduino. Part 1 - Hardware and Schematic


Robot shield for Arduino. Part 1 - Hardware and Schematic



The idea behind this post is to bring together some robot designs and trasform them in a new device with new hardware and standard software (arduino of course) and so easier to use. These robots have three things in common: a mechanical structure, the hardware and the software. While the mechanical part is necessarily different, we wanted to understand if there was a hardware board that could be common, with a unique development system. The choice, quite obviously, has the Arduino board, which with its development environment is perfect to create similar projects.




The Robot are three, corresponding to the robots Filippo, Bipe and Spider.
The first consideration that came to our mind is like the Arduino board can manage a large number of servos, eight in the case of the robot SPIDER. Arduino can be powered through the plug with a voltage between 6 to 12 volts, his voltage regulator provides the 5 V stabilized, necessary for the operation of our shield. We could power our robot with rechargeable batteries. A standard servo requires a supply voltage of 4.8 to 6 volts, easily obtainable with four batteries in series, at full charge, provide 1.5 x 4 = 6 volts but towards the complete discharge provide just 1.0 x 4 = 4 volts. We are not in optimal conditions for the servos. Throughout this reasons we decided to create a special shield, already prepared for all these functions, it is easy to install and use.
We see now the considerations that led us to the design of this shield:
• must have a high voltage range
• will provide a stabilized output for the servos
• will provide power to the Arduino
• must be equipped with an obstacle sensor
• must have a receiver for remote control
• must read the battery
We can assume to power our robot with a single battery pack with a voltage between 6 and 12 volts, so for example two cells or 6-8 LiPo NiMh or NiCd cells. The servos works at 5Volt, so we should get this stabilized voltage starting from input voltage of 6-12 volts. The optimal solution is the use of a switching step-down regulator which ensures efficiency exceeding 80% in every situation.

Just the integrated LM2576-5 contains all the elements to build a switching power supply, just add an inductor, a diode and a capacitor. It can deliver a maximum current of 3A and accepts input voltages between 4 and 40volt.

Analysing the wiring diagram you can see the connector BAT which will connect the battery pack to the switch and the voltage regulator LM2576, the resistance R5 and the led LD1 are used only to detect the presence of the voltage. The stabilized voltage output from the LM2576 will be used to power all the servos, while the Arduino is powered directly from the battery pack, taking the tension just after the switch (Vin).
For reading the battery voltage will use an analog input of Arduino (A0). The two resistors R1 and R2 reduce the voltage to a value between 0 and 20 volts to a value of 0-5Volt. We chose these specific values of resistance because, by reading the analog voltage with Arduino, it is sufficient to divide the data acquired by 50 to obtain the value of the voltage in volts.
As obstacle sensor we chose the ultrasonic sensor model SRF05 that, thanks to its shape, recalls two eyes and improves the aesthetic appearance of our robot. To operate, we use a digital line connected to PIN11.
As remote control we opt for a economical infrared system; is sufficient to install an IR receiver compatible with the normal commercial remote controls, such as the integrated PNA4602. It will be sufficient a normal remote control of those used for TVs or VCRs to send commands to our robot in a simple and economic way. The shield provides the Arduino reset button, a button for general use and a LED connected to pin 13 of Arduino.
BOM
R1: 56 kohm
R2: 18 kohm
R3: 470 ohm
R4: 100 ohm
R5: 470 ohm
C1: 10 µF 63 VL
C2: 470 µF 25 VL
C3: 1000 µF 16 VL
C4: 100 nF
C5: 100 nF
C6: 10 µF 63 VL
LD1: LED 3 mm red
LD2: LED 3 mm green
U1: LM2576-5
SW1: switch
P1: Microswitch
RST: Microswitch
IR: IR38DM
L1: 100 µH 2A
D1: 1N5819
SRF05: SRF05
Downloads
Gerder for Shield - download
Part 2 - Robots Filippo, Bipe and Spider
open-electronics.org


Плата расширения Arduino для создания роботов. Часть 2 - конструкции роботов, алгоритмы работы и настройки

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

Рисунок 1. Внешний вид робота Filippo. Плата Arduino с подключенной платой расширения располагается вверху так, чтобы ультразвуковой датчик препятствий был направлен вперед по ходу движения робота.

После сборки механической конструкции необходимо укрепить плату Arduino с платой расширения вверху так, чтобы датчик препятствий SRF05 смотрел вперед по ходу движения робота (Рисунок 1). Подключение сервоприводов к плате Arduino осуществляется согласно Tаблице 1.



Для питания робота используются 6 или 8 NiCd или NiMh аккумуляторов типоразмера АА, которые располагаются в двух отдельных держателях и соединены последовательно (Рисунок 2). Держатели батарей располагаются справа и слева от двух сервоприводов (Рисунок 3).

Рисунок 2. Схема подключения нескольких аккумуляторов для питания робота Filippo.
 

Рисунок 3. Расположение сервоприводов, держателей батарей и процессорной платы управления робота Filippo.

Исходный код программы микроконтроллера для управления роботом Filippo доступен для скачивания в разделе загрузок. Рекомендуется программировать Arduino до подключения сервоприводов во избежание выполнения какого-либо сохраненного ранее в микроконтроллере кода, т.к. это может привести к непредсказуемым действиям со стороны сервоприводов.
В программе микроконтроллера для робота Filippo дополнительно реализованы своего рода диагностические процедуры, с помощью которых по последовательному интерфейсу можно получить данные от датчика препятствий, информацию о состоянии батареи, а также выполнить первичную настройку сервоприводов – установку нейтрального положения.
Команда «obs», отправленная по последовательному интерфейсу, предназначена для чтения данных от датчика препятствий, команда «lev» – для проверки уровня напряжения питания (батареи). При настройке необходимо убедиться, что считанные данные о напряжении совпадают с реальным значением напряжения, измеренного с помощью мультиметра. Далее необходимо установить нейтральное положение сервоприводов, это очень важно для нормального функционирования робота. Для центровки сервопривода, отвечающего за наклон робота, необходимо отправить команду вида «axx», где xx – значение в пределах 80 – 100 с центральной точкой в значении 90. Если программно не удается настроить сервопривод значениями из этого диапазона, то необходимо физически переместить сервопривод. Вы можете изменить эти значения, если обнаружено отклонение от прямой линии при ходьбе робота. Настройка шага робота осуществляется с помощью команды «bxx» для нижнего сервопривода, где xx – значение положения в пределах 80 – 100. После настройки можно приступать к тестированию робота, используя пульт ДУ (в нашем случае от телевизора фирмы Philips) или кнопку на плате расширения, предназначенную для старта робота.
Все функции робота имеют скорость исполнения, которая может быть изменена с помощью команды с пульта ДУ (кнопки Prog+ и Prog-), также и множество других параметров могут быть изменены для адаптации программы к различным требованиям.
Исходный код программы микроконтроллера начинается с команд компилятора на включение дополнительных библиотек функций: Servo.h, IRremote.h, EEPROM.h. Библиотеки функций управления сервоприводами (Servo.h) и функций работы с EEPROM (EEPROM.h) реализованы в среде разработки Arduino. Память EEPROM используется для хранения параметров настройки сервоприводов, поэтому не требуется каждый раз выполнять процедуру их настройки.
Библиотека IRremote.h предназначена для управления роботом с помощью ИК пульта ДУ и доступна для скачивания в разделе загрузок. Для работы с ней необходимо указать, к какому выводу платы Arduino подключен фотодатчик (в нашем случае к выводу D10). Чтобы выяснить, пришла ли команда от ИК фотодатчика, необходимо проверить переменную irrecv.decode (& results), но сам код команды содержится в переменной results.value.
Адаптация любого другого пульта ДУ для управления роботом не составит труда, т.к. код каждой полученной команды передается по последовательному интерфейсу и пользователю остается лишь изменить значения кодов в исходном коде программы (Листинг 1).


Расположение кнопок на пульте ДУ для управления роботом изображено на Рисунке 4


Рисунок 4. Внешний вид пульта ДУ от телевизора Philips и используемые кнопки для управления роботами на платформе Arduino (Filippo, BIPE, SPIDER).

Кроме того, в исходном коде программы имеется несколько параметров, которые, возможно, потребуется изменить под конкрентные условия работы робота:
• TimeOneStep – начальное значение (2000) времени, затрачиваемого на выполнение шага, может быть изменено с пульта ДУ в переделах от 1 секунды до 4 секунд.
• AmpPasso – значение максимальной амплитуды поднятия ног робота при ходьбе (в градусах), значение может быть в диапазоне 5 - 40.
• IncPasso – максимальный наклон робота при ходьбе, значение в диапазоне 5 - 20 гарантирует, что робот будет балансировать на одной ноге во время выполнения шага.
• AmpRuota – максимальная амплитуда поднятия ног робота при выполнении поворота (в градусах), значение в диапазоне 5 - 40.
• IncRuota – максимальный наклон робота при выполнении поворота, значение в диапазоне 5 - 40.


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

Рисунок 5. Внешний вид робота BIPE на платформе Arduino.

Плата управления Arduino с платой расширения установлены сзади робота (на спине), в то время как батареи должны располагаться впереди. Следует отметить, что в данной конструкции применены два LiPo аккумулятора емкостью 850 мАч, которые компактнее и легче, они легко умещаются и не отягощают механический скелет робота. Датчик препятствий в этой конструкции подключается к плате расширения через переходник, т.к. он должен быть направлен вперед по ходу движения робота.
 

Рисунок 6. Расположение платы управления и сервоприводов робота BIPE.


Подключение сервоприводов к плате управления осуществляется в соответствии с Таблицей 2.


Процедура настройки сервоприводов идентична настройке робота Filippo, исходный код программы микроконтроллера имеет идентичную структуру с кодом для робота Filippo с требуемыми модификациями и дополнениями. Исходный код доступен для скачивания в разделе загрузок.
Для робота BIPE очень важна процедура настройки сервоприводов. Команды передаваемые по последовательному интерфейсу для настройки имеют вид: «axx» - сервопривод 0, «bxx» - сервопривод 1, … «fxx» - сервопривод 5. Если команда принята правильно, то по последовательному интерфейсу поступит ответ, например «set servo: a to 90» (установлен сервопривод 0 в значение 90).
Робот BIPE может выполнять функции, которые не были реализованы в роботе Filippo, это поклон и футбол (удар ногой). Выполнение их начинается по команде с пульта ДУ, используются кнопки выбора программы «1» и «2» пульта.
Настройка параметров движения робота (TimeOneStep, AmpPasso, IncPasso, AmpRuota) производится также, как и для робота Filippo.


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

Рисунок 7. Внешний вид робота SPIDER.

При разработке было принять решение использовать по два сервопривода на каждую из четырех ног робота, что, однако, дало привлекательные результаты. Большое количество сервоприводов в сравнении с роботом BIPE не должно пугать, потому что робот SPIDER, в конечном счете, является наиболее простым, относительно устойчив и не доставит проблем, даже при работе. Для этого робота не потребуется установка сервоприводов в нейтральное положение, так как некоторые неточности не должны влиять на работу робота. Единственная задача – закрепить батареи так, чтобы центр тяжести находился точно в центре робота. Во время движения три ноги постоянно имеют контакт с поверхностью в то время как одна перемещается, тем самым обеспечивается хорошая устойчивость.
Механические части выполнены из текстолита, покрашенного в черный цвет, они не требуют пайки или фиксации. Фиксация элементов осуществляется за счет крепления их к сервоприводам (Рисунок 8).

Рисунок 8. Расположение серводвигателей робота SPIDER.

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

Рисунок 9. Расположение ног робота SPIDER и их сервоприводов относительно друг друга.


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


Загрузки


Gerber-файлы для трех конструкций роботов - скачать


open-electronics.org


На английском языке: Robot shield for Arduino. Part 2 - Robots Filippo, Bipe and Spider


Robot shield for Arduino. Part 2 - Robots Filippo, Bipe and Spider

Filippo robot
Filippo is a biped robot whose movements are assigned to only two servos, but with this robot you can experiment with robotics without spending large sums. It is able to walk and turn around, then you can direct it in any direction, enabling those who are beginning to become familiar with the servos and how they can interact with mechanical parts. Its assembly is facilitated because all the pieces fit over each other and it is sufficient sorder to fix them permanently, as an alternative you can use the epoxy glue.
After the mechanical assembly, fix the Arduino board, with its shield, on top, the sensor SRF05 must look in front of the robot. The servos have to be wired as indicated in Table.
Connecting servos with Filippo robot
Servo Arduino Pin Connector Shield Function
Servo 0 2 S1 Tilt (front servo)
Servo 1 3 S2 Step (servo in the bottom)



For the power use 6 or 8 NiCd or NiMh rechargeable batteries size AA, they should be entered in two separate holder and connected in series. The battery holder are positioned one on the right and one on the left of the two servos, for their wiring must use two clips for batteries connected in series to 9 V.

We recommend you to program the Arduino before connecting the servos to prevent any previous program provides the wrong signals to the servos that might go crazy.
Send the serial command ‘obs‘ for read the sensor SRF05 and the command ‘lev‘ to check the battery level. Make sure that the voltage read corresponds to the real value of the batteries, simply make a voltage measurement with a multimeter. Now set the neutral of the servos, in fact the robot to function properly must be perfectly centered. To center the servo which acts to tilt the robot you have to send the command ‘axx‘ where xx is the position. This data can assume values between 80 and 100 with the center point 90, if you can not set the servo to remain within these values you have to physically move the servo. You can modify this value if it found a tendency to deviate from the straight line when walking. Now regulate the step servo and sets the neutral with bxx command, where xx is the position to be allocated (value between 80 and 100). You are now ready for test, you can use the remote control to activate functions or use the button on the shield but it will only start the walk.
All functions have a speed of execution that can be changed by remote control with keys prog+ and prog-, many other parameters can be modified to adapt the software to different operating requirements.
The sketch begins by including the libraries dedicated to the use of the servos, the IR control and management of EEPROM.
The servo library is already implemented in the IDE of Arduino. The EEPROM library, also available, provides controls to manage the non-volatile memory, we use it to save the position of the neutral servos so as not having to set each time.
The third library IRremote is used to manage the robot by remote control and must be downloaded from downloads section, for its operation is sufficient to specify which pin is connected to the sensor receiving IR signals (D10 in our shield). To find out if they arrived from the sensor data must test the status of the variable irrecv.decode (& results), but the code is contained in the variable came results.value.
Just compare the code recived with the reference code for the remote to know which button was pressed, so we specify at the beginning of the sketch of the codes for each button.
Code 2
#define STNB_CODE1 0x81D // Stop Philips TV remote (STOP)
#define STNB_CODE2 0x1D // alternative code
#define WALK_CODE1 0x81C // Play Philips TV remote (WALK)
#define WALK_CODE2 0x1C // alternative code
#define SPEEDUP_CODE1 0x820 // Prg+ Philips TV remote (+SPEED)
#define SPEEDUP_CODE2 0x20 // alternative code
#define SPEEDDW_CODE1 0x821 // Prg- Philips TV remote (-SPEED)
#define SPEEDDW_CODE2 0x21 // alternative code
#define LEFT_CODE1 0x2C // Left Philips remote (SX wheel)
#define LEFT_CODE2 0x82C // alternative code
#define RIGHT_CODE1 0x2B // Right Philips remote (DX wheel)
#define RIGHT_CODE2 0x82B // alternative code
As you can see each button is associated with two codes (CODE1 and CODE2) this is because the codes are sent alternately every time you press the button, instead of repeating the same code if the button is pressed. So if you press the play button will send the code 0x81C and so long as the button is pressed, if you release the button and press it sends the code 0x1C, so alternately.
The sketch is intended for use with remote controls which use the encoding Philips, the most commonly used in television. If you use a different remote control the code of the buttons do not match and you have to change the codes listed above.


Now let’s see what parameters can be modified by the program to adapt the movements:
• TimeOneStep is the initial value of the time taken to perform a step, can be changed by remote control from a minimum of 1 sec to a maximum of 4 sec.
• AmpPasso is the maximum amplitude in degrees of opening of the legs during walking, its value can vary from a minimum of 5 to a maximum of 40.
• IncPasso is the maximum inclination of the robot during the walk, its value can vary from a minimum of 5 to a maximum of 20. This value is to ensure the robot to keep balance on one leg while performing a step.
• AmpRuota is the maximum amplitude in degrees of opening of the legs during the rotation, its value can change from a minimum of 5 to a maximum of 40.
• IncRuota is the maximum inclination of the robot during the rotation, its value can change from a minimum of 5 to a maximum of 20.
ROBOT BIPE
We see now to the second robot, is called BIPE.
The mechanical is made of PCB and assembly is made by soding together the various components to ensure the strength needed to support the weight of the components.
The control board based on Arduino + shield is positioned on the back of the robot while the battery pack, should be placed at the front. Let’s say that for our tests we used a battery composed of two cell 850mAh LiPo which, being small and light, are easily placed and not weigh down the structure. To properly position the sensor SRF05 you must use a small adapter with a strip made of male-female, as those used on the Arduino shield, angled 90 °.

Connecting servos with robot BIPE
Servo Arduino Pin Connector Shield Function
Servo 0 2 S1 Left hip
Servo 1 3 S2 Left knee
Servo 2 4 S3 Left foot
Servo 3 5 S4 Right hip
Servo 4 6 S5 Right knee
Servo 5 7 S6 Right foot
For setting follow the same instructions for the robot Filippo, the sketch retains the same structure of the software used with Filippo, with the necessary modifications and add.
For this robot is important to the calibration of the neutral of the servos that occurs as previously described. Servo0 corresponds to the letter ‘a‘ – Servo5 corresponds to the letter ‘f‘. If the command is ok will receive confirmation of Serial Monitor, for example: “set servo: a to 90“.
This robot have additional functions such as the bow and football features that are not implemented on Filippo.
To the button ’1 ‘ on Philips Remote Control corresponds to the function of football with which the robot can hit, for example a ball, to the button ’2′ corresponds to the bow that is always of great effect.
The parameters can be set by the program are similar to those of robot Filippo (TimeOneStep, AmpPasso, IncPasso, AmpRuota).
SPIDER ROBOT
With this robot we wanted to replicate the appearance and movements of a spider with all the limitations derived from a simplified mechanics and a limited cost. The choice has been the use of two servos for paw for a total of four legs, which, however, ensure a final result very attractive. The largest number of servos relative to the robot BIPE should not scare because, at the end, this robot is the most simple to make and having regard to the intrinsic stability, does not present serious problems even in the operation. For this robot we have not even provided the adjustment of the neutral servos because of some inaccuracies should not be to influence the operation.The only care is to fix the battery pack in the center so the robots present the center of gravity exactly in the center. During the movement three legs always remain in contact with the ground while one moves, rising, thereby ensuring a good stability.


The mechanical is made by PCB, the same material used for printed electronic and suggest paint it black to improve the aesthetic appearance. No soldering required, and each piece is simply screwed to the servos that make up the mechanics.
How practical advice suggest to program the Arduino board with this program and then electrically connecting the servos, doing so will all be positioned exactly in the middle.Then you connect the mechanical servos in their proper locations.
Make sure that the servos are aligned and that the legs are neither too open nor too closed, taking as reference the pictures posted here.

Connect the servos to the robot Spider
Servo Arduino Pin Connector Shield Function
Servo 0 2 S1 Angle right foreleg
Servo 1 3 S2 Elevation of right foreleg
Servo 2 4 S3 Angle of the right hind leg
Servo 3 5 S4 Elevation of the right hind leg
Servo 4 6 S5 Angle left hind leg
Servo 5 7 S6 Elevation of the left hind paw
Servo 6 8 S7 Angle left foreleg
Servo 7 9 S8 Elevation of left foreleg
Part 3 - Analysis of the firmware, functions that are common to all the robots
Downloads
Gerber files for robots - download


open-electronics.org


Плата расширения Arduino для создания роботов. Часть 3 - Описание общих для трех роботов функций в программе микроконтроллера.

Часть 1 - Общие элементы аппаратной части.
Часть 2 - Конструкции роботов, алгоритмы работы и настройки


В первой части статьи мы рассмотрели аппаратную часть (плата Arduino и плата расширения), которая является общей для трех роботов (Filippo, BIPE, SPIDER). Вторая часть была посвящена механическим конструкциям роботов, которые также имели общие черты.
Проанализируем теперь общие для трех роботов элементы и функции в программе микроконтроллера. Начнем с глаз робота, – ультразвукового датчика препятствий SRF05. Он установлен на всех роботах и позволяет определять препятствия на пути их движения.
В исходном коде программы микроконтроллера процедура работы с датчиком препятствий идентична для всех роботов. Процедура readDistance() (Листинг 1) предназначена для посылки датчику импульса длительностью 2 мкс, датчик в свою очередь генерирует серию ультразвуковых импульсов в направлении движения робота. Этот же вывод сенсора используется потом в качестве входа для чтения, с помощью функции PulseIn. Во время прохождения ультразвука к препятствию, отражение от него и возвращение к датчику на выходной линии датчика поддерживается высокий логический уровень. И это время пропорционально расстоянию до объекта.


Для получения сведений о напряжении батареи питания робота используется функция levelBat() (Листинг 2).



Функция достаточно простая, используется канал 0 встроенного в микроконтроллер АЦП для преобразования данных и переменная VbatRAW, в которой хранится результат преобразования. Как упоминалось в первой части, для получения значения напряжения батареи в вольтах достаточно разделить полученный результат преобразования на 50. Так как чрезмерный разряд аккумулятора может вывести его из строя, было решено установить аварийный уровень напряжения питания, при котором робот немедленно прекращает работу и все сервоприводы отключаются. Данное пороговое значение установлено в 6.0 В, это идеальное решение при использовании аккумулятора, состоящего из двух LiPo элементов или из шести NiCd или NiMh элементов. Если используется 8 элементов, составляющих аккумулятор, то пороговое значение можно увеличить до 8.0 В или 1.0 В на каждый элемент аккумулятора.
Следующая общая процедура предназначена для инициализации сервоприводов (Листинг 3).


Функция servo.attach() определяет подключение сервопривода к указанному выходу, с которого осуществляется управление, и с этого момента на данный выход поставляется ШИМ сигнал для сервопривода.
Функция inOff() выполняет противоположную функцию, удаляя подключение сервоприводов к выходу Arduino и оставляет их без управления (Листинг 4), робот переводится в выключенный режим.


Функция, которая переводит робота в «спящий» режим получила название inStandby() и выполняет действия по переводу всех сервоприводов в среднее положение. В случае роботов Filippo и BIPE сервоприводы позиционируются в своих соответствующих нейтральных точках, значения которых хранятся в массиве leg_ntr[] (Листинг 5).


И самая важная функция, которая гарантирует установку сервоприводов по требуемым координатам setServo() (Листинг 6).



Если мы будем непосредственно устанавливать сервопривод, то он будет работать рывками. Однако, в нашем случае необходимо реализовать плавное перемещение, чтобы получить нужное движение по координатам в нужное время. Для этого опеределяется вектор leg[], содержащий необходимые координаты для каждого сервопривода и вектор leg_old[], содержащий фактические координаты. Процедура управляет сервоприводами, отправляя им промежуточные значения скоординированные по целевому времени, определяемого переменной TimeOnStep. Такая реализация позволяет достичь плавных движений.
Для робота SPIDER эта процедура называется setServoWalk() и она немного отличается от setServo() из-за различной скорости движения сервоприводов робота. Во время движения робота три ноги имеют постоянный контакт с поверхностью и движутся медленно, четвертая нога должна подниматься и двигаться быстрее остальных в направлении противоположном движению робота.


Демонстрационное видео

 


Загрузки


Исходные коды программ микроконтроллера для роботов – скачать


open-electronics.org


На английском языке: Robot shield for Arduino. Part 3 - Analysis of the firmware, functions that are common to all the robots
Robot shield for Arduino. Part 3 - Analysis of the firmware, functions that are common to all the robots

Let us see now the analysis of the firmware describing those functions that are common to all the robots such as the procedure that reads the distance from obstacles by means of the sensor SRF05:
Code 1
long readDistance()
{
long duration, cm;
pinMode(PING_PIN, OUTPUT);
digitalWrite(PING_PIN, LOW);
delayMicroseconds(2);
digitalWrite(PING_PIN, HIGH);
delayMicroseconds(5);
digitalWrite(PING_PIN, LOW);
pinMode(PING_PIN, INPUT);
duration = pulseIn(PING_PIN, HIGH);
// ritorna distanza ostacolo in cm
return duration / 29 / 2;
}
The procedure foresees to send a pulse duration of 2usec to the sensor, which, proceeds generating a series of ultrasound to the outside. The same pin is subsequently used as input for reading, via the function PulseIn, the time taken by the sound to reach the obstacle, bounce and return to the sensor, the period during which the sensor maintains a high level of the line. The time taken by the ultrasound to go and return to the sensor is proportional to the distance of the object.
Here also the procedure for reading the voltage on the battery:
Code 2
void levelBat()
{
int VbatRAW = analogRead(A0);
float Vbat = float(VbatRAW)/50;
Serial.print("Vbat= ");
Serial.println(Vbat, DEC);
if (Vbat<6.0)
{
Serial.println("Livello batteria basso!");
inOff();
}
}
The procedure is simple, plan to read the analog channel A0 of Arduino and save the result into a variable VbatRAW. As explained above, by dividing this value by 50, is obtained by the voltage in volts of the battery. Since excessively discharge the battery can damage it, we expected an alarm to the level below which the robot is immediately stopped and all the servos are disabled. The threshold value is defined in 6.0 V ideal for use with a battery pack consisting of two cell LiPo or six if you use NiMh or NiCd cells, eight cells used instead if you can increase this value up to 8.0 volts or, one volt per used cell.
Another common procedure is called to all the robots initServo () to initialize the servos:
Code 3
void initServo()
{
// posizione iniziale dei servi
servo0.attach(2); // connette servo
delay(300);
........
servo7.attach(9); // connette servo
delay(300);
}
The function Servo.attach() associates each object provides the respective servo output, from this moment the servant reaches the PWM signal.
The procedure inOff () performs the opposite function by removing the pin from their association with the servos and leaving them with no control.
Code 4
void inOff()
{
leg[0] = 90;
.....
leg[7] = 90;
setServo();
servo0.detach(); // connette servo
....
servo7.detach(); // connette servo
RobotMode = MODE_OFF;
}
The function to put in sleep mode the robot is called Standby() and simply place all the servos in the central position. In the case of the robot Filippo and BIPE the servos are positioned in their respective neutral points whose values are contained in the vector named leg_ntr [].
Code 5
void inStandby()
{
leg[0] = 90;
....
leg[7] = 90;
setServo();
RobotMode = MODE_STANDBY;
Serial.println("Sono in Standby...");
}
A very important procedure is to ensure that the servos have to place to desired coordinates:
Code 6
void setServo()
{
for (i=0; i<18; i++)
{
servo0.write(leg_old[0] + i*(leg[0]-leg_old[0])/18);
servo1.write(leg_old[1] + i*(leg[1]-leg_old[1])/18);
servo2.write(leg_old[2] + i*(leg[2]-leg_old[2])/18);
servo3.write(leg_old[3] + i*(leg[3]-leg_old[3])/18);
servo4.write(leg_old[4] + i*(leg[4]-leg_old[4])/18);
servo5.write(leg_old[5] + i*(leg[5]-leg_old[5])/18);
servo6.write(leg_old[6] + i*(leg[6]-leg_old[6])/18);
servo7.write(leg_old[7] + i*(leg[7]-leg_old[7])/18);
delay(TimeOneStep/4/18); }
leg_old[0]=leg[0];
leg_old[1]=leg[1];
leg_old[2]=leg[2];
leg_old[3]=leg[3];
leg_old[4]=leg[4];
leg_old[5]=leg[5];
leg_old[6]=leg[6];
leg_old[7]=leg[7];
}
If we set directly the servo, it was a sudden movement and the robot would move in spurts. He prefers, instead, gradually controlling the servo to bring it to the desired position in a defined time. To do this you must define a vector leg[] that contains the coordinates to be achieved by each servo and a vector leg_old[] that contains the actual coordinates. The procedure controls the servos by sending them all coordinated by the intermediate value at the target value in a time defined by the variable TimeOneStep. This system allows us to obtain fluid movements.
Only the robot spider there is a procedure called setServoWalk() because it is necessary that some servos are moving at different speeds than the other. During the walk the three legs in contact with the floor moving slowly, the fourth foot must lift and move fast in the opposite direction to progress.
Demonstration video
Downloads
Source Code for robots Filippo, BIPE, SPIDER - download


open-electronics.org
 

rlocman.ru

 

 

Материалите подготви за сайта:

Иван Парашкевов

e-mail: ivanparst@dir.bg

 

         главна страница                   горе

 

 
 
СТАТИСТИКА
    

Copyright2007  Design by