Робот на контроллере PIC от SWG. Часть 3

Тем временем, в Казахстане ударными темпами продолжается разработка киборга оригинальной конструкции на базе контроллера PIC, о чем SWG очень активно отписывается в комментарии к постам о своем роботе.

О ходе работ можно почитать в записях ать и два и, главное комментариях к ним

Попутно скидывая мне мылом некоторые свои наработки.

SWG:
На всяк случай посылаю кое-что из последнего. Программки еще не доделал,закончу с обменом, отлажу, тогда уж вышлю нормальные.

Под бамперами будет крепиться пластина толщиной миллиметров 10 из довольноплотного поролона или даже микропористой резины, пока еще не решил, пробую разные материалы. Надо чтобы был мягкий, но не очень. Будет выступать запределы плат миллиметров на 10-15, защищая светодиоды подсветки и сами платы. Пока просто положил платы бамперов в коробку, чтобы показать общуюкомпоновку.

Определившись с размещением и креплением плат, сделаю соединительные шлейфики из МГТФ, оптимальной длины, чтобы зря не болтались,но и не в натяжку. Прикидываю также варианты, конструкцию и размещение датчиков одометров, и оборудования, которое будет установлено в будущем,чтобы по нескольку раз не переделывать.

На платах бамперов синие колодочки снизу — датчики пола с фоторезисторами ибелыми светодиодами подсветки. (Сделал из клеммников, слегка рассверлив их местами). Прозрачные светодиоды сверху — подсветка ИК локатора на TSOP(стоят посредине, вверх ногами).Черные кубики на внутренних углах — оптопары на отражение датчиков столкновения. Над ними к боковым стенкам будуткрепиться угольники — шторки с белой областью на черном фоне или отверстием определенной формы.

Когда уже платы были готовы, подумал, что можно было припаять оптопары не сверху, а снизу платы, и нарисовать нужные фигуры прямо на дне коробки. Вообще — то это и сейчас еще не поздно сделать, пока еще не решил. Тем более, что в библиотеку я по запарке тоже занес их зеркально, и при запайке пришлось загнуть ноги под ними для правильной распайки, а снизу они встанут правильно. В общем, накопилась куча мелочей, на обдумывание которых бесполезно уходит время. («Тирания альтернатив»). С пересылкой состояния датчиков тоже вроде все просто, но когда начинаешь добавлять кучу всяких защит от всего, и проверок правильности функционирования, все обрастает, как снежный ком, постоянно приходится все проверять на возможные и невозможные ситуации, чтобы все нормально отрабатывало. Слишком велика будет цена падения, например, в открытый люк, а постоянно закрывать все дырки и двери — тоже не выход… Но и сильно перестраховавшись, можно вообще никогда не стронуться с места.

(далее…)

Read More »

Радиомодуль HopeRF HM-R433 и HM-T433

В числе прочих ништячков, помимо ультразвукового дальномера мне в посылке из Терры пришли еще и радиомодули. Hope HM-T433 и Hope HM-R433 На передачу и на прием, соответственно. Сам модуль представляет из себя крошечную платку 15х25 мм с торчащим из нее разъемом. У передатчика разъем трехконтактный — GND, DATA и Vcc у приемника есть еще вход ENABLE при подаче на который высокого уровня разрешается прием.

(далее…)

Read More »

О модерации комментариев.

Я думаю многие уже успели заметить, что далеко не все комментарии сразу же размещаются. Причина — в премодерации. Я решил не вводить капчу (защита от ботов в виде корявых буковок) т.к. это бесячее зло, а просто разные подозрительные комменты забрасываю на модерацию. В итоге, и спама меньше и комментить проще.

Какие комменты попадают на модерацию:
1) Содержащие активные ссылки куда либо. Неважно куда и в каком количестве. Если от ссылки оторвать http:// или www то, по идее, такой коммент пройдет без модерации. Не проверял :)

2) Содержащие ряд слов, на первый взгляд безобидных, но по ним застрявают многие спамеры. Так что если хотите, чтобы коммент сразу же был опубликован, то не рекомендую применять слова «сайт», «проект», «кредит» ну и еще десяток менее применимых к этому ресурсу, вроде «недвижимость» или «аренда»

Read More »

Ультразвуковой дальномер

Подключенный сонар
Подключенный сонар

