Яндекс.Метрика

А вот краткий рассказ о попытках освоить программирование микроконтроллеров.

Да, действительно, был в моей практике такой этап, когда мне было интересно этим заниматься, мне было очень любопытно кто они, эти микроконтроллеры.

Я начал бороздить просторы Интернета, пока не наткнулся на очень интересный сайт http://www.roboclub.ru/. На тот момент, там, в разделе проекты, рассматривался пример построения простейшего робота с колесным приводом на основе контроллера Avr2313. Причем, статья была рассчитана на совсем неопытных юзеров, кто и представления не имеет, что такое микроконтроллер. И вот благодаря материалам этого сайта, а так же книге "Программирование микроконтроллеров AVR", приобретенной в магазине "Техническая книга", мною был построен самодвижущийся агрегат, о четырех колесах, обладающий зачатками простейшего скажем так, разума.

Внешний вид аппарата.


В основу конструкции аппарата, было положено шасси от детской игрушки с дистанционным управлением (выносной пульт на проводе), купленной на базаре рублей за 200. Шасси игрушки имело два электромотора, каждый из которых, посредством шестеренчатых редукторов приводил в движение борт с двумя колесами. На практике получалось, что игрушка двигается как гусеничный аппарат, при осуществлении поворота вправо стопорился правый борт, левый же продолжал движение, и наоборот. Полагаю, идея ясна. Так вот, удалив все лишнее, я получил шасси- основу будущей конструкции. Сверху шасси я смонтировал две печатные платы, одна непосредственно с микроконтроллером, вторая с драйвером двигателей. На оси передних колес были установлены фотоимульсные датчики, от мышки, спереди и сзади робот имел по одному контактному бамперу, оснащенному кнопками все от тех же мышек. В белой трубке были размещены батарейки, для обеспечения автономной работы устройства, но для экономии средств была так же оборудована штанга с разъемами для подключения адаптера. Тоесть при тестовых пусках робот таскал за собой кишку питающих кабелей.

Контактный бампер. Датчики положения колес.


Над платой драйвера двигателя был установлен вентилятор от видеокарты, для обдува радиатора микросхемы, управляющей моторами. Насколько я помню, работал он постоянно при подаче питания. Что было реализовано. Естественно, что к тому моменту как я построил эту конструкцию, у меня уже был навык прошивания контроллера AVR2313, непосредственно сам программатор, схему которого я взял из книги, и навык написания простейших программ. Поэтому прямолинейное движение робота было реализовано очень скоро после постройки девайса. Далее меня заинтересовала перспектива написания алгоритма так называемого электрического вала. Если в двух словах, то при возникновении повышенной нагрузки на одном из бортов, а как следствие уменьшение частоты вращения колес этого борта, контроллер автоматически уменьшает частоту вращения второго борта, при этом робот продолжает прямолинейное движение. О частоте вращения колес каждого из бортов, контроллер узнавал, измеряя количество импульсов в единицу времени, приходящих от фотоимпульсных датчиков установленных на передних колесах. Забегая вперед, скажу что наврать парочку импульсов на один оборот такому датчику в моей конструкции ничего не стоило, поэтому робот, двигаясь прямолинейно, мог в какой-то момент повернуть на небольшой угол. А вот если перевернуть игрушку и придержать рукой вращающиеся колеса, например правого борта, то контроллер тут же замедлял вращение левого борта. Очень забавный опыт.

Наигравшись с "электрическим валом", я начал реализовывать алгоритм "свободного поиска", это когда робот ползает по комнате, совершая повороты вправо и влево в случайной последовательности, и проезжает после каждого поворота случайное расстояние. Когда игрушка натыкается на препятствие, она переходит к выполнению алгоритма его объезда. Она отъезжала назад на определенное расстояние, выполняла поворот на некоторый угол, двигалась вперёд, после чего опять переходила в режим свободного поиска. Расстояние, проезжаемое роботом, пересчитывалось из количества импульсов датчиков на колесах. О возникновении препятствия контроллеру сообщали контактные бамперы робота.

Монтажные платы.


Микроконтроллеры AVR рассчитаны на внутрисхемное программирование, тоесть прошивку контроллера новой программой можно осуществлять без извлечения его из схемы устройства, которым он управляет. Для его программирования на плате контроллера устраивают разъем для подключения шлейфа программатора. Так было сделано и на моем роботе. Чтобы сменить программу контроллера требовалось не более минуты.

Вид сбоку.






Hosted by uCoz