Показаны сообщения с ярлыком Tools. Показать все сообщения
Показаны сообщения с ярлыком Tools. Показать все сообщения

25.02.2012

ATmegaU breakout

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


Идея создания была навеяна платами USB-Serial Light Adapter от Arduino и ATmega8U2 Breakout от Sparkfun (в итоге за основу был выбран второй вариант). 

С одной стороны - этот девайс с успехом заменяет FTDI friend, исполняя роль USB-TTL конвертера для связи с целевым MCU через UART или программирования в среде ArduinoIDE. С другой -  вполне себе самостоятельная отладочная плата для ATmega8U2, на которой разведены все его пины, а прошивку можно заливать через ISP6 или вообще по USB через DFU (т.е. без использования программатора). 

Некоторые моменты, на которые хотелось бы обратить внимание:

1. Джампер выбора напряжения питания - по умолчанию установлен в +5В. Если есть желание  поработать на +3.3В, можно перепаять - однако в этом случае предельная тактовая частота по паспорту будет ограничена 8 МГц, в результате может потребоваться переключиться  на внутреннюю калиброванную цепочку (надо менять фьюзы,  программатором);

2. Регулятор +3.3В. Он нужен для питания MCU от +3.3В (см. выше) и дополнительно может выдавать его наружу через соответствующий пин - всего до 150мА. Не путайте его с внутренним регулятором ATmega8U2, который служит для формирования правильного напряжения на линиях D+/D-, когда сам MCU питается от +5В. Кстати, если уж выставили Vсс = +3.3В, этот внутренний регулятор обычно отключают - через регистр REGCR,  экономя таким образом немного на энергопотреблении;

3. Предохранитель 500 мА, выручит вашу схему в случае короткого замыкания по питанию, а специальные диоды - уберегут линии D+/D- ATmega от статического разряда.

4. Гребенка выводов совместима с FTDI friend и вообще с кабелями FTDI. Можно особо не задумываясь использовать, например, с Angelino.

5. Кнопка сброса - с одной стороны - как обычно, замыкает RESET на GND. Однако, если в момент сброса линия DTR (она же пин PD7) была подтянута к земле - активизируется DFU. По крайней мере именно так ведет себя DFU в платах Freeduino ONE и Arduino UNO - но при помощи программатора и собственной прошивки это, конечно же, можно изменить.

6. Светодиод STATUS, в чем-то по функциям похожий на светодиод L в Arduino-совместимых платах Arduino - подключен к линии PB4.

Вот так рекомендуется подключать ATmega8/168/328 к этой плате по первому варианту (в режиме конвертера USB-TTL):



R2 (подтягивает DTR к GND) - необязателен при условии, что вы не прикасаетесь к кнопке сброса на ATmegaU (и действительно - зачем прерывать работу вечного двигателя прошивки конвертера USB-TTL?). Небольшой резистор R3, включенный последовательно в линию TX, защищает пин от перегрузки по току в случае, если его ошибочно посадили на VCC или GND с другой стороны (не забывайте - если на встречной стороне другая ATmega - такое можно сотворить и программно).

Если в MCU уже прошит бутлоадер, схему можно соорудить хоть на беспаечной макетке, например так:



В настройках ArduinoIDE надо выставить правильный порт и тип платы - "Arduino Uno"  (пользователи Windows дополнительно устанавливают .inf-файл от Freeduino ONE).

Программирование через DFU можно осуществлять через FLIP или dfu-profgrammer, указывая тип MCU at90usb82 - именно его и заменил (с более, чем скромными усовершенствованиями) ATmega8U2.

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

Схема:



Репозиторий на github, где можно получить исходники прошивки: https://github.com/a1ronzo/SparkFun-USBtoSerial

28.01.2012

MKboard в качестве программатора STK500

В комментах к посту про Angelino один из пользователей навел меня на интересную мысль: а действительно, как сделать из MKBoard программатор для другой платы? Для стандартных Duemilanova и Uno обычно берут скетч ArduinoISP и дальше действуют в соответствии с этой инструкцией. Но этот скетч совершенно не подходит для MKboard/metaboard, которые не имеют "честного" USB-порта.

Но оказывается - сделать из MKBoard программатор очень даже можно, причем получается практически полноценный STK500-совместимый программатор - AVR-Doper, который можно использовать с AVRStudio (разве что без высоковольтного последовательного программирования). Для этого берете этот хекс: mkboard_avrdoper.tar.gz, замыкаете джампер Upload, нажимаете на сброс и пишите:

avrdude -c usbasp -p m8 mkboard_avrdoper.hex

После завершения процесса вы получаете AVR-Doper в режиме HID.

Соединяйте провода с программируемой схемой, руководствуясь новым назначением пинов:

Для программирования достаточно соединить MKBoard и программируемую плату (target) согласно этой таблице:

MKBoardTarget
RESETRESET
MOSIMOSI
MISOMISO
SCKSCK
GNDGND
+5BVCC

Если схема имеет собственное питание, последнее соединение (VCC и +5В) делать не нужно. 

Откуда брать эти сигналы - с гребенки ISP6 или колодки цифровых пинов - не суть важно, но если соединяете ISP6 у MKBoard и устройства - получается практически "один в один", за исключением сигнала RESET - его надо брать все-таки с цифровой колодки, digital10.



Далее, для прошивки hex-файла через avrdude можно использовать следующую строку:

avrdude -c stk500 -P avrdoper -p MCU -U flash:w:file.hex

где MCU заменяем на тип программируемого микроконтроллера (более подробно см. справку к avrdude - для ATmega8 - m8, для ATmega328P - m328p и т.д.).

