Приставка для управления блоком ворот.

AVR версия программы

Приставка для управления блоком ворот.

Сообщение Вольдемар (laser_62) » 20 фев 2017, 18:25

Прошу помощи у знатоков. Не судите строго, я "железячник" не "прогер". ПЛИЗ!!! Описание: приставка подключена к основному блоку подъемных ворот, имеет 4 входа с радиоканала (буду называть как на схеме - кнопками, кн.0-3),
кнопки 4 и 5 - это магнитно-контактные датчики (СМК), 4-й - нижний, 5-й установлен выше, и кнопка 6 - ручное управление (аналог кн.0). Выходы: LED1 - дает высокий импульс на основной блок для поднятия\опускания ворот, LED2 - включение внутреннего освещения, LED3 - включение внешнего освещения, LED4 - подключен зуммер.
Работа: Нажатие кн.0 - ворота подымаются или опускаются. Кн.1 - приоткрытие ворот (импульс-пауза-импульс). Кн.2 - триггер внутреннее освещение, кн.3 - триггер внешнее освещение, кн.6 - (аналог кн.0) - обычная кнопка.
Эта часть работает, хотя смущает что в части кнопки 1 стоит "delay".
Работа кн.4 и 5. Изначально на входах "1". Ворота подымаются, кн.4=1, кн.4=0, кн.4=1, кн.5=1, кн.5=0, кн.5=1, включается внутр. и внешн. освещение LED2 и LED3, и коротко LED4,..(опять смущает что через"delay"). При опускании
ворот естественно все наоборот. Все это работает в "железе", проблема в том, что пока не отработают кнопки 4 и 5 , дальше программа не выполняется, стоит, и на кнопки 0,1,2,3,6 нет реакции, хотя они должны быть в приоритете.
И желательно дописать следующее, если в течении допустим 5 минут не было никаких действий с кнопками, то освещение выключается.
Как написать с прерываниями я не знаю, поэтому прошу помощи, просьба не посылать искать примеры....мозг и так вылазит. Брал готовые примеры на работу триггера, в Flowcode вроде работает, а в протеусе нет. По примерам наварганил сам, работает и в "железе". А вот с прерываниями, таймерами и флагами пока не дружу. Может где то , что то не так написал, ткните носом, и если сможете помогите начинающему в Flowcode.
С уважением ко всем и спасибо!
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Вольдемар
Имя: laser_62
(Киев)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Приставка для управления блоком ворот.

Сообщение agent_serg (agent_serg) » 21 фев 2017, 13:59

Delay - это ЗЛО, а при Ваших значениях - это кошмар.
Во время активации delay процессор тупо останавливается на этом месте и ничего больше не делает.
Попробуйте разобраться с использованием прерывания по таймеру. Это просто.
У вас нет доступа для просмотра вложений в этом сообщении.
Делай не как хочется, а как надо и тогда всё будет как хочется...
-------------------------------------------------------------------------------------------------------
FC AVR v5.5.2.1 / Proteus v7.8 SP2 / AVRISP mkII и Triton+ / Win7 SP1 x64
Аватар пользователя
Ник: agent_serg
Имя: agent_serg
(White City)
Ученик
Ученик
Информация о пользователе

Re: Приставка для управления блоком ворот.

Сообщение Yushik (Андрей) » 21 фев 2017, 18:18

Макрос кнопок "Ждать до низкого" и "ждать до высокого" я использую редко, только в тех случаях если кнопку удерживать долго никто не будет или программе заниматся ничем больше не надо. Так как в этом макросе программа виснет и ничего больше не делает кроме как ждёт другого состояния кнопок. Помнится пользователь ENIGM выкладывал где-то алгоритм опроса кнопки по заднему фронту, который не задерживает ход программы.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: Приставка для управления блоком ворот.

Сообщение agent_serg (agent_serg) » 22 фев 2017, 12:41

Я не совсем понял, когда именно должны использоваться сигналы от кнопок (датчиков) 4 и 5?
Вы описали так:
При подъёме кн.4: 1-0-1 потом кн.5: 1-0-1
При опускании кн.5: 1-0-1 потом кн.4: 1-0-1
То есть, просто мигнули. Так? Это не хорошо.
Надо бы, чтобы было чётко определено что нижний датчик инвертирует свой выход в крайнем нижнем положении ворот, а верхний датчик инвертирует свой выход в крайнем верхнем положении ворот.
Система должна знать можно ли ей ещё открывать или ещё закрывать или уже нельзя. Вы можете показать фото конструкции?
Что значит "даёт высокий импульс на основной блок"?
При приоткрытии ворот тоже надо уточнить: какой длительности импульсы и какой длительности пауза?
Посмотрите приложенный вариант.
У вас нет доступа для просмотра вложений в этом сообщении.
Делай не как хочется, а как надо и тогда всё будет как хочется...
-------------------------------------------------------------------------------------------------------
FC AVR v5.5.2.1 / Proteus v7.8 SP2 / AVRISP mkII и Triton+ / Win7 SP1 x64
Аватар пользователя
Ник: agent_serg
Имя: agent_serg
(White City)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: Приставка для управления блоком ворот.

