Акустический выключатель с использованием микроконтроллера

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Акустический выключатель с использованием микроконтролле

Сообщение Ser60 »

А в чем была проблема?
Реклама
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Если в общем и чесно то во мне конечно. Если более конкретно, то от незнания тоесть отсутствия практики программирования МК для работы с фазовым регулятором. А сам проект мной задумывался именно с целью получения практического опыта в этой сфере. Ибо ничего и нигде так хорошо не изучается как на практике.
В самом начале, не имея подсказок или важных маркеров, получилось, что при написании программы пошел по идеальному пути. Практика почазала, что это не есть гуд.
Дальше, схема проэктировалась, как минималистская. В результате я оказался от импульсного источника питания, а значит гальванической развязки. "В корзину пошли" всем привычные опторазвязки как по входу, так и по выходу. За ними, - диодный мост для 100 Гц детектора нуля, и все, что там еще можно было подцепить. С мелким трепетом - ключевой стабилизатор на полевике. Сначала было страшно, вдруг мощности стабилитрона не хватит и все пойдет "на смарку", но пронесло... Расчеты не подвели. Даже резисторы на информационных светодиодах решился уменьшить, держит однако.
Правда решил не экономить на буферном транзисторе и на нем "обжегся"... Тоесть не на нем лично, ибо он умудрился "пережить" аж 4 симмистора. (Это мои потери в ходе разработки плюс один стабилитрон, но зато МК живой) Оказывается я от незнания либо "вгонял" управление симистора в так называемый 4 квардант либо временем открываемого импульса превышал мощность тока управляющего електрода симистора. Вот пока "допер", - 4 "трупика". Жаль никто не подсказал...
Теперь по программе, я сначала сделал управление по возрастающему и ниспадающему фронтах детектора нуля. Так все казалось будет лучше и точнее, но на практике помехи сети через ниспадающее прерывание вводят в хаос всю систему. И в результате, вместо фазового детектора, получался непредсказуемый сжигатель симмисторов. Пришлось побороть гордость и "перелопатив" кучу страниц интернета согласиться на 50 Гц систему управления. Там же нашел обьяснение как повысить помехоустойчивость. Ну что ж, пол часа бесперырвной работы это боле чем надо...
Теперь осталось снова присоединить к опробованой программме все ранее набросанные подпрограммы и снова испытать.
Короче, кому интересно ждите, доделаю, отпишусь.
Почему-то всегда приходится программировать то, что невозможно запаять...
Реклама
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Продолжаю тему, для тех кому интересно.
Сегодня в очередной раз испытал промежуточную версию программного обеспечения. И так, что уже "заложено" в программу:
1.Как и планироваль с самого начала - подключен переключатель режима засветки лампочки - "четко" и "плавно". - работает.
2. Лампочка в зависимости от переключателя включается сразу или плавно. - работает.
3. В режиме "плавно" - полсекунды на плавное включение, отсчет нужного времени (задается в одном месте программы и дальше все само учитывается) и пол секунды на выключение. - работает.
В этом месте у меня есть пока вопрос, как лучше сделать: при выключении лампы просто "бросить" порт управления симмистором в ноль и забыть о нем до следующего включения или оставить управляющие импульсы на "мизере". Так чтобы свечения уже небыло, а нить оставалась теплая. Как Вам такая мысля? Правда тогда "жрать" будет больше. Или сделать на выбор?
4. Подсоединил две АЦПешки. Теперь на свет реагирует светодиод и фоторезистор.
5. Модуль прерывания на звук - работает.
Но это еще не все. Надо востановить все связи подпрограмм и условий "их правильного сожительства", подключить светодиод - реакции на звук и конечно же решить с вышеизложенным вопросом. Тогда будет все.
Хотелось бы увидеть Ваше мнение!
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: Акустический выключатель с использованием микроконтролле

Сообщение Flasher »

Добавь дополнительный переключатель, чтобы можно было выбирать полное погасание лампы или режим слабого свечения. Естественно, что слабое свечение должно быть активно при выборе ламп накаливания.
Полсекунды, на самом деле, много- нить лампы успеет разогреться за несколько полупериодов.
Реклама
Эиком - электронные компоненты и радиодетали
vin_07
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Чт авг 27, 2009 16:19:45