Если требуется совместимость с AVRStudio - снимаем джампер Upload и переподключаем питание. Как вы уже догадались, в данной прошивке программатора этот джампер управляет режимом HID: замкнут = вкл, разомкнут = выкл (и вместо него CDC). Но учтите, что выбор срабатывает один раз при подключении питания - если нажмете на сброс, запустится бутлоадер, который будет делать совершенно другие вещи (представляться как usbasp и пытаться запрограммировать самого себя).

Можно ли программировать через DIP-сокет? Разумеется - можете его установить хоть на макетном поле, но при этом:
  • сделайте все вышеописанные соединения Target и MKBoard за исключением VCC и +5V;
  • подключите SUPPLY1 и SUPPLY2 (оба два) к шине VCC программируемого MCU;
  • подключите CLK к ножке XTAL1 программируемого MCU (замена кварцу и емкостям для создания тактовой схемы у target-а).


Два контакта под питание выглядят перестраховкой, но некое рациональное зерно в этом есть. Перед началом через SUPPLY подается питание на программируемый MCU, а по завершении - отключается. Так делает и оригинальный AVRDoper, только у него есть для этого специальная буферная микросхема, которой в MKBoard, увы, нет.

Во время программирования будет мерцать встроенный светодиод L, поскольку он оказался подключен к пину SCK (тактовые импульсы программирования). Оригинальный светодиод "ONLINE" для наглядности можно прикрутить к PC1 (или analog1 в нумерации Arduino), обязательно через токоограничительный резистор 1К - тогда он будет четко загораться в момент входа в режим программирования и при выходе из него.

В этой прошивке также можно использовать встроенный отладочный порт - если соединить  GND, RX и TX отлаживаемого микроконтроллера с пинами digital 0 и digital1 (разумеется, перекрестив), то можно с ним обмениваться через USB-подключение MKBoard  на скорости 19200 - читать и писать данные с помощью утилиты avrdebug.

Ну и напоследок - если программатор больше не нужен.... разбираете схему, замыкаете Upload, нажимаете сброс - и... плата снова готова к загрузке скетчей через ArduinoIDE! ;)

И, конечно же, скажем спасибо команде Objective Development, позаботившейся о том, чтобы код AVR-Doper компилялся не только под разные MCU и разные тактовые частоты, но и под разные схемы (оригинальная, usbasp, metaboard).

10.08.2011

Unboxing DSO Quad

Недавно приехал заказанный в Seeedstudio осциллограф - как раз то, что надо для бедного студента, живущего в крошечной квартирке:


Упакован - знатно, поэтому не мог не пофотографировать процесс распаковки ;)

03.08.2011

USBasp и TPI

Thomas Fischl, являющийся автором отличного программатора USBasp (поддерживается avrdude), разразился новой версией прошивки. А я уже и не надеялся на какие-то изменения - просто случайно зашел на страничку проекта USBasp.

По сравнению с предыдущей прошивкой, выпущенной более двух лет назад, в этой изменилось следующее:
  • добавилась поддержка протокола программирования TPI для ATtiny4, ATtiny5, ATtiny9, ATtiny10;
  • теперь поддерживаются MCU, у которых flash превышает 128К;
  • поправлен небольшой косяк с синхронностью последовательности разрешения программирования и сигналом RESET;
  • использовано новое ядро V-USB.
Автор первых двух изменений - Slawomir Fraś, фанатик USBasp. Однажды зимним вечером 2010 года он обнаружил, что его любимый usbasp не желает прошивать свежезакупленные ATtiny10, и не смог отказать себе в удовольствии сделать патч и для firmware, и для avrdude.