Сообщение Вольдемар (laser_62) » 23 фев 2017, 09:44

Всем добрый день!!!
Огромное спасибо Сергей, что откликнулся на мою просьбу, мне это самому пока тяжеловато дается. Давай дальше на ТЫ...проще общаться.
Разбирался с первым вложением (20170221), много для себя взял, но до конца с работой триггера так и не разобрался, в железе работает а в Flowcode пошагово не проходит, или я чего то не понимаю. Но об этом позже.
Сначала и по порядку. Что бы понять задачу, постараюсь по подробнее.
Эта приставка (схема вложена) - дополнение к основному блоку управления воротами (там сдох радиоканал). Что бы им управлять достаточно кратковременного положительного импульса (нажал-отпустил кнопку). Если ворота закрывались
то они поднимаются, если открывались закрываются. Для этого отведен выход PB.7 и вход PD.0. Вход PD.1 служит для тех же целей, с той разницей что бы реализовать режим "проветривание", то есть нажимаем кратковременно кнопку
пульта - прошел положительный импульс, и через некоторое время (в программе его нужно будет подбирать), прошел аналогичный импульс что бы ворота остановились. Очень полезная функция для дистанционного прогрева авто в зимний период, ворота выходят на улицу, и полностью открытый гараж не оставишь. А щель в 15 см самое то. Для этого и нужен подбор времени для повторного импульса.
На этом связь с основным блоком заканчивается, дальше переферия.
Для удобства - включение и выключение освещения и подтверждающий звуковой сигнал. СМК (датчики)(рисунок вложение) служат для того что бы смотреть направление движения ворот и включение - выключение освещения + подача звукового сигнала.
И здесь описан тот алгоритм. Ворота поднимаются - магнит доходит до СМК_1 - дает сработку на СМК_1 (СМК_1 замкнуто), прошел выше - СМК_1 (СМК_1 отпустило), магнит доходит до СМК_2 ( СМК_2 - замкнуло), и дальше опустило. Это значит что ворота открываются и нужно включить освещение (порты PB.6 и PB.5), и подать кратковременно сигнал на порт PB.4 - зуммер (время подобрать - что бы не долго). Ну при опускании ворот - наоборот, СМК_2, СМК_1, свет выкл. - зуммер.
Порты PD.2 и PD.3 для ручного управления освещением, допустим работаю в гараже - свет снаружи не нужен - нажал кнопку на брелке и выключил.
Кнопка (порт PD.6) установлена при выходе из гаража, если ухожу не обязательно доставать из кармана брелок, нажал ее и ворота закрылись. Она дублирует команду порта (PD.0).
Если можно найти другие решения - предлагай будем думать. Скажу только что аналогичное устройство с 2010 года у меня работало, только были некоторые недоработки. Плата установлена в отдельном корпусе, МК 2313 - все входы и выходы соответствуют. Стоит заменить прошивку и в железе ничего менять не нужно. Друг когда то набросал программу в "IAR" за 2 часа - поэтому и недоработки. Хочется что бы по взрослому.
Пошел разбиратся с твоим вложением. Еще раз спасибо. С уважением....
Ник: Вольдемар
Имя: laser_62
(Киев)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Приставка для управления блоком ворот.

Сообщение Вольдемар (laser_62) » 23 фев 2017, 11:03

Сори.....Вложения забыл добавить.....
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Вольдемар
Имя: laser_62
(Киев)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Приставка для управления блоком ворот.

Сообщение agent_serg (agent_serg) » 23 фев 2017, 11:27

Вольдемар писал(а):Разбирался с первым вложением (20170221), много для себя взял, но до конца с работой триггера так и не разобрался, в железе работает а в Flowcode пошагово не проходит, или я чего то не понимаю.
Однозначно, если работает, значит ещё предстоит понять.
МК (микроконтроллер) соображет быстро, люди медленнее.
Некоторые участки программы обрабатываются всего лишь в течении одного цикла программы. В нашем случае я решил это опросом состояния переменных Enable_key_xx.

Вольдемар писал(а):Если ворота закрывались, то они поднимаются, если открывались закрываются.
Значит добавляем переменную, которая будет запоминать предыдущее действие (по сути, получится триггер).
Тут вопрос: после отключения питания, какое действие будет первым, открывание или закрывание?

Вольдемар писал(а):и подать кратковременно сигнал на порт PB.4 - зуммер
Зуммер - это законченное изделие или надо для него генерировать звуковую частоту?

