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

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 осциллограф - как раз то, что надо для бедного студента, живущего в крошечной квартирке:


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

10.01.2011

Как заЛУТить из Eagle?

Публикуемые мной под лицензией CC-SA схемы и рисунки печатных плат обязательно содержит внутри файлы с расширениями .sch и .brd - результат работы CAD-системы Eagle. Пользующаяся большой популярностью за рубежом, эта система почти не прижилась в России - у нас предпочитают KiCAD, Sprint Layout или P-CAD. Не вдаваясь в религиозные споры о преимуществах того или иного пакета, хочу дать внятное практическое руководство, как использовать Eagle для ЛУТ.

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

Получение и установка Eagle

Не надо искать никаких краков и серийников - есть совершенно бесплатная версия Eagle, имеющая небольшие ограничения. Весь фокус в том, что для наших целей они  несущественны, но, на всякий случай: размер платы, которую можно редактировать бесплатной версией не должен превышать 100 х 80 мм, иметь более двух слоев и более одного листа со схемой. При этом открывать и просматривать можно хоть шестислойные платы со схемами на десятке листов. Поддерживаются Windows, Linuх и Mac OS.

Установка довольно примитивна, если не собираетесь рисовать схемы и разводить платы - вдаваться в нее на данном этапе нет смысла.

Выбор слоев

Откройте .brd-файл командой File | Open | Board из основного окна:



Обычно, схема и разводка должны быть синхронизированы, поэтому может открыться и окно со схемой (если вы позаботились положить в тот же каталог файл .sch). Нас изначально будет волновать лишь окно с разводкой - то, у которого заголовок начинается с Board. Распахните окно пошире, чтобы внимательно изучить то, что нам досталось от заботливого разработчика Open Hardware. 



Разводка платы состоит из набора слоев. Стандартных слоев довольно много, вдобавок можно создавать свои собственные. Отображать их на экране одновременно не всегда удобно, но для первого знакомства с чужой разработкой следует сначала увидеть всю картину целиком. Включите все слои: File | View | Display/hide layers (в окне кнопка All или Ctrl-A).

Чего только не рисуют на этих слоях! Тут тебе и документация, и копирайты авторов, и диаметры отверстий... Важно отсечь ненужное (с) Микеланджело. 

А что, собственно, нужно? Для ЛУТ нам потребуются следующие слои:
  • Bottom (16) - именно на нем (по умолчанию синим цветом) рисуют дорожки для односторонних плат;
  • Pads (17) - посадочные площадки для выводных элементов;
  • Vias (18) - переходные отверстия между слоями (для однослойных плат - место пайки перемычек);
  • Dimension (20) - контур платы.
(все слои пронумерованы - для стандартных  можно смело пользоваться вместо названий номерами)

В большинстве случаев, этого набора достаточно. 

Перед отключением лишнего, советую присмотреться повнимательней - возможно, на плату нанесен какой-нибудь дополнительный текст, который должен быть вытравлен на медном слое. Это может быть дополнительный пользовательский слой, с номером от 100 и выше. Например, на плате Arduino Severino заботливый Эдилсон Акаши нанес номера пинов Arduino и поместил их в слой "CopperText". Если сомневаетесь, попробуйте включать и выключать разные слои и посмотреть на результат. Имейте ввиду, что рисунки слоев не должны пересекаться, иначе получите вместо правильного рисунка печатных проводников один сплошной брак. Поэтому, в случае любых сомнений - вращайте колесико мыши для увеличения масштаба или нажимайте F3/F4 (через меню - View | Zoom in и View | Zoom Out).

Замечание по поводу визуализации: когда вы рассматриваете плату в окне Board Editor, вы смотрите на нее так, как смотрели бы на настоящую плату, если бы текстолит был прозрачный. Поэтому, слой Top вы видите в точности так же, как и в реальной жизни, а вот Bottom - в зеркальном отображении. 

CAM-процессор 

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

Выполните команду File | CAM Processor, появится его окно:


Сперва надо выбрать целевой формат. Я предпочитаю eps (enhanced post script) - векторный формат, известный практически всем графическим редакторам. К тому же, в нем содержится информация о размере изображения, что крайне важно: если в итоге масштаб отпечатка не будет 1:1, это тоже будет практически верный брак. 

Обязательно выберите имя файла, в поле Scale должна быть единица.

Отключите все слои, затем включите Bottom, Pads, Vias, Dimension и дополнительные (если вы их все-таки обнаружили на предыдущем шаге). 

В группе Style проверьте, что:
  • очищен флажок Mirror
  • очищен флажок Fill pads
Теперь отважно жмите кнопку "Process Job". Eagle может выругаться и на то, что некоторых слоев "не положено, а они положены" (с) анек; что он, бедный, потратит много времени на такую-то фигуру, и т.п. Игнорируйте это нытье - нам же ЛУТить надо, а он про это даже не догадывается.

