
Документация
.pdf
Подключение двигателей постоянного тока
Расположенные на плате M-Shield 5-контактные клеммники предназначены для подключения двигателей. Центральный контакт каждого клеммника – « земля», двигатели постоянного тока подключаются к крайним парам контактов, обозначенных по номерам каналов M1, M2, M3, M4.
Управление двигателями с помощью библиотеки AFMotor
Существует удобная библиотека, упрощающая работу с модулем M-Shield, скачать которую можно с сайта разработчика, или у нас:
http://www.ladyada.net/make/mshield/download.html http://www.freeduino.ru/arduino/files/AFMotor-08_12_2009.zip
Как и в большинстве случаев, установка библиотеки сводится к распаковке архива в подпапку
\hardware\libraries\ папки с ПО Arduino.
Для управления двигателями постоянного тока используется класс AF_DCMotor. Рассмотрим его основные методы.
AF_DCMotor – конструктор объекта
Вызов:
AF_DCMotor имя_объекта(номер_канала);
Создает экземпляр класса AF_DCMotor, принимает номер канала После создания объекта можно вызывать его методы.
Метод AF_DCMotor::setSpeed
Вызов: имя_объекта.setSpeed(скважность)
Задает скважность ШИМ на канале в диапазоне от 0 до 255. Значение 0 соответствует напряжению 0 В на двигателе, значение 255 – полному напряжению питания.
Метод AF_DCMotor:: run
Вызов: имя_объекта.run(направление)
Задает направление движения двигателя (полярность прикладываемого напряжения). Параметр «направление» может принимать одно из следующих значений:
FORWARD – прямое направление вращения BACKWARD – обратное направление вращения RELEASE – остановка двигателя
Пример управления двигателями постоянного тока
Ниже приведен пример простой программы, осуществляющей ступенчатое изменение скорости вращения двигателя с интервалами в 3 секунды в следующей последовательности: +50, +75%, +50%, STOP, -50%, -75%, -50%, STOP. После завершения цикл будет повторяться.
#include <AFMotor.h> //Подключаем заголовочный файл библиотеки

//Создаем объект для двигателя на 1 канале (M1) AF_DCMotor motor(1);
void setup() {
}
void loop() {
//Задаем направление движение вперед motor.run(FORWARD);
//Устанавливаем скорость 50% motor.setSpeed(128);
//пауза 3 секунды - двигатель крутится delay(3000);
//увеличиваем скорость до 75%, и пауза 3 сек. motor.setSpeed(192);
delay(3000);
//Снижаем скорость до 50%, и пауза 3 сек. motor.setSpeed(128);
delay(3000);
//Останавливаем двигатель, и пауза 3 сек. motor.run(RELEASE);
delay(3000);
//Переключаем направление вращения //Двигатель начнет вращаться со скоростью 50% motor.run(BACKWARD);
//пауза 3 секунды - двигатель крутится delay(3000);
//увеличиваем скорость до 75%, и пауза 3 сек. motor.setSpeed(192);
delay(3000);
//Снижаем скорость до 50%, и пауза 3 сек. motor.setSpeed(128);
delay(3000);
//Останавливаем двигатель, и пауза 3 сек. motor.run(RELEASE);
delay(3000);
}
...to be continued. Планируется расширение документации примерами работы с сервоприводами и шаговыми двигателями

