Обучение созданию роботов
Содержание этой части обучения
Со страниц курса можно заказать необходимое оснащение для выполнения задач, если у вас его нет.
В случае если возникнут какие-то затруднения или дополнительные вопросы по обучению, обратитесь к автору этого курса по электронной почте phpinbox@yandex.ru.
Cоберем простое устройство управления машиной
Макетная плата и питание |
Макетная плата имеет вертикальные длинные дорожки, к ним обычно подключаются плюсы и минусы питания. Кроме того макетная плата имеет большое количество коротких горизонтальных дорожек по 5 гнезд, в них вставляются контакты деталей и с помощью проводков их можно соединить между собой.
Подключим источник питания к макетной плате - возьмём 2 AA батарейки 1.5V, вместе они дают напряжение 3V, питание можно проверить с помощью светодиода, подключив его длинной стороной к плюсовой линии питания и короткой к минусовой.
Провода от источника питания закручиваются в клеммник и он вставляется в гнезда двух разных дорожек, проводками эти дорожки соединяются с плюсовой и минусовой дорожкой. Если светодиод горит, то дорожки запитаны и к ним могут подключаться контакты других деталей устройств, которым необходимо питание.
Как сделать устройство программируемым
Устройство с программой |
Чтобы микроконтроллер с записанной в него программой работал, надо для начала подключить его к питанию. Рассмотрим для примера 3 разных микроконтроллера: большой ATmega16A, средний ATmega8A и мелкий ATtiny2313A. Они подключаются к питанию через разные линии, но общим является то, что все их выводы GND должны подключаться к минусу, а VCC к плюсу питания. Схема их подключения показана на рисунке внизу.
На рисунке слева показано простое программируемое устройство - светодиод, который включается по программе через микроконтроллер ATtiny2313A. Длинной стороной (плюс) светодиод подключен к одной из программно управляемых линий микроконтроллера PB7, а короткой (минус) к минусу источника питания, светодиод будет гореть при выставлении через программу микроконтроллера на этой линии значения 1 и погаснет при выставлении значения 0.
Питание для работы этих микроконтроллеров должно быть в диапозоне примерно от 3V до 5V. От батареек я взял 3V, от USB можно брать 5V. Не забудьте отключить светодиод между плюсом и минусом питания из прошлого примера, иначе устройство не включится. Также проверьте, что батарейки не разрядились и дают именно 3V, если не включается, подключите 3 батарейки, а не 2. После подключения микроконтроллера к питанию программно-управляемые линии P (порты) могут быть использованы для подключения к ним инструментов. Расположение P-линий показано на схеме - это линии, название которых начинается с буквы P, например PA0, PD0, PB7.
Порты могут работать в 2-х режимах - прием данных (ввод) при значении DDR порта 00000000 и
включение-выключение (вывод) при значении DDR порта 11111111. Режимы DDR для используемых портов настраиваются обычно в самом начале программы для микроконтроллера. Чаще всего используемые порты просто необходимо поставить на вывод в начале.
Подключение микроконтроллеров AVR к питанию |
Для включения линий используются числа в программе. Перед тем как использовать какое-либо число, его сначало нужно записать в специальную память для переменных чисел. Для этого в микроконтроллере есть регистры с именами r16 и далее r17, r18, до r25. Эти имена будем использовать при написании программ.
При работе с этими микроконтроллероми удобно пользоваться 8-знаковыми числами из 0 и 1. Т.к. порт (A, B, C, D) состоит не более чем из 8-ми линий, то по виду таких чисел сразу можно понять какие линии порта включены. Такие числа в программе начинаются с символов 0b.
Чтобы можно было свободно вытаскивать микроконтроллер с макетной платы без риска погнуть его ножки используются специальные зажимы, вы можете ими воспользоваться или работать без них.
Подготовка программы
Установите Atmel Studio. Создайте новый проект, выберите язык Assembler, выберите тип микроконтроллера. Теперь всё готово для написания программы в центральном окне, строчки с комментариями сверху можно удалить. После того, как программа будет написана, надо выполнить построение Build / Build solution и забрать Hex-файл, который будем записывать в микроконтроллер. Он в директории Документы / Atmel Studio / 6.2 / AssemblerApplication1 / AssemblerApplication1 / Debug / AssemblerApplication1.hexПодготовка программы для устройства |
Напишем простую программу, которая будет включать светодиод в собранном нами простом устройстве. Для этого нужно выполнить 4 операции - записать в память число 11111111, вывести содержимое памяти в DDR порта B (тем самым настроить порт на вывод), записать в память число 10000000, вывести содержимое памяти в порт B. В результате будет включена линия PB7 (светодиод на этой линии загорится), остальные линии порта B будут выключены. Включить только PB6 можно числом 01000000, включить только PB5 можно числом 00100000 и т.д. Можно включить несколько линий, например, числом 10000011 включаются линии PB7, PB1 и PB0.
Программа | Комментарии | |
---|---|---|
1 2 3 4 5 | Записываем 1-цы в регистр r16 Настраиваем DDR порта B на вывод единицами из r16 Записываем число для включения линии PB7 в r16 Выводим число в порт B и так включаем линию PB7 |
Теперь мы знаем как включать и выключать линии из программы. Как подключить инструменты, а не светодиод, информацию об этом смотрите в самом конце этой статьи. После того как программа готова, ее надо записать в микроконтроллер.
Как записать программу в память микроконтроллера
Программа готова и её надо записать в память микроконтроллера. Для этого нам потребуется программатор для микроконтроллеров AVR. Воспользуемся программатором USBasp. Скачиваем Драйвер для программатора, распаковываем архив. Подключаем программатор и устанавливаем драйвер, чтобы программатор определялся системой. В мастере установки оборудования укажите путь для поиска драйверов - директорию из архива.Теперь необходимо подключить микроконтроллер к программатору. Микроконтроллер подключается через линии для программирования RESET, SCK, MISO, MOSI и линии питания VCC, GND. Линии для программирования расположены так:
RESET=RES | SCK=PB7 | MISO=PB6 | MOSI=PB5 | на ATmega16A |
RESET=PC6 | SCK=PB5 | MISO=PB4 | MOSI=PB3 | на ATmega8A |
RESET=RES (PA2) | SCK=PB7 | MISO=PB6 | MOSI=PB5 | на ATtiny2313A |
Подключить линии к программатору можно с помощью макетной платы и проводков. Также пригодится зажим, чтобы не гнулись ножки.
Запись программы в память микроконтроллера |
У программатора 10 выводов, 6 из них надо подключить к микроконтроллеру, расположение выводов показано на картинке выше. На стороне с круглым перепретением проводов расположен ряд выводов для программирования - MOSI, не подключен, RESET, SCK, MISO. В нижнем ряду расположены выводы питания, только 2 крайних линии подключаются - слева VCC, справа GND. У ATmega8 и ATmega16A к VCC программатора подключаются линии VCC и AVCC, а также 2 линии GND к GND. Микроконтроллер подключаем к макетной плате и с помощью проводков соединяем с программатором линии для программирования, расположение которых мы выяснили. Пример подключения ATtiny2313A на рисунке ниже.
Пример подключения программатора USBasp к микроконтроллеру AVR ATtiny2313A |
Скачиваем программу AVRdude и Документацию к ней. Архив с программой распаковываем в директорию C:\avrdude и туда же необходимо поместить hex-файл программы на запись, который мы получили ранее в программе Atmel Studio, это AssemblerApplication1.hex. Для дальнейшей простоты переименуем этот файл в 1.hex.
Запускаем командную строку Windows c:\Windows\System32\cmd.exe и набираем команды в ней по одной строке, нажимаем Enter в конце каждой строки. Команды запустят программу AVRdude, но сначало надо определить по документации какая должна быть строка для запуска. Смотрим документацию по программе AVRdude со второй главы и узнаем необходимую строку для запуска программы. Строка должна включать указание типа микроконтроллера, типа программатора и типа прошиваемой памяти, а также ссылку на файл прошивки, ну и стереть старую программу надо. У меня получились такие строки для запуска программатора на ATtiny2313A с учетом всего необходимого:
Командная строка | Комментарии | |
---|---|---|
1 2 | Переходим в директорию с программой AVRdude Запускаем программу, указывая необходимые параметры |
Чтобы прошить ATmega8 вместо t2313 укажите m8 или для ATmega16A укажите m16. Все возможные варианты можно найти в документации. Нажимаем Enter, идет прошивка. Теперь микроконтроллер можно вставить в устройство управления и проверить программу.
Мы прошили только программу. Еще у этих микроконтроллеров есть биты настроек Fuse-биты, которые определяют важные параметры их работы. Для первой программы их изменение не требуется, однако потом нужно будет их менять. Программа показывает начальное значение этих битов, нас интересуют только значения H и L. У ATtiny2313A начальные значения H=DF, L=64. Все возможные комбинации битов настроек и их расшифровку смотрите в Справочнике fuse-битов и там же написано как изменить эти биты.
Как подключить инструменты
Микроконтроллер может включать высоковольтные инструменты с отдельным источником питания через транзистор. У транзистора имеется 3 линии - gate (G), drain (D) и source (S).
Линия G соединяется с линией микроконтроллера, источник питания инструмента и сам инструмент соединяются между линиями D и S по схеме, показанной на рисунке. Линия S соединяется с минусом источника питания микроконтроллера. Для примера возьмем транзистор IRF540N, в отсутствии сигнала на линии G он закрыт и инструмент не работает, при подаче сигнала с микроконтроллера на линию PB4 (к которой подсоединен Gate) транзистор открывается и инструмент начинает работать.
|
Тех. поддержка ответит на ваши вопросы по этой статье
phpinbox@yandex.ru |
Перейти к следующей теме обучения
Подключим устройство к компьютеру через USB |