Зеркало сайта: vivacious-stockings-frog.cyclic.app

V-REP симулятор роботов

разделы: myRobot, дата: 24 марта 2016г.

    Разработку робота можно разделить на несколько этапов:
  • разработка математической модели;
  • составление алгоритма;
  • написание программы;
  • разработка проекта;
  • изготовление;
  • испытание.

Симулятор роботов позволит проверить математическую модель и алгоритм перед тем как приступать к изготовлению робота. V-REP компании Coppelia Robotics - один из самых совершенных симуляторов в настоящее время. Программный комплекс является кроссплатформенным и бесплатным для использования в образовательных целях. Симулятор состоит из физического и графического движка, что позволяет достаточно комфортно работать с программой.

На скорую руку я отметил важнейшие элементы в интерфейсе V-REP:

Читать дальше

Отладка прошивки в Linux с помощью эмулятора SimulAVR и отладчика AVR-GDB. Чтение из Flash памяти AVR

разделы: AVR, дата: 20 марта 2016г.

Обычно, чем больше размер программы, тем чаще приходится пользоваться отладчиком. В AVR Studio встроен замечательный эмулятор микроконтроллеров, на котором можно проверить работоспособность прошивки, и можно порадоваться за Windows пользователей, но что делать пользователям Linux?

В Linux в качестве эмулятора может выступить SimulAVR, а отладчиком avr-gdb. Собственно, работе с этим отладчиком и посвящен этот пост, потому-что им же производится отладка по JTAG. Но, пока я JTAG не разжился, придется пользоваться эмулятором. SimulAVR поддерживает небольшой набор микроконтроллеров и к том уже не всю периферию он эмулирует, но таймеры и порты преимущественно работают.

При запуске SimulAVR без параметров отобразится справка по ключам и список поддерживаемых микроконтроллеров:
Supported devices: at90can128 at90can32 at90can64 at90s4433 at90s8515 atmega128 atmega1284 atmega1284a atmega16 atmega164 atmega164a atmega168 atmega32 atmega324 atmega324a atmega328 atmega48 atmega644 atmega644a atmega8 atmega88 attiny2313 attiny25 attiny45 attiny85

К сожалению XMega не поддерживается ;) поэтому тренироваться будем на ATmega8. Для работы с отладчиком нужно будет скомпилировать прошивку с опцией -ggdb и убрать оптимизацию кода опцией -O0.

SimulAVR и AVR-GDB работают по клиент-серверной архитектуре. Первый выступает в роли сервера, второй в роли клиента.

Для отладки возьмем такой пример:

Читать дальше

ATmega168: колесный энкодер на дополнительном внешнем прерывании

разделы: AVR, myRobot, дата: 11 марта 2016г.


колесо в сборе с двигателем постоянного тока, редуктором и диском энкодера

Дополнительные внешние прерывания, относительно новая штука в периферии AVR. В микроконтроллерах ATmega8/ATmega16 их нет, зато они есть в ATmega88/ATmega168. В официальной документации они описаны в главе 13 "Внешние прерывания". В отличии от обычных внешних прерываний, в дополнительных, одно прерывание отведено на один порт (т.е. на восемь пинов), и в них нельзя выставить условия срабатывания. Прерывание будет генерироваться при любом изменении сигнала, даже если он был изменен программно, самим микроконтроллером.

    Т.о. задача состоит в следующем. Дано одно прерывание, и на него подключено два энкодера. Нужно:
  • определить какой именно энкодер вызвал прерывание;
  • определить время прошедшее с предыдущего срабатывания энкодера, т.е. интервал;
  • обеспечить защиту от "дребезга"
    Рассмотрим матчасть:
  • Диск энкодера имеет двадцать прорезей. Следовательно, поворот на одно деление примерно равно ~0.1π
  • Диаметр колеса около 66мм. Окружность 20.5 см, т.е. поворот на одно деление диска, равно примерно 1см пройденного пути.

Читать дальше

ATmega168: подключение нескольких ультразвуковых сенсоров HC-SR04 используя аналоговый компаратор

разделы: AVR, HC-SR04, myRobot, дата: 6 марта 2016г.

Компаратор это единственная периферия в AVR которая включена по умолчанию. Поэтому, если он не используется, его следует выключать. Допустимая ошибка (напряжение смещения) не более 40мВ, время отклика не более 0,5 мкс. Рабочие пины: прямой AIN0 и инверсный AIN1. Так же AIN0 называют положительным, а AIN1 отрицательным. Результат заносится в ACO бит регистра ACSR.

Официальный datasheet на ATmega168: http://www.atmel.com/images/doc2545.pdf работа компаратора описана в главе 23.2 на странице 246

    Хорошие справочные обзоры по работе компаратора в AVR можно найти здесь:
  1. Учебный курс AVR. Аналоговый компаратор
  2. AVR. Учебный курс. Использование аналогового компаратора

Я потратил немного времени на перевод официального руководства, с которым и предлагаю далее ознакомится.

Описание регистра ACSR

Компаратор управляется через регистр "Analog comparator control and status register" т.е. ACSR:

Читать дальше