Вот прикупил я для своего робота ультразвуковой дальномер — Maxbotix LV-MaxSonar EZ1. На днях ко мне пришла посылка из Терраэлектроники, где сей замечательный девайс был куплен. Сам сонар стоит под 750 рублей, доставка обошлась в 800 :) Но я заказывал кучу всего вкусного, так что оно того стоило. Несмотря на нехватку времени, не побаловаться этой игрушкой я не мог. Итак, встречайте краткий тест системы.

Описание:
Девайс представляет из себя головку излучателя с платой контроллера на заднице. Контроллер собран на базе PIC16F676 и микросхемы LM324. Схема сонара указана в даташите, а прошивку в итоге можно и самому написать, так что рано или поздно я повторю его на AVR :) Тем более где то я эту схему уже видел… Впрочем, схема тут не важна, УЗ сонаров как грязи разработано умельцами, самое главное тут это излучатель, вот его найти задачка та еще. Я применил MaxBotix’овский пьезоизлучатель. И если цена готового модуля почти 800рублей, то сама пищалка стоит всего 150 рублей.

(далее…)

Read More »

О глюках на сайте

В связи с ростом числа посетителей возникла нагрузка на хостинг и пришлось поставить кэширующую примочку на сайт. Но она несколько глючная, и пока в стадии отладки.

Если вместо каких-либо страниц (или всего сайта) будет тупо белый фон, то просьба сообщать мне мылом (clihlt на yandex.ru) или по аське (200605975) на какой странице беда.

Весь прикол в том, что у меня то работает всегда, поэтому глюк я, вот так сразу, спалить не могу. Но многие уже жаловались, что вместо некоторых статей просто белая страница без опознавательных знаков.

Read More »

Юкио Сато «Обработка сигналов, первое знакомство»


Автор: Юкио Сато
Редактор: Есифуми Амэмия
Название: Обработка сигналов. Первое знакомство
Издательство: Додэка 2002

Отличная книга, посвященная цифровой обработке сигналов. Все обьясняется предельно доступно, без загруза тяжелой математикой. От основных терминов и математических представлений, до ключевых методов, вроде Преобразования Фурье. Практически на пальцах. Очень много картинок, графиков, поясняющих диаграмм. По страницам шляются всякие анимэшные девочки, втирая разные правила и шпаргалки. Мне пока не пригождалась, а вот камрад Длиный оценил ему как раз для диплома вся эта ботва нужна. Хорошая книжка, помогает вьехать в суть. Все примеры кода приведены на бейсике.

Read More »

AVR. Учебный Курс. Виртуальные порты

Глядя на то, как раскиданы порой ножки портов по корпусу контроллеров, у меня возникают большое подозрение, что разводчик кристалла дунул что то сильно забористое. Когда вперемешку идут выводы разных портов, да еще почти в рандомном порядке… Когда к этим портам вешаем что-либо разнобойное, то пофигу. А если надо подцепиться на прямую линейку шины данных, вроде того же LCD дисплея? Вот тут и начинается круголяние дорожек по плате. А если плата фаршированная донельзя? Тут приходится вводить перемычки, дополнительные слои и извращаться как только можно. Короче, та еще проблема.

Я решаю ее виртуальными портами. То есть завожу в системе переменную каждому биту которой привязываю какую-либо ножку. Поскольку все выводы независимы я могу компоновать виртуальный порт в любом порядке и из любых линий. Чертовски удобно. Впрочем, за удобство приходится платить — обработка такого порта требует несколько десятков команд. Но когда кристалл не забит под завязку, то можно позволить себе немного пошиковать во имя удобства.

Итак. Подключаем куда-нибудь в область процедур блок кода виртуального порта. (далее…)

Read More »

AVR. Учебный Курс. Библиотека для LCD на базе HD44780

Сел я и дописал свою библиотеку для LCD на базе HD44780.

Как она работает я тут расписывать не буду — код весьма плотно фарширован комментариями. Тем более я уже рассказывал как работать с этим дисплеем Поэтому, думаю, разберетесь. Если будут вопросы, то обращайтесь. Тут же я расскажу как ей пользоваться.

Состав
Библиотека состоит из двух файлов LCD.asm и LCD_macro.inc для подключения по 8ми битной шине и LCD4.asm и LCD4_macro.inc для подключения по четырех битной шине данных. Используете тот вариант, по которому у вас подключен дисплей.

  • Файл LCD.asm содержит все основные настройки портов и, собственно, код.
  • LCD_macro.inc содержит макросы для работы с дисплеем. И используется для работы с библиотекой.