В отличие от стандартного MISO/MOSI/SCK + RESET, режим TPI предназначен для шестиногих MCU и использует сигналы TPIDATA/TPICLK + RESET (то есть, на одну линию меньше). Но если программатор не умеет поддерживать такой режим - увы, запрограммировать шестиногие ATtiny как-то по-другому невозможно :(

Если вы решились использовать последнюю версию, надо знать о паре интересных моментов.

Во-первых, поскольку USBasp поддерживается только avrdude, а новая версия 5.11 пока еще не вышла, для программирования новых ATtiny придется тянуть рабочий срез svn и собирать из исходников (звучит грозно, но на самом деле - несложно). Если поддержка TPI пока не требуется - новая прошивка будет замечательно работать и с версией 5.10.

Во-вторых, результирующая прошивка перестала влезать в 4К и использовать можно только ATmega88 или ATmega8. 

Новую версию прошивки USBasp я буду шить в этот набор - работает она вполне нормально.


С TPI, правда, возможности проверить пока не представилось, но если попадется соответствующий чип - обязательно проверю. Avrdude из svn собирается без шаманства - и вот, например, пакеты для Матерой Машки x64 ( Ubuntu Maverick Meerkat 10.10 ):
Если надо еще какие-то пакеты под иной debian-совместимый дистрибутив - пишите, постараюсь собрать.

21.07.2010

AVR-Doper

До недавнего времени я пользовался для программирования своих МК USBasp и не знал никаких проблем. Но однажды приключилась необходимость запрограммировать ATmega1280 на плате Arduino Mega, и каково же было мое удивление, когда avrdude... выругался на несовпадение записанных и считанных данных в процессе верификации.


При этом зашитый в Mega бутлоадер функционировал корректно, скетчи заливались и исправно работали -  скорее всего ошибку можно было игнорировать, но - с другой стороны - а что, если при программировании случится настоящая ошибка? Как я об этом узнаю?

Пришлось лезть в интернет и искать что-то для самостоятельного изготовления. Честно говоря, мне хотелось двух вещей - программное управление скоростью прошивки и совместимости с AVRStudio. Первый пункт - весьма важная деталь, когда надо программировать партию МК: чтобы это произошло быстро, на USBasp надо сначала поставить перемычку "SLOW SCK", зашить фьюзы - чтобы МК перешел с внутренней RC-цепочки 1МГц на внешний кварц, потом снять эту перемычку и шить на нормальной скорости. Вот именно это "снять-поставить" слегка раздражало. Ну а про AVRStudio - тут все ясно, чтобы не страдало удобство работы в родной для МК ATMEL среде. Бывает нужно крайне редко, но все-таки полезная вещь.

В такой ситуации многие посоветовали бы мне схему Андрея Рыжкова, использующую libusb и релизующую функционал AVR910. Спору нет, отличная конструкция (даже в наборах МастерКит видел), но лично меня она в свое время опечалила скоростью работы. Однако стоит учесть тот момент времени, когда Андрей опубликовал свою разработку - это было очень сильно востребовано. Поэтому я еще раз мысленно поблагодарил его за труд, но поиски - продолжил.

К моему сильному удивлению, необходимое мне устройство нашлось на просторах все того же проекта V-USB, и называется это чудо техники  AVRDoper:


Первое и самое главное - он совместим с протоколом STK500 v2, а значит будет работать с AVRStudio. Далее, кроме внутрисхемного последовательного программирования, он умеет последовательное высоковольтное - было бы актуально, если бы я собирал схемы на ATtiny. Программное управление скоростью программирования - есть. Есть даже возможность считывания через USB отладочной информации с подключенного МК - именно это хотел сделать автор USBasp Thomas Fischl, но так у него, видать, руки и не дошли.

Вот схема с выброшенным из нее узлом высоковольтного программирования:



Программное обеспечение у него построено в любимом стиле Objective Development - блоками. То бишь, фичи можно включать и отключать выборочно, "втискивая" в доступный объем памяти МК необходимый набор. В классическом варианте есть режимы STK500 и USB-HID, но нет возможности обновить прошивку самого программатора без извлечения из схемы его МК. Однако, можно чем-то пожертвовать (например, функцией прозрачной передачи последовательных данных для отладки МК) и включить возможность обновления прошивки по USB через bootloader (требует навыков обращения с компилятором avr-gcc ;)

Кстати, это еще не всё ;) Предусмотрены программные конфигурации для работы AVRDoper-а внутри родственных ему проектов USBasp и metaboard. Правда, для этого надо, чтобы USBasp был собран на ATmega8. Готовые прошивки лежат в тарболле с исходниками - остается только залить и протестить ;)

Построить прототип на макетке, к сожалению, не представлялось возможным - авторы использовали микруху 74AC126, которую мне не удалось достать в DIP-корпусе. Так что сразу пришлось травить плату, которая, по счастью, оказалась полностью работоспособной.

Краткий итог: по скорости AVRDoper не уступает USBasp, шьет ATmega1280 "на ура", схема без  высоковольтной части влезла на одностороннюю плату под корпус GAINTA 403:


Единственное, не смог заставить работать в режиме STK500 под Linux - есть какие-то заморочки с  /dev/ttyACM0. Разбираться лень, тем более, что под Windows оно работает во всех режимах, а под Linux я пользую avrdude и меня вполне устраивает USB HID.

Основную часть скриптов уже переделал - наслаждаюсь отсутствием надобности передергивать SLOW SCK ;)

Купить AVRDoper можно, например, здесь.

05.02.2010

JTAG на макетке

Микроконтроллеры ATmega можно условно разделить на две категории: те, что программируются только через ISP (шина из проводов MISO, MOSI, SCK + управление сбросом) и те, что имеют в дополнении к этому интерфейс JTAG.

Из набора "горячо любимых" Arduino-контроллеров к первой категории относятся ATmega8, ATmega168, ATmega328P. Но и во второй категории тоже присутствует один экземпляр: ATmega2560, используемый в Arduino/Freeduino MEGA 2560.

JTAG - это механизм, позволяющий автоматически контролировать качество монтажа печатных плат: не закоротилось ли чего или, наоборот, плохо припаялось. Очень полезная вещь в промышленном масштабе, особенно когда на одной плате "счастливо" уживаются микросхемы разных фирм (стандарт IEEE 1149.1, на котором базируется JTAG - открытый). Тем более логично, что многие производители микросхем добавили возможность программирования и отладки своих чипов через все тот же JTAG.

Для чего может потребоваться JTAG в повседневной жизни?

В моем случае - вдруг потребовалось читать и писать содержимое flash ATmega128, а вместо привычной вилочки ISP наружу торчит только JTAG. В этом случае уже простой программатор типа USBasp, увы, не поможет.

Фирменное устройство от ATMEL стоит немало (а я и так уже прикупил нанопаяльник,   денег после этого осталось ноль отрицательное количество):

Что же делать? Я уже говорил, что стандарт - открытый, а процесс программирования через JTAG хорошо документирован - достаточно открыть любой даташит на микроконтроллер ATMEL с JTAG-интерфейсом.

Кстати, когда-то, на заре появления микроконтроллеров фирмы ATMEL, фирма-конкурент Microchip дразнила ATMEL показательно разобрала какой-то инструментальный девайс для разработчика программ микроконтроллеров ATMEL и демонстрировала, что он собран на микроконтроллерах её производства - то бишь, на PIC-ах. Впрочем, было это невероятно давно, мир теперь уже совсем другой (c).

В интернете есть масса вариантов самодельных копий фирменного AVR JTAG ICE. Одну из таких упрощенных до полного безобразия можно найти, например, здесь. Что самое забавное -  работает, хотя состоит практически из одного МК: ATmega16. Оригинальный программатор использует чип, полностью совместимый с ATmega16, что делает возможным заливание в самопальный программатор прошивок от фирменного (правда, новые навряд ли будут появляться, поскольку AVR JTAG ICE дано снят с производства).

