01.11.2009

Сборка Arduino Severino

Для сборки Arduino Severino потребуются следующие детали:
  • Печатная плата - 1 шт.
  • Микроконтроллер ATmega8/168/328P - 1 шт.
  • Панелька SCS-28 - 1 шт.
  • Стабилизатор напряжения L7805CV - 1 шт.
  • Кварц 16 МГц - 1 шт.
  • Емкость керамическая 22пФ - 2 шт.
  • Емкость керамическая 100нФ - 4 шт.
  • Емкость электролитическая 100мкФ х 16В - 2 шт.
  • Емкость электролитическая неполярная 10мкФ х 16В - 1 шт.
  • Диод 1N4148 - 2 шт.
  • Диод 1N4007 - 1 шт.
  • Транзистор BC547C - 1 шт.
  • Транзистор BC557С - 1 шт.
  • Резистор 1 КОм - 5 шт.
  • Резистор 10 КОм - 5 шт.
  • Резистор 4,7 Ом - 1 шт.
  • Дроссель 100 мкГн - 1 шт.
  • Вилка PLD06 2x3 - 1 шт.
  • Светодиод - 4 шт.
  • Тактовая кнопка - 1 шт.
  • Разъем DRB-9FА угловой на плату - 1 шт.
  • Гнездо питания 2.1мм на плату - 1 шт.
  • Гнездо PBS-08 1x8 - 2 шт.
  • Гнездо PBS-06 1x6 - 2 шт.
Из инструментов потребуются:
  • паяльник
  • припой (подойдет стандартный ПОС-61)
  • флюс (самая обычная канифоль)
  • кусачки
  • пинцет
Сильно облегчает работу также держатель с лупой и крокодилами.

Печатная плата выполнена на основе технологии ЛУТ и может быть изготовлена самостоятельно. Обычно, она уже просверлена, залужена в сплаве Розе и покрыта специальным канифольным лаком, предотвращающим окисление и способствующим пайке (плавится при t=85C, при необходимости легко удаляется спиртом).

1. Устанавливаем пять резисторов - R1, R2, R3, R4 и R6 (не выбрасывайте ножки, они нам еще пригодятся! ;) Отличить их можно по порядку цветов - коричневый, черный, красный, золотистый.



2. Устанавливаем пять резисторов 10К - R5, R7, R8, R10, R11. Сочетание цветов - коричневый, черный, оранжевый, золотистый.



Золотистая полоска на краю обозначает точность, в данном случае 5%. Если не доверяете цветам, всегда можно измерить омметром (мультиметром в режиме изменения сопротивления), но учтите, что теоретические 10К могут "плавать" в диапазоне 9,5...10,5 КОм. Arduino этого вполне достаточно, а для схем, требующих бОльшую точность, есть и более точные резисторы. Но и стоят они, естественно, дороже.

3. Ставим последний резистор 4К7 - R9



Я ориентирую все резисторы золотистой полоской в одну сторону - вверх или вправо -  исключительно из эстетических соображений. Как-то крайне неопытный Arduino-любитель поинтересовался у меня, как правильно включать резистор - он думал, что его ножки неравнозначны. Теперь вы понимаете, почему я все время в своих статьях говорю о том, что с Arduino может разобраться человек, ничего не смыслящий в схемотехнике?

4. Устанавливаем диоды D2, D3 - 1N4148. Они выполнены в стеклянном корпусе-капельке, по размеру еще меньшем, чем резистор. Устанавливать их надо так, чтобы совпала полоска не шелкографии и черненькая полоска на диоде (на фото полоска - справа):



5. Внизу слева монтируем защитный диод D1 - 1N4007 (допустима замена на 1N4004).
Не забываем про полоску (она снова справа):



6. Теперь уже набралось достаточно обкусанных ножек, самое время соорудить из них три перемычки:



Плата Arduino Severino - односторонняя (или ОПП, как говорят профи ;), в таких случаях разводка далеко не всегда получается без перемычек. Поверьте, три штуки - более чем гуманная плата за избавление от возни с изготовлением двухсторонней платы и переходными отверстиями.

7. Установим угловые джамперы JP0 и JP4:



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



8. Устанавливаем кварц Q1 - 16000 Гц



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

9. Ищем емкости C1 и C2 - 22 пФ, на них обычно написано 220:



И аккуратно паяем их рядом с кварцем:



10. Теперь надо найти дроссель L1 - 100 мкГн. Обычно, он выглядит как резистор:



Правильный порядок цветов: коричневый, черный, коричневый (далее идет полоса точности - золотистая или серебристая). Дроссель выполняет в цепи питания микроконтроллера помехоподавляющие функции, и включен он между питанием Vcc и питанием АЦП - AVcc. И без него будет работать, но с ним - надежнее ;)