M o t o r S h i e l d v 2 K i t – н а б о р д л я с б о р к и
Особенности Freeduino Motor Shield v2 Kit
Модуль поставляется в виде комплекта для самостоятельной сборки, включающего печатную плату и все необходимые элементы.
К комплекту прилагается схема сборки, и монтаж оставшихся штыревых компонентов будет вполне под силу даже начинающим радиолюбителям.
Печатная плата и все элементы комплекта проходят электроконтроль перед отправкой.
Схема сборки
Перечень элементов:
Наименование |
Кол-во |
Обозначение на схеме сборки, комментарий |
Резистор 1 кОм |
1 |
R1 |
Резистор 10 кОм |
1 |
R2 |
Резисторная сборка 10x56 кОм |
1 |
RN1 |
Неполярный конденсатор 100 нФ |
11 |
C2, C4, C6, C10, C11, C12, C13, C20, C21, C22, C23 |
Полярный конденсатор 100 мкФ |
2 |
C7, C8 |
Полярный конденсатор 220 мкФ |
3 |
C1, C3, C5 |
Светодиод зеленый |
1 |
LED1 |
Кнопка |
1 |
RST |
Вилка штыревая 3x1 |
1 |
JP7 |
Вилка штыревая 6x1 |
2 |
JP4, JP5 |
Вилка штыревая 8x1 |
2 |
JP1, JP2 |
Вилка штыревая угловая 3x2 |
1 |
JP6 |
Гнездо 6x1 |
2 |
JP4A, JP5A |
Гнездо 8x1 |
2 |
JP1A, JP2A |
Клеммник винтовой x2 |
3 |
X1, X2, X4 |
Клеммник винтовой x3 |
2 |
X1, X4 |
Перемычка (джампер) |
1 |
Для выбора источника питания на JP7 |
Микросхема 74HCT595N |
1 |
IC3 |
Микросхема L293DNE |
2 |
IC1, IC2 |
Замечания по сборке
Обращаем Ваше внимание на следующие замечания:
1.Соблюдайте правильную ориентацию полярных компонентов (светодиод LED1, конденсаторы C1, C3, C5, C7, C8), резисторной сборки RN1, микросхем в соответствии со схемой сборки.
У светодиода анод имеет более длинный вывод, а на схеме анод указан знаком "+".
Отрицательные выводы полярных конденсаторов отмечены знаками "-" на корпусе.
Общий вывод резисторной сборки отмечен точкой на корпусе, и крестиком на схеме.
Микросхемы имеют вырез с одной из сторон.
2.Резистор R1 имеет номинал 1 кОм, а R2 - 10 кОм. Внешне резисторы различаются цветовой маркировкой - резистор R1 (1 кОм) отмечен полосками коричневая-черная-черная-коричневая- коричневая, а резистор R2 номиналом 10 кОм - коричневая-черная-черная-красная-коричневая.
3.Клеммники на 5 контактов X1 и X4 собираются из клеммников на 2 и 3 контакта состыковкой с помощью предусмотренных на корпусах пазов.
4.Для более качественного и ровного монтажа вилок JP1, JP2, JP4, JP5 можно предварительно разместить их в гнездах платы Freeduino.
5.Рекомендуем при сборке сверяться с фотографиями собранного модуля, записанными на прилагаемом компакт-диске, а также представленными на сайте.

М и к р о к о н т р о л л е р ы AT m e g a
Основой любой Arduino-совместимой платы является микроконтроллер ATmega семейства Atmel AVR, и технические характеристики платы определяются именно характеристиками микроконтроллера.
Приобретение дополнительного микроконтроллера может быть обусловлено, например, желанием заменить ATmega168 на уже имеющейся Arduino-совместимой плате более функциональным ATmega328.
Микроконтроллеры поставляются с прошитым Arduino загрузчиком (boot-loader), и готовы к работе сразу после установки в Вашу Arduino-совместимую плату, или в составе самостоятельно разработанного устройства.
ATmega328
Более функциональная версия микроконтроллера для Arduino-совместимых плат – имеет в 2 раза больший объем памяти программ, ОЗУ и EEPROM по сравнению с ATmega168.
Цифровые порты ввода/вывода: 14 портов (из них 6 с ШИМ-сигналом)
Аналоговые порты ввода: 6 портов
ППЗУ (Flash Memory): 32 К, из них 2 К используются загрузчиком
ОЗУ (SRAM): 2 Кбайт
ПЗУ (EEPROM): 1024 байт
Тактовая частота: до 20 МГц (на Arduino-совместимых платах обычно 16 МГц)
ATmega168
Это наиболее распространенный микроконтроллер для Arduino-совместимых плат.
Цифровые порты ввода/вывода: 14 портов (из них 6 с ШИМ-сигналом)
Аналоговые порты ввода: 6 портов
ППЗУ (Flash Memory): 16 K, из них 2 К используются загрузчиком
ОЗУ (SRAM): 1 Кбайт
ПЗУ (EEPROM): 512 байт
Тактовая частота: до 20 МГц (на Arduino-совместимых платах обычно 16 МГц)