Для начала надо достать основной компонент - микроконтроллер ATmega16-16PU и кварц 7.3728 МГц, после чего собрать на макетке минимальную схему для программирования:



Схема - классическая, необходима для запуска ATmega. Напомню, что обычно делают в таком случае:

  • подключают питание -  все GND и VCC (обычно выводов GND не менее двух);
  • ставят между GND и VCC поближе к ножкам ATmega фильтрующий помехи конденсатор 100 нФ (или 0.1 мкФ - кому как больше нравится);
  • подключают между XTAL1 и XTAL2 кварц и соединяют их через два одинаковых конденсатора на землю (разброс номинала указан в документации, не обязательно использовать 22 пФ, можно, например, и 33 пФ);
  • притягивают линию сброса к VCC через резистор 10К и вешают конденсатор 100 нФ на землю, чтобы обеспечить небольшую задержку линии сброса после подачи питания.

Выглядеть это будет приблизительно так (всё благополучно влезает на макетку 300+100):



Соединяем схему через вилку ISP с программатором и запитываем от него же, затем зашиваем прошивку и выставляем фьюз-биты:

avrdude -C avrdude.conf -c usbasp -p m16 -U hfuse:w:0x1f:m -U lfuse:w:0xcf:m

avrdude -C avrdude.conf -c usbasp -p m16 -U flash:w:miniICE.hex

Если операция прошла успешно, полдела сделано. Можно аккуратно удалить ISP-разъем и преобразовать схему к следующему виду:



На макетке это выглядит так:



Наверное, вы обратили внимание, что в схеме я использовал USB-чип последовательного порта - FT232RL. Это гораздо удобнее, чем COM-порт, по многим причинам. Но в макетку SSOP не воткнешь, поэтому я использую самостоятельно изготовленный переходник USB-TTL:



В классическом варианте линий JTAG чуть больше, чем на схеме:



Обязательные сигналы - TCK, TDO, TDI и TMS (тактовая, выход данных, вход данных и управление режимом теста).

NSRST и NTRST - это управление сбросом на шине JTAG. В нашем случае не обязательны, поскольку сброс МК можно инициировать командной последовательностью на линиях обязательных сигналов.

Теперь разберемся с питанием. Желательно, чтобы внутрисхемный программатор питался от программируемой схемы. Этим сразу решается проблема стыковки уровней программируемой схемы и программатора. С другой стороны, если в программаторе есть конвертер уровней сигналов, различие VCC программатора и target уже не является проблемой (не считая усложнение схемы программатора).

С обязательной линии VTref должно подаваться напряжение питания устройства. По идее, он нужен вышеуказанному чипу конвертера уровней, внутри программатора. Но если JTAG ICE планирует питаться от target-а, то используется линия Vsupply. Для простоты, их можно объединить, но это не обязательно.

В зависимости от положения джампера SV2 на схеме ATmega16 будет питаться либо от USB, либо от target-а. Я на макетку ставить переключающий джампер поленился, ибо предполагалось питание только от target. Зато перед включением три раза проверил, что питание с USB не подается. Для надежности, на плате USB-TTL разомкнул джампер подачи питания. Далее контакт M8RX соединяется с ножкой МК RX, M8TX - с TX.

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



(устройство справа я обязательно рассмотрю позже, пока что могу только повторить, что внутри у него ATmega128)

Единственный минус клона AVR JTAG ICE - сравнительно небольшой список поддерживаемых МК:

  • ATmega128
  • ATmega128A
  • ATmega16
  • ATmega162
  • ATmega165
  • ATmega169
  • ATmega16A
  • ATmega32
  • ATmega323
  • ATmega32A
  • ATmega64
  • ATmega64A
Еще, говорят, поддерживается AT90CAN128, но проверить это нет возможности :(

26.01.2010

Нанопаяльник

Недавно у меня случилось горе неудача: мой паяльник с регулировкой температуры CT-Brand CT-95A приказал долго жить: иными словами, прекратил регулировать температуру, постоянно нагреваясь, раскаляясь и обжигая мою руку.

Если задуматься, целых полтора года для дешевого китайского паяльника с простейшим симисторным регулятором внутри -  безумно много. Все знакомые сходились во мнении, что он должен был прожить не больше года. С другой стороны - смотря как с ним обращаться и насколько часто паять.

Таким образом, я плавно подошел к мысли о паяльной станции. Воображение рисовало суперагрегат с парой паяльников и термопинцетом для выпайки, вакуумом и дымоулавливателем. Однако, довольно скоро я понял, что бедному студенту это не по карману.
Мне предстояло выбирать между гирляндой паяльников разного калибра и простой паяльной станцией. Победила идея взять паяльную станцию для безсвинцовой пайки: не то, чтобы я собирался действительно паять без свинца, просто сейчас их навалом, а верхний предел температуры нагрева может регулироваться до 430...490 C, что иногда крайне удобно.

На работе у нас стоит Weller WD2, двухканальный:



Он оснащен термопинцетом, которым не только выпаивают, но и паяют:



У этого инструмента есть замечательная особенность: при укладывании на подставочку, в которую встроен магнитик, срабатывает размещенный в корпусе геркон, после чего нагрев сразу прекращается. Разогрев до прежней температуры происходит за 5-7 секунд, что зверски удобно. Как заметил мой хороший знакомый: "Weller - Мерседес в мире паяльников".

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

И это оказалось самым мучительным занятием.

Есть много разных CT, Luckey, CT-Brand. Чуть выделяется Solomon, но станция этой фирмы у нас на работе тоже есть, и с Weller ее не сравнить. Потом я перебрал Quick, АйОй ;) и прочие шедевры китайской инженерной мысли, не уставая удивляться, как они местами совершенно беззастенчиво копируют дизайн друг у друга. Цена на более-менее приемлемую по качеству и  функционалу станцию была около 4000 рублей, но сколько она прослужит? Вопрос не в том, насколько красиво она снаружи выглядит, а во внутренностях, не говоря уже об удобстве и надежности. А как это проверить в магазине? Я живу хоть и в провинциальном, но достаточно большом городе, где есть возможность "пощупать живьем", однако разбирать паяльную станци уж точно ни один продавец не позволит. Следовательно, снова приходим к вопросу о чем-то качественном: немецкого или японского изготовления.