Re: Акустический выключатель с использованием микроконтролле

Сообщение vin_07 »

kotyk7 писал(а):Продолжаю тему, для тех кому интересно.
...или оставить управляющие импульсы на "мизере". Так чтобы свечения уже небыло, а нить оставалась теплая. Как Вам такая мысля?
4. Подсоединил две АЦПешки. Теперь на свет реагирует светодиод и фоторезистор.
5. Модуль прерывания на звук - работает.
а что нового даст такой подготовительный прогрев нити? к тому же ток покоя, видимо, нужно будет подбирать индивидуально под лампы разных мощностей или даже производителей. В общем лишнее это...
Модуль звука как работает? имхо надо после включения лампы вводить тайм-аут секунд на 30, потом секунд 10 микрофон "пасёт" обстановку не нужно ли повторить выдержку, затем более плавное погасание, чтобы в случае необходимости можно было пошуметь до полной темноты. Возможно, предусмотреть отключение этой функции "Повтора выдержки" джампером. как-то так.
Flasher писал(а):Полсекунды, на самом деле, много- нить лампы успеет разогреться за несколько полупериодов.
для глаз что комфортнее резко или плавно переход от темноты?
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Акустический выключатель с использованием микроконтролле

Сообщение Ser60 »

Я за плавный переход от темноты и за полное отключение лампы.

Все-таки интересно в чем конкретно была проблема выхода из строя симисторов. И можно-ли взглянуть на исходник?
Реклама
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Всем привет!
Спасибо за внимание! А главное мнения.
Попробую ответить.
И так: сегодня провел очередное испытание программулины. В даном случае, ради интереса, поробовал, как будет работать режим постоянных импульсов с фазовой регулировкой разумеется. Напомню, что с целью защиты от помех, у меня "теряется" 40мкс на всякие там заморочки от начала положительного периода. Проверка в "железе" показала, что потеря мощности, тоесть яркости, на глаз не заметна. При этом, для обычной лампочки улучшается режим ее использования, что тоже плюс. Но практика показала, что нижнняя граница напряжения, когда присутствует визуальное свечение нити накала в маломощных лампочках, а такие, как правило, и будут использоваться в даном случае, очень мала. Тоесть я уже подаю импульс запуска практически рядом с нулем ниспадающего фронта, а того мизера по нпряжению все еще хватает для ее зажига. Не скажу, что она светит. Это уже не свет, но если присмотреться то видно, что нить нагрета. Завтра попробую еще повысить период задержки, чтобы импульс "стрелял" прямо в "нуль". А то похоже эти импортные симисторы работают даже от ничтожного "мизера". Наши КУ208 давно бы уже "отдыхали" при такой мелочи по току и напряжению.
В таком варианте программа уже собрана в полном обьеме и со всеми наворотами. Правда я для опытов поставил только 3 секунды на засветку, чтобы не долго ждать реакции. Если бы не изьян с засветкой нити (пока я рассматриваю это именно так, хотя в светильнике видно ничего не будет) можно считать программа готова. Но поскольку я буду ее еще "шлифовать" подождите немного.
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Добавь дополнительный переключатель, чтобы можно было выбирать полное погасание лампы или режим слабого свечения. Естественно, что слабое свечение должно быть активно при выборе ламп накаливания.
Ето сделать можно, проблем не вижу. Свободные порты для наплатного переключателя есть. Только сначала с оптимальными, в моем случае,периодами разберусь.