Отпечаток

Для подготовки отпечатка потребуется любой графический редактор - одинаково хорошо подойдут и PhotoShop, и GIMP. Откройте полученный на предыдущих шагах файл, предварительно пояснив редактору, что:

  • требуется черно-белая палитра цветов;
  • разрешение - 600 dpi
Этим вы сэкономите энное количество памяти своего компьютера и драматически ускорите обработку. Хотя, если ваш принтер способен на большее, чем 600 dpi - можете установить и больше, но смысл это делать имеет только при наличии SSOP и TQFP корпусов в схеме - т.е. таких, где ножки тоненькие и расстояние между ними - крошечное. Для старого доброго PDIP это будет излишеством.

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

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

Кстати, проверить, что все получилось в нужном масштабе - несложно. Для этого надо вернуться в Eagle и сделать следующее:
  1. Переключиться с вражеских дюймов и милов в нашенские сантиметры и миллиметры. В командной строке наберите: "GRID mm 0.01";
  2. Для простоты, отключить все слои, кроме Dimension;
  3. Перейти в режим получения информации (Show object properties);
  4. Открывать свойства интересующих линий границы и сравнивать с тем, что говорит линейка, приложенная к отпечатку. 

Все хорошо? Тогда заряжайте глянцевую плотную фотобумагу и печатайте - только не забудьте установить тип бумаги "Card Stock" или что-то в этом духе, ибо бумага будет - толстая. 

Маркировка

Хорошо, если плата небольшая или вы уже выстрадали каждый миллиметр при разводке. Но в суровой реальности подсказки в виде маркировки противоположной стороны помогут избежать глупых ошибок при установке элементов. К сожалению, редко кто применяет самодельную маску - поэтому поясняющие надписи наносят только на противоположный (неомедненный) слой при помощи того же ЛУТ - только не травят ;)

Для создания "лицевой" стороны односторонней печатной платы, надо выполнить предыдущие шаги, но с другим набором слоев. Нам потребуются:

  • Dimension - чтобы не промахнуться, орудуя ножницами;
  • Holes - монтажные отверстия (не путать с отверстиями для выводов элементов);
  • tPlace - контурный слой элементов с лицевой (Top) стороны;
  • tNames - слой названий элементов (типа R1, C10 и т.п.);
  • tValues - слой со значениями номиналов (10К, 100 нФ и т.п.);
  • tDocu - слой документирования (функциональный смысл джамперов, названия сигналов - обычно на плате не печатается, но может пригодиться); 
  • Top - верхний слой, для односторонней платы полезен, если есть перемычки.
Быть может, какие-то из надписей вас вообще не устроят - тогда не обойтись без редактирования. Например, сначала можно включить слой tPlace и отделить Name и Value от элемента командой Smash (нажимайте на крестики-центры элементов, в замен образуются еще два - для имени и номинала). Далее, ненужное можно убрать командой Delete или передвинуть командой Move. Добавляют текст командой Text, после чего при помощи Properties надо заменить шрифт на "Vector" нужного размера (Size) и толщины (Ratio).

Наконец, дело сделано - сохраняйте файлы (обязательное условие запуска CAM-процессора), можно под другим именем, чтобы не "портить" оригинал. В окне CAM-процессора включите только те слои, которые будете печатать (см. выше), а в Style - обязательно нужен Mirroring. Перед распечатыванием не забудьте снова убедиться, что надписи зеркальные!

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

Сверловка

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

В состав Eagle входит много замечательных скриптов (ULP - User Language Programs), которые могут помочь в разнообразных вопросах. Среди них - скрипт drill-aid.ulp. Для его активизации перейдите в главное окно программы, раскройте пункт "User Language Programs", найдите его и по правой кнопке запустите на плате - "Run in Board" (не забудьте сохранить CAD-файлы под другим именем перед этой операцией, если хотите иметь возможность возврата к предыдущему состоянию).


Все кружочки заданного вами диаметра будут нарисованы на слое 116 - лишние можно удалить.



Также рекомендую посмотреть на скрипты drill-legend.ulp и drillegend.ulp - они создают специальный слой, отмечающий диаметры отверстий, включая легенду. Так, по крайней мере, сразу можно понять сколько и каких сверл потребуется ;)

В целом же, Eagle - далеко не самая худшая система, позволяющая рисовать электрическую схему и производить ручную / автоматическую разводку платы с последующим экспортом в Gerber274x, так что с ее помощью плату можно подготовить и для реального производства.

Кстати, меня поразило руководство пользователя - как человек, близкий к программным разработкам, я с завистью читал этот мануал и поражался - как же им удалось написать такую великолепную документацию, отвечающую не на банальные вопросы "для чего нужен пункт File|Open", а предоставляющее поэтапно усложненное описание процесса решения задач. Поэтому, если соберетесь изучить Eagle - читайте именно его, не пожалеете ;) 

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.06.2010