В отчаянье я посетил сайт Ersa и покрутил картинки от их последней модели массового потребления I-Con Nano. Посмаковав подробности, я практически тут же забыл про нее - это было тоже дороговато: она стоила столько же, сколько и Weller WD1, правда за эти деньги к ней прилагался паяльник.

Вскоре, при очередном посещении одного из своих дилеров, я в завершение беседы обмолвился, что мне нужен хороший инструмент для пайки. В ответ я услышал стандартный вопрос "а какая конкретно модель вам нужна?". И тут я вспомнил про перламутровые пуговицы Nano - все равно на сайте  Ersa.ru было написано, что эта модель появится в продаже только в феврале 2010 года. Но... неким волшебным образом она оказалась на складе и была немедленно вручена мне на просмотр. Опуская подрбности, скажу - я взял только третью, первые две пришлось забраковать - виной треснутое пластиковое прижимное колечко паяльника i-tool nano (а вы думали, что раз вещь сделана в Германии, то она не может дойти до России с дефектом? увы, это горькая правда!). В итоге, я стал счастливым обладателем Lötstation №441:



При весе всего в килограмм, эта станция кажется совсем крохотной (видимо этим объясняется nano в названии), но умеет "разгоняться" до максимальной температуры на 9 секунд, при максимальном нагреве 450 C и мощности 68 Вт.

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



Сам силикон достаточно термостойкий, но если на полной мощности промахнуться жалом мимо отверстия, небольшая точка все-таки остается.

Паяльник имеет шнур около 90 см. длиной, который прикреплен разъемом в области днища блока питания станции (и, следовательно, не предназначен для оперативной замены). Сетевой шнур вообще несъемный.



Сам паяльник напоминает авторучку, длиной около 16 см, довольно легкий. Чуть выпуклой анатомической формы, он идеально сбалансирован и прочно сидит в руке, как хорошее оружие или фирменное письменное перо. Могу сказать одно - при укладывании его на подставку испытываешь легкое сожаление.



Жало в комплекте - это 0102CDLF16, имеет форму "лопатка" и выглядит приблизительно так (на чертеже размеры 0102CDLF20, которое шире на 0,4 мм):



Любое другое жало - под заказ. Стоит 25 USD, заказ обрабатывается 2-3 недели. Не сочувствуйте, я знал, на что шел ;) Правда, в каталоге есть и конусы, и "волна", и "клюв"... глаза просто разбегаются.



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

У меня весьма небольшой рабочий стол, поэтому размеры блока и его компоновка - просто идеальны:



145 х 80 х 103 мм.

Ну а вот так устроено днище - вверху сетевой провод, внизу - провод паяльника.



Теперь о функциях. Кроме вспоминания температуры нагрева после включения, есть калибровка, а также установка времени режима ожидания (0-60 минут). Если станция обнаруживает в течение заданного диапазона отсутствие значимых потерь энергии, она дает остыть паяльнику до 250 C и поддерживает уже эту температуру. Для выхода надо либо охладить жало на 5 градусов, либо нажать на одну из кнопок. Герконовый контакт термопинцета Weller ведет себя по-другому: взял в руку, а он уже и нагревается; пока несешь к месту пайки - уже и нагрелся. Процесс входа в ожидание делает Nano нечувствительным к охлаждению: немедленно выйти из него можно только нажав на кнопку (имеется ввиду тот интервал времени, пока он остывает до 250 С - это секунд 30).

Еще для этого паяльника есть софт. Да, вы не ослышались! Его можно скачать на странице ersa.com/nano, общается он с паяльником через microSD-карту:



Как видите, можно задать не только время входа в режим ожидания, но и температуру остывания, а также время до отключения (по умолчанию, после входа в режим ожидания, через 10 минут неиспользования паяльник и вовсе выключится). Еще можно задать режим работы - по умолчанию температура изменяется свободно, но можно определить три фиксированных значения, которые быстро переключаются кнопками на лицевой панели. В дополнении можно еще и keylock включить - тогда кнопками вообще ничего нельзя будет поменять (защита от шутниковвредителей на производстве). Также можно выставить предельную мощность нагрева в виде энергетического уровня от 1 до 3: от него зависит скорость нагрева, а также ее точность. Если запаиваемые элементы чувствительны к перегреву, надо установить в единицу.

После выставления всех параметров нажимаете Write, они записываются в корень SD-карты в виде файла NANO.CFG. Карту с файлом надо вставить в станцию и подождать, пока она будет прочитана. Дальше можно ее смело изымать - параметры сохранятся в энергонезависимой памяти I-Con Nano.

Сколько она мне прослужит - покажет время, но надеюсь больше гарантийного срока, который на нее определен аж в целых 12 месяцев ;)

03.12.2009

Сухая очистка для паяльника

Мимолетно заглядывая к коллегам в монтажную, не переставал удивляться, зачем это они принесли из дома металлическую мочалку для мойки посуды. И, главное - как они ее используют?

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



Я попросил попользоваться и пришел в полный восторг: нагар на жале образуется довольно часто, надо чистить на бумажке или губкой. А тут - ткнул в латунного "ежика" пару раз - и готово! Одно-два движения, жало даже остыть не успевает.

Хотя, говорят, некоторые и руками умудряются чистить, но мне лично руки дороги как память ;)

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