для глаз что комфортнее резко или плавно переход от темноты?
Полсекунды, на самом деле, много- нить лампы успеет разогреться за несколько полупериодов.
Полностью согласен, что можно по быстрому, но, как по мне, визуально глазу приятнее, а мозгу интереснее когда наростание мощности заметно.
Это, как с женщиной "по быстрому", все равно, что "сам с собой левою рукой" - ничего хорошего не запоминается, однако.
Модуль звука как работает? имхо надо после включения лампы вводить тайм-аут секунд на 30, потом секунд 10 микрофон "пасёт" обстановку не нужно ли повторить выдержку, затем более плавное погасание, чтобы в случае необходимости можно было пошуметь до полной темноты. Возможно, предусмотреть отключение этой функции "Повтора выдержки" джампером. как-то так.
Модуль звука заботает практически постоянно на прием. За небольшим исключением, а именно в момент обработки начального прерывания от звука с микрофона и в момент первого включения симистора, - дабы отфильтровать ложные сигналы и помехи по питанию создаваемые самим симистором. В моем случае, во второй версии программы нет возможности в момент "погасания" "вернуть все вспять" и плавно выйти на полную мощность.(Так было в первоначальном варианте) В этой версии - как только лампа вышла в режим, система готова на каждый звук заданной мощности обнулить счет и тем саммым продлить свечение лампы на фиксированное и заданное время. Пока звук присутствует счетчик будет обнулятся с каждым его всплеском, но когда в тишине время счета выйдет, программа перейдет в режим плавного уменьшения мощности (где-то половину секунды) он будет отработан до конца уже в независимисти от наличия появившегося не вовремя звука. Но его появление МК не будет потеряно и лампа опять плавно зажжется, - все начнется сначала. (Для себя, планитую выставить рабочее время в 30 сек. Практика эксплуатации в коридоре аналогичного аналогового устройсва показала, что больше не надо.)
В то же время, в пику начального наростания светового потока, длительная задержка погасания лампы ("чтобы понять и пошуметь") мне не совсем нравиться ибо, как по мне, "ожидание смерти хуже самой смерти" = раздражает!
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

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

Я уже писал, - это смесь ошибки в аналоговой части (неоправданно малое сопротивление между управляющим эллектродом и ключевым транзистором) и программной (ненужно большой по времени импульс включения). В результате вышла "гремучая смесь", которую трудно было "умом понять". Когда фазовый включатель в "нулевой" точке подавал ток на симистор то величины сопротивления было достаточно для максимально возможного тока его включения. Когда импульс приходил в "пиковый" момент фазы то ток в управляющей цепи становился уже чересчур большим. И тогда все - "трупик". (теперь используется импульс в 5мкс, раньше было 200 мкс).
И можно-ли взглянуть на исходник?
Я же обещал, - выложу. Только давайте сначала доведем все до конца, хорошо? Зачем сорить на сайте?
Почему-то всегда приходится программировать то, что невозможно запаять...
vin_07
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Чт авг 27, 2009 16:19:45

Re: Акустический выключатель с использованием микроконтролле

Сообщение vin_07 »

kotyk7 писал(а):во второй версии программы нет возможности в момент "погасания" "вернуть все вспять" и плавно выйти на полную мощность... В этой версии - как только лампа вышла в режим, система готова на каждый звук заданной мощности обнулить счет и тем саммым продлить свечение лампы на фиксированное и заданное время....
после штатного включения секунд 30 акустический датчик будет срабатывать по-любому(нужно дойти до двери, открыть замок, или наоборот, закрыть, дойти до лифта или спуститься на один этаж хотя бы, и это всё не бесшумно), потом включается задержка и лампа светит скорее всего вхолостую (никого уже нет). Так?
kotyk7 писал(а):когда в тишине время счета выйдет, программа перейдет в режим плавного уменьшения мощности (где-то половину секунды) он будет отработан до конца уже в независимисти от наличия появившегося не вовремя звука. Но его появление МК не будет потеряно и лампа опять плавно зажжется, - все начнется сначала.... длительная задержка погасания лампы ("чтобы понять и пошуметь") мне не совсем нравиться ибо....раздражает!
угу.. открываю я замок на двери и тут гаснет свет... я, матерясь, захожу в дверь и, блин, захлопываю её, после чего автомат на полминуты включает лампочку, когда это на.. никому не нужно. Прикольно... и ни разу не раздражает :)
kotyk7 писал(а):
и за полное отключение лампы.
"Тут все от кузнеца зависит", как сделаю так и будет визуально оное будет одиннаково, а устройству будет все равно.
нууу... каждый... делает как он хочет, конечно, но объясните мне смысл, так сказать, физический постоянного поддержания на нити накала начального тока при использовании плавного включения? :shock:
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