Подключение LCD к микроконтроллеру.
Порт данных использует биты 7…4 любого порта на 4 битном подключении, или весь порт целиком на 8ми разрядном
Порт управления использует 3 любых бита любого порта. Главное, чтобы они были на одном порту. Впрочем код можно и чуток подправить :)

(далее…)

Read More »

Atmel R.I.P.

Приплыли, господа. Компании Atmel больше нет. Она была продана по частям. Микропроцессорное отделение выкупила компания Microchip (та самая которая PIC делает), а отдел Flash памяти продано компании On Semiconductors Что теперь будет с архитектурой AVR неизвестно. Несколько лет то еще она, конечно, просуществует, но вот что дальше? У Микрочипа есть свои контроллеры и своя архитектура которая занимает внушительный процент рынка. Не вижу смысла им дробить силы на разработку двух разных архитектур. Возможно AVR будет свернуто и все мощности брошены на PIC, а возможно возникнет третья архитектура, этакий гибрид, обьединяющий обе платформы.

Может оно и к лучшему, но вот только мне как то сцыкотно, если зарубят AVR то я даже не знаю куда подрываться, т.к. PIC мне не нравится категорически.

Заряженые MSC-51 от SiLab или Philips?
MSP430?
PSOC или HC08?

В общем, я в глубоких раздумьях. У кого какие соображения?

UPD:
Акционеры Атмела покурили, подумали и написали Микрочипу ответ с количеством стеба сравнимый  с письмом «Турецкому султану». Само письмо висело на главной странице Атмела с неделю. В общем, основной смысл был такой — Хер вам! Родина Атмел не продается! Так что все ок. Выдыхаем!

Read More »

Корпус

Коробочка
Коробочка
Минимать
Минимать
С другой стороны
С другой стороны
Никак не мог найти корпус для своего одноплатного компа. Комп может и мелкий, но платка у него все же не карманных размеров. Так что подобрать корпус под эту чуду юду было чертовски сложно. Одни не проходили по ширине, другие по длине, а третьи представляли из себя огроменные чемоданы, которые мне были совершенно не нужны. Я уже почти отчаялся, когда случайно в продуктовом магазине не увидел ЕГО! Пофиг, что пластик хрупкий и прозрачный — ногами пинать не будут и царапать тоже, зато он весьма жесткий, а внутрь можно сунуть гламурную подсветку. Так что вот! Рекомендую, гарный корпус. Обошелся мне он всего в 300 рублей, немногим дешевле специального корпуса, зато в нагрузку еще конфеток отсыпали почти 300 грамм. =) Вот выпилю дырки под разъемы, поставлю вентиляторы, может ножки приделаю или крепеж какой. Будет красиво :)

Да, сразу же предугадывая вопросы по поводу девайса, что в коробке. Это одноплатный комп фирмы 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 разьем, а лучше сразу шлейфик, чтобы можно было ноутбучный винт туда подключить. А то флеш флешем, но только маловато будет.

Так что вот, господа. Смотрите по сторонам, полезное находится порой в самых неожиданных местах.

З.Ы.
Да, я тут, последнее время, «немного» загружен работой, так что сайт, скорей всего будет подтупливать с новыми постами. В крайняк, буду выкладывать разработки особо креативных посетителей сайта, которые мне прислали на мыло — на переформулировку и верстку уж время выкрою, равно как и на ответы на комменты Если есть чем поделится, то шлите мылом. Адрес в разделе «Об авторе»

Read More »

Переменный резистор

Переменный резистор
Переменный резистор
Ограничение крайних значений
Ограничение крайних значений
Повышение точности
Повышение точности
Вроде бы простая деталька, чего тут может быть сложного? Ан нет! Есть в использовании этой штуки пара хитростей. Конструктивно переменный резистор устроен также как и нарисован на схеме — полоска из материала с сопротивлением, к краям припаяны контакты, но есть еще подвижный третий вывод, который может принимать любое положение на этой полоске, деля сопротивление на части. Может служить как перестариваемым делителем напряжения (потенциометром) так и переменным резистором — если нужно просто менять сопротивление.