Отсюда мораль: "век живи, век учись" и никакой интернет не заменит общения с живыми людьми.

16.10.2009

Слава ЛУТ!

Есть не так уж много способов изготовить печатную плату, иначе говоря - превратить кусочек фольгированного стеклотекстолита в основу вашей электронной схемы. Думая о самостоятельном изготовлении печатной платы, я прикидывал в уме следующие способы:

1. Изготовление на заказ. Прототип будет стоить будь здоров сколько, если только вы не убедите производство, что закажете еще пару тысяч экземпляров, а это - пробные образцы. Основная проблема - разобраться в технических требованиях и подготовить сопроводительную документацию в нужном объеме и формате. У каждого изготовителя - свои правила, и чем больше он контролирует ваши исходные данные, тем дороже. Главное - не получить на руки минимальную партию плат и обнаружить, как глупо вы ошиблись, когда отдавали ее в производство. Оставим этот способ для тиражирования готовых изделий ;)

2. Изготовление механическим способом. Специальный станок с ЧПУ получает на вход кусочек стелотекстолита и сначала фрезерует фольгу, делая дорожки, а затем - сверлит дырки. Станок стоит ох как дорого, в одном месте мне назвали цифру 10 000 Евро. Самые дорогие, немецкого производства, способны давать неплохую точность, имеют камеру для совмещения слоев двусторонних вариантов и сами меняют инструмент (фрезы и сверла). Есть и подешевле, made in China, которые только хвастаются точностью, а на самом деле... не будем о грустном. Любой недорогой китайский станок надо сначала обработать напильником, а только потом использовать. Однако, CNC-станок можно собрать и самостоятельно, достаточно разжиться двумя-тремя моторами от старых принтеров - но это такая специфичная отрасль, что погружаться в нее у меня просто не хватило времени. Кстати, к станку еще потребуется программное обеспечение, которое будет принимать формат обработки (например, GERBER274X) и транслировать его в команды станку.

3. Изготовление химическим способом. Подразумевает травление в старом добром хлорном железе. Обычно на медный слой наносится рисунок из вещества, защищающего медь при травлении. После травления оно удаляется, сверлятся дырки и - готово. Как беловоротничкового программиста, меня всегда пугал этот способ, но поскольку бедному студенту только он и по карману, пришлось решиться.

3.1 Раньше применяли лак. Чертили линии рейсфедером, потом сушили и травили. Не всякую плату можно нарисовать от руки, по крайней мере - это аццкий труд, который можно и нужно доверить CAD-системе. Однако простые схемы наверное все-таки можно так делать, если очень хочется. Для этого продается специальный маркер. Я не пробовал, но думаю, что ничего сложного.

3.2 Фоторезист. Рисунок на прозрачной пленке экспонируется через материал, чувствительный к ультрафиолетовому излучению, затем он проявляется, закрепляется, и после этого можно травить. Фоторезист бывает жидкий (аэрозоль или раствор самостоятельного приготовления) или сухой (на лавсановой пленке). Сначала надо запереться в ванной и при желтом освещении, в полумраке, распылить флакончик на заготовку, причем ухитриться сделать это равномерно. Пленочный фоторезист решает проблему равномерности, но накатывать его надо тоже в темной ванной, при помощи утюга. Есть продвинутые варианты со специальной защитной пленкой, и это избавляет от необходимости сидеть в ванной. Я сдался на этапе экспонирования - не было лампы нужной мощности и я не смог выбрать время - раз за разом у меня ничего не травилось. Однако в промышленных масштабах именно он и используется, насколько  я могу судить.

3.3 ЛУТ (аббревиатура от "лазерно-утюжный", иногда говорят "лазерный утюг" - для краткости) Роль защитного материала играет тонер лазерного принтера. Сначала рисунок печатается на бумаге, затем прижимается к фольге и нагревается - тоже утюгом. Под действием высокой температуры тонер намертво пристает к фольге, и, после аккуратного удаления бумаги, можно травить. Снимается он ацетоном или любым другим ацетоносодержащим растворителем - я начал с лака для удаления ногтей, позаимствованного у жены, затем перешел на Р-646. Этим способом у меня все получилось.

Если сравнивать способ изготовления фоторезистом и ЛУТ-ом, то получаются одни сплошные плюсы. Судите сами: для ЛУТ-а вам потребуется обычный лазерный принтер (у меня стоит Xerox Phaser 3117 - подарок от любимого папы на день рождения), бумага, утюг, небольшая щеточка. А для фоторезиста потребуется собственно фоторезист (сначала побегайте и купите, или сделайте самостоятельно, но учтите - он имеет ограниченный срок годности!), лазерный принтер, прозрачная пленка (для печати фотошаблона, через который будет светить на заготовку УФ-лампочка), сама УФ-лампочка ;), утюг, кальцинированная сода для проявления. После травления надо снять тонер растворителем, а фоторезист - едким натром.

Фоторезисты бывают разные, химические реагенты варьируются, но твердо понятно одно: операций больше. Против ЛУТ меня останавливало одно-единственное замечание - бумага. Многие коллеги говорили, что используют толстую бумагу из журналов, что надо подбирать температуру утюга и время отглаживания, потому что иначе "дорожки потекут".

Так вот, все эти замечания сразу списываются в утиль, если брать глянцевую фотобумагу. Этим замечательным рецептом я обязан Di HALT-у:

Он же - ведущий easyelectronics.ru, популярного и весьма продвинутого ресурса по электронике, полюбившегося мне не только содержанием, но и стилем изложения  (дружественным к начинающим, типа меня ;)

Только после просмотра его видеоуроков я таки решился на изготовление. Соблюдая инструкции из этих уроков, у меня все получилось с первого раза (на фото - Arduino Severino):





