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

12.12.2012

Ёлкадуино R2

Опять наступает декабрь, и снова хочется чего-то новогоднего. Если уважаемый читатель еще не забыл - в прошлом году был представлен проект новогоднего Arduino-совместимого дерева HNYduino. Практически сразу появились замечания и дополнения, и через год родилась версия R2:


Из предыдущей версии были унаследованы две 74HC595, к которым подключены по 8 зеленых и красных светодиодов (более подробно об увеличении числа пинов Arduino этим способом я уже писал). 

Но кое-что, конечно же, было изменено.


Первым делом ATmega328P была заменена на ATmega32u4, так что можно было бы сразу гордо писать Leonardo-compatible. Это сразу же добавило возможность и питать, и программировать ёлку напрямую от miniUSB (никаких дополнительных переходников USB-TTL не требуется). Возможность батарейного питания по-прежнему сохранена, переключение выполняется при помощи механического переключателя.


Расположенные в прежней версии по центру светодиоды убраны, а их место занял трехцветный пятимиллиметровый светодиод, подключенный к выводам, поддерживающим аппаратный ШИМ - таким образом можно подбирать практически любое сочетание цветов, плавно управляя яркостью через analogWrite().


Ближе к вершине располагается электретный микрофон, играющий роль датчика звука (чувствительность настраивается с помощью потенциометра, расположенного с противоположной стороны).


Выход датчика, кстати, подключен к аналоговому входу A0

Количество выводов, которые выведены на подставку сокращено до четырех - оставлены два аналоговых и два цифровых. Кроме них в вашем распоряжении вилка программирования ISP6 и отдельно выведенный UART.



Ну что, скажете "опять ерунда какая-то"? ;) 

Возможно, да. Но при помощи смекалки и навыков программирования Arduino с ее помощью можно сделать что-то забавное, красивое и даже полезное. Важно, в чьих руках она окажется ;)

Чертежи, схема, библиотека и примеры появятся в самое ближайшее время здесь и в wiki, купить готовый экземпляр можно здесь.



13.12.2011

Ёлкадуино

Рискуя превратить свой блог в дайджест журнала Радио, в качестве краткого предисловия хочу поделиться содержимым раздела "Радио - начинающим" декабрьского номера: там схемы сразу двух светодиодных ёлок. Такие, знаете - мигалки - чисто for fun. Первая схема родом из Украины (автор - В.Хмара из Житомира, усовершенствовал схему А. Лечкина, опубликованную в 2007 году во все том же Радио):



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

Вторая схема более продвинута, поскольку имеет в своем составе "восьминогий" MCU PIC12F675 (автор - Владимир Баландин), управляющий 28-ю двухцветными светодиодами:



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



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

Памятуя о изобретении велосипеда, я начал искать Arduino-совместимую елку на просторах Интернета, и нашел практически то, что искал - Blinky Christmas Ornaments.


Автор как раз пишет, что I wanted the board to be easily hacked by family and friends that were so inclined - идея, в точности совпадающая с моей.


Полностью уничтожив немного поработав с неприемлемым для меня контуром-кругляшкой, удалось вписать ребристый елочный профиль в размер для бесплатной версии EagleCAD - 100x80 мм:


Основная идея сохранена - использование пары закаскадированных микросхем 74HC595N для индикации на 16 светодиодах (8 зеленых + 8 красных). В центре есть также четыре дополнительных светодиода, непосредственно подключенных к линиям D2, D3, D4, D5 (здесь и далее - нумерация Arduino). В качестве MCU использован ATmega328P-AU с бутлоадером Duemilanova, но вместо USB-порта только вилка для кабеля FTDI - не думаю, что наличие отдельного USB-чипа в таком устройстве слабо оправдано. "Хакнуть" елку несложно: достаточно подключить USB-TTL переходник и  выставить в ArduinoIDE тип платы "Arduino Duemilanova". Если кому-то больше по душе UNO, можно перешить бутлоадер, запаяв гребенку ISP06 и подключив к ней любой ICSP-программатор с помощью 6-пинового кабеля.


Присутствует также и отверстие для подвешивания девайса за ниточку:


Но мне кажется, подвешивать надо за проводочек, по которому приходит +5В ;)

В нижней части HNYDuino (это официальное название, а мне по душе менее благозвучное "Ёлкадуино") - пины для стыковки с подставкой при помощи вилки PLS-R:



Подставка играет не только декоративную роль, но и несет на себе холдер батарейки типа "крона", стандартный для Arduino разъем питания и защитный диод 1N4007.



Но самое главное - туда выведены некоторые неиспользуемые пины - D6, D7, D9 и A0, A4, A5. Это позволяет читать показания аналоговых датчиков, использовать шину I2C и аппаратный ШИМ.


