Pull to refresh

Обзор ЛанчПада MSP430 и тестовый проект

DIY
Недавно, благодаря юзеру Dooez, я заказал себе на TI недорогой набор для поиграться холодными зимними вечерами.
Буквально через несколько дней постучался ко мне «с толстой сумкой на ремне...» и замечательной коробочкой ФедЭкса курьер:

Содержимое коробки меня тоже не разочаровало. Внутри была коробочка поменьше размером

из которой последовательно были извлечены сама плата ЛанчПада:

запаянные пакетики с еще одним процессором, коннекторами для платы и кварцем на 32кГц:

коротенький шнурочек миниUSB

и, как бонус, парочка наклеек


Первым делом, конечно же, распаковываем плату и шнурочек и втыкаем в комп. Винда радостно предлагает поискать драйвера и, разумеется, ничего не находит. Не страшно. Качаем с торрентов пиратский IAR Embedded WorkBench (конечно, можно было бы взять триальную версию с сайта TI, но адепты церкви копиизма не ищут легких путей), и после установки в системе появляются программатор/отладчик и виртуальный COM-порт.
Изначально в процессор прошита демо-программка, мигающая светодиодом в зависимости от температуры (да-да, проц при всей его простоте умеет мерить свою температуру), которую мы тут же затираем своей простенькой программкой «помигай светодиодом», эдакий «Hello, World!» для эмбеддеров.
Особо хочется отметить возможность скачать с сайта TI архив с парой сотен крохотных (буквально по десятку строк) программ на Си и на Ассемблере, демонстрирующих особенности микропроцессора. Как только что-то не получалось — я просто загружал в процессор соответствующий пример, и в дебагере за несколько минут находил суть проблемы.
Кстати, дебагер. Великолепная вещь! Брекпоинты можно ставить как на команду, так и на выполнение какого-либо условия, плюс возможность, остановив процессор, менять биты в служебных регистрах и тут же получать отклик в железе на плате. Или наоборот, смотреть прямо в регистрах процессора реакцию на подаваемое внешнее воздействие.
Наигравшись вдоволь, возникла мысль слепить что-нибудь полезное. А на ловца, как известно, и зверь бежит.
В старой дубовой китайской электроотвертке к этому времени как раз сдохли аккумы. А в загашнике валялись купленные по случаю новенькие железо-фосфатные аккумуляторы, до которых все руки не доходили:

Главный плюс серии 430 (по словам TI) — в сверхнизком энергопотреблении. Процессор просто просится в какое-то устройство с автономным питанием. Вот и попробуем сделать контроллер отвертки вместо китайского барахла.
Итак, раскурочиваем отвертку и безжалостно выкидываем ее унылое содержимое:

и проверяем, что аккум отлично входит (если выломать пару перегородок) и еще остается место для небольшой платки контроллера:

Прикидывается на коленке примерная схема внутренней электроники из тех деталек, что валяются по всяким коробочкам и пакетикам (кстати, потому критика подбора компонентов не принимается, паял из имеющегося в доме, не хотелось в мороз на радиобазар переться):

Небольшое пояснение к схеме: для заряда используется USB порт. Он может выдавать 500мА при 5 вольтах, на аккумуляторе данного типа напряжение отсечки должно составлять 3.6 вольта (рабочее 3.3В), итого закладываемся на ток заряда 100мА при падении на ключе 1.4В, т.е. к сопротивлению ключа добавляем еще небольшой токоограничивающий резистор. Q2,Q3 нужны именно для отсечки, когда аккумулятор будет полностью заряжен. Плюс эта же отсечка срабатывает при перегреве.
Q4 управляет мотором (переключение направления там сделано механически, поэтому мне не пришлось заморачиваться с full-bridge), он взят помощнее, т.к. мотор при старте берет до 3А от аккума.
D1 уменьшает напряжение питания микропроцессора до допустимых величин.
R14, R18 меряют напряжение на аккумуляторе, R16 и R19 меряют входное напряжение.
S1 — большая кнопка на отвертке, включающая мотор. S2 и D2-D4 — крохотная платка (да, я не все китайское барахло выкинул) с кнопкой и тремя светодиодами, красным, желтым и зеленым, показывающими заряд аккума.

Для начала подключаю к ногам ЛанчПада переменный резистор, изображающий аккумулятор, и плату с индикаторами. Мотор и ключ изображают светодиоды на плате:

Добиваюсь на макете более-менее уверенной работы всех кусков программы и перехожу к сборке окончательной платы. Сначала проверяем геометрические размеры после установки ключей:

Нормально, по размерам вписались, можно запаять запасной микропроцессор, навешивать на него необходимыке СМД-компоненты и делать все соединения с помощью тонкого МГТФ:

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

Попутно проверяем разные режимы сна для процессора. Даже при полностью включенном энергосбережении наш результат на полтора порядка выше заявленного в документации, что и неудивительно, учитывая резисторные делители для АЦП и схему управления Q2. Впрочем, 40 микроамперов вполне допустимый результат для нескольких ампер-часов аккумулятора. Десяток лет на одной зарядке процессор точно поработает, а там уже или шах сдохнет, или ишак:

Ну все, светодиоды мигают как положено, напряжение меряется, перегрев (сымитированный феном) отключает нагрузку, зарядка при втыкании в USB включается — можно собирать.
Аккуратно запихиваем начинку внутрь корпуса

и скручиваем обе половинки

теперь можно с чистой совестью залить свои исходники на общедоступный репозиторий, ведь главная заповедь поклонников копиизма «Информация должна быть свободной!». Кого заинтересовал проект — можно скачивать свежую версию исходников и альтиумовскую схему отсюда.
Там, конечно, причесывать и причесывать — в софте до сих пор остались хвосты от первоначального варианта программы с FSM, в дальнейшем я от нее отказался в пользу sleep-modes, ну а на схеме нумерация элементов слегка странная после прогонов в симуляторе и стирания лишних частей.

Как можно улучшить схему: ну как минимум вместо провода использовать миниUSB маму в корпусе отвертки, ибо болтающийся провод не по Фен-Шую.
Еще вариант для эстетов: после Q2 ставится индуктивность и диод Шоттки по схеме импульсного step-down преобразователя, тогда микропроцессор с помощью ШИМ может заряжать аккум от любого входного напряжения.
На микропроцессоре остался незадействованным последовательный порт — вполне можно (используя преобразователь типа СР2102 или FTDI) рассказывать компу статистику заряда-разряда аккумулятора.

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

PS: А вообще говоря, это просто разрыв мозга — что бы я подумал, если бы мне лет 20 назад сказали, что я буду сидеть за компом и программировать отвертку? Еще десяток лет, и научимся хакать зубочистки.
Tags:
Hubs:
Total votes 72: ↑63 and ↓9 +54
Views 6.9K
Comments Comments 31