Как видите - качество более, чем приличное. Но и это еще не всё! Тонер намертво пристает как к фольге, так и к самому стеклотекстолиту - поэтому тем же способом можно сделать "шелкографию" - silkscreen на противоположной стороне платы (это чтобы было понятно, куда паять элементы):





Время, потраченное на разбирательство с CAD-системой, с последующим рисованием и разводкой в ней печатной платы - полностью себя окупает, особенно если прототип можно изготовить таким простым способом. Постараюсь в следующих статьях кратко осветить приемы обращения с Eagle для использования в ЛУТ.

07.09.2009

Тестер микросхем

Недавно мне презентовали весьма рандомный комплект советских логических микросхем, в основном серии К561.

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

Какой же бедный студент откажется от халявных микросхем! Но как отделить зерна от плевел – то бишь, брак от рабочих? Конечно же, первым делом я вооружился справочником В.Л. Шило "Популярные микросхемы КМОП. Справочник. Серии К176, К561, 564, КР1561, 1564" (Москва, "Ягуар", 1993 г.). Узнав оттуда назначение и расположение контактов одной из выбранных наугад микросхем – К561ТМ2, я соединил с Arduino входы первого из двух независимых D-триггеров, входящих в состав этой микросхемы, а прямой и инверсный выходы - на светодиоды с токоограничительными резисторами:



Как только я правильно написал скетч, светодиоды весело замигали:

/* K561TM2
   1 | Q1
   2 | Q1`
   3 | C1 
   4 | R1
   5 | D1
   7 | GND
   9 | D2
  10 | R2
  11 | C2
  12 | Q2`
  13 | Q2
  14 | Vcc
*/ 

#define pinC  2
#define pinR  3
#define pinD  4
#define pinS  5

void setup() {
pinMode(pinC,OUTPUT);
digitalWrite(pinC,HIGH);
pinMode(pinR,OUTPUT);
digitalWrite(pinR,LOW); 
pinMode(pinD,OUTPUT);
digitalWrite(pinD,LOW);
pinMode(pinS,OUTPUT);
digitalWrite(pinS,LOW);
}

void loop() {
digitalWrite(pinD,LOW);
digitalWrite(pinC,LOW);
delay(2);
digitalWrite(pinC,HIGH);
delay(500);
digitalWrite(pinD,HIGH);
digitalWrite(pinC,LOW);
delay(2);
digitalWrite(pinC,HIGH);
delay(500);

}



Помигать также можно и через R/S входы, если заменить в предыдущем примере тело loop:

void loop() {
digitalWrite(pinR,HIGH);
digitalWrite(pinS,LOW);
delay(500);
digitalWrite(pinR,LOW);
digitalWrite(pinS,HIGH);
delay(500);
}



Если светодиоды загораются по-очереди раз в полсекунды, то триггер вроде бы рабочий. Но в корпусе их два, а значит надо повторить проверку и для второго.

И тут я задумался: насколько такая проверка будет корректной?

Любая микросхема имеет определенное быстродействие (зависит от серии, например, в случае с КМОП – от напряжения питания) и неплохо было бы проверить, что оно достижимо. Поскольку оценивать это "на глазок" по миганию светодиодов нельзя, логично доверить это Arduino, подключив к нему и выходы тестируемой микросхемы тоже.

И обязательно надо проверить и взаимное влияние одного триггера на другой – например, при управлении одним, второй своего состояния менять не должен.

А если сделать программу для проверки более универсальной?

Немного подумав надо тем, как должна выглядеть Универсальная Программа Проверки Логических Микросхем, я ужаснулся и потянулся к Интернету, пытаясь найти готовое устройство для повторения. Но все оказалось не так просто, как я ожидал.

Надо заметить, что в существовании подобного устройства я не сомневался – несколько раз, покупая на рынке комплектуху для своего первого Спектрума, я прибегал с услугам дядьки-проверяльщика. Это такой специальный мужик (чем-то смахивающий на коробейника) с портативным проверочным устройством. За небольшую плату покупаемые микросхемы устанавливались в панельку на устройстве, нажималась кнопка и – чудо! Если загорался один светодиод, то проверка считалась успешной, если другой... микросхема возвращалась продавцу с вердиктом "битая". Стоило эта услуга весьма недорого и пользовалась заслуженной популярностью: выпаивать микросхему, рискуя повредить печать, не хотелось.

Первый найденный вариант обнаружился в книге "Популярные микросхемы ТТЛ. Серии: КР1533, КР1531, К531, К555, К155" (Москва, "Аргус", 1993). Назывался он "Прибор для испытания микросхем". Необходимость преподносилась его авторами так: "однотипные микросхемы, изготавливаемые разными фирмами как "функциональные аналоги", могут работать по-разному":



Механическую основу девайса составляет универсальная панелька на 24 контакта, к кажому из которых припаяно по проводку длиной 150мм, со штырьком на конце. С двух сторон расположены тумблеры и светодиоды с гнездами: для начала надо раздобыть описание микросхемы и подключить проводками тумблеры - ко входам, а светодиоды – к выходам. Наверное, вы уже догадываетесь, что дальше надо руководствуясь документацией / интуицией / исключительно субъективным пониманием того, как должна работать микросхема, набирать на тумблерах комбинации и анализировать результат. В схеме предусмотрен генератор импульсов 1 Гц, который предназначен для формирования сигнала проверки последовательных регистров и сдвиговых счетчиков (и тоже имеет отдельное гнездо):



Как гласит последний абзац описания, "некоторые микросхемы КМОП не работают от 5В. Разомкните тумблер S15, подайте от внешнего питания 9В". Это единственное упоминание КМОП в книге, полностью посвященной ТТЛ- и ТТЛШ-логике, отдает мистикой ;)

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

