Акустический выключатель с использованием микроконтроллера
Re: Акустический выключатель с использованием микроконтролле
А в чем была проблема?
- Реклама
Re: Акустический выключатель с использованием микроконтролле
Если в общем и чесно то во мне конечно. Если более конкретно, то от незнания тоесть отсутствия практики программирования МК для работы с фазовым регулятором. А сам проект мной задумывался именно с целью получения практического опыта в этой сфере. Ибо ничего и нигде так хорошо не изучается как на практике.
В самом начале, не имея подсказок или важных маркеров, получилось, что при написании программы пошел по идеальному пути. Практика почазала, что это не есть гуд.
Дальше, схема проэктировалась, как минималистская. В результате я оказался от импульсного источника питания, а значит гальванической развязки. "В корзину пошли" всем привычные опторазвязки как по входу, так и по выходу. За ними, - диодный мост для 100 Гц детектора нуля, и все, что там еще можно было подцепить. С мелким трепетом - ключевой стабилизатор на полевике. Сначала было страшно, вдруг мощности стабилитрона не хватит и все пойдет "на смарку", но пронесло... Расчеты не подвели. Даже резисторы на информационных светодиодах решился уменьшить, держит однако.
Правда решил не экономить на буферном транзисторе и на нем "обжегся"... Тоесть не на нем лично, ибо он умудрился "пережить" аж 4 симмистора. (Это мои потери в ходе разработки плюс один стабилитрон, но зато МК живой) Оказывается я от незнания либо "вгонял" управление симистора в так называемый 4 квардант либо временем открываемого импульса превышал мощность тока управляющего електрода симистора. Вот пока "допер", - 4 "трупика". Жаль никто не подсказал...
Теперь по программе, я сначала сделал управление по возрастающему и ниспадающему фронтах детектора нуля. Так все казалось будет лучше и точнее, но на практике помехи сети через ниспадающее прерывание вводят в хаос всю систему. И в результате, вместо фазового детектора, получался непредсказуемый сжигатель симмисторов. Пришлось побороть гордость и "перелопатив" кучу страниц интернета согласиться на 50 Гц систему управления. Там же нашел обьяснение как повысить помехоустойчивость. Ну что ж, пол часа бесперырвной работы это боле чем надо...
Теперь осталось снова присоединить к опробованой программме все ранее набросанные подпрограммы и снова испытать.
Короче, кому интересно ждите, доделаю, отпишусь.
В самом начале, не имея подсказок или важных маркеров, получилось, что при написании программы пошел по идеальному пути. Практика почазала, что это не есть гуд.
Дальше, схема проэктировалась, как минималистская. В результате я оказался от импульсного источника питания, а значит гальванической развязки. "В корзину пошли" всем привычные опторазвязки как по входу, так и по выходу. За ними, - диодный мост для 100 Гц детектора нуля, и все, что там еще можно было подцепить. С мелким трепетом - ключевой стабилизатор на полевике. Сначала было страшно, вдруг мощности стабилитрона не хватит и все пойдет "на смарку", но пронесло... Расчеты не подвели. Даже резисторы на информационных светодиодах решился уменьшить, держит однако.
Правда решил не экономить на буферном транзисторе и на нем "обжегся"... Тоесть не на нем лично, ибо он умудрился "пережить" аж 4 симмистора. (Это мои потери в ходе разработки плюс один стабилитрон, но зато МК живой) Оказывается я от незнания либо "вгонял" управление симистора в так называемый 4 квардант либо временем открываемого импульса превышал мощность тока управляющего електрода симистора. Вот пока "допер", - 4 "трупика". Жаль никто не подсказал...
Теперь по программе, я сначала сделал управление по возрастающему и ниспадающему фронтах детектора нуля. Так все казалось будет лучше и точнее, но на практике помехи сети через ниспадающее прерывание вводят в хаос всю систему. И в результате, вместо фазового детектора, получался непредсказуемый сжигатель симмисторов. Пришлось побороть гордость и "перелопатив" кучу страниц интернета согласиться на 50 Гц систему управления. Там же нашел обьяснение как повысить помехоустойчивость. Ну что ж, пол часа бесперырвной работы это боле чем надо...
Теперь осталось снова присоединить к опробованой программме все ранее набросанные подпрограммы и снова испытать.
Короче, кому интересно ждите, доделаю, отпишусь.
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Продолжаю тему, для тех кому интересно.
Сегодня в очередной раз испытал промежуточную версию программного обеспечения. И так, что уже "заложено" в программу:
1.Как и планироваль с самого начала - подключен переключатель режима засветки лампочки - "четко" и "плавно". - работает.
2. Лампочка в зависимости от переключателя включается сразу или плавно. - работает.
3. В режиме "плавно" - полсекунды на плавное включение, отсчет нужного времени (задается в одном месте программы и дальше все само учитывается) и пол секунды на выключение. - работает.
В этом месте у меня есть пока вопрос, как лучше сделать: при выключении лампы просто "бросить" порт управления симмистором в ноль и забыть о нем до следующего включения или оставить управляющие импульсы на "мизере". Так чтобы свечения уже небыло, а нить оставалась теплая. Как Вам такая мысля? Правда тогда "жрать" будет больше. Или сделать на выбор?
4. Подсоединил две АЦПешки. Теперь на свет реагирует светодиод и фоторезистор.
5. Модуль прерывания на звук - работает.
Но это еще не все. Надо востановить все связи подпрограмм и условий "их правильного сожительства", подключить светодиод - реакции на звук и конечно же решить с вышеизложенным вопросом. Тогда будет все.
Хотелось бы увидеть Ваше мнение!
Сегодня в очередной раз испытал промежуточную версию программного обеспечения. И так, что уже "заложено" в программу:
1.Как и планироваль с самого начала - подключен переключатель режима засветки лампочки - "четко" и "плавно". - работает.
2. Лампочка в зависимости от переключателя включается сразу или плавно. - работает.
3. В режиме "плавно" - полсекунды на плавное включение, отсчет нужного времени (задается в одном месте программы и дальше все само учитывается) и пол секунды на выключение. - работает.
В этом месте у меня есть пока вопрос, как лучше сделать: при выключении лампы просто "бросить" порт управления симмистором в ноль и забыть о нем до следующего включения или оставить управляющие импульсы на "мизере". Так чтобы свечения уже небыло, а нить оставалась теплая. Как Вам такая мысля? Правда тогда "жрать" будет больше. Или сделать на выбор?
4. Подсоединил две АЦПешки. Теперь на свет реагирует светодиод и фоторезистор.
5. Модуль прерывания на звук - работает.
Но это еще не все. Надо востановить все связи подпрограмм и условий "их правильного сожительства", подключить светодиод - реакции на звук и конечно же решить с вышеизложенным вопросом. Тогда будет все.
Хотелось бы увидеть Ваше мнение!
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Добавь дополнительный переключатель, чтобы можно было выбирать полное погасание лампы или режим слабого свечения. Естественно, что слабое свечение должно быть активно при выборе ламп накаливания.
Полсекунды, на самом деле, много- нить лампы успеет разогреться за несколько полупериодов.
Полсекунды, на самом деле, много- нить лампы успеет разогреться за несколько полупериодов.
Re: Акустический выключатель с использованием микроконтролле
а что нового даст такой подготовительный прогрев нити? к тому же ток покоя, видимо, нужно будет подбирать индивидуально под лампы разных мощностей или даже производителей. В общем лишнее это...kotyk7 писал(а):Продолжаю тему, для тех кому интересно.
...или оставить управляющие импульсы на "мизере". Так чтобы свечения уже небыло, а нить оставалась теплая. Как Вам такая мысля?
4. Подсоединил две АЦПешки. Теперь на свет реагирует светодиод и фоторезистор.
5. Модуль прерывания на звук - работает.
Модуль звука как работает? имхо надо после включения лампы вводить тайм-аут секунд на 30, потом секунд 10 микрофон "пасёт" обстановку не нужно ли повторить выдержку, затем более плавное погасание, чтобы в случае необходимости можно было пошуметь до полной темноты. Возможно, предусмотреть отключение этой функции "Повтора выдержки" джампером. как-то так.
для глаз что комфортнее резко или плавно переход от темноты?Flasher писал(а):Полсекунды, на самом деле, много- нить лампы успеет разогреться за несколько полупериодов.
- Реклама
Re: Акустический выключатель с использованием микроконтролле
Я за плавный переход от темноты и за полное отключение лампы.
Все-таки интересно в чем конкретно была проблема выхода из строя симисторов. И можно-ли взглянуть на исходник?
Все-таки интересно в чем конкретно была проблема выхода из строя симисторов. И можно-ли взглянуть на исходник?
Re: Акустический выключатель с использованием микроконтролле
Всем привет!
Спасибо за внимание! А главное мнения.
Попробую ответить.
И так: сегодня провел очередное испытание программулины. В даном случае, ради интереса, поробовал, как будет работать режим постоянных импульсов с фазовой регулировкой разумеется. Напомню, что с целью защиты от помех, у меня "теряется" 40мкс на всякие там заморочки от начала положительного периода. Проверка в "железе" показала, что потеря мощности, тоесть яркости, на глаз не заметна. При этом, для обычной лампочки улучшается режим ее использования, что тоже плюс. Но практика показала, что нижнняя граница напряжения, когда присутствует визуальное свечение нити накала в маломощных лампочках, а такие, как правило, и будут использоваться в даном случае, очень мала. Тоесть я уже подаю импульс запуска практически рядом с нулем ниспадающего фронта, а того мизера по нпряжению все еще хватает для ее зажига. Не скажу, что она светит. Это уже не свет, но если присмотреться то видно, что нить нагрета. Завтра попробую еще повысить период задержки, чтобы импульс "стрелял" прямо в "нуль". А то похоже эти импортные симисторы работают даже от ничтожного "мизера". Наши КУ208 давно бы уже "отдыхали" при такой мелочи по току и напряжению.
В таком варианте программа уже собрана в полном обьеме и со всеми наворотами. Правда я для опытов поставил только 3 секунды на засветку, чтобы не долго ждать реакции. Если бы не изьян с засветкой нити (пока я рассматриваю это именно так, хотя в светильнике видно ничего не будет) можно считать программа готова. Но поскольку я буду ее еще "шлифовать" подождите немного.
Спасибо за внимание! А главное мнения.
Попробую ответить.
И так: сегодня провел очередное испытание программулины. В даном случае, ради интереса, поробовал, как будет работать режим постоянных импульсов с фазовой регулировкой разумеется. Напомню, что с целью защиты от помех, у меня "теряется" 40мкс на всякие там заморочки от начала положительного периода. Проверка в "железе" показала, что потеря мощности, тоесть яркости, на глаз не заметна. При этом, для обычной лампочки улучшается режим ее использования, что тоже плюс. Но практика показала, что нижнняя граница напряжения, когда присутствует визуальное свечение нити накала в маломощных лампочках, а такие, как правило, и будут использоваться в даном случае, очень мала. Тоесть я уже подаю импульс запуска практически рядом с нулем ниспадающего фронта, а того мизера по нпряжению все еще хватает для ее зажига. Не скажу, что она светит. Это уже не свет, но если присмотреться то видно, что нить нагрета. Завтра попробую еще повысить период задержки, чтобы импульс "стрелял" прямо в "нуль". А то похоже эти импортные симисторы работают даже от ничтожного "мизера". Наши КУ208 давно бы уже "отдыхали" при такой мелочи по току и напряжению.
В таком варианте программа уже собрана в полном обьеме и со всеми наворотами. Правда я для опытов поставил только 3 секунды на засветку, чтобы не долго ждать реакции. Если бы не изьян с засветкой нити (пока я рассматриваю это именно так, хотя в светильнике видно ничего не будет) можно считать программа готова. Но поскольку я буду ее еще "шлифовать" подождите немного.
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Ето сделать можно, проблем не вижу. Свободные порты для наплатного переключателя есть. Только сначала с оптимальными, в моем случае,периодами разберусь.Добавь дополнительный переключатель, чтобы можно было выбирать полное погасание лампы или режим слабого свечения. Естественно, что слабое свечение должно быть активно при выборе ламп накаливания.
для глаз что комфортнее резко или плавно переход от темноты?
Полностью согласен, что можно по быстрому, но, как по мне, визуально глазу приятнее, а мозгу интереснее когда наростание мощности заметно.Полсекунды, на самом деле, много- нить лампы успеет разогреться за несколько полупериодов.
Это, как с женщиной "по быстрому", все равно, что "сам с собой левою рукой" - ничего хорошего не запоминается, однако.
Модуль звука заботает практически постоянно на прием. За небольшим исключением, а именно в момент обработки начального прерывания от звука с микрофона и в момент первого включения симистора, - дабы отфильтровать ложные сигналы и помехи по питанию создаваемые самим симистором. В моем случае, во второй версии программы нет возможности в момент "погасания" "вернуть все вспять" и плавно выйти на полную мощность.(Так было в первоначальном варианте) В этой версии - как только лампа вышла в режим, система готова на каждый звук заданной мощности обнулить счет и тем саммым продлить свечение лампы на фиксированное и заданное время. Пока звук присутствует счетчик будет обнулятся с каждым его всплеском, но когда в тишине время счета выйдет, программа перейдет в режим плавного уменьшения мощности (где-то половину секунды) он будет отработан до конца уже в независимисти от наличия появившегося не вовремя звука. Но его появление МК не будет потеряно и лампа опять плавно зажжется, - все начнется сначала. (Для себя, планитую выставить рабочее время в 30 сек. Практика эксплуатации в коридоре аналогичного аналогового устройсва показала, что больше не надо.)Модуль звука как работает? имхо надо после включения лампы вводить тайм-аут секунд на 30, потом секунд 10 микрофон "пасёт" обстановку не нужно ли повторить выдержку, затем более плавное погасание, чтобы в случае необходимости можно было пошуметь до полной темноты. Возможно, предусмотреть отключение этой функции "Повтора выдержки" джампером. как-то так.
В то же время, в пику начального наростания светового потока, длительная задержка погасания лампы ("чтобы понять и пошуметь") мне не совсем нравиться ибо, как по мне, "ожидание смерти хуже самой смерти" = раздражает!
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Я тоже, - значит будет!Я за плавный переход от темноты
"Тут все от кузнеца зависит", как сделаю так и будет визуально оное будет одиннаково, а устройству будет все равно. Но обещаю учесть и сообщить.и за полное отключение лампы.
Все-таки интересно в чем конкретно была проблема выхода из строя симисторов.
Я уже писал, - это смесь ошибки в аналоговой части (неоправданно малое сопротивление между управляющим эллектродом и ключевым транзистором) и программной (ненужно большой по времени импульс включения). В результате вышла "гремучая смесь", которую трудно было "умом понять". Когда фазовый включатель в "нулевой" точке подавал ток на симистор то величины сопротивления было достаточно для максимально возможного тока его включения. Когда импульс приходил в "пиковый" момент фазы то ток в управляющей цепи становился уже чересчур большим. И тогда все - "трупик". (теперь используется импульс в 5мкс, раньше было 200 мкс).
Я же обещал, - выложу. Только давайте сначала доведем все до конца, хорошо? Зачем сорить на сайте?И можно-ли взглянуть на исходник?
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
после штатного включения секунд 30 акустический датчик будет срабатывать по-любому(нужно дойти до двери, открыть замок, или наоборот, закрыть, дойти до лифта или спуститься на один этаж хотя бы, и это всё не бесшумно), потом включается задержка и лампа светит скорее всего вхолостую (никого уже нет). Так?kotyk7 писал(а):во второй версии программы нет возможности в момент "погасания" "вернуть все вспять" и плавно выйти на полную мощность... В этой версии - как только лампа вышла в режим, система готова на каждый звук заданной мощности обнулить счет и тем саммым продлить свечение лампы на фиксированное и заданное время....
угу.. открываю я замок на двери и тут гаснет свет... я, матерясь, захожу в дверь и, блин, захлопываю её, после чего автомат на полминуты включает лампочку, когда это на.. никому не нужно. Прикольно... и ни разу не раздражаетkotyk7 писал(а):когда в тишине время счета выйдет, программа перейдет в режим плавного уменьшения мощности (где-то половину секунды) он будет отработан до конца уже в независимисти от наличия появившегося не вовремя звука. Но его появление МК не будет потеряно и лампа опять плавно зажжется, - все начнется сначала.... длительная задержка погасания лампы ("чтобы понять и пошуметь") мне не совсем нравиться ибо....раздражает!
нууу... каждый... делает как он хочет, конечно, но объясните мне смысл, так сказать, физический постоянного поддержания на нити накала начального тока при использовании плавного включения?kotyk7 писал(а):"Тут все от кузнеца зависит", как сделаю так и будет визуально оное будет одиннаково, а устройству будет все равно.и за полное отключение лампы.
Re: Акустический выключатель с использованием микроконтролле
Тут похоже мы с Mr.vin_07 не сходимся в идее. На сколько я понял, Вы имеете ввиду акустический выключатель для использования на сходовой клетке, где надо пошуметь, скажем при откритии входной двери, пройти по леснице к своей двери и зашедши в квартиру свет больше не нужен. Тогда да холостой свет - не то. Согласен. Но я делаю (и это написано в первом посте) акустический виключатель для коридора в жилой квартире. Тут другая идеология: Приходиш вечером домой, открываешь ключем замок, открываеш входную дверь, а в коридоре горит свет. Приятно. Искать выключатель в потемках не надо. закрываеш за собой дверь. (стук) Раздеваешься мурлича себе что-то под нос от удовольствия, что уже дома и дорога позади. Уходишь в комнату. Свет плавно гаснет... Здесь холостого хода не будет, а свет будет "гореть" пока шумишь в коридоре, понятно? тут 30 секунд как раз то, что надо, проверено на практике.после штатного включения секунд 30 акустический датчик будет срабатывать по-любому(нужно дойти до двери, открыть замок, или наоборот, закрыть, дойти до лифта или спуститься на один этаж хотя бы, и это всё не бесшумно), потом включается задержка и лампа светит скорее всего вхолостую (никого уже нет). Так?
А вот сдесь и есть задел, как раз для такого случая, какой желаете Вы. Представте, что вы заходите в подезд, а в нем приглушенное освещение горит постоянно с вечера. От хлопка двери за Вами свет загорается на полную мощь, и погасает после ухода из контролируемой зоны. А?нууу... каждый... делает как он хочет, конечно, но объясните мне смысл, так сказать, физический постоянного поддержания на нити накала начального тока при использовании плавного включения?
Вот для этого я и тренировался с выставлением разной световой мощи. Держать нагретой нить тоже интересно, это залог долговечности лампы, при минимальной потребляемой мощности. Скажем в дневное время, когда работа реле не нужна, а лампочки часто менять никому не хочется, особенно казенные.
Для моего случая это действительно не нужно и этого не будет. Но если делать универсальную весчь то в программе надо все это как-то предусмотреть и для начала испытать.
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Пока все молчат и думу думают, я вышел на первый результат. Короче, выкладываю для теста, кто пожелает, прошивку для МК. Конфигурация в ней уже заложена. Пока ошибок я не нашел. Пробуйте Вы.
Алгоритм ее работы таков: при включении в сеть лампочка "зажигается" и "горит" 30 сек. Если звука нет - гаснет. По приходу звука - светится. Если фоторезистор "засветить" лампочка погаснет. Убрать сторонний свет - работает. Уровень реакции засветки регулируется подстроечником. Все.
Да, в паузе лампочка не светится вообще ибо, как договорились, при выключении я импульсы не разрешил.
Алгоритм ее работы таков: при включении в сеть лампочка "зажигается" и "горит" 30 сек. Если звука нет - гаснет. По приходу звука - светится. Если фоторезистор "засветить" лампочка погаснет. Убрать сторонний свет - работает. Уровень реакции засветки регулируется подстроечником. Все.
Да, в паузе лампочка не светится вообще ибо, как договорились, при выключении я импульсы не разрешил.
- Вложения
-
- MyProject_50Hc.rar
- (1.02 КБ) 177 скачиваний
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Надо понимать исходник в каком-то виде причесан, можно взглянуть, следуя предложению? Можно в личку. Хотя я в упор не понимаю почему его просто не положить в архив вместе с прошивкой 
Re: Акустический выключатель с использованием микроконтролле
Ser60, не вижу никаких проблем! Смотрите в архиве. Жду Ваших предложений по оптимизации кода.
- Вложения
-
- MyProject_50Hc_С.rar
- (2.4 КБ) 182 скачивания
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Спасибо. Исходник скудноват комментариями и полон "магических" констант типа 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: Акустический выключатель с использованием микроконтролле
Мотание тороидов- вышивание по мужски.
Re: Акустический выключатель с использованием микроконтролле
Тут все просто это числа, которые задают значения работы таймера TMR0. 255- "минимум" задержки - остальное - "максимум"."магических" констант
Тут еще проще. Еще вчера было 5 мкс, но потом мне "на ушко" ненавязчиво напомнили, что радиолюбители "суют" в свои наработки не то, что написано в схеме, а то, что есть под рукой или на худой конец в "15 минут хотьбы". Получается, что симистор в реале будет всевозможных номиналов, включая советские раритеты. Тоесть во-первых токи включения всяко разно надо. Во-вторых симистору ведь до лампочки время импульса, гланое, чтобы не замало. Исходя из вышеизложеного время управляющего импульса я поднял до 50 мкс, типа для уверее...еного включения. Поскольку сопротивление между транзистором и симистором увеличено с 100 до 330 ом тоесть в 3 раза все работает ОК!. Проверено.Почему используются задержки именно на 50 мксек? Я не нашел, где там устанавливается отмеченный выше в обсуждении в теме дискрет времени управления 5 мксек?
Ну подпрограммой это сложно назвать. Так себе маленькая задержечка. Она появилась чисто в процесссе практических изысканий. С ней лучше отрабатывается реакция на внесение констант активирующих всю систему перед включением лампы при появлении прерывания от входного звука. Без нее иногда активирующий импульс "терялся". Почему, пока не знаю, но если этот "пластырь помогает "устаканиться", пусть стоит.Видел вызов п/программы задержки Delay_us(3).
Там нет особых критических моментов, которые не вписываются или не успевают. Все "бегает" продумано, тоесть как надо. Зачем мне морочиться с Ассемлером при задержках вблизи 10 мсек. Как по мне, это не критические временные интервалы. Си с ними легко справляется. Но еслы у Вас есть желание - я не против. Готов к сотрудничеству.Я-бы посоветовал переписать все критичные к микросекундам части программы на АСМе.
НЕ может быть, чтобы написано одно, а на самом деле что-то другое... Такого не бывает в железной логике МК. Листинг для изучения выставлен именно того, что у меня весь вечер "мигает" тоесть работает. Тут скорее (без обид я надеюсь), проблема с привычкой работы с разными языками программирования. Да я понимаю, что листинг без комментариев, ну что ж поделаеш, такова "селяви", пока я морально доволен от результата и морочиться с обьяснением каждой строчки не готов..., может попозже.Без прояснения вопросов когда написано одно, а на самом деле происходит другое, мне как-то доверия код не внушает
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Извините, Redrik Shuhart, Ваше изречение многозначно, не могу понять.
Почему-то всегда приходится программировать то, что невозможно запаять...
Re: Акустический выключатель с использованием микроконтролле
Да я не обижаюсь, тем более, что сам пишу на разных языках. И Вы не сердчайте, если что резко показалось - обидеть не хотел. Просто я не повторяю устройства без вникания в код. Мне нужно устройство для плавного включения обычных ламп и его выключения после нескольких минут, поэтому Ваш проект и опыт мне интересен. Реакция на звук или свет мне не нужна, поэтому код все-равно буду переделывать. Но если в Вашем не разберусь, придется писать самому.kotyk7 писал(а):Тут скорее (без обид я надеюсь), проблема с привычкой работы с разными языками программирования.
За приглашение к сотрудничеству спасибо. Я должен закончить другой проект и потом будет время на этот. Думаю недели через 2, максимум 3, снова дам о себе знать.
Re: Акустический выключатель с использованием микроконтролле
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 импульса.
Где-то так коротко "на пальцах" нарисовано и просчитано - смотри архив. А Вы асм да асм..., тут зубила и молотка более чем достаточно - этими инструментами можно с трактора даже подводную лодку сделать(если верить народному фольклеру).
Я с Вами согласен, для Вашего проекта в моем варианте много лишнего. Особенно много добавляет переключатель на типы ламп, много защитных примочек со звуком.
Тут главное понять принцып формирования фазового управления. Я тоже долго мучался. Нигде нет толкового описания.
Попробую от себя коротко.
Главная трудность в этой сфере - детектор нуля. ОСОБЕННО ЕГО ПОМЕХОУСТОЙЧИВОСТЬ. Тут каждая ошибка просто жуть... Самый лучший вариант - 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 скачиваний
Почему-то всегда приходится программировать то, что невозможно запаять...