И н с т р у к ц и я п о б ы с т р о м у з а п ус к у A r d u i n o /
F r e e d u i n o
Здесь дана краткая инструкция для начинающих по подключению Freeduino / Arduino, основам работы с микроконтроллером и прилагающимся программным обеспечением.
Предполагаемая последовательность действий выглядит так:
1.Приобретение Freeduino и соответствующего кабеля (для Freeduino 2009 и Through-Hole – USB кабеля типа: A–B, для Freeduino Nano – кабеля Mini-USB, для Freeduino MaxSerial –
модемного кабеля типа 9M-9F);
2.Установка программного обеспечения;
3.Подключение кабеля к Freeduino и компьютеру, и установка USB драйверов (для USB версий Freeduino). Пользователям ОС семейства GNU/Linux установка драйверов не требуется, поскольку поддержка данного оборудования обычно включена в ядро;
4.Запуск программного обеспечения на компьютере и его настройка;
5.Написание простейшей программы и загрузка ее в Freeduino.
Описание приводится для операционной системы Windows XP. Для других операционных систем Microsoft (Windows 2000/Vista) возможны незначительные различия. Для прочих операционных систем (Linux/FreeBSD/Mac OS X и т.д.) последовательность действий значительно отличается, и зависит от конкретного дистрибутива. При возникновении проблем рекомендуем искать решения в сети Internet как на основном сайте проекта http://www.arduino.cc , так и на других ресурсах.
1. Приобретение Freeduino и кабеля для связи с ПК
Для передачи данных с компьютера на Freeduino, необходимо приобрести соответствующий кабель.
Для вариантов Freeduino 2009 и Through-Hole – это USB кабель типа: A – B, такой кабель часто используется, например, для подключения принтера или сканера.
Для Freeduino Nano нужен кабель Mini-USB.
Для подключения Freeduino MaxSerial необходим кабель для последовательного порта 9M-9F.
В комплект поставки кабель не входит.
Для Freeduino MaxSerial также потребуется внешний источник питания напряжением от +7 до + 12 В. Можно использовать линию +12 В от компьютера. Центральный контакт разъема питания – "плюс", внешний контакт – " земля".
2. Установка программного обеспечения
На прилагаемом к модулю диске имеется архив arduino-0017.zip – это ZIP архив всего необходимого программного обеспечения. Рекомендуем разархивировать содержимое на диск C:, т.е. в итоге на диске C: должна появиться папка arduino-0017, а в ней уже папки drivers, examples, и прочие.
Программное обеспечение Arduino можно также скачать с сайта разработчика: http://arduino.cc/en/Main/Software http://arduino.googlecode.com/files/arduino-0017.zip http://files.arduino.cc/downloads/arduino-0017.zip
3. Подключение USB кабеля к Freeduino и компьютеру, и установка USB драйверов
Установка драйверов требуется только для USB версий Freeduino, Freeduino MaxSerial драйверов не требует.
Подключите кабель USB к Freeduino и компьютеру при этом индикатор питания должен включиться. Для Freeduino Through-Hole предварительно нужно выбрать питание Freeduino от

