Монитор окружающего освещения: использование триака для регулировки яркости лампы
Часть 5 в серии «Как сделать монитор окружающего света».
Рекомендуемый уровень
промежуточный
Предыдущие статьи в этой серии
- Монитор окружающего освещения: отображение измерений на ЖК-дисплее
- Монитор окружающего света: понимание и реализация АЦП
- Монитор окружающего света: измерение и интерпретация уровней окружающего света
- Монитор окружающего света: обнаружение нуля
Требуемое оборудование / программное обеспечение
- Плата оценки SLFK2000A EFM8
- Интегрированная среда разработки Simplicity Studio
- Компоненты, перечисленные в спецификации
Описание | Количество | Digi-Key p / n |
макетировать | 1 | 377-2094-ND |
Провода перемычки между розетками | 6 | 1471-1231-ND |
Детектор окружающего света | 1 | 425-2778-ND |
Резистор 4, 7 кОм | 1 | 4.7KQBK-ND |
Операционный усилитель общего назначения | 1 | LT1638CN8 # PBF-ND |
Конденсаторы 0, 1 мкФ | 4 | 399-4266-ND |
компаратор | 1 | LTC1440CN8 # PBF-ND |
1 МОм резистор | 1 | 1.0MQBK-ND |
Резисторы 10 кОм | 2 | 10KQBK-ND |
Резистор 2, 2 кОм | 1 | 2.2KQBK-ND |
12 В переменного / переменного тока настенный источник питания | 1 | T1007-ND |
Напряжение питания 5 В переменного / постоянного тока | 1 | 1470-2771-ND |
12 V ламп накаливания | 2 | CM7371-ND |
Маломощный симистор | 1 | 497-7699-ND |
Резистор 330 Ом | 1 | 330QBK-ND |
Обзор проекта
В этом проекте мы завершим автоматическое светорегулятор на основе оптических датчиков. В предыдущей статье мы исследовали схему детектора с нулевым перекрестком, и в этой статье мы будем использовать сигнал обнаружения нулевого пересечения для синхронизации импульса управления симистором, генерируемого EFM8. Задержка между сигналом с нулевым перекрестным сигналом и нарастающим фронтом импульсного управляющего импульса настраивается прошивкой на основе текущего уровня освещенности, обнаруженного оптическим датчиком GA1A2S100, и эта задержка, в свою очередь, определяет, какая средняя мощность подается на лампу, Симистор не является особенно распространенным компонентом в низковольтных конструкциях с смешанными сигналами, поэтому сначала мы рассмотрим природу этого устройства. Примечание: эта реализация диммера предназначена для ламп накаливания. Стандартные компактные люминесцентные лампы не совместимы с этой схемой.
Триак
Симистор представляет собой двунаправленное расширение тиристора, поэтому сначала рассмотрим электрические характеристики последнего устройства. Тиристор подобен диоду, который не работает до тех пор, пока с клеммы затвора на катодный терминал не пройдет небольшой пусковой ток. Это поведение обозначается символом схемы тиристора:

Кроме того, устройство продолжает проводить ток от анода к катоду даже после удаления пускового тока следующим образом: (1) импульс напряжения, превышающий пороговое напряжение тиристора, подается на затвор; (2) результирующий ток затвор-катод запускает устройство таким образом, что он проводит ток от анода к катоду; (3) если этот ток от анода к катоду превышает указанный «фиксирующий ток» устройства, он будет продолжать действовать после того, как напряжение затвора (и, следовательно, ток затвора) вернется к нулю; (4) проводимость прекращается, когда ток анод-катод падает ниже указанного «удерживающего тока» устройства.
Симистор по существу является двунаправленным тиристором. Он работает по тем же принципам, но может проводить ток, протекающий от MT2 до MT1 или от MT1 до MT2:

Конфигурация, используемая в этом проекте, имеет MT1, подключенный к земле, при этом запускающий ток течет от затвора до MT1.
Вышеприведенное обсуждение демонстрирует, почему симистор является таким удобным компонентом для управления переменным током, протекающим через нагрузку (в данном случае лампа накаливания). Короткий триггерный импульс, управляемый непосредственно выводом GPIO, включает триаку в какой-то момент в течение первого полупериода волны переменного тока. Симистор продолжает работать до тех пор, пока ток нагрузки не станет меньше тока удержания. Тогда другой триггерный импульс с той же задержкой относительно нуля, что и первый импульс, приводит к тому, что триок будет проводить во втором полупериоде. (См. Следы области позже в статье, если у вас возникли проблемы с визуализацией этого.) Задержка между нулевым поперечным и триггерным импульсами определяет часть формы сигнала переменного тока, в течение которой выполняется симистор, и это, в свою очередь, определяет среднюю подаваемую мощность к нагрузке. С помощью микроконтроллера эту задержку можно контролировать с высокой точностью. Кстати, если вы задаетесь вопросом, почему это поведение включения-выключения не приводит к нежелательному мерцанию, помните, что лампа накаливания генерирует свет, потому что филамент горячий - температура не меняется так быстро, как ток, и, следовательно, лампа эффективно «сглаживает» относительно высокочастотные колебания тока, протекающего через нить.
Триак, используемый в этом проекте, - это номер детали Z00607 от STMicroelectronics. Это устройство предназначено для маломощных приложений. Он может быть запущен с током затвора до 5 мА, а его фиксирующий и удерживающий ток составляют 10 мА и 5 мА соответственно.
схема
Вот схема для части управления лампой этого проекта:

R 1 является токоограничивающим резистором; он имеет размер, чтобы гарантировать, что штырь GPIO значительно превышает минимальный ток запуска триггера (т. е. 5 мА). Падение напряжения от затвора до MT1 измерялось на 360 мВ, поэтому (3, 3 В - 0, 36 В) / 330 Ом = 8, 9 мА.
И вот реализация макета:

Есть две лампы вместо одной, потому что конкретный трансформатор переменного тока, используемый для этого проекта, ограничен выходным током 500 мА, а дополнительное сопротивление, обеспечиваемое второй лампой, гарантирует, что ток остается значительно ниже этого максимума. Кусок черного пластика предотвращает освещение ламп оптическим датчиком и тем самым искажает измерения окружающего света.
Прошивка
Новая прошивка должна выполнять две дополнительные задачи: вычислить правильную задержку от нуля до импульсного импульса на основе измерения внешнего освещения и вывести задержанный триггерный импульс. Первая задача выполняется с помощью следующего кода:
Код
//convert the ADC conversion result to a current measurement //the actual value of the resistor in the test circuit is 4.6 kOhms ADCMeasurement = (RawADCResult*ADCFactor)/4.6; if(ADCMeasurement >= OPTSENS_CURRENT_MAX) TriacGateEnableorDisable = TRIAC_GATE_DISABLE; //lamp is off else if(ADCMeasurement <= OPTSENS_CURRENT_MIN) { TriacGateEnableorDisable = TRIAC_GATE_ENABLE; TriacGateDelay = TRIAC_GATE_DELAY_MIN; //maximum lamp brightness } else { TriacGateEnableorDisable = TRIAC_GATE_ENABLE; //trigger pulse delay is based on the ratio of current illuminance to maximum illuminance TriacGateDelay = TRIAC_GATE_DELAY_MAX * (float)ADCMeasurement/OPTSENS_CURRENT_MAX; }
Скачать код
Сначала нам нужно выбрать максимальный и минимальный уровень освещенности: если оптический датчик указывает, что освещенность больше или равна максимальному уровню освещенности, триггерный импульс отключается, а лампа выключена. Если освещенность меньше или равна минимальному уровню освещенности, комната считается темной, а задержка пускового импульса установлена для подачи максимальной мощности на лампу. Если освещенность находится между этими двумя значениями, задержка регулируется пропорционально - другими словами, соотношение между текущей освещенностью и максимальной освещенностью совпадает с соотношением между выбранной задержкой и максимальной задержкой. Для успешного применения в реальном масштабе времени потребуется тщательный выбор максимального и минимального уровней освещенности, чтобы гарантировать, что лампа затемняется в соответствии с потребностями пользователя, и было бы полезно точно настроить математическую зависимость между измеренной освещенностью и задержкой срабатывания основанный на эмпирических наблюдениях за тем, как конкретное устройство освещения реагирует на алгоритм затемнения.
Имейте в виду, что даже если уровень окружающего света меньше или равен минимуму, задержка запуска триггера не установлена на ноль. Если импульс генерируется сразу после того, как сигнал переменного тока пересекает 0 В, ток нагрузки может не превышать ток фиксации симистора при протекании тока срабатывания затвора. Поддержание минимальной задержки триггерного импульса обеспечивает правильное поведение фиксации симистора.
Чтобы выполнить вторую задачу (генерируя задержанный триггерный импульс), мы настраиваем Timer2 на период тактовой синхронизации около 500 нс и включаем прерывание Timer2.


