ATmega48PA-AU + Led-strip 12V

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 3
Зарегистрирован: Вс мар 11, 2012 22:51:04

Сообщение Edu@rd »

Доброе время суток! В жизни не доводилось с нуля собирать электронные устройства, так мелкие перепайки выгоревших деталей. Сейчас решил, что нужно наверстать упущенное, тем более есть жизненная необходимость. Делаю ремонт и хотелось бы реализовать вот какую штуку: лестница -13 ступеней, на подступке каждой 13 кусков Led ленты 12в. Два выключателя, импульсные (т.е. без фиксации) - внизу, вверху. Нажимая нижнюю клавишу, ленты на подступках загораются поочередно (!)снизу-вверх с задержкой (допустим ) в 1с. и продолжают гореть пока не нажмут (!)любой выключатель. Нажимая верхнюю - загораются поочередно (!)сверху-вниз с задержкой в 1с. и продолжают гореть пока не нажмут (!)любой выключатель. Недельку покопавшись в интернете накопал много схем решения которых процентов на 70 описывают мою ситуацию, но отсутствие опыта и познаний не позволяют самостоятельно подкорректировать оставшиеся 30%. В общем на что я сгоден, так это во Flowcode смоделировал алгоритм (Который прошу помочь оптимизировать) и попытался сделать модель в Протеусе, но там что-то не пошло (тоже прошу подсказать ошибки).
+ есть вопросы. Есть ли существенное отличие (нужно ли редактировать прошивку) между ATmega48PA-AU и ATmega48P или только отличие в корпусном исполнении? Как, добавив еще 2 клавиши, изменять время задержки во время прохождения цикла поочередного включения ленты? Сложнее или легче реализовать эту задачу на PICе и может кто-то посоветует более дешевый МК?
Вложения
Лестница.rar
(18.01 КБ) 273 скачивания
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 81
Зарегистрирован: Сб ноя 12, 2011 23:15:33
Откуда: Россия, Псков

Сообщение Kapkan »

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

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

"Сложнее или легче реализовать эту задачу на PICе и может кто-то посоветует более дешевый МК?"
- Не знаю, работал только с AVR Atmega. Если я правильно понял задачу, то тут хватит и ATMega8, она стоит рублей 90 , а тут вообще 70 http://electronlab.ru/pi/products_id/94151

"нужно ли редактировать прошивку) между ATmega48PA-AU и ATmega48P или только отличие в корпусном исполнении?"
- Не нужно.

В общем, написать прошивку не такая уж и большая проблема. Завтра могу помочь, хотя тут спецов много :) , может кто раньше её напишет. Просто у нас уже 4 часа ночи :shock:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Edu@rd писал(а):Как, добавив еще 2 клавиши, изменять время задержки во время прохождения цикла поочередного включения ленты?
Можно обойтись существующими кнопками. Например проанализировать длительность нажатия, и если она более 5 секунд (например) - то переходить в режим программирования задержки, индикацию режима можно оформить миганием одно из ступенек. А там уже вариантов много, можно этой-же кнопкой перебирать в цикле задержки 0.5-1-2-10 секунд, можно нажать и держать и измерять интервал, можно нажать одну, потом вторую и время разделить на количество ступенек (как раз получится что свет включается перед каждым шагом на очередную ступеньку). Никто кстати не мешает без малейшего изменения схемы сделать плавное включение-выключение ступенек :))
Что касается стоимости, то можно использовать 32 разрядные контроллеры STM32, вроде они стоят от 30р, но их еще надо изучать и Flowcode тут точно не прокатит.
Можно взять семейство AVR помельче, например Tiny24 можно найти за 70р, а от 10шт по 40р, правда к ней еще придется пару регистров приделать. Чуть подороже есть Tiny2313, ей регистров не нужно, выводов как раз хватит для пары кнопок и 13 ступеней. Хотя не, там где я смотрю мега48 все равно дешевле...
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