Продолжая искать, я нашел статью "Прибор для контроля работы микросхем", автор Н.И. Заец:



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

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

Кстати, нельзя не заглянуть в статью, на которую ссылается Заец: журнал Радио №7 за 1993, "Тестер для проверки микросхем". Там мы найдем похожую схему для проверки регистров и мультиплексоров ТТЛ-серий, которая предполагает проверку путем формирования тестовой последовательности на испытуемой и эталонной микросхеме. Таким образом, работающей платы не требуется, зато сужается диапазон типов проверяемых микросхем. Необходимость иметь "про запас" исправную эталонную микросхему тоже не отпадает, увы:



(как и все схемы в моем блоге - кликабельно для увеличения)

Продолжение поисков обязательно следует...

13.03.2009

AVR910 на макетке

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


Единственный программатор, который у меня есть - это Parallel Programmer, он экстремально дешев, но требует для работы машину с LPT-портом. Давно уже присматриваю что-то более человеческое, но не подступиться по цене. И дело даже не в том, что "мы бедные студенты" (с), просто отдавать за программатор 1000 рублей немного жалко: он же не универсальный. А универсальный стоит уже больше 5000 рублей, что опять дорого, потому что он каждый день не нужен. Ну и так далее ;)

Вот бы самому что-то смастерить! Чтобы для более распространенных шин, хотя бы и для USB. Схемы есть, но, как правило, на чипе FTDI232 (который, кстати, стоит и на Arduino), у него единственный минус: шаг ножек 0,65 мм и неизбежная необходимость в печатной плате (и в развлекательной пайке с лупой, разумеется).

Но не все так плохо, как кажется с первого взгляда. На просторах интернета выложен проект Андрея Рыжкова под названием "Программатор микроконтроллеров AVR / 89S совместимый с AVR910". Андрей обошелся без отдельного USB-чипа и выполнил схему на единственной ATmega8-16PI, интегрировав в микропрограмму код драйвера USB от Objective Development. Схема получилась такая:


Роль драйвера заключается в следующем: при условии тактирования МК от 12 МГц, этот фрагмент кода эмулирует протокол обмена USB "low speed device" (ровно в восемь раз медленнее - 1,5 МГц, не путать с FullSpeed и HiSpeed скоростями). Далее, Андрей добавил в микропрограмму протокол AVR910, и... получился полноценный программатор, который можно собрать за час на любой макетной плате, а комплект деталей ну никак не будет стоить больше 300 рублей (исключая покупку в Чип и Дип, в плане цены они способны на многое ;)

И главное - заметьте - макетная плата может быть беспаечной. Чем я и решил воспользоваться, чтобы обкатать свой экземпляр.

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


Ради справедливости стоит отметить, что без паяльника все-таки не обойтись. Поскольку контакты соединены в рядах группами по пять, установить на эту макетку разъем USB-B-1J нельзя: четыре контакта хоть и на расстоянии 2,54мм, но собраны "в кучку", т.е. неизбежно будут замкнуты, куда не поставь. Тоже самое касается и ICSP-разъема PBS-06, а вот ATmega, как и все микросхемы в PDIP, устанавливается над желобком, по центру.

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


Некоторые соединения вообще выглядят как "взрыв на макаронной фабрике":


Для токоограничительных резисторов 330 Ом не удержался и попробовал сделать "красиво" - благо, это не трудно:


Дальше аппаратная история как бы заканчивается, и начинается программная. В качестве испытуемого выступил все тот же Arduino Diecimila с ATmega328 на борту:


Для работы приложений надо установить драйвер виртуального COM-порта, причем некоторые приложения, типа AVRProg будут искать его исключительно в диапазоне COM1..COM4. Но это еще полбеды, на странице проекта упоминаются Windows XP и 2000, а вот про Vista - нет. Что неудевительно: по давней традиции Microsoft, в новой версии ОС поддержку bulk-transfer для lowspeed USB было решено упразднить. Понятно, что не по стандарту, но ведь работало же, зачем? (еще один риторический вопрос к Micro$oft).

После подключения программатора к Vista устройство опознается (если нет, то вы просто неверно собрали плату), но процесс инсталляции закончится полным провалом. Если вы уже наступили на эти грабли (как я), не расстраивайтесь, выход есть. Первым делом, надо снести под корень установленные inf-файлы для Windows XP (если вы все-таки решили попробовать их установить, см. выше). Под корень - это зайти в диспетчер устройств, отыскать там подключенный программатор и по правой кнопке "Удалить", не забыв поставить галочку про удаление драйверов:


Теперь надо вооружиться драйвером для Vista. Это будет именно драйвер, смотрите здесь для Vista 32. Повторите процесс установки, указав в качестве драйвера для "страшного и непонятного" винде устройства AVR910 каталог с распакованным драйвером для Vista. Может появиться сообщение:


Надо развеять сомнения винды и продолжать до победного конца, он выглядит так:


Победить COM19 довольно просто: идем в диспетчер устройств, находим наше устройство "USB SerialPort COMXX" (удобно искать, переключившись в режим просмотра "по подключению"), затем "свойства", "параметры порта", "дополнительно". Дальше можно выбрать любой номер, даже уже занятый.

В результате, у меня программа ChipBlasterAVR v.1.07 Evaluation благополучно заработала, правильно прочитав всю память ATmega328. Правда, происходило это небыстро, я даже успел выпить стакан чая ;)

Ссылки по теме:
  • prottoss.com - описание программатора AVR910 от Андрея Рыжкова aka prottoss
  • Objective Development - проект драйвера low-speed USB для avr
  • Osamu Tamura - Using Low-speed Bulk Transfer on Windows Vista
  • Arduino - решение для быстрой прототипизации электронных схем