И по контролю положений. Посмотрите на рисунок. Как МК узнает, что ворота уже полностью открыты? Чего-то я не понимаю...
У вас нет доступа для просмотра вложений в этом сообщении.
Делай не как хочется, а как надо и тогда всё будет как хочется...
-------------------------------------------------------------------------------------------------------
FC AVR v5.5.2.1 / Proteus v7.8 SP2 / AVRISP mkII и Triton+ / Win7 SP1 x64
Аватар пользователя
Ник: agent_serg
Имя: agent_serg
(White City)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: Приставка для управления блоком ворот.

Сообщение mim (mim) » 23 фев 2017, 17:25

Для правильного построения счетчика времени и опроса порта, я бы посоветовал ознакомится вот с этой программой (BUTTON_DELAY_1.rar)... А заодно и всю тему прочтите. Вы бы удивились до чего простой автомат у вас бы получился....
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Приставка для управления блоком ворот.

Сообщение Вольдемар (laser_62) » 23 фев 2017, 20:34

agent_serg писал(а): Вольдемар писал(а):
Если ворота закрывались, то они поднимаются, если открывались закрываются.

Значит добавляем переменную, которая будет запоминать предыдущее действие (по сути, получится триггер).
Тут вопрос: после отключения питания, какое действие будет первым, открывание или закрывание?


Триггера не нужно, он уже установлен в основном блоке...на этот блок подаем положительный импульс, одиночный (или двойной для приоткрытия ворот) и все. СМК никакой роли в подъеме не играет, только включение освещения, которое должно включиться когда ворота открыты и выключится - когда закрыты. Вот они и отслеживают подъем или опускание ворот. Сработал СМК_1, потом СМК_2 - значит ворота подымаются, свет включается + (короткий зуммер). Сработал СМК_2, потом СМК_1 - ворота опускаются свет выключаеться + (короткий зуммер).
Основной блок отслеживает сам когда ворота открыты или закрыты (это законченное заводское устройство на мега8). Он управляется одной кнопкой - положительным импульсом (подключен - вход (на схеме кнопка 1) к порту PD.0, и выход к порту РВ.7.). Кнопка 2 подключена к порту PD.1, и выход к порту РВ.7, тоже должна давать положительный импульс с той разницей что (допустим через 5 сек) этот импульс повторяется - то есть, неважно в каком положении ворота, роль такова - нажали кнопку - началось движение ворот и через 5 сек повторным импульсом они остановились. То есть приоткрылись или призакрылись...не важно.

agent_serg писал(а): Вольдемар писал(а):
и подать кратковременно сигнал на порт PB.4 - зуммер

Зуммер - это законченное изделие или надо для него генерировать звуковую частоту?


Законченное изделие, с генератором, еденица - пищит, 0 - молчит.

agent_serg писал(а): Вольдемар писал(а):
и подать кратковременно сигнал на порт PB.4 - зуммер

Зуммер - это законченное изделие или надо для него генерировать звуковую частоту?

И по контролю положений. Посмотрите на рисунок. Как МК узнает, что ворота уже полностью открыты? Чего-то я не понимаю...


Написал выше......полностью открытие контролирует основной блок, мы же направление движения с помощью СМК. Длинна импульса примерно 500ms, как у обычного любого брелка с ДУ.
Триггеры на портах PD.2 и PD.3 (внутренние и внешнее освещение) + отключение при бездействии - то что нужно.

mim писал(а):Для правильного построения счетчика времени и опроса порта, я бы посоветовал ознакомится вот с этой программой (BUTTON_DELAY_1.rar)... А заодно и всю тему прочтите. Вы бы удивились до чего простой автомат у вас бы получился....


Спасибо, важна любая информация........учиться никогда не поздно (если честно - всю жизнь учусь). Но практическая помощь приветствуется, я за неимением опыта пошел в лоб, Сергей знает намного больше и в него другой подход.
Может еще кто то присоеденится.
С уважением ко всем......
Ник: Вольдемар
Имя: laser_62
(Киев)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Приставка для управления блоком ворот.

Сообщение Вольдемар (laser_62) » 24 фев 2017, 21:05

Добрый день!
Проверил в железе, блоки - (триггер: кнопка_03), (триггер: кнопка_02), работают, только сами сбрасываются через 5 сек. Получился самосбрасывающийся триггер.
В блоке - приоткрытие ворот - изменил значение с 9765 на 976 (~0,5 сек)- получилось так как и хотелось. Проблема в том, что при подаче питания этот двойной импульс один раз проскакивает, а потом работает как нужно. В протеусе этого не видно, только на железе. Может дребезг контактов?
В триггерах, как я понимаю антидребезг уже прописан.
Ну и первый блок - (триггер: кнопка_01), должен работать по принципу второго блока, только без повторного импульса. Контороль отключения при бездействии не смог проверить, так как эти выходы сбрасываются раньше.
С уважением!
Ник: Вольдемар
Имя: laser_62
(Киев)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

След.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей