роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  

BEAM-РОБОТЫ
Создание BEAM-роботов - это не просто технологический процесс или увлекательное хобби. BEAM - это целая культура, со своей философией и эстетикой.  

Патч от myROBOT
WinAVR Patch устраняет проблему совместимости WinAVR с Windows 10, Windows 8.1.  

Обзор подходов к созданию роботов с элементами самосознания
Корнеллский робот. Робот университета Мейдзи. Эволюционное моделирование самосознания.

:: УПРАВЛЕНИЕ С КОМПЬЮТЕРА :: ЧАСТЬ 2 ::

Управляемый компьютером вентилятор


Часть 1 - Управляемый компьютером вентилятор на базе микроконтроллера ATmega8
Часть 2 - Создаем управляющую программу для микроконтроллера (firmware)
Часть 3 - Монтаж электронной платы с микроконтроллером (hardware)
Часть 4 - Создаем управляющую программу на компьютере (software)
Часть 5 - Сборка устройства


Материалы статьи подготовлены на кафедре «Автоматика, Информатика и Системы Управления» (АИиСУ) Московского Государственного Индустриального Университета (ГОУ МГИУ).
(С 2011 года МГИУ носит название - ФГБОУ ВПО "МГИУ").
Авторы: Крюков А.И., Шубникова И.С., Тройков С.М.

Кафедра АИиСУ уже более 35 лет готовит профессионалов в области разработки и эксплуатации электронных, микропроцессорных, компьютерных, робототехнических, мехатронных и информационных систем управления для автомобильной и аэрокосмической техники, машиностроения и бизнеса. Научно-исследовательская работа сотрудников кафедры ведется в областях, связанных с разработкой систем поддержки принятия решений на основе технологий искусственного интеллекта, анализа и синтеза процессов управления сложными системами, контроля и интеллектуального выявления сбоев аппаратуры. Важным направлением научной деятельности кафедры является проведение исследований в области автоматических и электронных систем транспортных средств.
Существует большое количество всевозможных приложений для написания управляющих программ для МК фирмы Atmel - это среды разработки и отладки на языках низкого уровня (например, бесплатный пакет AVR Studio для разработки программ на языке AVR Assembler), среды разработки на языках высокого уровня (такие как среда WinAVR для разработки программ на С-подобном языке) и есть даже графическая среда разработки и отладки программного обеспечения под названием "Algorithm Builder".

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

Разработка программного обеспечения в среде Algorithm Builder сводится к формированию таких блоков задач, размещению их на плоскости и установлению между ними связей из условных и безусловных переходов.

Дабы не переписывать весь мануал по работе со средой Algorithm Builder советую прочитать его самостоятельно, тем более, что приложение отечественного производства и содержит подробнейшее описание на русском языке на основе примеров по работе с ним. Основываясь на личном опыте, можно с уверенностью сказать, что данного мануала (кстати, далеко не объемного - всего на 20-30 мин. изучения) вполне хватает, чтобы полностью понять и разобраться в данном программном продукте.

Скачать Algorithm Builder можно по адресу http://algrom.net/russian.html. А процесс разработки управляющей программы можно посмотреть по ссылке. Таким образом, представим далее готовую программу в описанной среде разработки с подробнейшими комментариями к ней.

Для начала необходимо выбрать тип кристалла (в нашем случае Atmega8) в меню Опции/Опции проекта и там же задать тактовую частоту 8000000 Гц (8 МГц). Далее выполняем сброс кристалла при запуске (Элементы/Прерывания/Reset). После чего инициализируем стек, выбрав Элементы/Настройщик…/Stack Pointer (SP), откроется окошко с которым нужно будет просто согласиться, нажав "ОК" (рис. 2).


Настройщик стека

Рис. 2. Настройщик стека


Следующим этапом следует инициализировать приемопередатчик USART (не стоит удивляться появлению буквы «S» в аббревиатуре – это более современный вариант UART, отличающийся от него возможностью передавать/принимать данные не только в асинхронном режиме, но и в синхронном) путем выбора меню Элементы/Настройщик…/USART. В открывшемся окошке (рис. 3) в разделе Receiver ставим галочки напротив Enable (включаем приемник данных) и Complete interrupt enable (разрешаем прерывания по окончании приема данных), далее ставим галочку напротив Double Speed, задаем размер символа Character Size: 8 – bit и выставляем скорость передачи данных Baud Rate = 9615 bps (когда нажмете на выбор скорости передачи данных в меню следует выбирать 9600 bps, 9615 bps получается в связи с пересчетом тактовой частоты на 8 МГц).


Настройщик USART

Рис. 3. Настройщик USART


Далее следует разрешить глобальные прерывания записав "1" во флаг глобальных прерываний I.