11. Находим емкости 100 нФ (на них написано "104"):



... и устанавливаем все четыре штуки: С3, С4, С6, С7:



12. Теперь можно поставить панельку SCS-28:



13. Установим светодиоды - их в комплекте 4 штуки. Основное правило - длинной ножкой в плюс. Все светодиоды на этой плате сориентированы одинаково - плюс вверху:



(обычно на светодиодах делают "лыску", спрямляя часть окружности корпуса - это соответствует минусу).

Выбор цветов может быть произвольным. Я обычно выбираю светодиод L (LED13) поярче, потому что именно он более всего нагружен в информативном плане. Rx и Tx мигают в момент загрузки скетча из ArduinoIDE, а PWR индицирует подачу питания. Вариант:



14. Устанавливаем электролиты 100 мкФ С5 и C8, тоже длинной ножкой в плюс. Но смотреть она будет уже вниз:



15. А вот электролит 10 мкФ C9 - неполярный. И хотя у него тоже одна ножка длиннее, не верьте! ;)  На то он и неполярный: как хотите, так и устанавливайте.



16. Установим транзисторы: T1 - BC547, T2 - BC557.

Для начала отформуйте пинцетом их ножки, чтобы они выстроились в одну линию:



Далее, можно установить, ориентируя корпус по шелкографии:



Только не перепутайте BC547 и BC557 - у них разная проводимость. А вот буква на конце значения не играет - BC557B будет работать так же хорошо, как и BC557C.

17. Устанавливаем тактовую кнопку сброса



(тактовая - это от английского tactile - осязаемая).

18. Рядом ставим гребенку ICSP 2x6 - PLD06:



Паять её надо осторожно: если перегреете ножки, они могут "поехать" в пластиковом корпусе и вместо аккуратной гребенки может получиться "ежик с иголками врастопырку" ;)

Гребенка ICSP ( in circuit serial programming ) потребуется для двух ситуаций: 1. Зашивание bootloader-а в "свежий" микроконтроллер 2) Работа через AVRStudio. Чтобы ее использовать, Вам потребуется программатор.

19. Теперь устанавливаем IC2 - стабилизатор напряжения +5В - L7805CV:



Если подогнуть ножки заранее, на плате будет выглядеть чуть более аккуратно (хотя, дело вкуса):



В процессе пайки среднюю ножку придется погреть подольше, с ней соединен радиатор.

Если собираетесь питать Arduino от источника питания более +9В например, от +12В, стоит позаботиться о дополнительном радиаторе - для этого придется впаять стабилизатор вертикально и соединить его при помощи винта с этим самым радиатором. Иначе есть риск обжечься - на 12В греться он будет прилично.

20. Теперь надо запаять колодки выводов PBS - две по 8 выводов и две по 6. Удобно пользоваться для этого готовой shield-платой: она переворачивается ножками вверх, на них одеваются колодки PBS:



... а затем плата Arduino / Freeduino, на которую надо установить эти колодки:



Убедившись, что нет перекосов, смело паяйте. В результате должно получиться приблизительно так:





21. Устанавливаем разъем COM-порта DRB-9:



22. Устанавливаем гнездо питания 2,1/5,5 мм:



Рекомендую перед установкой очистить контакты от окислов, например слегка пройтись по ним надфилем. При пайке лучше использовать жидкий флюс (например, тот же ЛТИ-120). Ну и олова придется капнуть чуть побольше, если надо закрыть трехмиллиметровые отверстия в плате.

23. При необходимости, аккуратно подогните ножки микроконтроллера ATmega:



... и установите его в панель SCS-28, совмещая ключ на корпусе, на панельке и шелкографии (в данном случае, он смотрит направо):



Готово! Тем, кто уже имел дело с Arduino, рекомендую изучить руководство по этой плате, там подробно объясняется смысл всех схемотехнических решений и джамперов (на английском).

Поскольку микроконтроллер из комплекта уже прошит, можно сразу и протестировать: для этого надо подключить источник питания и соединить COM-порт с компьютером.

Запустите ArduinoIDE, убедитесь, что она сконфигурирована для нужного типа платы "Tools | Board | ... " и для нужного COM-порта "Tools | Serial Port | ... ". Тип платы в случае с Severino зависит от микроконтроллера:

  • ATmega8-16PU = "Arduino NG o older w/ ATmega8";
  • ATmega168-20PU = "Arduino Diecimila, Duemilanove, or Nano w/ ATmega168";
  • ATmega328P-PU = "Arduino Duemilanove or Nano w/ ATmega328".