на Flowcode не писал, могу предложить вариант на WinAVR
Вложения
steps.zip
(24.95 КБ) 234 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 3
Зарегистрирован: Вс мар 11, 2012 22:51:04

Сообщение 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и (сейчас точно не скажу какие), но цена там была выше при том же потенциале к выполнению данной задачи.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 81
Зарегистрирован: Сб ноя 12, 2011 23:15:33
Откуда: Россия, Псков

Сообщение Kapkan »

Если сравнивать ATmega8 и ATMega48, то ATMega8 в чем то выигрывает , например, у неё больше флеш памяти (8кб) у 48-ой всего 4. Больше оперативы (1 кб), у ATmega48 всего 512 байт. Но ATMega48 работает при более высокой частоте, поэтому она дороже.
В своем сообщении вы просили посоветовать более дешевый МК, ATMega48 cтоит 130 рублей, а ATMega8 - 74 рубля.(я не знаю цен в вашем магазине :) ) Для решения данной задачи большая скорость не нужна, поэтому я посоветовал ATMega8.

А что касается преимуществ этих МК для данной задачи, то никаких. Любой из этих МК нормально справится с этой задачей.Так же и STM32.

А что касается PICов, то слышал, что они дороже AVRок. И программировать их немного сложнее.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Edu@rd писал(а):ATmega48PA-AU стоит в среднем $1.3, STM32F100C4T6B - $1.27. В чем преимущество STM32 для данной задачи, есть ли смысл заморачиваться в познании нового (32-хбитного) пока еще толком основы не ясны (те самые PICи и AVRы)?
Если в вашем магазине такая маленькая разница в ценах, то конечно смысла нет. В любом случае мега гораздо проще в освоении и запросто справляется с такими задачами. На самом деле я сам стараюсь для каждой задачи использовать контроллер с минимально возможными ресурсами.
Edu@rd писал(а):Вопрос: я понятия не имею как заставить МК различать краткое нажатие от длительного?
Нужно после нажатия кнопки запустить таймер, а после отпускания смотреть сколько натикало, если "мало" - обычный алгоритм включения ступенек, если "много" - переход в режим программирования задержки.
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

Edu@rd писал(а):a_skr как я понял, в твоем варианте чтение кнопок скорости происходит в первом цикле, так есть в момент когда LEDы зажигаются сколь не клацай. скорость не изменится. Когда LEDы все горят, реакция на клавишы та же, то есть в следующий раз все загорается с тем же интервалом что и в предыдущий. хотелось что бы это происходило так сказать, синхронно, нажал - и видишь результат.
поправил ради от нечего делать:
1. можно остановить в момент движения любой кнопкой.
2. оставил 2 кнопки:
нижняя - запускает движение вверх или включает/выключает режим настройки №1 при удержании более 2 сек;
верхняя - запускает движение вниз или включает режим настройки №2 при удержании более 2 сек.
режим настройки №1: лесенка бегает вверх-вниз с текущей скоростью, при этом верхняя кнопка увеличивает скорость, нижняя - уменьшает в 2 раза. выход - удержание нижней кнопки более 2 секунд.
режим настройки №2: вначале мигает средний ряд, после нажатия любой кнопки начинается отсчет времени и мигает нижний ряд, после еще одного нажатия любой кнопки отсчет заканчивается, производится соотв. настройка скорости и выход из режима.
3. убрал из протеуса все лишнее.
Вложения
steps2.zip
(17.2 КБ) 238 скачиваний
Родился
Сообщения: 3
Зарегистрирован: Вс мар 11, 2012 22:51:04

Сообщение Edu@rd »

Всем спасибо за помощь, в частности a_skr за рабочие прототипы в PROTEUSе! Будем реализовывать!
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

Edu@rd писал(а):Всем спасибо за помощь, в частности a_skr за рабочие прототипы в PROTEUSе! Будем реализовывать!
надеюсь, не зря свободное время потратил :beer:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»