Основное тело программы будет состоять из последовательности проверок управляющих кодов (листинг №1). Идея в том, что ПК будет присылать по UART код операции, а МК принимать его и вырабатывать соответствующие управляющие воздействия на привод лопастей вентилятора и сервопривод. Всего таких кодов будет три (сами коды можно придумать абсолютно любые):
  • $31 - включить привод лопастей вентилятора;
  • $20 - выключить привод лопастей вентилятора;
  • $A1 - обращение к сервоприводу.

  • Если с первыми двумя кодами все понятно, то с третьим не все так просто - $A1 - это только команда обращения к сервоприводу, далее необходимо получить еще код угла поворота. Экспериментальным путем было установлено, что он колеблется в приделах от $05AF до $154F. При чем отсылать с ПК и соответственно принимать со стороны МК будем начиная с младшего байта. Так же будем запрещать прерывания по приему данных по USART на время исполнения команды - иначе может получиться "каша" из данных.

    Листинг №1
    Основное тело программы

    Основное тело программы


    На листинге №2 приведен код подпрограммы задержки (Delay). Временная задержка необходима для точной и полной отработки команды и формируется путем зацикливания программы на N циклов (методом проб и ошибок мы подсчитали, что в нашем случае наиболее удачное число циклов 84FF в 16-тиричной системе счисления).

    Листинг №2
    Подпрограмма задержки

    Подпрограмма задержки


    Окончание приема данных по UART вызывает прерывание USART_Receive_Complete (если оно в данный момент не запрещено в основном теле программы), которое в коде можно задать через меню Элементы/Прерывания/ USART_Receive_Complete. В теле обработчика следует сохранить все используемые в нем регистры в стек, а в конце обработчика обратно их восстановить из стека. Так же в этом обработчике можно получить байт статуса (регистр UCSRA) для проверки данных на ошибки и, естественно, сами данные из регистра UDR (листинг №3).

    Листинг №3
    Обработчик прерывания

    Обработчик прерывания


    Угол поворота сервопривода зависит от ширины подаваемого на него импульса при сохранении периода постоянным (период 20 мс, а длительность управляющего импульса от 0,8 до 2,2 мс, хотя для разных сервоприводов эти значения могут немного отличаться) для этого нам и понадобится подпрограмма отработки угла поворота сервопривода (листинг №4). Время управляющего импульса и время паузы будем задавать аналогично подпрограмме задержки. Как мы уже писали выше, экспериментальным путем для частоты кристалла 8 МГц мы определили, что время импульса задается кодом в приделах от $05AF до $154F. Таким образом, зная время всего периода – $9E3C (определили так же экспериментально), можно рассчитать время паузы как разницу между длительностью периода и длительностью импульса. Остается только аналогично подпрограмме задержки отработать последовательно время импульса и время паузы, а затем повторить такой сигнал несколько раз (в нашем случае мы повторили сигнал $10 раз, т.е. 16 раз в десятичной системе счисления)

    Листинг №4
    Подпрограмма отработки угла поворота

    Подпрограмма отработки угла поворота


    После написания кода (прорисовки алгоритма) управляющей программы необходимо ее откомпилировать и прошить в микроконтроллер. Компиляцию программы можно произвести нажатием Ctrl+F9 либо через меню Программа/Компилировать. В случае успешной компиляции появится информационное окно в котором будет указан объем занятой памяти МК.

    Далее необходимо прошить результат компиляции (файл с расширением *.hex без приписки «EE_» вначале, лежащий в той же папке, что и исходник программы) в контроллер. Это можно сделать с помощью бесплатной утилиты AvrProg, входящей в так же бесплатный пакет AVR Studio. Скачать ее можно с сайта mymcu.ru либо с atmel.com (англоязычный сайт).

    Помимо утилиты для прошивки МК потребуется еще и программатор. Его можно либо купить (простые версии стоят относительно недорого) либо спаять самостоятельно.

    Схема LPT-программатора
    Рис. 4. Схема LPT-программатора
    Самый простой из мне известных – LPT-программатор, но он соответственно потребует наличие порта LPT на компьютере, что на данный момент становится редкостью. Идея программатора проста и состоит в соединении порта LPT с интерфейсом ISP и линией Reset контроллера напрямую (рис. 4).

    Другой вариант программатора для самостоятельной сборки – USB-программатор (схема показана на рис. 5), он конечно сложнее, но в последствии может оказаться значительно более удобным. Тем не менее есть одно «но» – для его сборки все равно потребуется LPT-программатор, правда однократно. Он будет необходим для прошивки управляющего контроллера самого программатора с целью прошивки FUSE-битов. Необходимо, чтобы были запрограммированны (установленны в «0») биты SPIEN, CKOPT и SUT0. Обычно МК, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Так же желательно (но не обязательно) запрограммировать (установить в «0») бит BODEN. Остальные биты должны быть незапрограммированны (установленны в «1»). Для этого может потребоваться приложение Codevision AVR V2.03.4. Подробное описание сборки USB-программатора можно прочитать тут: http://modder-team.clan.su/publ/5-1-0-36.


    Схема USB-программатора
    Рис. 5. Схема USB-программатора


    Подключив программатор с МК к компьютеру (не важно какой программатор) нужно запустить AvrProg (адрес приблизительно такой для AVR Studio: C:\Program Files\Atmel\AVR Tools\AvrProg) и если с программатором и МК все в порядке откроется окошко в котором нужно указать путь к Вашему hex-файлу и нажать кнопку «Program».


    Исходники:
    Схема и чертежи в MS Office Visio 2010
    Управляющая программа для МК в Algorithm Builder
    Управляющая программа для ПК в RAD Studio Delphi 2009

    Видео:
    Видео проектирования принципиальной схемы в MS Office Visio 2010
    Видео написания управляющей программы для МК в Algorithm Builder
    Видео пайки схемы для управляемого вентилятора
    Видео написания управляющей программы для ПК в RAD Studio Delphi 7 (1)
    Видео написания управляющей программы для ПК в RAD Studio Delphi 7 (2)
    Видео сборки и демонстрации работы управляемого вентилятора

    Авторы:
    Крюков А.И., Шубникова И.С., Тройков С.М.
    e-mail: mr.krukov@mail.ru
    кафедра «Автоматика, Информатика и Системы Управления» Московкого Государственного Индустриального Университета (ГОУ МГИУ), http://www.msiu.ru


    Cм. также:
    Часть 1 - Управляемый компьютером вентилятор на базе микроконтроллера ATmega8
    Часть 3 - Монтаж электронной платы с микроконтроллером (hardware)
    Часть 4 - Создаем управляющую программу на компьютере (software)
    Часть 5 - Сборка устройства

    06.07.2011












    Copyright © myrobot.ru, 2005-2023


    Яндекс.Метрика   Рейтинг@Mail.ru