после штатного включения секунд 30 акустический датчик будет срабатывать по-любому(нужно дойти до двери, открыть замок, или наоборот, закрыть, дойти до лифта или спуститься на один этаж хотя бы, и это всё не бесшумно), потом включается задержка и лампа светит скорее всего вхолостую (никого уже нет). Так?
Тут похоже мы с Mr.vin_07 не сходимся в идее. На сколько я понял, Вы имеете ввиду акустический выключатель для использования на сходовой клетке, где надо пошуметь, скажем при откритии входной двери, пройти по леснице к своей двери и зашедши в квартиру свет больше не нужен. Тогда да холостой свет - не то. Согласен. Но я делаю (и это написано в первом посте) акустический виключатель для коридора в жилой квартире. Тут другая идеология: Приходиш вечером домой, открываешь ключем замок, открываеш входную дверь, а в коридоре горит свет. Приятно. Искать выключатель в потемках не надо. закрываеш за собой дверь. (стук) Раздеваешься мурлича себе что-то под нос от удовольствия, что уже дома и дорога позади. Уходишь в комнату. Свет плавно гаснет... Здесь холостого хода не будет, а свет будет "гореть" пока шумишь в коридоре, понятно? тут 30 секунд как раз то, что надо, проверено на практике.
нууу... каждый... делает как он хочет, конечно, но объясните мне смысл, так сказать, физический постоянного поддержания на нити накала начального тока при использовании плавного включения?
А вот сдесь и есть задел, как раз для такого случая, какой желаете Вы. Представте, что вы заходите в подезд, а в нем приглушенное освещение горит постоянно с вечера. От хлопка двери за Вами свет загорается на полную мощь, и погасает после ухода из контролируемой зоны. А?
Вот для этого я и тренировался с выставлением разной световой мощи. Держать нагретой нить тоже интересно, это залог долговечности лампы, при минимальной потребляемой мощности. Скажем в дневное время, когда работа реле не нужна, а лампочки часто менять никому не хочется, особенно казенные.
Для моего случая это действительно не нужно и этого не будет. Но если делать универсальную весчь то в программе надо все это как-то предусмотреть и для начала испытать.
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Пока все молчат и думу думают, я вышел на первый результат. Короче, выкладываю для теста, кто пожелает, прошивку для МК. Конфигурация в ней уже заложена. Пока ошибок я не нашел. Пробуйте Вы.
Алгоритм ее работы таков: при включении в сеть лампочка "зажигается" и "горит" 30 сек. Если звука нет - гаснет. По приходу звука - светится. Если фоторезистор "засветить" лампочка погаснет. Убрать сторонний свет - работает. Уровень реакции засветки регулируется подстроечником. Все.
Да, в паузе лампочка не светится вообще ибо, как договорились, при выключении я импульсы не разрешил.
Вложения
MyProject_50Hc.rar
(1.02 КБ) 177 скачиваний
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Акустический выключатель с использованием микроконтролле

Сообщение Ser60 »

Надо понимать исходник в каком-то виде причесан, можно взглянуть, следуя предложению? Можно в личку. Хотя я в упор не понимаю почему его просто не положить в архив вместе с прошивкой :roll:
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Ser60, не вижу никаких проблем! Смотрите в архиве. Жду Ваших предложений по оптимизации кода.
Вложения
MyProject_50Hc_С.rar
(2.4 КБ) 182 скачивания
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Акустический выключатель с использованием микроконтролле

Сообщение Ser60 »

Спасибо. Исходник скудноват комментариями и полон "магических" констант типа 217, 219. К нему-бы хорошо описание. Почему используются задержки именно на 50 мксек? Я не нашел, где там устанавливается отмеченный выше в обсуждении в теме дискрет времени управления 5 мксек? Видел вызов п/программы задержки Delay_us(3). По-моему писать такое на С при длителности выполнения каждой операции 1 мксек (при тактовой частоте PIC 4 мгц) круто. Только call и return займут по 1 мксек каждая, тогда на передачу параметра остается 1 операция. Может так оно и есть, но меня терзают сомнения, что результирующая задержка будет именно 3 мксек, да вокруг этого вызова еще полно других операций. Может это и не важно в конечном итоге и цифра 3 просто подобрана из соображений чтобы все работало, и на самом деле будет несколько большая задержка. Тогда какая именно. Без прояснения вопросов когда написано одно, а на самом деле происходит другое, мне как-то доверия код не внушает (при искреннем уважении к Вашим трудам). Я-бы посоветовал переписать все критичные к микросекундам части программы на АСМе.
Аватара пользователя
Redrik Shuhart
Друг Кота
Сообщения: 3641
Зарегистрирован: Пт апр 03, 2009 22:12:58
Откуда: Из Украины, Кировоградская облась,

