Перенос проекта с Arduino на отдельный контроллер
- Войдите на сайт для отправки комментариев
Здравствуйте!
Давно была у меня идея сделать раздельное управление обогревом зеркал и заднего стекла одной кнопкой (с завода кнопка включает сразу обогрев всего). Поспрашивал знакомых- никто готовый проект "под ключ" сделать не захотел, поэтому пришлось заняться самому. Когда-то в школьные годы программировал на Спектруме, но все давно забыл, пришлось многое вспоминать, многое учить заново. Написал программу на Ардуино, все работает так, как мне хочется, но теперь встал вопрос в переносе программы на отдельный контроллер, который управлял бы полевыми транзисторами, коммутирующими цепи. Несмотря на радиолюбительское детство и работу радиомонтажником, с контроллерами никогда до сего момента не связывался, данный проект- начало, надеюсь, долгого пути.
Вроде, есть возможность с помощьб Ардуино запрограммировать внешний контроллер? Какой именно выбрать? У меня в проекте одна кнопка, два выхода на транзисторы и один выход на пищалку.
Помогите, пожалуйста!
Можно обойтись и без контроллера. Просто использовать Д-триггеры. Работать будет по простой логике: раз нажал - зеркала заднего вида, второй раз - стекло, третий оба и т.д. Принцып их работы несложный. Стоят копейки. Схему лучше спросить на форумах по електронике, там быстро дадут ответ, главное правильно сформулировать вопрос.
Ну а если на МК то подойдет любой который сможете прошыть. Можно ту же 328 прошыть на ардуино, вынуть, и поставить в авто с минимальными (необходимыми для работы) компонентами.
>Вроде, есть возможность с помощьб Ардуино запрограммировать внешний контроллер?
Да скетч ArduinoISP из стандартного туториала позволяет превратить ее в программатор. "Как подключать к ней камень для прошивки", можно увидеть в том же туториале
http://arduino.cc/en/Tutorial/ArduinoISP
Я бы прекомендовал, во избежание дальнейших танцев с бубном, не экономить пару копеек и сразу собирать вариант с внешним кварцем (самая нижняя, правая картинка).
Поищите поиском на этом сайте. Вопрос поднимался неоднократно. Что-то типа "как прошить Atmega8 ардуиной" или типа того. Ну и по названию этого скетча тоже что-нибудь найдется. Ну и гугл на тему "бюджетная ардуина", "минимальная ардуина", "ардуина за $3" и проч. тоже может что-нибудь подсказать.
>Какой именно выбрать?
Ну это зависит от того какие цели вы ставите.
Цель: подешевле. подобрать минимально необходимый камень.
Тогда смотрите сколько ног использует скетч (и какие PWM, analog и т.п.), какого размера у вас получился скетч и начинаете просматривать линейку Atmel кристалов от Atmega8 вверх. Пока не найдете обладающий необходимым количеством памяти и ног. Если вообще "каждая копейка на счету", смотреть серию ATtiny, но это если скетч "реально очень маленький". Да и потанцевать с переносом прийдется изрядно. Он с ардуино совместим "только частично".
Цель: меньше гимороев, при переносе на внешний контроллер
Тут просто. Смотрите какой кристал у вас стоит в ардуине и покупаете такой же но в DIP-корпусе (что-бы легче паять было).
Хотя, если скетч использует только стандартные функции, не играется с таймерами, не работает напрямую с портами и т.п. - и не на "точно таком же кристале", он заработает без необходимости каких-либо правок.
Цель: на вырост.
Берем "самый жирный" камень который сможем найти в DIP-корпусе. Вдруг нам потом "еще какие-от идеи прийдут в голову".
Сам я, вначале, пытался "жлобится", брал Atmega8. Типа "ничего лишнего". После того как наткнулся на то, что "мой отлаженный на Arduino скетч" в atmega8 не влезает (повезло, удалось его "ужать") я понял, что собирая пару девайсов в год, разница в цене в $1-$2 рояля вообще не играет. В экономии нет смысла. Тем более что частенько "более жирный камень" стоит дешевле чем "младший собрат" (гримасы рынка :) К тому же, если устройсво перестало быть нужным, камень можно заюзать в каком-то другом проекте. Поэтому камень я впаиваю не напрямую на плату, а через панельку. Можно легко вынуть. Да и с моими "паяльными навыками", впаивать панель менее стремно чем сам кристал :)
Ну а в реальности, очень вероятно, вы будете долго выбирать, а потом на радио-рыноке и услышите "вот есть только такие" :) И выбор закончен.
leshak, большое спасибо за разъяснения!
Цель- сделать устройство с минимальными потерями нервных клеток. Цена вопроса особо не важна- 200 рублей плюс/минус роли не сыграют. Наверное, возьму для начала ту же 168 или 328, хоть это и является стрельбой из пушки по воробьям.
С пайкой проблем нет вообще- любой размер, любой шаг, любые корпуса (хоть BGA)- я радиомонтажник, я этим на жизнь зарабатываю.
leshak, большое спасибо за разъяснения!
Цель- сделать устройство с минимальными потерями нервных клеток. Цена вопроса особо не важна- 200 рублей плюс/минус роли не сыграют. Наверное, возьму для начала ту же 168 или 328, хоть это и является стрельбой из пушки по воробьям.
Тогда вам пригодится вот эта картинка http://arduino.ru/Hardware/ATMega168pins - соотвествие ног кристала и пинов ардуины.
То есть, если вы в коде пишите digitalWrite(13);, то на голом кристале это будет 19-тая нога.
С пайкой проблем нет вообще- любой размер, любой шаг, любые корпуса (хоть BGA)- я радиомонтажник, я этим на жизнь зарабатываю.
Ну вот :( А я только приготовился отвечать на вопрос "что такое DIP-корпус?" ;)
RZ296 , перво на перво вам нужен МК с автозагрузчиком (чуть дороже , зато нервные клетки не пострадают).
Далее все еще проще .
Вам нужно два кондера электролита 200 мкф и 1000мкф , четыре керамических кондера
(два по 0.1мкф и два по 22пф) , стабилизатор 5в. (подойдет любой 7805) , кварц 16мгц и
резистор 4.7- 10КОм (0.25Вт).
ВСЕ !
Я делал ЛУТ для такой платы и для комбинированой с драйвером мотров l293dne
(минимальный робоконтроллер). Если надо я скину.
Но у такой платы есть весомый недостаток - ее нельзя прошивать (в плату ставится уже прошитый МК) и ее
нельзя связать с компом по serial.
Но выход есть - любой usb-uart адаптер на микросхеме pl2303 или ft232
(на моей плате выведены раземы под uart). Я делал адаптер из древнего датакабеля
(самый простой и дешевый вариант).
>>Вроде, есть возможность с помощьб Ардуино запрограммировать внешний контроллер?<<
Кстати , можно. При наличии атвтозагрузчика. Я как то два МК прошил одновременно
(одной и той же программой) .
Тупо запаралелил rx tx и reset у двух МК.
nestandart, большое спасибо!
На работе подарили Attiny 261A-SU, вот на него, наверное, попробую залить после выходных. Надеюсь, что так или иначе получится. Вообще, хочется обойтись без внешнего кварца- дольше его покупать буду, чем голову ломать с флагами, или нет?
Дуина с тиньками не дружит. А кварц дуине необходим.
Нужны вам эти танцы с бубном ? Купите атмегу 168 или 328.
> Attiny 261A-SU
Честно говоря Attiny не трогал никогда, точно знаю что "это возможно", но вот то что это не совместимо с "сделать устройство с минимальными потерями нервных клеток" практически уверен (хотя, возможно не так страшен черт...)
>Вообще, хочется обойтись без внешнего кварца- дольше его покупать буду, чем голову ломать с флагами, или нет?
Ну, на сколько я понимаю с флагами и так и так прийдется "ломать". Готовых флагов для attiny в boards.txt - нема. Ну и бутлоадер искать...
Я конечно не знаю, насколько у вас кварц трудно найти. Но у нас на радио-рынке "валом" любых. И не дорого. Не помню сколько стоили, но взял сразу пару десятков "а что-бы было", не включая мозг (я вообще "копеечные детали" предпочитаю сразу брать "пачкой", если понадобится потом проезд дороже выйдет).
Ну и с внутренним, кроме нестабильности, вы не сможете поднятся выше 8mhz. А некоторые ардуино библиотеки предполгают дефолтные 16mhz. Все это конечно лечится игрой с делителями, подкручиванием таймингов и т.п. Но как-то слабо согласуется с "не морочить голову". Вот если цель "освоить Amtel получше" - тогда да. Это хороший и перспективный путь/
leshak, еще раз большое спасибо! Картинка хорошая- если-таки буду использовать 168 вместо подаренного Attiny 261A-SU, пригодится.
Что до доступности элементов- я из Москвы, купить-то тут можно все, но ехать за этим- потерять полдня. В общем, посмотрим- до субботы или воскресенья мне будет не до экспериментов, а там и поглядим.
Ну удачи :)
Может code.google.com/p/arduino-tiny/ пригодится.
Но я бы, конечно, не шел этим путем. Даже если "хочется освоить Attiny" - вначале освоил-бы "прошивку стандартного кристала", "с кварцем или без" и т.п. То есть старался что-бы в каждый момент времени было как можно меньше "неизвестных". А то вот соберете и - "не работает", а "куда смотреть" неведомо. 10-тысяч возможных причин.
При "уменьшении" проекта имейте ввиду - ATTiny45 стоит почему то вдвое дороже AtMega8L
8L работает на 8 мгц, бутлоадер есть.
По поводу создания устройства под ключ - освойте Sprint Layot 5, нарисуйте печатку, напечатайте зеркальное отображение на лазерном принтере на журнальной бумаге (там где текст максимально), приложите к текстолиту и засуньте два раза в ламинатор при 160 градусах. Под краном смойте бумагу и в хлорное железо.
Далее - дырки и паять ) Предусмотрите разъем ISP, шестипиновый.
Сразу делайте под SMD, паять их не так сложно как вы думаете. Атмега8 в TQFP - аккуратно располагаете на залуженных дорожках и одну ногу прихватываете секуундным тычком. Проверяете, двигаете и прихватываете ногу напротив. Ну а там по очереди.
Все прозвоните перед первым стартом.