10 мар. 2011 г.

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"-3

Импульсный преобразователь на МС34063х
Потерпев неудачу с ATtiny2313 (по причине отсутствия поддержки нужного мне режима работы SPI) я решил использовать что-нибудь столь же недорогое и простое - например восьмую ATmeg'у.
К сожалению, все оказалось не столь просто и радужно, как казалось в самом начале.
Первая версия платы для ATmeg'и была распечатана на лазерном принтере из PNG-файла, полученного Гимпом. Как впоследствии выяснилось, при печати изображений из под гномовского eog, они как-то хитро масштабируются - совсем немного уменьшаются, на глаз не заметно. Ни в скудных настройках eog, ни в настройках CUPS я не смог отключить этот ненужный и вредный эффект. Пришлось печатать по одному рисунку платы (при помощи Гимпа я печатал сразу несколько рисунков на одном листе) сразу из объемной PDF-ки, полученной от TopoR'а.
Но одна неправильная плата была уже сделана... К счастью я решил сначала установить микроконтроллер и обнаружил, что просверленные отверстия и ножки корпуса микросхемы не совпадают и подгибанием ножек проблему не решить.
Естественно, я сделал новую плату, в правильном масштабе. Но, после рассверливания отверстий ... микроконтроллер снова не подошел - не так просто идеально ровно высверлить 28 отверстий (по 14 на ряд) трехкилограммовой дрелью с 0.8-миллиметровым сверлом на конце.
Новую плату мне уже делать ну совершенно не хотелось, поэтому при помощи подгибания ножек, лома и такой-то матери ATMega встала на свое законное место. Но отказалась прошиваться - видимо где-то не было контакта между дорожкой печатной платы и ножкой.
Плата с микроконтроллером (вид снизу)
Плата с микроконтроллером (вид сверху)
К тому моменту я уже сделал отдельные платы драйвера RS232 и импульсного преобразователя напряжения с 9В, на 5В (для микроконтроллера) и 3.3В (для радиомодуля TR24A). Как выяснилось, несоответствие нужного и полученного размеров дорожек на печатной плате присутствовало и на этих устройствах. На импульсном преобразователе оно было совершенно не заметно, тогда как микросхема драйвера RS232 не помещалась на свое посадочное место. Впрочем, мне удалось припаять ее, немного перекосив корпус (и ОНО даже заработало!).
Импульсный преобразователь
Драйвер RS232
К этому моменту, я уже хотел подпаивать ножки ATMeg'и к контактным площадкам при помощи проводков - лишь бы у меня было работающее устройство и я мог бы наконец-то начать писать драйвер для TR24A и сетевой стек.
Но тут, "совершенно некстати", я вспомнил еще об одной промашке, допущенной при "проектировании" устройства - микроконтроллер ATMega8 был рассчитан на работу от питания в 4-5 вольт. А радиомодуль TR24A питался от трех вольт. И в даташите на радиомодуль не было ничего сказано о том, как он отнесется к подаче на его контакты пяти вольт от микроконтроллера (обычно об этом упоминают, если устройство рассчитано на такие фокусы).
Как следствие - нужно снова городить новую схему, работающую целиком от трех вольт. Что радует - я снова смогу уместить всю схему на одной текстолитовой пластинке 5x10. Будет использоваться только одна половина преобразователя - так которая выдает 3.3 вольта. А вместо микросхемы ST232A в драйвере RS232 будет использоваться MAX3232 - полностью аналогичная, но рассчитанная на работу от 3 вольт.
В качестве микроконтроллера я планировал использовать что-нибудь из серии ST8, но как оказалось, несмотря на всю "аппетитность" этих МК, для них еще нет GNU-того инструментария (gcc и все такое прочее).
Неплохо было бы использовать ATMeg'у 8L - она может работать на 3 вольтах. Но при сверлении отверстий вновь может случиться "оказия", а микросхему в TQFP или хуже того - MLF-корпусе я точно не смогу припаять - расстояние между ножками слишком мало...

Может быть не стоит искать какой-то универсальный микроконтроллер "все в одном", в котором есть все нужные интерфейсы, который в удобном для меня корпусе, который может работать от 3 вольт и так далее... Может быть имеет смысл использовать сразу несколько микроконтроллеров, объединив их через SPI (нравится он мне - проще чем I2C)? Под каждую задачу по микроконтроллеру - общением с радиомодулем занимается один микроконтроллер (ATtiny87/167? - имеет полноценный SPI интерфейс, корпус SOIC20), опросом датчиков и работой с управляющими устройствами второй, ну а координирует их работу третий... Надо будет посоветоваться на эту тему со своим научным руководителем...

P.S. Я завел Mercurial-репозиторий для своего диплома. Кому интересно - могут присоединяться (естественно можно только читать, коммитить изменения по понятным причинам нельзя :-) ).
https://bitbucket.org/h0rr0rr_drag0n/bakalavr-diplom