Re: Акустический выключатель с использованием микроконтролле

Сообщение Redrik Shuhart »

Мотание тороидов- вышивание по мужски.
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

"магических" констант
Тут все просто это числа, которые задают значения работы таймера TMR0. 255- "минимум" задержки - остальное - "максимум".
Почему используются задержки именно на 50 мксек? Я не нашел, где там устанавливается отмеченный выше в обсуждении в теме дискрет времени управления 5 мксек?
Тут еще проще. Еще вчера было 5 мкс, но потом мне "на ушко" ненавязчиво напомнили, что радиолюбители "суют" в свои наработки не то, что написано в схеме, а то, что есть под рукой или на худой конец в "15 минут хотьбы". Получается, что симистор в реале будет всевозможных номиналов, включая советские раритеты. Тоесть во-первых токи включения всяко разно надо. Во-вторых симистору ведь до лампочки время импульса, гланое, чтобы не замало. Исходя из вышеизложеного время управляющего импульса я поднял до 50 мкс, типа для уверее...еного включения. Поскольку сопротивление между транзистором и симистором увеличено с 100 до 330 ом тоесть в 3 раза все работает ОК!. Проверено.
Видел вызов п/программы задержки Delay_us(3).
Ну подпрограммой это сложно назвать. Так себе маленькая задержечка. Она появилась чисто в процесссе практических изысканий. С ней лучше отрабатывается реакция на внесение констант активирующих всю систему перед включением лампы при появлении прерывания от входного звука. Без нее иногда активирующий импульс "терялся". Почему, пока не знаю, но если этот "пластырь помогает "устаканиться", пусть стоит.
Я-бы посоветовал переписать все критичные к микросекундам части программы на АСМе.
Там нет особых критических моментов, которые не вписываются или не успевают. Все "бегает" продумано, тоесть как надо. Зачем мне морочиться с Ассемлером при задержках вблизи 10 мсек. Как по мне, это не критические временные интервалы. Си с ними легко справляется. Но еслы у Вас есть желание - я не против. Готов к сотрудничеству.
Без прояснения вопросов когда написано одно, а на самом деле происходит другое, мне как-то доверия код не внушает
НЕ может быть, чтобы написано одно, а на самом деле что-то другое... Такого не бывает в железной логике МК. Листинг для изучения выставлен именно того, что у меня весь вечер "мигает" тоесть работает. Тут скорее (без обид я надеюсь), проблема с привычкой работы с разными языками программирования. Да я понимаю, что листинг без комментариев, ну что ж поделаеш, такова "селяви", пока я морально доволен от результата и морочиться с обьяснением каждой строчки не готов..., может попозже.
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Извините, Redrik Shuhart, Ваше изречение многозначно, не могу понять.
Почему-то всегда приходится программировать то, что невозможно запаять...
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Акустический выключатель с использованием микроконтролле

Сообщение Ser60 »

kotyk7 писал(а):Тут скорее (без обид я надеюсь), проблема с привычкой работы с разными языками программирования.
Да я не обижаюсь, тем более, что сам пишу на разных языках. И Вы не сердчайте, если что резко показалось - обидеть не хотел. Просто я не повторяю устройства без вникания в код. Мне нужно устройство для плавного включения обычных ламп и его выключения после нескольких минут, поэтому Ваш проект и опыт мне интересен. Реакция на звук или свет мне не нужна, поэтому код все-равно буду переделывать. Но если в Вашем не разберусь, придется писать самому.

За приглашение к сотрудничеству спасибо. Я должен закончить другой проект и потом будет время на этот. Думаю недели через 2, максимум 3, снова дам о себе знать.
Аватара пользователя
kotyk7
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Пт ноя 06, 2009 00:19:36
Откуда: Львов

Re: Акустический выключатель с использованием микроконтролле

Сообщение kotyk7 »

