Робот на контроллере PIC от SWG. Часть 3
Автор DI HALT
Опубликовано 31 Окт 2008
Рубрики: Робототехника
Метки: Microchip, PIC, Датчик, Описание, Робот
О ходе работ можно почитать в записях ать и два и, главное комментариях к ним
Попутно скидывая мне мылом некоторые свои наработки.
Под бамперами будет крепиться пластина толщиной миллиметров 10 из довольноплотного поролона или даже микропористой резины, пока еще не решил, пробую разные материалы. Надо чтобы был мягкий, но не очень. Будет выступать запределы плат миллиметров на 10-15, защищая светодиоды подсветки и сами платы. Пока просто положил платы бамперов в коробку, чтобы показать общуюкомпоновку.
Определившись с размещением и креплением плат, сделаю соединительные шлейфики из МГТФ, оптимальной длины, чтобы зря не болтались,но и не в натяжку. Прикидываю также варианты, конструкцию и размещение датчиков одометров, и оборудования, которое будет установлено в будущем,чтобы по нескольку раз не переделывать.
На платах бамперов синие колодочки снизу - датчики пола с фоторезисторами ибелыми светодиодами подсветки. (Сделал из клеммников, слегка рассверлив их местами). Прозрачные светодиоды сверху - подсветка ИК локатора на TSOP(стоят посредине, вверх ногами).Черные кубики на внутренних углах - оптопары на отражение датчиков столкновения. Над ними к боковым стенкам будуткрепиться угольники - шторки с белой областью на черном фоне или отверстием определенной формы.
Когда уже платы были готовы, подумал, что можно было припаять оптопары не сверху, а снизу платы, и нарисовать нужные фигуры прямо на дне коробки. Вообще - то это и сейчас еще не поздно сделать, пока еще не решил. Тем более, что в библиотеку я по запарке тоже занес их зеркально, и при запайке пришлось загнуть ноги под ними для правильной распайки, а снизу они встанут правильно. В общем, накопилась куча мелочей, на обдумывание которых бесполезно уходит время. (”Тирания альтернатив”). С пересылкой состояния датчиков тоже вроде все просто, но когда начинаешь добавлять кучу всяких защит от всего, и проверок правильности функционирования, все обрастает, как снежный ком, постоянно приходится все проверять на возможные и невозможные ситуации, чтобы все нормально отрабатывало. Слишком велика будет цена падения, например, в открытый люк, а постоянно закрывать все дырки и двери - тоже не выход… Но и сильно перестраховавшись, можно вообще никогда не стронуться с места.
Радиомодуль HopeRF HM-R433 и HM-T433
Автор DI HALT
Опубликовано 29 Окт 2008
Рубрики: Начинающим
Метки: RS232, UART, Модуль, Радиопередача
![]() |
О модерации комментариев.
Автор DI HALT
Опубликовано 26 Окт 2008
Рубрики: Новости
Метки: О сайте, От Автора
Я думаю многие уже успели заметить, что далеко не все комментарии сразу же размещаются. Причина - в премодерации. Я решил не вводить капчу (защита от ботов в виде корявых буковок) т.к. это бесячее зло, а просто разные подозрительные комменты забрасываю на модерацию. В итоге, и спама меньше и комментить проще.
Какие комменты попадают на модерацию:
1) Содержащие активные ссылки куда либо. Неважно куда и в каком количестве. Если от ссылки оторвать http:// или www то, по идее, такой коммент пройдет без модерации. Не проверял :)
2) Содержащие ряд слов, на первый взгляд безобидных, но по ним застрявают многие спамеры. Так что если хотите, чтобы коммент сразу же был опубликован, то не рекомендую применять слова “сайт”, “проект”, “кредит” ну и еще десяток менее применимых к этому ресурсу, вроде “недвижимость” или “аренда”
Ультразвуковой дальномер
Автор DI HALT
Опубликовано 24 Окт 2008
Рубрики: Робототехника
Метки: Датчик, Модуль, Сонар, Ультразвук
|
| Подключенный сонар |
Вот прикупил я для своего робота ультразвуковой дальномер — Maxbotix LV-MaxSonar EZ1. На днях ко мне пришла посылка из Терраэлектроники, где сей замечательный девайс был куплен. Сам сонар стоит под 750 рублей, доставка обошлась в 800 :) Но я заказывал кучу всего вкусного, так что оно того стоило. Несмотря на нехватку времени, не побаловаться этой игрушкой я не мог. Итак, встречайте краткий тест системы.
Описание:
Девайс представляет из себя головку излучателя с платой контроллера на заднице. Контроллер собран на базе PIC16F676 и микросхемы LM324. Схема сонара указана в даташите, а прошивку в итоге можно и самому написать, так что рано или поздно я повторю его на AVR :) Тем более где то я эту схему уже видел… Впрочем, схема тут не важна, УЗ сонаров как грязи разработано умельцами, самое главное тут это излучатель, вот его найти задачка та еще. Я применил MaxBotix’овский пьезоизлучатель. И если цена готового модуля почти 800рублей, то сама пищалка стоит всего 150 рублей.
О глюках на сайте
Автор DI HALT
Опубликовано 22 Окт 2008
Рубрики: Новости
Если вместо каких-либо страниц (или всего сайта) будет тупо белый фон, то просьба сообщать мне мылом (clihlt на yandex.ru) или по аське (200605975) на какой странице беда.
Весь прикол в том, что у меня то работает всегда, поэтому глюк я, вот так сразу, спалить не могу. Но многие уже жаловались, что вместо некоторых статей просто белая страница без опознавательных знаков.
AVR. Учебный Курс. Использование EEPROM
Автор DI HALT
Опубликовано 22 Окт 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, AVR, EEPROM, От Автора, Память
Иногда нужно сохранить данные так, чтобы они восстановились после перезагрузки контроллера. В этом тебе поможет EEPROM, почти все контроллеры серии AVR имеют на борту некоторое количество этой памяти. Физически и логически эта память находится в отдельном адресном пространстве, а чтение из EEPROM и запись туда осуществляется через специальные порты.
Чтобы что-то записать в EEPROM нужно в регистры адреса EEARH и EEARL (EEPROM Address Register) положить адрес ячейки в которую мы хотим записать байт. После чего нужно дождаться готовности памяти к записи – EEPROM довольно медленная штука. О готовности к записи нам доложит флаг EEWE (EEPROM Write Enable) регистра управления состоянием EECR, когда он будет равен 0, то память готова к следующей записи. Сам байт, который нужно записать, помещается в регистр EEDR (EEPROM Data Register). После чего взводится предохранительный бит EEMWE (EEPROM Master Write Enable), а затем, в течении четырех тактов, нужно установить бит EEWE и байт будет записан. Если в течении четырех тактов не успеешь выставить бит EEWE то предохранительный бит EEMWE сбросится и его придется выставлять снова. Это сделано для защиты от случайной записи в EEPROM память.
Чтение происходит примерно аналогичным образом, вначале ждем готовности памяти, потом заносим в регистры нужный адрес, а затем выставляем бит чтения EERE (EEPROM Read Enable) и следующей командой забираем из регистра данных EEDR наше число, сохраняя его в любом регистре общего назначения. Чтобы было понятно, я тебе набросал две процедурки – на чтение и на запись. Чтобы записать байт, нужно в регистры R16 и R17 занести младший и старший байт адреса нужной ячейки, а в регистр R21 байт который мы хотим записать. После чего вызвать процедуру записи. Аналогично и с чтением – в регистра R16 и R17 адрес, а в регистре R21 будет считанное значение. Читать полностью
AVR. Учебный Курс. Конфигурация FUSE бит
Автор DI HALT
Опубликовано 18 Окт 2008
Рубрики: AVR. Учебный курс
Метки: AVR, FUSE, Конфигурация, Программатор
Конфигурационные биты находятся в особой области памяти и могут быть изменены только с помощью программатора при записи контроллера.
Итак, главное:
В Atmel AVR принята следующая нотация: сброшенный в ноль fuse bit считается активным. С одной стороны нелогично и криво, с другой стороны это их контроллер, что хотят то и делают. Один раз запомнить и все.
Однако есть такой популярный программатор как Pony Prog так вот они там решили, что всех умнее и сделали все наоборот. И в Pony Prog уже установленный бит считается активным. Возникает жуткая путаница, поэтому тут надо быть внимательным как никогда, иначе последствия могут быть печальными - контроллер заблокируется и оживить его можно будет только высоковольтным программатором.
По умолчанию все контроллеры AVR сконфигурированы так, чтобы работать от внутреннего источника тактов. За источник тактов отвечают биты CKSEL
Выставив их правильным образом можно выбрать частоту работы контроллера, а также источник тактового сигнала.
Юкио Сато “Обработка сигналов, первое знакомство”
Автор DI HALT
Опубликовано 15 Окт 2008
Рубрики: Книги
Метки: БПФ, Начинающим, Обработка сигналов
![]() |
Автор: Юкио Сато
Редактор: Есифуми Амэмия
Название: Обработка сигналов. Первое знакомство
Издательство: Додэка 2002
Отличная книга, посвященная цифровой обработке сигналов. Все обьясняется предельно доступно, без загруза тяжелой математикой. От основных терминов и математических представлений, до ключевых методов, вроде Преобразования Фурье. Практически на пальцах. Очень много картинок, графиков, поясняющих диаграмм. По страницам шляются всякие анимэшные девочки, втирая разные правила и шпаргалки. Мне пока не пригождалась, а вот камрад Длиный оценил ему как раз для диплома вся эта ботва нужна. Хорошая книжка, помогает вьехать в суть. Все примеры кода приведены на бейсике.
AVR. Учебный Курс. Виртуальные порты
Автор DI HALT
Опубликовано 11 Окт 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, AVR, Порт, Программирование, Трюки
Глядя на то, как раскиданы порой ножки портов по корпусу контроллеров, у меня возникают большое подозрение, что разводчик кристалла дунул что то сильно забористое. Когда вперемешку идут выводы разных портов, да еще почти в рандомном порядке… Когда к этим портам вешаем что-либо разнобойное, то пофигу. А если надо подцепиться на прямую линейку шины данных, вроде того же LCD дисплея? Вот тут и начинается круголяние дорожек по плате. А если плата фаршированная донельзя? Тут приходится вводить перемычки, дополнительные слои и извращаться как только можно. Короче, та еще проблема.
Я решаю ее виртуальными портами. То есть завожу в системе переменную каждому биту которой привязываю какую-либо ножку. Поскольку все выводы независимы я могу компоновать виртуальный порт в любом порядке и из любых линий. Чертовски удобно. Впрочем, за удобство приходится платить - обработка такого порта требует несколько десятков команд. Но когда кристалл не забит под завязку, то можно позволить себе немного пошиковать во имя удобства.
Итак. Подключаем куда-нибудь в область процедур блок кода виртуального порта. Читать полностью
AVR. Учебный Курс. Библиотека для LCD на базе HD44780
Автор DI HALT
Опубликовано 10 Окт 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, AVR, HD44780, LCD, Микроконтроллер
Сел я и дописал свою библиотеку для LCD на базе HD44780.
Как она работает я тут расписывать не буду - код весьма плотно фарширован комментариями. Тем более я уже рассказывал как работать с этим дисплеем Поэтому, думаю, разберетесь. Если будут вопросы, то обращайтесь. Тут же я расскажу как ей пользоваться.
Состав
Библиотека состоит из двух файлов LCD.asm и LCD_macro.inc для подключения по 8ми битной шине и LCD4.asm и LCD4_macro.inc для подключения по четырех битной шине данных. Используете тот вариант, по которому у вас подключен дисплей.
- Файл LCD.asm содержит все основные настройки портов и, собственно, код.
- LCD_macro.inc содержит макросы для работы с дисплеем. И используется для работы с библиотекой.
Порт данных использует биты 7…4 любого порта на 4 битном подключении, или весь порт целиком на 8ми разрядном
Порт управления использует 3 любых бита любого порта. Главное, чтобы они были на одном порту. Впрочем код можно и чуток подправить :)
Atmel R.I.P.
Автор DI HALT
Опубликовано 08 Окт 2008
Рубрики: Новости
Метки: Atmel, AVR, Microchip, PIC, От Автора
Приплыли, господа. Компании Atmel больше нет. Она была продана по частям. Микропроцессорное отделение выкупила компания Microchip (та самая которая PIC делает), а отдел Flash памяти продано компании On Semiconductors Что теперь будет с архитектурой AVR неизвестно. Несколько лет то еще она, конечно, просуществует, но вот что дальше? У Микрочипа есть свои контроллеры и своя архитектура которая занимает внушительный процент рынка. Не вижу смысла им дробить силы на разработку двух разных архитектур. Возможно AVR будет свернуто и все мощности брошены на PIC, а возможно возникнет третья архитектура, этакий гибрид, обьединяющий обе платформы.
Может оно и к лучшему, но вот только мне как то сцыкотно, если зарубят AVR то я даже не знаю куда подрываться, т.к. PIC мне не нравится категорически.
Заряженые MSC-51 от SiLab или Philips?
MSP430?
PSOC или HC08?
В общем, я в глубоких раздумьях. У кого какие соображения?
UPD:
Акционеры Атмела покурили, подумали и написали Микрочипу ответ с количеством стеба сравнимый с письмом “Турецкому султану”. Само письмо висело на главной странице Атмела с неделю. В общем, основной смысл был такой - Хер вам! Родина Атмел не продается! Так что все ок. Выдыхаем!
Корпус
Автор DI HALT
Опубликовано 05 Окт 2008
Рубрики: Радиолюбительские Технологии
Метки: От Автора
|
| Коробочка |
|
| Минимать |
|
| С другой стороны |
Да, сразу же предугадывая вопросы по поводу девайса, что в коробке. Это одноплатный комп фирмы ASTRO на базе процессора AMD GEODE 333MHz на плате смонтировано все что нужно: Ethernet, USB, RS232, RS485, MicroPCI, SVGA, Audio, IDE, PS/2 Mouse и PS/2 Keyboard. Также есть CF разъем, позволяющий грузится с флеша. Полностью пассивное охлаждение, бесшумен, хоть и не сильно быстр. Воткнуто туда 128Мб PC133 SDRAM. Питание 12 вольт, подается прям на плату (стандартный разьем) я запитал от БП свитча - работает и БП, судя по температуре корпуса, не напрягается.
Сколько стоит и где можно купить я понятия не имею, конкретно этот стоял в лохотронных автоматах. Подарили.
На него скорей всего я установлю какой нибудь линух (фака! Это ведь еще надо в линухи вкуривать… чорт, ну ладно, винду туда ставить ваще никак мне не улыбается). А потом… Не знаю, может сделаю из него домашний сервер под файло. Или что поглобальней придумаю. Например в машину в качестве бортового компа. Повесить туда систему GPS умную сигналку и систему “Параноик” - камеры кругового обзора пишущие все вокруг. Можно пустить на мега мозги для робота, но пока до этого дело не дошло.
А у меня опять же встречный вопрос, где бы мне надыбать мини IDE разьем, а лучше сразу шлейфик, чтобы можно было ноутбучный винт туда подключить. А то флеш флешем, но только маловато будет.
Так что вот, господа. Смотрите по сторонам, полезное находится порой в самых неожиданных местах.
З.Ы.
Да, я тут, последнее время, “немного” загружен работой, так что сайт, скорей всего будет подтупливать с новыми постами. В крайняк, буду выкладывать разработки особо креативных посетителей сайта, которые мне прислали на мыло - на переформулировку и верстку уж время выкрою, равно как и на ответы на комменты Если есть чем поделится, то шлите мылом. Адрес в разделе “Об авторе”
Переменный резистор
Автор DI HALT
Опубликовано 04 Окт 2008
Рубрики: Начинающим
Метки: Мелочи, Резистор, Схемотехника, Трюки
| Переменный резистор |
|
| Ограничение крайних значений |
| Повышение точности |
Хитрость конструктивная:
Допустим, нам надо сделать переменное сопротивление. Выводов нам надо два, а у девайса их три. Вроде бы напрашивается очевидная вещь - не использовать один крайний вывод, а пользоваться только средним и вторым крайним. Плохая идея! Почему? Да просто в момент движения по полоске подвижный контакт может подпрыгивать, подрагивать и всячески терять контакт с поверхностью. При этом сопротивление нашего переменного резистора становится под бесконечность, вызывая помехи при настройке, искрение и выгорание графитовой дорожки резистора, вывод настраимого девайса из допустимого режима настройки, что может быть фатально.
Решение? Соединить крайний вывод с средним. В этом случае, худшее что ждет девайс - кратковременное появление максимального сопротивления, но не обрыв.
Борьба с предельными значениями.
Если переменным резистором регулируется ток, например питание светодиода, то при выведении в крайнее положение мы можем вывести сопротивление в ноль, а это по сути дела отстутствие резистора - светодиод обуглится и сгорит. Так что нужно вводить дополнительный резистор, задающий минимально допустимое сопротивление. Причем тут есть два решения - очевидное и красивое :) Очевидное понятно в своей простоте, а красивое замечательно тем, что у нас не меняется максимально возможное сопротивление, при невозможности вывести движок на ноль. При крайне верхнем положении движка сопротивление будет равно (R1*R2)/(R1+R2) - минимальное сопротивление. А в крайне нижнем будет равно R1 - тому которое мы и рассчитали, и не надо делать поправку на добавочный резистор. Красиво же! :)
Если надо воткнуть ограничение по обеим сторонам, то просто вставляем по постоянному резистору сверху и снизу. Просто и эффективно. Заодно можно и получить увеличение точности, по принципу приведенному ниже.
Повышение точности.
Порой бывает нужно регулировать сопротивление на много кОм, но регулировать совсем чуть чуть - на доли процента. Чтобы не ловить отверткой эти микроградусы поворта движка на большом резисторе, то ставят два переменника. Один на большое сопротивление, а второй на маленькое, равное величине предполагаемой регулировки. В итоге мы имеем две крутилки - одна “Грубо” вторая “Точно” Большой выставляем примерное значение, а потом мелкой добиваем его до кондиции.
Робот на контроллере PIC от SWG. Часть 2
Автор DI HALT
Опубликовано 01 Окт 2008
Рубрики: Робототехника
Метки: Pascal, PIC, Микроконтроллер, Программирование
|
| Предварительная версия схемы |
Хы, надо сказать я несколько отстаю в разработке :) Он уже за датчики взялся, а у меня пока только ходовая отлаживается… ничо ничо, вот щас с заказами разберусь и закажу себе УЗ сонары :)))) А там еще посмотрим кто первый в космос полетит :)
Бонусом в архиве идет доработанная программа ходового контроллера:
- Исходник на Pascal
- Cкомпилированные им ассемблерный листинг и HEX - код, а также
- Дизассемблерный из HEX-кода листинг. Получен программой из комплекта IC-Prog, которой я прошиваю PIC16F876).




