Страница 1 из 1
ATmega48PA-AU + Led-strip 12V
Добавлено: Вс мар 11, 2012 23:26:41
Edu@rd
Доброе время суток! В жизни не доводилось с нуля собирать электронные устройства, так мелкие перепайки выгоревших деталей. Сейчас решил, что нужно наверстать упущенное, тем более есть жизненная необходимость. Делаю ремонт и хотелось бы реализовать вот какую штуку: лестница -13 ступеней, на подступке каждой 13 кусков Led ленты 12в. Два выключателя, импульсные (т.е. без фиксации) - внизу, вверху. Нажимая нижнюю клавишу, ленты на подступках загораются поочередно (!)снизу-вверх с задержкой (допустим ) в 1с. и продолжают гореть пока не нажмут (!)любой выключатель. Нажимая верхнюю - загораются поочередно (!)сверху-вниз с задержкой в 1с. и продолжают гореть пока не нажмут (!)любой выключатель. Недельку покопавшись в интернете накопал много схем решения которых процентов на 70 описывают мою ситуацию, но отсутствие опыта и познаний не позволяют самостоятельно подкорректировать оставшиеся 30%. В общем на что я сгоден, так это во Flowcode смоделировал алгоритм (Который прошу помочь оптимизировать) и попытался сделать модель в Протеусе, но там что-то не пошло (тоже прошу подсказать ошибки).
+ есть вопросы. Есть ли существенное отличие (нужно ли редактировать прошивку) между ATmega48PA-AU и ATmega48P или только отличие в корпусном исполнении? Как, добавив еще 2 клавиши, изменять время задержки во время прохождения цикла поочередного включения ленты? Сложнее или легче реализовать эту задачу на PICе и может кто-то посоветует более дешевый МК?
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Пн мар 12, 2012 03:19:20
Kapkan
А алгоритм следующий. (Прошивки пишу на Микропаскале, с Си не очень знаком)
Создаем бесконечный цикл и в этот цикл помещаем 2 процедуры обработки нажатия клавиш.
В каждую из этих процедур помещаем по бесконечной процедуре с условием (ожидание нажатия любой из кнопок)
В каждом из этих бесконечных циклов с условием будет написан алгоритм зажигания светодиодных лент (просто ставим логическую единицу и сбрасываем в ноль пины по очереди, к которым подключены ленты, с задержкой в одну секунду) .
Как только нажата одна из кнопок (условие выхода из цикла) МК выходит из этого цикла и выполняет первый бесконечный цикл (ожидание нажатия кнопок(ленты выключены))
"Как, добавив еще 2 клавиши, изменять время задержки во время прохождения цикла поочередного включения ленты?"
- Просто добавив переменную в программу МК. А в процедуре задержки вместо конкретного значения указать имя этой переменной.
И добавив еще 2 процедуры обработки нажатия кнопок, при нажатии на одну - переменная увеличивается (например на 100мс), на другую - уменьшается.
"Сложнее или легче реализовать эту задачу на PICе и может кто-то посоветует более дешевый МК?"
- Не знаю, работал только с AVR Atmega. Если я правильно понял задачу, то тут хватит и ATMega8, она стоит рублей 90 , а тут вообще 70
http://electronlab.ru/pi/products_id/94151
"нужно ли редактировать прошивку) между ATmega48PA-AU и ATmega48P или только отличие в корпусном исполнении?"
- Не нужно.
В общем, написать прошивку не такая уж и большая проблема. Завтра могу помочь, хотя тут спецов много