Расположенный слева DPDT переключает источники питания - либо это +5В с кабеля FTDI, либо BATT, приходящий с подставки (напряжение от БП 9..12В или "крона"). Если подключить что-то одно, то он превращается в выключатель.

Что можно сотворить с такой елочкой? Фантазия подсказывает световой датчик (чтобы она зажигалась только с наступлением темноты) и/или датчик звука, реагирующий на хлопки или традиционное "елочка, зажгись!". Более изощренным можно посоветовать подключить по I2C микросхему RTC DS1307 и ровно в 00:00 01.01.201X "неожиданно" замигать всеми огоньками или сыграть гимн через предусмотрительно подключенный пьезодинамик.

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

Happy new hacking! ;)

16.04.2011

Сеть 1-Wire в "полевых условиях"

О практическом применении сети 1-Wire и температурных датчиков DS18B20 в частности, написано много и  подробно. Цель этой статьи - рассказать, как использовать эти датчики (или другие устройства сети) в суровых "полевых условиях". Не секрет, что на столе под лампой светлой цифровой датчик DS18B20 или его бюджетный брат DS18S20 замечательно работает  с минимальным обвязом со стороны микроконтроллера в т.н. двухпроводной схеме:



Фактически, весь "обвяз" состоит из резистора 4К7, между шиной питания VCC (+5В) и шиной данных VDO, который и позволяет датчику паразитно питаться от этой же шины. Схема проста, наглядна и кроме этого, позволяет экономить на одном проводе в кабеле сети. Для расстояний менее 10 метров - вполне оправдано, правда точность преобразования будет не лучше 2°C (разрядность АЦП датчика DS18B20 снижается с 12 до 10 бит), что во многих случаях будет вполне достаточно.

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




Дополнительная выделенная линия питания сулит нам следующие "бонусы":
  1. Длина сетевого кабеля 100 метров и более;
  2. Количество одновременно подключенных датчиков - не менее 32шт.;
  3. Разрешающая способность АЦП - 0,0625°C и точность измерения - 1°C.
Однако, еще остается борьба с помехами на длинных линиях связи. Простейшей защитой является включенный в обратном направлении диод Шоттки между линией данный и общим проводом, именно так советует поступать Brian C. Lane, автор популярного проекта DigiTemp. Мы лишь немного расширим данное решение для трехпроводной схемы включения:


D1 - сборка быстродействующих диодов Шоттки BAV199, механизм действия такой защиты подробно описан в блоге Уважаемого киберсатаниста DI HALT;
L1, L2 - фербиды BLM21AG221SN1D - индуктивности для защиты от высокочастотных помех, возникающих при коммутации сильноточных потребителей;
C1 - керамический конденсатор, естественный спутник ножек питания цифровой микросхемы;
IC1 - собственно цифровой датчик температуры DS18B20Z в корпусе SOIC8.

Все компоненты - SMD (0805 и SOT23) для уменьшения размера платы датчика:



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


Обязательно защищаем плату датчика от влаги (цапонлаком или акриловым лаком):


Для монтажа датчика на поверхность, например на трубопровод, очень хорошо подходит самовулканизирующаяся резиновая изолента. Кроме того, необходимо хорошо теплоизолировать точку установки датчика. Я использую пористую самоклеющуюся ленту.

Контактные площадки для пайки кабеля сети 1-Wire сознательно сделаны крупными и вот почему...

Трактат о проводочках кабеля

Самой распространенной ошибкой при построении сети 1-Wire является выбор в пользу Ethernet-кабеля Cat.5! Подавляющее большинство читателей скажет - "у нас все очень хорошо и бодро работает на обрезках сетевухи". Не спорю ни в коем случае, кабель Cat.5 длиной 10..30 м вполне годится для 3-х проводного способа подключения датчиков, более того - вот вам рекомендованная схема использования народного кабеля, которую и сам использую на даче для водоснабжения дома:




"Ну таки и в чем дело?" - скажет проницательный читатель. А вот в чем: в кардинальном различии "физики и логики" сетей Ethernet и 1-Wire. Не вдаваясь в сложности организации сети Ethernet, просто прошу поверить (и с мультиметром проверить) в то, что из-за значительного падения напряжения на длинных и весьма тонких проводах кабеля Cat.5e датчику сети 1-Wire банально не хватает напряжения питания!

Вывод напрашивается простой и логичный - использовать кабель с проводами бОльшего сечения и желательно - экранированный! Для своих целей, я выбрал вполне доступный по цене (и наличию в магазинах) кабель МКЭШ-3х0.5 - схема подключения датчиков будет выглядит так:


