Перенос проекта с Arduino на отдельный контроллер

RZ296
Offline
Зарегистрирован: 27.02.2012

Здравствуйте!

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

Вроде, есть возможность с помощьб Ардуино запрограммировать внешний контроллер? Какой именно выбрать? У меня в проекте одна кнопка, два выхода на транзисторы и один выход на пищалку.

Помогите, пожалуйста!

chervyachok
chervyachok аватар
Offline
Зарегистрирован: 22.12.2011

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

Ну а если на МК то подойдет любой который сможете прошыть. Можно ту же 328 прошыть на ардуино, вынуть, и поставить в авто с минимальными (необходимыми для работы) компонентами.  

leshak
Offline
Зарегистрирован: 29.09.2011

>Вроде, есть возможность с помощьб Ардуино запрограммировать внешний контроллер?

 Да скетч ArduinoISP из стандартного туториала позволяет превратить ее в программатор. "Как подключать к ней камень для прошивки", можно увидеть в том же туториале

http://arduino.cc/en/Tutorial/ArduinoISP

 Я бы прекомендовал, во избежание дальнейших танцев с бубном, не экономить пару копеек и сразу собирать вариант с внешним кварцем (самая нижняя, правая картинка).

Поищите поиском на этом сайте. Вопрос поднимался неоднократно. Что-то типа "как прошить Atmega8 ардуиной" или типа того. Ну и по названию этого скетча тоже что-нибудь найдется. Ну и гугл на тему "бюджетная ардуина", "минимальная ардуина", "ардуина за $3" и проч. тоже может что-нибудь подсказать.

>Какой именно выбрать?

Ну это зависит от того какие цели вы ставите. 

Цель: подешевле. подобрать минимально необходимый камень.

Тогда смотрите сколько ног использует скетч (и какие PWM, analog и т.п.), какого размера у вас получился скетч и начинаете просматривать линейку Atmel кристалов от Atmega8 вверх. Пока не найдете обладающий необходимым количеством памяти и ног. Если вообще "каждая копейка на счету", смотреть серию ATtiny, но это если скетч "реально очень маленький". Да и потанцевать с переносом прийдется изрядно. Он с ардуино совместим "только частично".

Цель: меньше гимороев, при переносе на внешний контроллер

Тут просто. Смотрите какой кристал у вас стоит в ардуине и покупаете такой же но в DIP-корпусе (что-бы легче паять было).

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

Цель: на вырост.

Берем "самый жирный" камень который сможем найти в DIP-корпусе. Вдруг нам потом "еще какие-от идеи прийдут в голову". 

Сам я, вначале, пытался "жлобится", брал Atmega8. Типа "ничего лишнего". После того как наткнулся на то, что "мой отлаженный на Arduino скетч" в atmega8 не влезает (повезло, удалось его "ужать") я понял, что собирая пару девайсов в год, разница в цене в $1-$2 рояля вообще не играет. В экономии нет смысла. Тем более что частенько "более жирный камень" стоит дешевле чем "младший собрат" (гримасы рынка :) К тому же, если устройсво перестало быть нужным, камень можно заюзать в каком-то другом проекте. Поэтому камень я впаиваю не напрямую на плату, а через панельку. Можно легко вынуть. Да и с моими "паяльными навыками", впаивать панель менее стремно чем сам кристал :)

Ну а в реальности, очень вероятно, вы будете долго выбирать, а потом на радио-рыноке и услышите "вот есть только такие" :) И выбор закончен.

 

RZ296
Offline
Зарегистрирован: 27.02.2012

leshak, большое спасибо за разъяснения!

Цель- сделать устройство с минимальными потерями нервных клеток. Цена вопроса особо не важна- 200 рублей плюс/минус роли не сыграют. Наверное, возьму для начала ту же 168 или 328, хоть это и является стрельбой из пушки по воробьям.

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

leshak
Offline
Зарегистрирован: 29.09.2011

RZ296 пишет:

leshak, большое спасибо за разъяснения!

Цель- сделать устройство с минимальными потерями нервных клеток. Цена вопроса особо не важна- 200 рублей плюс/минус роли не сыграют. Наверное, возьму для начала ту же 168 или 328, хоть это и является стрельбой из пушки по воробьям.

Тогда вам пригодится вот эта картинка http://arduino.ru/Hardware/ATMega168pins - соотвествие ног кристала и пинов ардуины.

То есть, если вы в коде пишите digitalWrite(13);, то на голом кристале это будет 19-тая нога.

RZ296 пишет:

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

Ну вот :(  А я только приготовился отвечать на вопрос "что такое DIP-корпус?" ;)

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