, может кто раньше её напишет. Просто у нас уже 4 часа ночи

Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Пн мар 12, 2012 08:48:48
Engineer_Keen
Edu@rd писал(а):Как, добавив еще 2 клавиши, изменять время задержки во время прохождения цикла поочередного включения ленты?
Можно обойтись существующими кнопками. Например проанализировать длительность нажатия, и если она более 5 секунд (например) - то переходить в режим программирования задержки, индикацию режима можно оформить миганием одно из ступенек. А там уже вариантов много, можно этой-же кнопкой перебирать в цикле задержки 0.5-1-2-10 секунд, можно нажать и держать и измерять интервал, можно нажать одну, потом вторую и время разделить на количество ступенек (как раз получится что свет включается перед каждым шагом на очередную ступеньку). Никто кстати не мешает без малейшего изменения схемы сделать плавное включение-выключение ступенек
Что касается стоимости, то можно использовать 32 разрядные контроллеры STM32, вроде они стоят от 30р, но их еще надо изучать и Flowcode тут точно не прокатит.
Можно взять семейство AVR помельче, например Tiny24 можно найти за 70р, а от 10шт по 40р, правда к ней еще придется пару регистров приделать. Чуть подороже есть Tiny2313, ей регистров не нужно, выводов как раз хватит для пары кнопок и 13 ступеней. Хотя не, там где я смотрю мега48 все равно дешевле...
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Пн мар 12, 2012 11:40:03
a_skr
на Flowcode не писал, могу предложить вариант на WinAVR
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Пн мар 12, 2012 23:03:14
Edu@rd
Во-первых, Спасибо
всем!Не ожидал такой оперативности
a_skr - спасибо за рабочую модель в протеусе!
Теперь по поводу изменения скорости: условно разделим программу на три цикла - 1)ожидание включения 2)собственно, зажигание 3)ожидание отключения - и все заново.
a_skr как я понял, в твоем варианте чтение кнопок скорости происходит в первом цикле, так есть в момент когда LEDы зажигаются сколь не клацай. скорость не изменится. Когда LEDы все горят, реакция на клавишы та же, то есть в следующий раз все загорается с тем же интервалом что и в предыдущий. хотелось что бы это происходило так сказать, синхронно, нажал - и видишь результат.
Engineer_Keen, ATmega48PA-AU стоит в среднем $1.3, STM32F100C4T6B - $1.27. В чем преимущество STM32 для данной задачи, есть ли смысл заморачиваться в познании нового (32-хбитного) пока еще толком основы не ясны (те самые PICи и AVRы)? По поводу "нажать одну, потом вторую и время разделить на количество ступенек" - мне понравилась идея. Длительным (2-5 сек) нажатием выводишь в режим отсчета в этот момент все ступени моргают (сигнализируют). нажатие этого же выключателя не меняет ничего - возвращает в рабочий режим, противоположного сохраняет задержку=T/N и возвращает в рабочий режим. Спасибо -) отличная идея для "двухкнопочного". Вопрос: я понятия не имею как заставить МК различать краткое нажатие от длительного?
Kapkan Тот же вопрос - цена с ATmega48PA-AU почти одинаковая (ATmega48PA-AU даже на копейки выигрывает), в чем практическое преимущество ATMega8? ATmega48PA-AU была выбрана по принципу "что в магазине было" когда приценялся, то есть эта МК точно есть в наличии и на нее можно расчитывать. Из других вариантов было предложено PICи (сейчас точно не скажу какие), но цена там была выше при том же потенциале к выполнению данной задачи.
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Вт мар 13, 2012 00:36:11
Kapkan
Если сравнивать ATmega8 и ATMega48, то ATMega8 в чем то выигрывает , например, у неё больше флеш памяти (8кб) у 48-ой всего 4. Больше оперативы (1 кб), у ATmega48 всего 512 байт. Но ATMega48 работает при более высокой частоте, поэтому она дороже.
В своем сообщении вы просили посоветовать более дешевый МК, ATMega48 cтоит 130 рублей, а ATMega8 - 74 рубля.(я не знаю цен в
вашем магазине

) Для решения данной задачи большая скорость не нужна, поэтому я посоветовал ATMega8.
А что касается преимуществ этих МК
для данной задачи, то никаких. Любой из этих МК нормально справится с этой задачей.Так же и STM32.
А что касается PICов, то слышал, что они дороже AVRок. И программировать их немного сложнее.
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Вт мар 13, 2012 08:48:05
Engineer_Keen
Edu@rd писал(а):ATmega48PA-AU стоит в среднем $1.3, STM32F100C4T6B - $1.27. В чем преимущество STM32 для данной задачи, есть ли смысл заморачиваться в познании нового (32-хбитного) пока еще толком основы не ясны (те самые PICи и AVRы)?
Если в вашем магазине такая маленькая разница в ценах, то конечно смысла нет. В любом случае мега гораздо проще в освоении и запросто справляется с такими задачами. На самом деле я сам стараюсь для каждой задачи использовать контроллер с минимально возможными ресурсами.
Edu@rd писал(а):Вопрос: я понятия не имею как заставить МК различать краткое нажатие от длительного?
Нужно после нажатия кнопки запустить таймер, а после отпускания смотреть сколько натикало, если "мало" - обычный алгоритм включения ступенек, если "много" - переход в режим программирования задержки.
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Вт мар 13, 2012 15:12:53
a_skr
Edu@rd писал(а):a_skr как я понял, в твоем варианте чтение кнопок скорости происходит в первом цикле, так есть в момент когда LEDы зажигаются сколь не клацай. скорость не изменится. Когда LEDы все горят, реакция на клавишы та же, то есть в следующий раз все загорается с тем же интервалом что и в предыдущий. хотелось что бы это происходило так сказать, синхронно, нажал - и видишь результат.
поправил ради от нечего делать:
1. можно остановить в момент движения любой кнопкой.
2. оставил 2 кнопки:
нижняя - запускает движение вверх или включает/выключает режим настройки №1 при удержании более 2 сек;
верхняя - запускает движение вниз или включает режим настройки №2 при удержании более 2 сек.
режим настройки №1: лесенка бегает вверх-вниз с текущей скоростью, при этом верхняя кнопка увеличивает скорость, нижняя - уменьшает в 2 раза. выход - удержание нижней кнопки более 2 секунд.
режим настройки №2: вначале мигает средний ряд, после нажатия любой кнопки начинается отсчет времени и мигает нижний ряд, после еще одного нажатия любой кнопки отсчет заканчивается, производится соотв. настройка скорости и выход из режима.
3. убрал из протеуса все лишнее.
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Вт мар 13, 2012 21:14:28
Edu@rd
Всем спасибо за помощь, в частности a_skr за рабочие прототипы в PROTEUSе! Будем реализовывать!
Re: ATmega48PA-AU + Led-strip 12V
Добавлено: Вт мар 13, 2012 21:56:47
a_skr
Edu@rd писал(а):Всем спасибо за помощь, в частности a_skr за рабочие прототипы в PROTEUSе! Будем реализовывать!
надеюсь, не зря свободное время потратил