Хитрость конструктивная:
Допустим, нам надо сделать переменное сопротивление. Выводов нам надо два, а у девайса их три. Вроде бы напрашивается очевидная вещь — не использовать один крайний вывод, а пользоваться только средним и вторым крайним. Плохая идея! Почему? Да просто в момент движения по полоске подвижный контакт может подпрыгивать, подрагивать и всячески терять контакт с поверхностью. При этом сопротивление нашего переменного резистора становится под бесконечность, вызывая помехи при настройке, искрение и выгорание графитовой дорожки резистора, вывод настраимого девайса из допустимого режима настройки, что может быть фатально.
Решение? Соединить крайний вывод с средним. В этом случае, худшее что ждет девайс — кратковременное появление максимального сопротивления, но не обрыв.

Борьба с предельными значениями.
Если переменным резистором регулируется ток, например питание светодиода, то при выведении в крайнее положение мы можем вывести сопротивление в ноль, а это по сути дела отстутствие резистора — светодиод обуглится и сгорит. Так что нужно вводить дополнительный резистор, задающий минимально допустимое сопротивление. Причем тут есть два решения — очевидное и красивое :) Очевидное понятно в своей простоте, а красивое замечательно тем, что у нас не меняется максимально возможное сопротивление, при невозможности вывести движок на ноль. При крайне верхнем положении движка сопротивление будет равно (R1*R2)/(R1+R2) — минимальное сопротивление. А в крайне нижнем будет равно R1 — тому которое мы и рассчитали, и не надо делать поправку на добавочный резистор. Красиво же! :)

Если надо воткнуть ограничение по обеим сторонам, то просто вставляем по постоянному резистору сверху и снизу. Просто и эффективно. Заодно можно и получить увеличение точности, по принципу приведенному ниже.

Повышение точности.
Порой бывает нужно регулировать сопротивление на много кОм, но регулировать совсем чуть чуть — на доли процента. Чтобы не ловить отверткой эти микроградусы поворта движка на большом резисторе, то ставят два переменника. Один на большое сопротивление, а второй на маленькое, равное величине предполагаемой регулировки. В итоге мы имеем две крутилки — одна «Грубо» вторая «Точно» Большой выставляем примерное значение, а потом мелкой добиваем его до кондиции.

Read More »

Робот на контроллере PIC от SWG. Часть 2

Предварительная версия схемы
Предварительная версия схемы
Тем временем, SWG продолжает совершенствовать своего робота. Структурно его конструкции похожа на моего робота — тоже раздельные специализированные контроллеры. Недавно он прислал мне схему контроллера датчиков/ИК буфферов. Короче глаза и прочие сенсоры. А также наброски кода для управления всем этим добром. Респект!

Хы, надо сказать я несколько отстаю в разработке :) Он уже за датчики взялся, а у меня пока только ходовая отлаживается… ничо ничо, вот щас с заказами разберусь и закажу себе УЗ сонары :)))) А там еще посмотрим кто первый в космос полетит :)

SWG:
Оперативную связь с ходовым контроллером планирую с использованием в обоих контроллерах линий портов B0, B1, с задействованием внешнего прерывания по B0. Кроме того, у контроллера буферов будет также выход на межмодульную шину I2C, для связи с центральным процессором, а иногда и с ходовым контроллером, (для несрочных операций, типа уточнения местоположения препятствия, диагностики исправности датчиков и т.д.) На всякий случай вывожу на разьем также неиспользуемые линии портов, в т.ч. и USART (на всякий случай, в первую очередь для отладки). В качестве датчиков столкновений пока нарисовал микрики, но ставить скорее всего буду все же оптопары, что лучше будет отрабатывать толчки с разных направлений, но потребует дополнительных резисторов для CD подсветки, и желательно управление ей. Свободные линии портов для этого еще есть. На всякий случай (для отладки, а также наглядности работы буфера, и облегчения настройки локаторов, на A4 хочу поставить сигнальный светодиод. (при подачи тока на него он светится разными цветами, переключая их по очереди).

Бонусом в архиве идет доработанная программа ходового контроллера:

  • Исходник на Pascal
  • Cкомпилированные им ассемблерный листинг и HEX — код, а также
  • Дизассемблерный из HEX-кода листинг. Получен программой из комплекта IC-Prog, которой я прошиваю PIC16F876).

Описание ходовой части. Обратите внимание на комменты к посту, в них автором расписана большая часть подробностей и идей по дальнейшему развитию.

Read More »