разъема USB, для этого нужно установить перемычку выбора питания на те два контакта, которые расположены ближе к разъему USB (положение JUSB).
Передача данных с компьютера на микроконтроллер Atmega осуществляется через USB конвертор – встроенную микросхему типа FT232RL. Для работы с ней необходимо установить
USB драйвер. Он находится в директории arduino-0017-win/drivers/FTDI USB Drivers. Последняя версия драйвера может быть найдена на официальном сайте компании FTDI по ссылке http://www.ftdichip.com/Drivers/VCP.htm, и для ОС семейства Windows версий старше XP (Windows 7) рекомендуется установка драйвера с сайта производителя.
Через некоторое время Windows обнаружит новое устройство, и запустит мастер установки новых устройств. Откажитесь от подключения к Windows Update и нажмите «Далее». В следующем окне выберите «Установка из указанного места». На следующем шаге выберите в качестве пути поиска путь до папки drivers\FTDI USB Drivers (C:\arduino-0017\drivers\FTDI USB Drivers). После подтверждения Windows установит драйвер на контроллер и последовательный порт – плата готова к работе.
4. Запуск программного обеспечения на компьютере и его настройка
Запустите arduino.exe из папки C:\arduino-0017. Ваши проекты будут по умолчанию сохраняться в папку Мои Документы\Arduino.
Программное обеспечение Arduino предыдущих версий некорректно работало на русских версиях Windows, что проявлялось в сообщениях об ошибках вида «Sketchbook folder disappeared», и сложностях в сохранении проектов. Для них рекомендовалось создать в папке Arduino любую папку без русских букв в имени (например Sketches), и при первом же запуске выбрав меню File\Preferences указать ее в качестве папки для хранения проектов. В ПО версии 0017 и старше эта проблема решена.
Затем укажите программному обеспечению номер COM-порта, по которому будет осуществляться передача данных с компьютера на Freeduino, используя пункт меню Tools\Serial Port.
В операционной системе Windows, номер COM-порта, который был присвоен системой USB устройству, можно определить щелкнув правой кнопкой мыши по «Мой компьютер», выбрав там Управление, и далее Диспетчер устройств/порты (Com и LPT).

Также убедитесь, что опция меню в: Tools\Board установлена соответственно Вашей плате. Для любых вариантов Freeduino с микроконтроллером ATmega168 нужно выбрать пункт «Arduino Diecimila, Duemilanove, or Nano w/ ATmega168». Если в Вашей плате используется микроконтроллер ATmega328, выбирайте «Arduino Duemilanove or Nano w/ ATmega328».
5. Написание простейшей программы и загрузка ее в Freeduino.
Для первого знакомства с микроконтроллером и прилагаемым программным обеспечением напишем простейшую программу (ее можно просто набрать в главном окне среды разработки):
void setup() |
//функция начальных установок – вызывается |
|
|
//при включении |
микроконтроллера |
{ |
//фигурная скобка открывает тело функции |
|
pinMode(13, OUTPUT); |
//устанавливаем |
13 контакт в режим вывода |
} |
//конец функции |
начальных установок |
void loop() |
//основная функция – вызывается по кругу |
|
//в процессе работы микроконтроллера |
{ |
|
digitalWrite(13, HIGH); |
//включение светодиода на 13 выходе |
delay(1000); |
//задержка 1000 миллисекунд (1 сек) |
digitalWrite(13, LOW); |
//выключение светодиода на 13 выходе |
delay(1000); |
//задержка 1000 миллисекунд (1 сек) |
} |
//конец функции. По завершении она снова |
|
//будет вызвана |
Разберем исходный текст программы. Первая строка объявляет обязательную функцию инициализации – она будет вызвана при включении микроконтроллера. В ней происходит вызов стандартной функции pinMode, с помощью которого 13й контакт микроконтроллера переводится в режим вывода, чтобы затем можно было управлять напряжением на этом контакте.
Затем объявляется функция loop() – ядро микроконтроллера будет постоянно вызывать ее в процессе работы. Здесь мы последовательно выставляем на 13м контакте «высокое» значение – это +5 Вольт, делаем паузу в тысячу миллисекунд (одну секунду), выставляем «низкое» значение
– это 0 Вольт, и опять делаем паузу в одну секунду.
После завершения функции loop ядро микроконтроллера вызовет ее снова.
Итак, мы получили программу, переключающую 13й контакт с +5В на 0В каждую секунду. С учетом того, что к 13му контакту на плате подключен тестовый индикатор (светодиод), получается, что он будет мигать с периодом 2 секунды.
Чтобы загрузить программу в микроконтроллер просто нажмите кнопку «Upload» на панели
инструментов:. В процессе загрузки программы будут загораться индикаторы чтения и записи (RX и TX), затем произойдет программный сброс микроконтроллера, один раз вспыхнет тестовый индикатор, и затем начнет выполняться наша программа.
Подобная программа есть и в стандартных примерах – ее можно загрузить через меню File\Sketchbook\Examples\Digital\Blink. Штатный пример отличается лишь тем, что номер контакта заносится в специальную переменную, и при дальнейших вызовах pinMode и digitalWrite происходит обращение к этой переменной.

