Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Документация

.pdf
Скачиваний:
25
Добавлен:
03.06.2015
Размер:
1.33 Mб
Скачать

Подключение двигателей постоянного тока

Расположенные на плате 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 сек.

 

}