Несколько худший, но вполне приемлемый результат, можно получить с кабелем МКЭШ-2х0.35 и следующей схемой подключения:




Наконец, можно использовать вполне приличный провод от торшера - ПВС3х0.75...ПВС3х1

Заключение


Нынешний владелец торговой марки 1-Wire - компания Maxim, для защиты нежных ножек микропроцессора от "суровых полевых условий", предлагает приборчик DS9503, который по сути - просто быстродействующий диод Шоттки + токоограничивающие резисторы в линиях питания и данных. Сам я его еще в руках не держал, но как только это случиться - немедленно опишу полученные впечатления.

Послесловие


C огромным удовольствием - благодарю Илью Данилова за помощь словом и хардвером в освоении платформы Ардуино, конструктивные замечания и неоценимую поддержку в разработке проекта ОткрытогоПЛК!


  • Скачать проект платы-подавителя помех в формате Eagle.

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 - читайте именно его, не пожалеете ;) 

10.11.2010

V-USB module

Идея проекта посетила меня после двух-трех успешных реализаций на библиотеке V-USB (для тех, кто не в курсе - это специальная библиотека для avr gcc, позволяющая почти любому МК из семейства AVR программно эмулировать USB в режиме low speed transfer).

Как известно, уже давно успешно существует проект Metaboard - плата, совместимая на 90% с Arduino и bootloader-ом на основе V-USB. Но у нее есть две чувствительных особенности - для загрузки скетча надо сначала замкнуть специальный джампер, а затем - нажать сброс. Второй недостаток - по понятным причинам (панелька) для экспериментов подходит только МК в 28-выводном корпусе. Вот что у меня получилось в поисках более универсального решения:



Девайс получил гордое название V-USB module for solderless breadboard и предназначен, как это следует из названия, для работы с беспаечной макеткой. Для этого в него впаяны вертикальные контактные штырьки:



Они позволяют "усадить" модуль поверх центрального желобка (туда обычно ставят микросхемы):



Одновременно они служат для подключения модуля к схеме - на них выведены D+, D-, +5V, и GND, согласно схеме:



Естественно, при наличии всех деталей в выводном исполнении, схема собирается на  макетке и без специального модуля. С другой стороны, его преимущества очевидны - во-первых, это экономия времени (как на втыкание самих деталей, так и на поиск ошибочно воткнутых), во-вторых - простая установка разъема, ибо никогда не видел разъем USB, который бы состыковался с макетной платой без паяльника и дополнительных проводков и вилочек; В-третьих, далеко не всегда под рукой оказывается выводной самовосстанавливающийся предохранитель: часто им вообще пренебрегают, а здесь он всегда в наличии.

И, конечно же - занимаемое место на самой беспаечной макетке. Плата довольно компактна - 33 х 18 мм, причем ее можно установить так, чтобы она частично выходила за пределы breadboard-а.

После установки остается только подключить микроконтроллер, согласно конфигурации. Сначала надо выяснить, где у МК будут расположены входы D+ и D-, по содержимому usbconfig.h:



...после чего подключить их к соответствующим контактам микроконтроллера по маркировке на модуле:



(на этом фото проект ребутера внешних модемов на ATtiny2313-20PU, использован внешний кварц 12МГц, пара конденсаторов 22пФ).

Своей цели я добился - с таким модулем можно довольно быстро собрать схему для V-USB на беспаечной макетке. Плата выполнена односторонним способом, не содержит перемычек и минимально требует сверления лишь четырех отверстий диаметром 1 мм для установочных штырьков.



Скачать файл проекта V-USB moule for solderless breadboard (лицензия CC-SA).

12.08.2010

MicroSD shield (1)

Попытки интегрировать в Arduino поддержку SD-карт начались достаточно давно, и давно же увенчались успехом. Пусть вас не смущает обилие элементов на новой Ethernet Shield - ничего сложного в этом нет.

Я решил разобрать технологию доступа к SD на примере изделия libellium-а - известной испанской фирмы, занимающейся разработками в области мониторинга состояния окружающей среды. К счастью, одной из побочных ветвей их деятельности является Arduino и все с ним связанное. Их microSD шилд выглядит так:



Как видите, ничего хитроумного в этом шилде - нет. При подключении SD-карты к Arduino надо помнить пару моментов:
  1. Питание карты - 3.3В;
  2. Обмен происходит по шине SPI, требуется согласование сигналов по уровням.