RZ296 , перво на перво вам нужен МК с автозагрузчиком (чуть дороже , зато нервные клетки не пострадают).

Далее все еще проще .

Вам нужно два кондера электролита 200 мкф и 1000мкф , четыре керамических кондера

 (два по 0.1мкф и два по 22пф) , стабилизатор 5в. (подойдет любой 7805) , кварц 16мгц и

 резистор 4.7- 10КОм (0.25Вт).

ВСЕ !

Я делал ЛУТ для такой платы и для комбинированой с драйвером мотров l293dne

(минимальный робоконтроллер). Если надо я скину.

Но у такой платы есть весомый недостаток - ее нельзя прошивать (в плату ставится уже прошитый МК) и ее

нельзя связать с компом по serial.

Но выход есть - любой usb-uart адаптер на микросхеме pl2303 или ft232

(на моей плате выведены раземы под uart). Я делал адаптер из древнего датакабеля  

(самый простой и дешевый вариант).

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>Вроде, есть возможность с помощьб Ардуино запрограммировать внешний контроллер?<< 

Кстати , можно. При наличии атвтозагрузчика. Я как то два МК прошил  одновременно

(одной и той же программой) .

Тупо запаралелил rx tx и reset у двух МК.

RZ296
Offline
Зарегистрирован: 27.02.2012

nestandart, большое спасибо!

На работе подарили Attiny 261A-SU, вот на него, наверное, попробую залить после выходных. Надеюсь, что так или иначе получится. Вообще, хочется обойтись без внешнего кварца- дольше его покупать буду, чем голову ломать с флагами, или нет?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Дуина с тиньками не дружит. А кварц  дуине необходим.

Нужны вам эти танцы с бубном ? Купите атмегу 168 или 328.

leshak
Offline
Зарегистрирован: 29.09.2011

> Attiny 261A-SU

Честно говоря Attiny не трогал никогда, точно знаю что "это возможно", но вот то что это не совместимо с "сделать устройство с минимальными потерями нервных клеток" практически уверен (хотя, возможно не так страшен черт...)

>Вообще, хочется обойтись без внешнего кварца- дольше его покупать буду, чем голову ломать с флагами, или нет?

Ну, на сколько я понимаю с флагами и так и так прийдется "ломать". Готовых флагов для attiny в boards.txt - нема. Ну и бутлоадер искать...

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

Ну и с внутренним, кроме нестабильности, вы не сможете поднятся выше 8mhz. А некоторые ардуино библиотеки предполгают дефолтные 16mhz. Все это конечно лечится игрой с делителями, подкручиванием таймингов и т.п. Но как-то слабо согласуется с "не морочить голову". Вот если цель "освоить Amtel получше" - тогда да. Это хороший и перспективный путь/

 

RZ296
Offline
Зарегистрирован: 27.02.2012

leshak, еще раз большое спасибо! Картинка хорошая- если-таки буду использовать 168 вместо подаренного Attiny 261A-SU, пригодится.

Что до доступности элементов- я из Москвы, купить-то тут можно все, но ехать за этим- потерять полдня. В общем, посмотрим- до субботы или воскресенья мне будет не до экспериментов, а там и поглядим.

leshak
Offline
Зарегистрирован: 29.09.2011

 Ну удачи :)

Может code.google.com/p/arduino-tiny/ пригодится.

Но я бы, конечно, не шел этим путем. Даже если "хочется освоить Attiny" - вначале освоил-бы "прошивку стандартного кристала", "с кварцем или без" и т.п. То есть старался что-бы в каждый момент времени было как можно меньше "неизвестных". А то вот соберете и - "не работает", а  "куда смотреть"  неведомо. 10-тысяч возможных причин.

 

whoim
Offline
Зарегистрирован: 03.11.2011

 При "уменьшении" проекта имейте ввиду - ATTiny45 стоит почему то вдвое дороже AtMega8L

8L работает на 8 мгц, бутлоадер есть.

По поводу создания устройства под ключ - освойте Sprint Layot 5, нарисуйте печатку, напечатайте зеркальное отображение на лазерном принтере на журнальной бумаге (там где текст максимально), приложите к текстолиту и засуньте два раза в ламинатор при 160 градусах. Под краном смойте бумагу и в хлорное железо.

Далее - дырки и паять ) Предусмотрите разъем ISP, шестипиновый. 
Сразу делайте под SMD, паять их не так сложно как вы думаете. Атмега8 в TQFP - аккуратно располагаете на залуженных дорожках и одну ногу прихватываете секуундным тычком. Проверяете, двигаете и прихватываете ногу напротив. Ну а там по очереди.

Все прозвоните перед первым стартом.