Mr.Ser60
Я с Вами согласен, для Вашего проекта в моем варианте много лишнего. Особенно много добавляет переключатель на типы ламп, много защитных примочек со звуком.
Тут главное понять принцып формирования фазового управления. Я тоже долго мучался. Нигде нет толкового описания.
Попробую от себя коротко.
Главная трудность в этой сфере - детектор нуля. ОСОБЕННО ЕГО ПОМЕХОУСТОЙЧИВОСТЬ. Тут каждая ошибка просто жуть... Самый лучший вариант - 100Гц сигнал с диодного моста от фазы или в случае с трансформатором - через транзисторный формирователь, у него крутые фронты. Тогда формирователь импульса будет симетрическим, тоесть одним и одиннаковым для обоих периодов. Это так сказать наилучший вариант. Тогда можно использовать прерывание по обоим фронтам и четко контролировать временные интервалы.
Если, как у меня, 50 Гц от сети с помехами - просто ужас. В прерывании детектора нужно использовать только положительный перепад полуволны. Отрицательная только вносит путаницу при помехах, в т.ч. от включения симмистора. В этом случае нужно делать, как я, после перехода через ноль ставиться задержка не более 50 мкс (влияет на выходную мощность, теряется часть яркости, по сему я поставил - 40) и снова проверяется есть ли возрастающий импульс. Если есть работаем дальше, если нет - помеха - вон из прерывания. Если да - вычиляем значение задержки первого управляющего импульса. Если нужна полная мощность - ставим максимальное число таймера для немедленной сработки, если чуть позжеее... соответсвенно нужна задержка срабатывания - число нужно меньше. Помним, что длина периода 50Гц - 10мс, мы работаем с половинкой - значит не 5 мс. Тоесть первый импульс дожен быть либо сразу, либо не позднее 5мс иначе он активирует симмистор на второй полуволне, а первая будет просто пропущена. В моем случае число 219 активирует импульс попадая "вслепую" в точке нуля ниспадающей волны первого импульса. Соответсвенно все числа между этими значениями будут регулировать мощность отдаваемую в нагрузку (нелинейная характеристика) Теперь "проскочив вслепую" нулевую точку, нам нужно просто повторить второй импульс симетрично к первому. Для этого между ними ставят фиксированную задержку в 10 мс с привязкой к времени отработки 1 импульса. Конечно от 10 мс нужно отнять время 1 импульса, а то потеряется симетричность. Даже ели в процессе отработки задачи появилиась погрешность, а она обязательно будет - либо частота сети "упливет" либо МК "тормознет" - это не важно если в начале обработчика прервания по положительному фронту отключить само прерывание по деректору нуля и включить его только сразу после отработки 2 импульса. При этом нужно учесть в обработчике прерывания детектора, что когда он срабатывает все, что было до того тупо отменяется и выставляется в нужную начальную позицию. Таким способом достигаються сразу две важные задачи: прерывание от нуля становится малочуствительным к помехам - кондюки на нем - мусор и корекция неточности счета прерывания таймера, который формирует импульсы. С перыванием по INT0 разобрались. Тепер таймер TMR0 - он сердце формирователя импульса. Нужно выполнить ряд условий: Его делитель должен иметь возможность выдать 10 мс. В это значение или больше (217) ставим при инициализации, чтобы он не сработал раньше времени, чем сработает при первом включении INT0, а то появится ложный никому не нужный импульс. Теперь его нужно жестко синхронизировать с все тем же INT0. Итак INT0 сработал, впихаем в регистр TMR0 число соотвестующее начальной задержке или без нее(255) формируется 1 импульс. Немедлено "всовываем" число для большой фиксированной задержки на 10мс. Импульс. Все таймер - запрет, INT0 - разрешаем. Ждем сработки INT0. Его начало значит отработка всего по новому. Это и есть фазовый регулятор.
Чтобы управлять начальной задержкой первого импульса (второй к нему жестко привязан во времени) нужно в главной программе чето измерить, а его значение после маштабирования (внесения в рамки изменяемых величин TMR0), ввести в регистр перед началом 1 импульса.
Где-то так коротко "на пальцах" нарисовано и просчитано - смотри архив. А Вы асм да асм..., тут зубила и молотка более чем достаточно - этими инструментами можно с трактора даже подводную лодку сделать(если верить народному фольклеру).
Вложения
-1.JPG
(62.81 КБ) 527 скачиваний
Почему-то всегда приходится программировать то, что невозможно запаять...
Ответить

Вернуться в «Умные мысли»