Код
//----------------------------------------------------------------------------- // INT0_ISR //----------------------------------------------------------------------------- SI_INTERRUPT (INT0_ISR, INT0_IRQn) { //the interrupt flag is cleared by hardware FallingEdgeCount+; SFRPAGE = TIMER2_PAGE; TMR2 = 0xFFFF - TriacGateDelay; //Timer2 will overflow at the end of the delay period TMR2CN0_TR2 = TriacGateEnableorDisable; //start Timer2, if lamp illumination is needed } //----------------------------------------------------------------------------- // INT1_ISR //----------------------------------------------------------------------------- SI_INTERRUPT (INT1_ISR, INT1_IRQn) { //the interrupt flag is cleared by hardware RisingEdgeCount+; SFRPAGE = TIMER2_PAGE; TMR2 = 0xFFFF - TriacGateDelay; //Timer2 will overflow at the end of the delay period TMR2CN0_TR2 = TriacGateEnableorDisable; //start Timer2, if lamp illumination is needed } //----------------------------------------------------------------------------- // TIMER2_ISR //----------------------------------------------------------------------------- // // TIMER2 ISR Content goes here. Remember to clear flag bits: // TMR2CN0::TF2H (Timer # High Byte Overflow Flag) // TMR2CN0::TF2L (Timer # Low Byte Overflow Flag) //----------------------------------------------------------------------------- SI_INTERRUPT (TIMER2_ISR, TIMER2_IRQn) { SFRPAGE = TIMER2_PAGE; TMR2CN0_TF2H = 0; //clear the interrupt flag TMR2CN0_TR2 = 0; //stop Timer2 //here we output the trigger pulse (width is approximately 50 us) TRIAC_GATE = HIGH; SFRPAGE = TIMER4_PAGE; TMR4L = 0; while(TMR4L < 100); TRIAC_GATE = LOW; }
Скачать код
Каждый раз, когда внешние прерывания обнаруживают восходящий или спадающий фронт от схемы обнаружения нуля, Timer2 загружается (65535 - выбранная в настоящий момент триггерная задержка). В результате таймер переполняется (вызывает прерывание) в конце периода задержки, а затем импульс запуска генерируется в ISR Timer2.
Общая функциональность прошивки следующая: Преобразование АЦП происходит примерно один раз каждые 31 мс (т. Е. 32 отсчета в секунду). Каждый результат преобразования интерпретируется как величина выходного тока от оптического датчика, а затем это измерение тока обрабатывается с помощью описанной выше процедуры if-else, чтобы определить, нужен ли импульс триггера, и если да, то какая должна быть задержка. Задержка запуска настраивается с той же скоростью (32 раза в секунду); это обеспечивает приятный плавный отклик для демонстрационных целей, но, конечно, такие быстрые и сверхчувствительные изменения яркости лампы были бы нежелательны в реальном приложении. ЖК-дисплей обновляется один раз в секунду с самым последним значением выходного тока оптического датчика, поэтому вы можете видеть, как измеренная освещенность влияет на яркость лампы.
На двух следующих изображениях синяя трасса представляет собой триггерный импульс, а желтая трасса - напряжение на симисторе. Перед пусковым импульсом полное напряжение переменного тока присутствует в симисторе - оно еще не выполнено, и, следовательно, оно эффективно является разомкнутой цепью. После пускового импульса до конца полупериода триод проводит и, следовательно, имеет только небольшое падение напряжения в проводящем состоянии (около 1 В).

Здесь симистор работает примерно на 40% от полупериода переменного тока, поэтому это соответствует умеренному уровню окружающего света (и, следовательно, умеренной яркости лампы).

Теперь симистор проводит большую часть цикла переменного тока, что означает, что низкий уровень окружающего света заставил прошивку увеличить яркость лампы.
видео
Это видео показывает яркость лампы, реагирующую на различную освещенность, поскольку светодиодный фонарик направлен ближе и дальше от оптического датчика.
видео
Это видео демонстрирует, как положение триггерного импульса (относительно поперечного сечения переменного тока) изменяется, когда светодиодный фонарик направлен ближе и дальше от оптического датчика.
Попробуйте этот проект сами! Получить спецификацию.