Загрузите исходник тестового sketch-а из комплекта: "File | Examples | Digital | Blink".

Откомпилируйте программу (Ctrl+R, круглая кнопка со стрелкой, "Sketch | Verify/Compile"), затем "залейте" sketch (Ctrl+U, квадратная кнопка со стрелкой вправо, "File | Upload to I/O board"). По окончании должно появиться сообщение об успешной загрузке в плату Arduino.

Светодиод L должен начать стабильно мигать (для Atmega8 подождите 10-15 секунд, так уж устроен его bootloader).

10 комментариев:

  1. Здравствуйте, помогите разобраться. Сделал такую же плату на ATMEGA8, собрал, прошил бутлоадер через ICSP с LPT разъема при помощи 5 проводков. Ардуинка начала подавать какие-то признаки жизни: после нажания сброса мигает светодиод L. Но смущает следующее: светодиод L мигает каждые 10-15 секунд. При подключению к COM и попытке залить скетч Blink из Arduino IDE v.0017 (выбираю Arduino NG or older/w ATmega8) несколько раз мигает RX и через секунд 30 выдается следующее:
    avrdude: stk500_getsync(): not in sinc: resp=0x00
    avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
    При этом L продолжает мигать с паузами в 10 сек.
    Изучил что пишут в интернетах по этой проблеме, у нескольких человек были проблему с кварцем или с пайкой. Внимательно изучив плату, обнаружил, что я лоханулся :(, вместо 10 мкФ неполярного электролита я купил 100 мкФ. Подскажите, может ли настолько влиять на работу схемы этот конденсатор?

    ОтветитьУдалить
  2. Сергей, мигать раз в 10 секунд - это нормально. После сброса Atmega8 ждет поступление скетча, потом передает управление основной программе по нулевому адресу. Но поскольку там пусто (вы же туда еще ничего не загрузили, так?), то управление попадает вновь в бутлоадер. У меня так всегда мигает на свежепрошитом МК.

    По поводу неполярника... Да, аномалия тут есть. Его основная задача - фильтровать помехи, но при 10-кратном увеличении емкости он будет уже не только помехи подъедать, но и основной сигнал.

    Попробуйте его заменить хотя бы на полярный 10 мкФ x 16В, минусом на землю, а плюсом - к транзистору T2 (через резистор R1 4K7). Если это не поможет, ищите ошибку в схеме преобразователя COM-порта - убедитесь в исправности и транзисторов и правильности их подключения.

    Вы печатную плату делали или навесным?

    ОтветитьУдалить
  3. О! Спасибо за скорый ответ! Плату делал при помощи ЛУТ. Имеется полярный 10 мкФ x 50В, попробую использовать его.

    ОтветитьУдалить
  4. Хочу добавить, что при передаче чего-нибудь через Serial Monitor RX мигает

    ОтветитьУдалить
  5. Попробовал поменять конденсатор, не помогло. Транзисторы стоят там где надо и те где надо. Подскажите, как проверить их исправность.

    ОтветитьУдалить
  6. Здесь, например, есть про исправность транзисторов, но придется их выпаивать для проверки :(

    Джампер "Serial Enable" стоит в правильном положении? Плата сбрасывается перед заливкой скетча?

    ОтветитьУдалить
  7. Serial Enable стоит в положении, собственно, Serial Enable :). Наколько сбрасывается или нет плата перед заливкой скетча, судить трудно, но яростно мигает L непосредственно после нажатия Upload в Arduino IDE.

    ОтветитьУдалить
  8. Тогда у меня идеи закончились...Остается проверить надежность соединений, отсутствие "залипонов" начиная от ножек Rx/Tx атмеги и до разъема последовательного порта.

    А, вот еще - кабель нормальный? Не нуль-модемный случаем?

    ОтветитьУдалить
  9. Здравствуйте. Я тоже спаял такую плату и у меня точно такая же проблема

    avrdude: stk500_getsync(): not in sync: resp=0x00
    avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

    но благодаря этой статье нашел у себя пару ошибок =)
    1) Емкость электролитическая 10uF
    2) Взял кабель от модема, перепоял провода с гнездами как 1-1, 2-2,...9-9.
    Заменю, скажу что получилось =)

    Хотел ещё вот что спросить, на нескольких форумах пишут что нужно нажимать кнопку RESET, это обязательное условие?

    ОтветитьУдалить
  10. Это обязательное условие только в том случае, если сигнал DTR не приходит на цепь сброса МК.

    В этой плате автосброс замечательно работает.

    ОтветитьУдалить