Поддержка SPI в контроллерах ATmega совпадает по пинам с разъемом внутрисхемного программирования, так что можно подключаться к digital 10-12. Теоретически, питание +3.3В можно брать с питающей колодки Arduino Duemilanova, но тут, на мой взгляд, сложилась парадоксальная ситуация - хотя во многих платах и клонах Arduino пин трехвольтового питания присутствует, все шилды в обязательном порядке забивают игнорируют эту возможность и используют свой собственный регулятор +3.3В. 

Для работы надо соединить две линии сигналов данных (MISO/MOSI), тактовые (SCK) и выбор приемника (SS). Правда, тут нас ждет небольшая проблема согласования сигналов по уровням. 

Как известно, в Arduino мы имеем дело с КМОП-логикой, управляемой напряжением - один уровень соответствует логическому нулю, другой - логической единице. Реально же, при определении состояния входа КМОП, логические уровни зависят от напряжения питания, граница проходит по Vcc/2. И действительно, если мы обратимся к документации, то увидим, что логической единицей для ATmega будет напряжение более 2,5 В, а нулем - менее 2,5 В (естественно, при Vcc=5В). И в то же время, при работе в качестве выхода, КМОП будет формировать для логической единицы напряжение близкое к Vcc, а для нуля - к GND.

У работающего в SD-карте трехвольтового КМОП-а на выходе формируется логическая единица с уровнем = Vcc = 3,3В, что больше 2,5В и будет правильно восприниматься пятивольтовым входом. Но пятивольтовая единица на трехвольтовом входе крайне нежелательна, поэтому надо изыскать способ преобразовать ее в диапазон 1,65..3,3 В. Конечно, на эту тему существует обширнейшее семейство чипов, которые "в лучшем виде" организуют такие преобразования, но они в данном случае не потребуются. Для относительно невысоких скоростей обмена, можно прибегнуть к тривиальному делителю напряжения на резисторах

Я взял на себя смелость перерисовать схему устройства, тем более, что там всё просто:



Увы, я не смог идентифицировать чип в корпусе SOT23-5, хотя это явно регулятор напряжения. На нем написано "PHUI", и ни один из справочников по SMD о такой комбинации не знал. Пришлось его заменить на близкий по смыслу и корпусу NCP1400 (чип IC1 по схеме).

Updated: чип этот все-таки удалось идентифицировать - это LP2985-33BVR! Более подробно - здесь.

Делители напряжений на плате представляют пары SMD-резисторов 10K/15K - R3/R4, R5/R6 и R2/R7. Кроме сигналов SPI, слот SD-карты умеет сообщать о наличии в нем карты (сигнал CD), и этот дополнительный сигнал притянут к Vcc через R1, поскольку представляет из себя простой механический контакт, разрываемый во время вставки карты. Конденсаторы C1 и C2 выступают в качестве фильтров по питанию.

Само питание на плату подается двумя разными способами:
  1. С цифрового пина digital8 (не так уж много microSD надо для работы)
  2. C гребенки ICSP



Переключение осуществляется джампером JP4, в позиции 1-2 он подает на вход IC1 напряжение с digital8, в позиции 2-3 - со 2-го контакта разъема IСSP-6:



Дополнительная колодка JP5 (сигналы CD и SS) нужна в двух случаях:
  1. При подключении через ISP-6 (место SS занял необходимый для программирования RESET, а места для сигнала CD уже и вовсе нет);
  2. При подключении к Arduino Mega (там пин SS находится в другом месте).
При этом, линии +5В, +3.3В и GND выводятся на JP2 - просто так, на всякий случай.

Картинки вариантов подключения:





Можно использовать пин-экстендер:



В этом случае можно подключаться игнорируя шилд, у которого не заняты колодки digital 13-8, типичный пример - Arduino Motor Shield:



30.04.2010

USB-TTL v.3 (final)

Все-таки выкроил свободный час и сделал пару обещанных модификаций USB-TTL.

Первый вариант: разъем USB-B заменен на пятиконтактный miniUSB, светодиоды стали SMD0805:



Минус четыре отверстия для светодиодов, но зато плюс два по 0.9 мм - для разъема miniUSB. Впрочем, если очень хочется, можно аккуратно срезать пластмассовые выступы скальпелем, и тогда отверстия для них сверлить не потребуется ;)

Скачать файл проекта USB-TTL v.3 mini (лицензия CC-SA).

Второй вариант: краевой разъем USB-A в виде дорожек на фольге:



Изготавливать надо на текстолите толщиной не менее 1.5 мм, скорее всего даже 2.0 мм. Из отрицательных моментов - пришлось добавить еще одну SMD-перемычку R6.

Скачать файл проекта USB-TTL v.3 SMD (лицензия CC-SA).

Сразу замечу, что пока не изготавливал и поручиться за 100%-ю корректность не могу. Но крайне буду признателен тем, кто найдет ошибки.