МБС-9

На днях получил выигранный на интернет-аукционе микроскоп МБС-9. Экземпляр, конечно, "видавший виды", но все равно - если брать в полной комплектации, например вот такой:



...то можно выложить до 15000 рублей.

Я некоторое время пользовался таким микроскопом на работе, поэтому представлял себе довольно четко - биологический микроскоп для пайки не подходит, нужно большое поле обзора и обязательно - два глаза (потому что держать один из них постоянно зажмуренным - это как минимум преждевременные морщины  на лице ;) Реального стереоскопического эффекта, правда, тут нет - но те микроскопы, которые это умеют, стоят уже в два раза дороже. А вот бывших в употреблении МБС-9 существует великое множество, поэтому достать подешевле вполне приличный вариант представляется весьма реальным. Зато по сравнению с ним головолупа кажется примитивной палкой-копалкой.

Мне досталась самая ценная часть - сама оптическая головка, на которой написано ОГМЭ-П2, с двумя окулярами 8х, без надглазников и подставки.



Подставка отдельно стоит 1500..1700 рублей, но при сильном желании ее можно соорудить самостоятельно. Мой рецепт:


  1. Доска деревянная, толщина - 18 мм, ширина - 130 мм, глубина - 25 мм;
  2. Шпилька M14 длиной 30 см;
  3. Две гайки M14;
  4. Две шайбы M14;
  5. Четыре ножки высотой 20 мм (ножке достаточно просто быть толще, чем гайка + шайба). 




Шпилька должна быть не более 14 мм в диаметре, иначе не войдет в отверстие для крепления головки. Часто в продаже можно встретить штангу с резьбой длиной 1 метр - самый оптимальный вариант, ножовкой по металлу отрезаем нужную длину.

В деревянном основании сверлим отверстие - у меня в арсенале нашлось сверло фоснера 15 мм, которое легко крепится в любую домашнюю дрель:



После его применения получается аккуратное отверстие (если только не надавливать в самом конце сверления - на противоположной стороне может получиться слом).

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



Даже по нашим провинциальным ценам, материалов набегает не более, чем на 350 рублей.

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 месяцев ;)

16.01.2010

ЛУТ: какой утюг лучше? (2)

Возвращаясь к вопросу об утюгах.




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

Итак, "маломощный" Braun на 1900 Вт выдает нагрев около 173 градусов по шкале цельсия, а вот его китайский noname собрат на 2200 Вт - всего 159.

И хотя точность этих абсолютных величин, увы, мне неизвестна, но разница в 10-15 градусов весьма реальна и дает ощутимый эффект, о котором я писал - отпечатки на 173 градусах гораздо устойчивее к смыванию ацетоном и механическим воздействиям.

18.12.2009

Головолупа

За неимением микроскопа, решил немного облегчить себе жизнь с помощью лупы с головным креплением:



Конечно, микроскоп дает большее увеличение, но тут тоже можно "поиграться" увеличением, комбинируя линзы - возможны варианты 1.8, 2.3, 3.7 или 4.8:



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



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



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

В целом, все равно хочется иметь микроскоп, но сложно убедить персональную жабу отдать 15000-20000 руб за то, что и так есть на работе ;)

13.12.2009

Программирование SO-корпусов

Недавно мне подкинули вопрос: нужно запрограммировать ATtiny2313-20SU до пайки, как это сделать? 

Действительно, в отличие от корпуса DIP, предназначенный для поверхностного (SMD) монтажа SO-20 вызывает ряд вопросов, среди которых главный - где брать панельку?!



Переходники на DIP существуют, но стоят около 1000 рублей. И тут я вспомнил про замечательное видео на easyelectronics.ru, где демонстрировали, как пользоваться Розе на примере платы подобного переходника. Недолго думая, я взял Eagle и соорудил простую печатную плату:



Чтобы сделать ее более универсальной, я разместил на ней кварц 4.0 МГц (общеизвестно, что внутрисхемное программирование не запустится без питания и тактовых импульсов) и снабдил разъемом BH-10R, чтобы можно было подключать к любому программатору, а не только к USBasp.

Сначала надо аккуратно установить программируемую "тиньку" на контактные площадки, соблюдая положение первого контакта:



Затем воспользоваться самым обычным канцелярским биндером (зажимом для бумаг), на фото экземпляр 15 мм шириной и с 9 мм "глубиной" захвата:





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



Резюме: в случае промышленного применения для массового программирования, стоит обратить внимание на время установки микросхемы в подобную панельку. Я не знаю, сколько занимает это в "дорогой" панельке-переходнике, но зато переходник, полученный в домашних условиях выглядит значительно дешевле. Ну и всё это актуально только для случая, когда в схеме не предполагается ICSP-разъема.



Как всегда, публикую файлы для Eagle и экспортированное в eps тонер-трансфер изображение для изготовления по технологии ЛУТ. Лицензия - сс sa ;)