О п и с а н и е о с н о в н ы х ф у н к ц и й я з ы к а A r d u i n o
Введение
Freeduino/Arduino программируется на специальном языке программирования – он основан на C/C ++, и позволяет использовать любые его функции. Строго говоря, отдельного языка Arduino не существует, как и не существует компилятора Arduino – написанные программы преобразуются (с минимальными изменениям) в программу на языке C/C++, и затем компилируются компилятором AVR-GCC. Так что фактически, используется специализированный для микроконтроллеров AVR вариант C/C++.
Разница заключается в том, что Вы получаете простую среду разработки, и набор базовых библиотек, упрощающих доступ к находящейся «на борту» микроконтроллера периферии.
Согласитесь, очень удобно начать работу с последовательным портом на скорости 9600 бит в секунду, сделав вызов одной строчкой:
Serial.begin(9600);
А при использовании «голого» C/C++ Вам бы пришлось разбираться с документацией на микроконтроллер, и вызывать нечто подобное:
UBRR0H = ((F_CPU / 16 + 9600 / 2) / 9600 - 1) >> 8; UBRR0L = ((F_CPU / 16 + 9600 / 2) / 9600 - 1); sbi(UCSR0B, RXEN0);
sbi(UCSR0B, TXEN0); sbi(UCSR0B, RXCIE0);
Здесь кратко рассмотрены основные функции и особенности программирования Arduino. Если Вы не знакомы с синтаксисом языков C/C++, советуем обратиться к любой литературе по данному вопросу, либо Internet-источникам.
С другой стороны, все представленные примеры очень просты, и скорее всего у Вас не возникнет трудностей с пониманием исходных текстов и написанием собственных программ даже без чтения дополнительной литературы.
Более полная документация (на английском языке) представлена на официальном сайте проекта
– http://www.arduino.cc . Там же есть форум, ссылки на дополнительные библиотеки и их описание.
По аналогии с описанием на официальном сайте проекта Arduino, под «портом» понимается контакт микроконтроллера, выведенный на разъем под соответствующим номером. Кроме того, существует порт последовательной передачи данных (COM-порт).
Структура программы
В своей программе Вы должны объявить две основных функции: setup() и loop(). Функция setup() вызывается один раз, после каждого включения питания или сброса платы
Freeduino. Используйте её, чтобы инициализировать переменные, установить режимы работы цифровых портов и т.д.
Функция loop() последовательно раз за разом исполняет команды, которые описаны в ее теле. Т.е. после завершения функции снова произойдет ее вызов.
Разберем простой пример:
void setup() |
// начальные установки |
||
{ |
|
|
|
beginSerial(9600); |
// |
установка |
скорости работы серийного порта на 9600 бит/сек |
pinMode(3, INPUT); |
// |
установка |
3-его порта на ввод данных |
} |
|
|
|
// Программа проверяет 3-ий порт |
на наличие на нём сигнала и посылает ответ в |
||
// виде текстового сообщения на последовательный порт |
компьютера |
||
void loop() // тело программы |
|
|
|
{ |
|
|
|
if (digitalRead(3) == HIGH) // |
условие на опрос 3го |
порта |
|
serialWrite('H'); |
// |
отправка сообщения в |
виде буквы «Н» на COM-порт |
else |
|
|
|
serialWrite('L'); |
// |
отправка сообщения в |
виде буквы «L» на COM-порт |
delay(1000); |
// |
задержка 1 сек. |
|
} |
|
|
|