В контроллерах я мягко говоря не очень, посему прошу помощи. Устройство должно одной кнопкой без фиксации управлять двумя нагрузками и иметь третье, неактивное состояние. Т.е при нажатии и удержании кнопки (2-3 сек) подключается одна нагрузка, при обычном, кратковременном нажатии, нагрузки должны переключаться неограниченое количество раз. И опять же при нажатии и удержании устройство должно отключиться, т.е ни одна нагрузка не должна быть подключена... Как то так...
А контроллер обязательно? Можно взять RC-цепочку, заряжаемую кнопкой, напряжение с нее подавать на 2 компаратора с разными порогами, выходы компараторов на 2 счетных триггера. Один триггер включает/выключает нагрузку, второй переключает. Хотя на контроллере конечно схема попроще будет.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Если с длительным нажатием более-менее понятно(и то, какая из двух?)
без разницы, но при первоначальном включении всегда одна и та же
pyzhman писал(а):
то вот это:
serega-29 писал(а):
при обычном, кратковременном нажатии, нагрузки должны переключаться неограниченое количество раз.
совершенно невсасываемо.
а что тут не всасываемо? сколько раз кратковременно не нажимал бы, что б состояние нагрузок поочередно изменялось - 1-я вкл 2-я выкл, кнопочку нажал - наоборот 1-я выкл 2-я вкл и т.д.
Проще кому ? Могу для PIC32 написать, я как раз их изучаю Боюсь, другие МК не потянут такую задачу
Так сложно? Может ну его... Старый добрый механический переключатель и проблема решена. Не так эстетично и технологично, зато дешево и практично, как говаривал небезызвестный персонаж...
//прототипы функций char BtnGet (void);//ф-ция опроса кнопки
//---------- //Главная функция int main (void) { DDRB =(LedLine1| LedLine2);//включение линий порта на вывод PORTB = BtnLine;//включит подтяжку на кнопке
while(1)//бесконечный цикл { char BtnMask = BtnGet();//опрос кнопки
if (BtnMask & BtnShort){//проверка на короткое нажатие
if (LedPORT & LedLine1) LedPORT = LedLine2;//если светик 1 был включен, выключить его и включить 2-й else LedPORT = LedLine1;//если светик 2 был включен, выключить его и включить 1-й }
if (BtnMask & BtnLong){//проверка на длинное нажатие
if (LedPORT &(LedLine1| LedLine2)) LedPORT = 0;//если хоть какой-то светик был включен, выключить все else LedPORT = LedLine1;//если оба светика были выключены, включить 1-й } } }
//---------- //ФУНКЦИЯ ОБРАБОТКИ НАЖАТИЯ КНОПКИ //ЗНАЧЕНИЕ - маска нажатой кнопки (короткое\ длинное нажатия) char BtnGet (void) { //задержки обработки событий кнопки #define BtnLockTime 30 /*время обработки дребезга в милисекундах (10-100)*/ #define BtnLongPressTime 1000 /*время фиксации длинного нажатия в милисекундах (1000 - 2500)*/
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения