Дипломная работа: Разработка устройства автоматического регулирования света на микроконтроллере
Одной
из задач инициализации является однократное измерение сетевого напряжения.
Поскольку заранее невозможно предсказать, в какой момент времени светильник
будет подключен к сети, результатом этого измерения является случайное число,
используемое далее в подпрограмме генератора псевдослучайных чисел как точка
отсчёта seed (блок Procedures.EXT.asm).
Перед
тем как передать управление основному блоку программа определяет, в каком состоянии
находилось устройство перед отключением питания. В зависимости от результата
устанавливаются те или иные флаги, сообщающие основной программе о том, какие
действия необходимо предпринять. Например, если в момент пропадания сетевого
напряжения был включен первый канал, то после восстановления электроснабжения
он включится автоматически (если это было предварительно разрешено
пользователем в настройках устройства).
Как
уже отмечалось, код основного блока Main.asm выполняется в бесконечном цикле.
Так как детектирование перехода сетевого напряжения через нуль осуществляется в
каждом полупериоде, цикл Main.asm повторяется каждые 10 мс.
Первая
команда основного блока – сброс сторожевого таймера. Следует отметить, что это
единственное место во всей основной программе, где осуществляется сброс
сторожевого таймера.
Первоначально
для детектирования момента перехода сетевого напряжения через нуль
использовался следующий алгоритм: АЦП циклически производил считывание входного
напряжения и сравнивал результат преобразования с заданной константой. Как
только происходило совпадение, подавалась команда на включение каналов, и цикл
завершался. Из-за отсутствия кварцевой стабилизации тактовой частоты МК, для
точного обнаружения момента перехода фазы сети через нуль требовался подбор
константы под конкретный экземпляр МК. Был альтернативный вариант: вместо
подбора константы осуществлять калибровку внутреннего RC генератора. И то и
другое отрицательно сказывалось на повторяемости устройства. Но основная
причина, побудившая изменить алгоритм, заключалась в невысокой
помехоустойчивости. Действительно, если помеха (всплеск сетевого напряжения)
возникала близко к моменту перехода фазы сети через нуль, МК продолжал измерять
входное напряжение, ожидая его совпадения с константой. Поскольку после
прекращения помехи входное напряжение оказывалось больше заданного константой,
МК был вынужден оставаться в цикле измерений до следующего перехода фазы. Так
как во время измерения напряжения каналы находятся в выключенном состоянии,
визуально такой «простой» выглядел как моргание ламп(ы), т.к. в течение как
минимум 10 мс напряжение на нагрузке отсутствовало.
Изменённый
алгоритм основан на сравнении не с константой, а с предыдущим результатом
измерения. Команда на включение каналов подаётся только тогда, когда текущий
результат измерения становится больше предыдущего. В рассмотренном только что
примере МК будет детектировать помеху как напряжение, превышающее предыдущее.
Это приведёт к моментальному выходу из цикла, что визуально будет практически
не заметно. В обычном режиме (без воздействия помех) МК осуществит выход из
цикла, как только сетевое напряжение сменит направление с убывающего на
возрастающее, т.е. сразу после перехода сетевого напряжения через нуль.
Таким
образом, отпадает необходимость в кварцевом резонаторе, калибровке внутреннего
генератора и в калибровке АЦП. Также не требуется дополнительная константа и
настройка устройства под конкретный экземпляр МК.
Погрешность
нового алгоритма нетрудно подсчитать. Для определения момента, когда сетевое
напряжение начало возрастать, достаточно двух измерений. Время одного
преобразования АЦП составляет 27 мкс (см. раздел
Выбор_константы_cADCSamplesCount). Время на обработку полученного результата
(первые 5 команд процедуры PhaseDetect) составит в худшем случае 8 мкс. Значит,
максимальная погрешность равна 27 + 27 + 8 = 62 мкс. Согласно формуле U = A •
sin(2 • p • f • t), при такой задержке мгновенное напряжение в сети будет
находиться на уровне U = 310 • sin(2 • 3,14 • 100 • 62•10-6) = 12 В (относительно
номинального сетевого напряжения).
Включение
с интервалом 10 мс лампы мощностью 60 Вт с сопротивлением нити 882 Ом при
напряжении 12 В создаст ток всего 12 / 882 = 14 мА. Такой малый ток не способен
заметно повлиять на сокращение срока службы лампы, создать помехи, и т.п.
Ввиду
разветвлённости алгоритма основной программы его наглядное изображение в
графическом виде не приводится, т.к. будет затруднительно для восприятия.
Отдельные процедуры основной программы описаны далее. Облегчить понимание
логики работы призваны комментарии к программному коду.
Функция
ИПХ (Имитация Присутствия Хозяев) использует в качестве счётчика времени во
включенном и выключенном состоянии отдельную процедуру. Имеющуюся процедуру
TurnOffTimeoutCh1 использовать нельзя. Тому есть три причины. Во-первых, она
строго индивидуальна для каждого канала. Во-вторых, её модификация потребовала
бы слишком больших усилий (понадобилось бы большое количество условных
переходов). В-третьих, если продолжительность включенного или выключенного
состояния составляет нечётное число, скажем, 3 минуты, то пришлось бы делить
его поровну между двумя процедурами и иметь дело с дробными числами. Вариант,
когда процедура выполняется только в одном из каналов, тоже не подходит, т.к.
принято, что программный код обоих каналов одинаков (для удобства модификации и
подсчёта времени выполнения программы).
В
функции ИПХ практически везде опрашивается бит лишь одного (первого) канала.
Это допустимо благодаря идентичности каналов, а также благодаря тому, что в
данном режиме каналы управляются синхронно.
В
момент включения функции ИПХ устанавливаются биты ebPowerState. Это сделано на
случай пропадания сетевого напряжения в момент включения. Таким образом, при
восстановлении напряжения работа функции будет продолжена.
В
функции автоотключения процентное значение, на которое уменьшается яркость,
умышленно ограничено интервалом от 10 до 90%. Такой диапазон хорошо подходит
для визуального восприятия. Кроме того, уменьшение яркости менее чем на 10% незаметно.
Для
определения значения регистра rSoftOffBrightChХ, хранящего величину уменьшенной
яркости с учётом заданного пользователем процента, в целях ускорения программы
используется табличный метод (таблица PercentageTable). Для каждого заданного
пользователем значения процента Y, в таблице находится округлённое число Х,
заранее вычисленное по формуле: X = ((100 – Y) / 100) • 256. Таблица состоит из
(90 – 10) + 1 = 81 ячейки. Когда истекает время непрерывной работы канала,
происходит обращение к таблице, затем текущее значение яркости умножается на
полученное из таблицы число. Поскольку это число предварительно было умножено
на 256, результат делится на 256 путём простого отбрасывания старшего байта,
после чего результат округляется. Например, предположим, что текущая яркость,
т.е. число в регистре rBrightnessChХ, равно 200, а заданный пользователем
процент снижения яркости равен 25%. По истечении времени непрерывной работы
канала программа обратится к таблице, в которой смещению 25 соответствует число
192. Программа произведёт умножение (200 • 192 = 38400), разделит результат на
256 (38400 / 256 = 150), округлит его (в данном примере в этом нет
необходимости) и запишет итог в регистр rSoftOffBrightChХ. Нетрудно подсчитать,
что исходная яркость 200, уменьшенная на 25%, действительно равна 150.
Несмотря
на кажущееся сходство битов bIsChannelOn и ebPowerState, объединять их воедино
нельзя. Вместе они предотвращают включение канала, если во время его выключения
по истечении времени непрерывной работы был сбой в электросети.
Дребезг
контактов кнопок SB1 и SB2 устраняется благодаря тому, что основная программа
опрашивает их состояние каждый полупериод, т.е. каждые 10 мс. Устранению
дребезга также способствует наличие внутреннего триггера Шмитта и линии
задержки на входах МК.
Обработка
состояния кнопок построена таким образом, что так называемое вторичное действие
не поддерживается. Пример: в выключенном состоянии удерживание кнопки приводит
к включению канала во втором режиме. Если продолжать удерживать кнопку, то
после того как канал включился, его яркость не начнёт изменяться, как это
обычно происходит при удерживании кнопки и включенном канале. Яркость можно
будет изменить только после отпускания кнопки и повторного её удерживания.
Такой подход более эргономичен, к тому же он позволяет исключить ошибки,
связанные с детектированием нажатия и удерживания кнопок в зависимости от
функции, режима, и текущего состояния устройства.
Реализация
обработчика кнопок основана на анализе значения регистра rButtonХHoldTime, в
котором хранится длительность удерживания кнопки в нажатом положении, а также
на сравнении его значения с константой cButtonOnHoldSense, определяющей
временной порог, начиная с которого нажатие на кнопку распознаётся как
удерживание. Этот порог равен 1 секунде. В текущей версии он определён в коде
программы, т.е. не может быть изменён конечным пользователем.
Регистр
rButtonХHoldTime может иметь четыре значения:
1)
rButtonХHoldTime = 0 (кнопка не нажата);
2)
0 < rButtonХHoldTime < cButtonOnHoldSense (кнопка нажата);
3)
rButtonХHoldTime = cButtonOnHoldSense (кнопка удерживается);
4)
rButtonХHoldTime = 255 (кнопка остаётся в нажатом положении после удерживания).
Последнее
значение сигнализирует о том, что надо дождаться отпускания кнопки. Пока этот
момент не наступит, никакие действия, связанные с обработкой состояния кнопки,
не выполняются.
Подпрограммы
чтения и записи EEPROM работают только с первыми 256 байтами. Это упрощает
адресацию, т.к. старший регистр адреса всегда равен нулю и не используется.
Если
в момент обращения к EEPROM идёт обработка предыдущего запроса, то подпрограмма
чтения дожидается его окончания. Подпрограмма записи в аналогичной ситуации
немедленно прекращается. Это вполне допустимо, поскольку задержка записи даже в
несколько десятков миллисекунд не нарушает работу основной программы, и не
заметна для пользователя.
Как
уже отмечалось, согласно описанию МК, гарантированное число циклов перезаписи
EEPROM составляет не более 100 000. По этой причине запись в ячейку
осуществляется лишь в том случае, если записываемый байт данных отличается от
того, что в ней уже записан.
В
основе подпрограммы генерации псевдослучайного числа RandomNumber8bit лежит
алгоритм [6, раздел 9.33 "Последовательности, генерируемые регистрами
сдвига с обратными связями"]. Используется программно реализованный 8-ми
разрядный регистр сдвига с отводами от 7-го, 5-го, 4-го и 3-го разряда, над
которыми производится логическая операция исключающее или (XOR, в МК
соответствует команде EOR).
Входными
данными подпрограммы является seed – число, определяющее начало псевдослучайной
последовательности. Это число должно быть
отлично
от нуля. В противном случае оно заменяется числом 113. Почему именно 113?
Потому что это первое число от начала списка, удачно располагающееся с точки
зрения возвращаемого результата, умноженного на два. Первоначально seed
генерируется путём измерения сетевого напряжения в момент подключения
устройства к сети, что гарантирует действительно случайный характер seed.
Для
повышения скорости выполнения подпрограммы и сокращения количества кода
содержимое регистра SREG не сохраняется, хотя подпрограмма изменяет состояние
некоторых его флагов.
2.6
Выбор, описание и расчеты элементной базы
Устройство
предназначено для управления стандартными лампами накаливания. Подключение
другой нагрузки, например энергосберегающей лампы или электродвигателя, может
вывести устройство и (или) нагрузку из строя.
Полный
перечень использованных компонентов (спецификация) прилагается (Приложение В).
Также прилагаются описания активных компонентов, задействованных в схеме
(Приложение Г).
а)
Диодный мост
Применение
диодного моста VD2, рассчитанного на ток 6 А, для работы с небольшим током
нагрузки (максимум 0,55 А) объясняется тем, что лампы иногда перегорают во
время работы. Возникающий при этом импульс тока амплитудой более 10...20 А
способен повредить одноамперные мосты, такие как КЦ402 или КЦ405.
Ещё
одна причина большого запаса по току – это гораздо меньшая степень нагрева
моста. Впрочем, полностью устранять нагрев не имеет смысла, т.к. корпус устройства
всё равно немного нагревается от ламп, особенно когда они включены на
максимальную яркость.
По
причине, указанной в разделе Защита от превышения сетевого напряжения, диодный
мост должен быть рассчитан на обратное напряжение не менее 600 В.
б)
Блок питания
Источник
опорного напряжения
Особенностью
схемы является использование для питания МК не обычного стабилитрона, а
интегрального источника опорного напряжения DA1 параллельного типа. Как уже
отмечалось, это позволяет отказаться от отдельного ИОН и снизить потребляемый
ток. Помимо этого, если напряжение на выходе параллельного ИОН повысится по
каким-либо причинам, возникшим со стороны шины питания схемы, это не приведёт к
нарушению стабилизации, а лишь увеличит ток через ИОН. Это общая особенность
параллельных стабилизаторов напряжения [3].
Нерегулируемый
двухвыводной ИОН выбран специально – нет необходимости подбирать и
устанавливать два дополнительных высокоточных резистора. Для стабильной работы
данного ИОН не требуется конденсатор с низким эквивалентным последовательным
сопротивлением (ESR), что тоже является плюсом.
Выбираем
ИОН серии LM4040 с классом точности 1%.
в)
Балластный резистор
Для
гашения избытка сетевого напряжения, поступающего на вход ИОН, используется
балластное сопротивление, образованное резисторами R1 и R2. Принцип действия
ИОН параллельного типа совпадает с обычным стабилитроном, поэтому для расчёта
гасящего резистора можно применить классическую формулу:
R
= (Uвх – Uст) / (Iн + Iст), (2.1)
где
Uвх – входное (ограничиваемое) напряжение, снимаемое с выхода диодного моста;
Uст
– напряжение стабилизации стабилитрона;
Iн
– ток нагрузки;
Iст
– ток стабилитрона.
Изменим
формулу с учётом падения напряжения на двух диодах диодного моста:
R
= (Uвх – 2•Uд – Uст) / (Iн + Iст). (2.2)
Падение
напряжения на предохранителе не учитываем, т.к. оно составляет всего 0,2 В при
максимальной нагрузке. Добавив коэффициент, учитывающий разброс сопротивления
резистора, получаем конечную формулу:
R
= [(Uвх – 2•Uд – Uст) / (Iн + Iст)] • Кr (2.3)
Сопротивление
резистора должно быть, с одной стороны, достаточно низким, чтобы обеспечить
минимальный ток стабилитрона при максимальном токе нагрузки и минимальном
напряжении сети, но, с другой стороны, достаточно высоким, чтобы при
максимальном напряжении сети и минимальном токе нагрузки не превысить
максимально допустимый ток стабилитрона.
Начнём
с выяснения максимального сопротивления резистора, обеспечивающего минимальный
ток стабилитрона при наихудших условиях.
Минимальное
среднее значение выпрямленного напряжения Uвх при 10%-ном допуске на напряжение
сети [4] составит 198 В. Но здесь следует также учесть снижение напряжения под
воздействием мощной нагрузки. В расчёте максимальной яркости лампы указано
снижение на 4 В. Значит
Uвх
= 198 – 4 = 194 (В).
Наибольшее
падение напряжения на диодном мосту Uд будет при максимальной нагрузке.
Согласно графику из описания моста, при токе нагрузки 0,55 А, когда обе лампы
включены на максимальную яркость, прямое напряжение для одного диода составляет
около 0,73 В.
Отклонение
стабилизированного напряжения равно 1% (по описанию LM4040, класс точности D).
Значит
Uст
= 5 + 0,05 = 5,05 (В).
Минимальный
ток, требуемый для работы стабилитрона, в соответствии с его описанием,
составляет Iст = 0,1 мА.
Поскольку
в схеме используются два резистора, каждый из которых имеет допуск 5%,
принимаем Кr = 0,9. Старение резисторов (увеличение сопротивления со временем)
не учитывается, т.к. они не будут подвергаться ни максимально допустимому
напряжению, ни высокой температуре.
Потребляемый
ток почти не зависит от того, включены ли каналы, в каком количестве и на какой
яркости.
В
силу малых величин обратные токи защитного диода, диодного моста, транзисторов,
а также токи утечки конденсаторов не учитываются.
В
значительной степени на ток потребления влияет нажатие кнопок. В этом случае
ток протекает от плюса источника питания через внутренний (pull-up) резистор МК
и замкнутую кнопку на землю. Указанное в описании МК минимальное сопротивление
внутреннего резистора составляет 20 кОм. Если нажаты обе кнопки, ток составит I=2
• (5 / 20000) = 0,5 (мА).
Таким
образом, суммарный максимальный ток потребления по цепи +5В (при напряжении
ровно 5,0 В) равен 2,2 + 0,5 = 2,7 мА (без учёта тока стабилитрона).
Значит,
в худшем случае, т.е. при напряжении 5,05 В, потребляемый ток составит Iн =
5,05 • 2,7 / 5 = 2,73 мА.
Если
бы в схеме использовался однополупериодный выпрямитель, этот ток нужно было бы
удвоить.
Подставим
полученные данные в исходную формулу (2.3):
R
= [(194 – 2•0,73 – 5,05) / (0,00273 + 0,0001)] • 0,9 =
=
[187,49 / 0,00283] • 0,9 = 66251 • 0,9 = 59626 (Ом)
Таким
образом, балласт должен иметь сопротивление не более 60 кОм. Его можно
получить, соединив последовательно два резистора по 30 кОм (о том, почему
нельзя обойтись одним резистором, рассказано далее при расчёте его мощности).
Теперь
для найденного сопротивления балластного резистора рассчитаем, не выйдет ли из
строя стабилитрон, если сетевое напряжение увеличится до уровня ограничения
защитного диода VD1, а также при воздействии других неблагоприятных факторов.
Преобразуем ранее использованную формулу к следующему виду:
Iст
= [(Uвх – 2•Uд – Uст) / (R • Кr)] – Iн. (2.4)
Для
расчёта принимаем следующие численные значения:
Максимальное
напряжение ограничения защитного диода Uвх = 548 В.
При
отсутствии нагрузки падение напряжения на одном диоде диодного моста составит
Uд = 0,65 В.
Минимальное
напряжение стабилизации стабилитрона Uст = 5 – 0,05 = 4,95 (В).
Так
как шунт составлен из двух резисторов, R = 30000 + 30000 = =60000(Ом).
Коэффициент
сопротивления Кr принимаем равным 0,95, т.к. при этом ток стабилитрона будет
больше.
Минимальный
ток нагрузки будет при не нажатых кнопках. При номинальном напряжении питания 5
В этот ток равен 2,2 мА. Значит при минимальном напряжении 4,95 В ток будет
равен Iн = 4,95 • 2,2 / 5 = 2,18 (мА).
Iст
= [(548 – 2•0,65 – 4,95) / ((30000 + 30000) • 0,95)] – 0,00218 =
=
[541,75 / 57000] – 0,00218 = 7,3 (мА).
Полученное
значение меньше 12 мА – величины максимального тока ИОН, рекомендованного в его
описании. Мощность ИОН, рассеиваемая при таком токе, составит 5 • 0,007 = 35 (мВт).
Это более чем на порядок меньше его максимальной мощности 500 мВт.
Следовательно, выбранное сопротивление балластного резистора нам подходит.
Переходим
к расчёту мощности балластного резистора. На первый взгляд, казалось бы,
резистора 0,5 Вт будет вполне достаточно, ведь он выдерживает напряжение до 350
В. На самом деле это не так. В [5] сказано, что мощность резистора, указываемая
в его описании, действительна лишь в том случае, если его сопротивление выше
так называемого критического. Последнее вычисляется по формуле:
Rк
= Uпасп2 / Pпасп, (2.5)
где
Uпасп – паспортное рабочее напряжение резистора,
Pпасп
– его паспортная мощность.
Для
резистора серии С2-23 мощностью 0,5 Вт критическое сопротивление Rк = 3502 /
0,5 = 245 (кОм). Если сопротивление резистора, как в нашем случае, меньше
критического расчёт мощности следует производить по формуле: P = U2 / R.
Учитывая максимальное напряжение сети, минимальное падение напряжения на
диодном мосту, и минимальное напряжение стабилизации, мощность резистора будет
равна:
P
= (Uвх – 2•Uд – Uст)2 / R (2.6)
P
= (242 – 2•0,65 – 4,95)2 / 60000 = 0,93 (Вт).
Однако
оказалось, что мощности резистора 1 Вт тоже недостаточно. Экспериментальная
проверка показала, что даже резистор 2 Вт (отечественный, серии МЛТ-2)
сопротивлением 56 кОм сильно нагревается. Согласно требованиям проекта, это
недопустимо. Нагрев балластного резистора является единственной причиной
нагрева корпуса устройства в ждущем режиме. Поэтому необходимо этот нагрев
устранить.
Попытка
использования 5 Вт импортного резистора серии SQP сопротивлением 50 кОм
проблему не решила – он нагревается почти до той же температуры, что и МЛТ-2.
В
результате было решено использовать два 2 Вт резистора, соединив их
последовательно. Помимо снижения температуры, это повышает надёжность
устройства, т.к. в случае пробоя одного из резисторов, второй предотвратит
выход ИОН из строя. Чтобы обеспечить равномерный нагрев, номиналы резисторов
должны быть одинаковыми.
Предпочтительны
отечественные 2 Вт резисторы серии МЛТ-2. Их габариты несколько больше
импортных аналогов серии С2-23, зато они меньше нагреваются.
г)
Фильтрующий конденсатор
Конденсатор
С1 сглаживает пульсации выпрямленного напряжения. Хотя для расчёта его ёмкости
можно было воспользоваться методикой из [6, стр.52, раздел 1.27
"Фильтрация в источниках питания"], конденсатор подбирался
эмпирическим путём. Это вызвано следующим обстоятельством.
Через
несколько секунд после окончания регулировки яркости её значение запоминается в
EEPROM. Согласно описанию МК, ток программирования составляет 6 мА (при 5 В,
25°С). Отсюда следует, что по сравнению с током потребления в обычном режиме
ток при записи возрастает почти в четыре раза: (2,2 мА + 6 мА) / 2,2 мА = 3,7.
Цикл записи, согласно описанию МК, длится 8,5 мс, т.е. почти целый полупериод
(10 мс). При таких условиях накопленный заряд конденсатора быстро истощается,
что приводит к уменьшению напряжение питания МК и образцового напряжения АЦП.
Визуально это выглядит как кратковременное однократное моргание лампы через
несколько секунд после окончания регулировки яркости (эффект заметен при уровне
яркости выше среднего).
Код
программы построен таким образом, что циклы записи в EEPROM следуют друг за
другом через каждые 10 мс. Если регулировка яркости прекращается одновременно
для двух каналов, запись в память будет длиться на 8,5 мс больше. За 1,5 мс (10
мс – 8,5 мс) конденсатор не успеет полностью зарядиться, соответственно, напряжение
опустится ещё ниже, и моргание лампы будет ещё заметнее, особенно при
пониженном напряжении сети.
Поскольку
заранее неизвестно, при какой амплитуде пульсаций моргание становится заметно
(а именно к амплитуде пульсаций привязана формула в [6]), конденсатор
подбирается экспериментально.
Номинал
1000 мкФ позволяет устранить моргание после окончания регулировки яркости
одного канала, и сделать моргание почти не заметным после одновременного
окончания регулировки яркости обоих каналов. Дальнейшему повышению ёмкости
конденсатора препятствуют малые габариты устройства.
Конечно,
можно было организовать задержку между последовательными записями в EEPROM.
Однако увеличение времени выполнения основной программы за счёт добавления
кода, в данном случае не оправдано. Во-первых, мала вероятность того, что обе
кнопки будут отпущены одновременно, причём на уровне яркости выше среднего для
обеих ламп. Во-вторых, невелика вероятность того, что напряжение в сети упадёт
до 198 В. Наконец, в-третьих, эффект моргания слишком мало заметен чтобы
уделять этому внимание.
На
функционировании ИОН большая величина ёмкости не отражается, т.к. в его
описании сказано, что допустима ёмкостная нагрузка любого номинала.
После
подключения устройства к сети, чтобы к началу основного цикла программы
напряжение питания МК успело стабилизироваться на номинальном уровне, требуется
организовать задержку старта. Если этого не сделать, то вследствие заниженного
опорного напряжения АЦП нарушится плавность автоматического включения каналов.
Учитывая
прямую зависимость частоты внутреннего RC-генератора МК от напряжения питания,
а также погрешность измерений, была выбрана задержка с запасом, равная 4
секундам. Часть этой задержки обеспечивается внутренними узлами МК Power-on
Reset и Brown-out Detection (BOD, супервизор питания). Оставшаяся часть
реализована программно.
Переходим
к выбору номинального напряжения конденсатора. Этот параметр в значительной
степени определяет срок его службы. В [8] рекомендуется, чтобы рабочее
напряжение составляло 80…100% от номинального. С другой стороны, в [9]
рекомендуется, чтобы рабочее напряжение было в два раза меньше номинального. Выбираем
конденсатор с напряжением 6,3 В.
Здесь
имеет смысл обратить внимание на следующий факт. В описаниях электролитических
конденсаторов фирмы Jamicon указано, что, начиная с рабочего напряжения 25 В,
их ёмкость изменяется со временем на 20%. Для меньших же напряжений это
значение равно 25%.
Верхний
предел температурного диапазона, на который рассчитан выбранный конденсатор,
составляет 105°С. Это ещё один параметр, в значительной степени влияющий на
срок службы конденсатора. Выбор обусловлен также тем, что корпус устройства
немного нагревается от ламп, диодного моста и балластного резистора.
Уменьшение
ёмкости конденсатора, связанное с разбросом номинала или старением, не нарушит
работоспособность устройства. Возможно лишь чуть более заметное моргание ламп в
момент запоминания яркости.
д)
Микроконтроллер
Несмотря
на то что напряжение питания схемы составляет 5 В, используемый МК U1 имеет индекс
L, означающий возможность работы при напряжении питания от 2,7 до 5 В. Это
связано с большой ёмкостью фильтрующего конденсатора, т.е. с плавным
нарастанием напряжения питания при подключении устройства к сети.
Порог
встроенного в МК супервизора питания выставлен в соответствии с описанием на
2,7 В. Если же этот порог сделать равным 4,0 В, или использовать обычный МК
(без индекса L) с порогом 4,0 В, или вообще отказаться от встроенного
супервизора, некоторые экземпляры МК могут не запуститься, особенно при
минимальном напряжении сети 198 В. Использовать же обычный МК с порогом 2,7 В
нельзя, т.к. это может привести, в частности, к искажению данных EEPROM, если
во время сохранения информации произойдёт отключение питания.
МК
тактируется внутренним RC генератором на частоте 1 МГц. Этого достаточно чтобы
получить среднее время выполнения основной программы около 0,5 мс. Здесь важно
помнить о том, что повышение тактовой частоты увеличивает ток потребления.
Стабилизировать частоту кварцевым или керамическим резонатором не требуется,
т.к. в данном применении высокая точность не нужна. Также не требуется
калибровка внутреннего генератора.
Производитель
МК рекомендует предпринять следующие меры при работе с АЦП:
-
установить между выводом REF и общим проводом фильтрующий конденсатор;
-
соединить вывод AGND с аналоговой землёй;
-
использовать LC фильтр питания в цепи AVCC;
-
при измерении не переключать выводы АЦП порта, если они настроены как цифровые
выходы.
Поскольку
высокая достоверность результата измерения не требуется, то с целью упрощения
схемы, вышеуказанные меры не соблюдаются. Калибровка АЦП тоже не требуется, в
том числе потому, что используется обычный канал, а не дифференциальный [12,
раздел 2.3].
Несмотря
на принятые упрощения, точность, т.е. повторяемость схемы, от этого не
ухудшается. Благодаря внешнему ИОН, используемому также в роли стабилизатора
питания МК, результаты измерений АЦП всегда остаются стабильными вплоть до
младшего значащего разряда, даже при 10- битном разрешении АЦП.
По
рекомендации ATMEL, для обеспечения надёжной работы МК, в непосредственной
близости от его выводов питания установлены блокировочные конденсаторы С2
(керамический) и С3 (танталовый электролитический). В данной схеме это особенно
актуально, т.к. при коммутации затворов транзисторов, обладающих довольно
высокой ёмкостью, возникают значительные импульсные токи.
Для
программирования МК предусмотрен разъём JS4 "ISP" (In-System
Programming, внутрисхемное программирование). Также как и при программировании
EEPROM самой программой во время работы, во время внутрисхемного
программирования ток МК, согласно его описанию, составляет 6 мА (при 5 В и
25°С). По результатам измерений максимальный потребляемый ток находился в
интервале от 4,3 мА до 5,8 мА. Из-за малой мощности блока питания напряжение во
время программирования снижалось примерно до 3,3 В. Однако многократный опыт
перепрограммирования МК показал что это безвредно. Более того, в Интернете
встречаются сообщения о том, что МК нормально программируется при напряжении
вплоть до 3 В.
При
программировании МК в составе устройства важно обратить внимание на следующие
моменты:
–
требуется гальваническая развязка программатора, поскольку схема находится под
потенциалом сети;
–
может потребоваться внешний блок питания (тоже с гальванической развязкой),
если программатору будет недостаточно тока, вырабатываемого блоком питания
схемы;
–
желательна установка высокоомных резисторов (порядка 100 кОм) между затворами и
истоками транзисторов чтобы не допустить их возможного перегрева, а также выхода
из строя из-за самопроизвольного открывания и увеличения сопротивления канала,
вызванного тем, что во время программирования выводы МК находятся в
высокоимпедансном состоянии.
Поэтому
лучшим вариантом, возможно, окажется запрограммировать МК до установки в схему.
Состояние
фьюзов МК соответствует значениям по умолчанию, за исключением
запрограммированного фьюза BODEN, разрешающего использование встроенного
супервизора питания (Рисунок 2.5).
Рисунок
2.5 – Программирование фьюзов МК
Ранее
отмечалось, что МК с незадействованным супервизором питания может не
запуститься. Чтобы обойти это ограничение и иметь возможность запрограммировать
фьюз, следует после появления напряжения питания кратковременно соединить вывод
Reset МК с общим проводом.
Рекомендуется
использовать программатор – avrdude . В частности, он входит в состав
бесплатной среды разработки WinAVR.
Не
показанные на схеме выводы МК никуда не подключены.
ж)
Делитель напряжения
Резисторы
R3 и R4 образуют делитель, необходимый МК для измерения напряжения сети и
определения момента перехода фазы через нуль. Обычно резистор между выходом
диодного моста и входом МК рекомендуется составлять из двух включенных
последовательно (на случай пробоя одного из них), но поскольку перед диодным
мостом установлен защитный диод, эта рекомендация не выполняется.
Делитель
должен быть рассчитан таким образом, чтобы при максимальном входном напряжении
Uвх выходное напряжение делителя Uвых не превышало напряжение питания МК. Эта
величина определяется прямым напряжением внутреннего диода МК. В данной схеме
важно чтобы входной сигнал не превышал минимальное напряжение питания МК,
потому что это напряжение является опорным для АЦП. Иначе результатом АЦП будут
коды соответствующие опорному напряжению, а не истинному значению входного
сигнала.
Согласно
описанию МК, АЦП рассчитан на обработку низкоомных сигналов (10 кОм и менее).
Поэтому для нижнего плеча делителя напряжения выберем номинал равный 9,1 кОм,
чтобы предусмотреть 5%-ный допуск сопротивления.
Для
вычисления минимального сопротивления верхнего плеча делителя воспользуемся
стандартной формулой:
Uвых
= (Uвх • R2) / (R1 + R2). (2.6)
Отсюда:
R1 = ((Uвх – Uвых) • R2) / Uвых (2.7)
Введём
коэффициент Квх, определяющий максимальное отклонение сетевого напряжения:
R1
= ((Uвх•Квх – Uвых) • R2) / Uвых (2.7,а)
Поскольку
нас интересует полный размах сетевого напряжения, перепишем формулу с учётом
амплитудного значения:
R1
= ((Uвх•Квх•1,41 – Uвых) • R2) / Uвых. (2.7,б)
Учтём
падение напряжения на двух диодах диодного моста:
R1
= ((Uвх•Квх•1,41 – 2•Uд – Uвых) • R2) / Uвых (2.7,в)
Падение
напряжения на предохранителе не учитывается, т.к. оно составляет всего 0,2 В
при максимальной нагрузке.
Осталось
добавить коэффициенты Кr, определяющие отклонение резисторов от номинала:
R1
= ((Uвх•Квх•1,41 – 2•Uд – Uвых) • R2 • Кr2) • Кr1 / Uвых (2.7,г)
Переходим
к подстановке численных значений.
Входное
напряжение Uвх = 220 В, его отклонение Квх = 10%.
В
качестве значения Uд берём минимальное падение напряжения, т.к. в этом случае
сопротивление резистора R1 будет больше. Минимальное падение напряжения на
диодах моста будет при минимальном токе, т.е. при отключенной нагрузке. Судя по
графику из описания диодного моста, падение напряжения на одном элементе при
токе нагрузки 10 мА равно примерно
Uд
= 0,65 В
Благодаря
использованию фильтрующего конденсатора большой ёмкости, пульсациями БП можно
пренебречь. Поэтому минимальное напряжение питания МК определяется минимальным
напряжением стабилизации ИОН, что, согласно описанию последнего, равно
Uвых
= 5 – 1% = 4,95 В
Стандартный
допуск на отклонение сопротивления резисторов равен
Кr
= 5%. Нужно предусмотреть ситуацию, когда сопротивление R2 (R3 по схеме) будет
больше, т.к. при этом Uвых тоже увеличится. Это, как было отмечено ранее, может
привести к неверному результату измерения. Поэтому принимаем Кr2 = 0,95. С
сопротивлением R1 (R4 по схеме) ситуация противоположная – важно учесть
уменьшение сопротивления. Поэтому Кr1 = 1,05.
Подставляя
численные значения в формулу, получаем:
R1
= ((220•1,1•1,41 – 2•0,65 – 4,95) • 9,1•103 • 0,95) • 1,05 / 4,95 = =(334,97 •
8,65•103) • 1,05 / 4,95 = 3042,37•103 / 4,95 = 614,6•103 (Ом).
Ближайшим
сопротивлением из стандартного ряда, превышающим полученное значение, является
номинал 620 кОм.
Поскольку
падение напряжения на резисторе верхнего плеча делителя может достигать 242 •
1,41 = 341 (В), резистор должен иметь мощность 0,5 Вт. Как было показано при
расчёте балластного резистора, на паспортную мощность можно ориентироваться
только тогда, когда сопротивление резистора больше критического. Для резистора
серии С2-23 мощностью 0,5 Вт критическое сопротивление Rк = 3502 / 0,5 = 245 (кОм),
что почти в три раза меньше чем 620 кОм. Значит, мощность резистора 0,5 Вт в
данном случае выбрана правильно.
к)
Выходной каскад
Нагрузка
коммутируется N-канальными MOSFET транзисторами VT1 и VT2. Особенностью схемы
является отсутствие драйвера, что в соответствии с требованием проекта уменьшает
количество используемых компонентов. Транзисторы управляются напрямую выходами
МК.
Как
выяснилось, при напряжении на затворе 5 В и мощности нагрузки 60 Вт канал
транзистора почти полностью открывается, даже несмотря на довольно высокое
сопротивление резистора в цепи затвора. Так происходит благодаря тому, что ток
нагрузки (около 0,25 А) составляет величину примерно в 20 раз меньшую
максимально допустимого тока стока транзистора. При таких условиях падение
напряжения на переходе сток-исток транзистора составляет менее 1 В, что не
приводит к заметному на глаз снижению максимальной яркости лампы.
Тока
выхода МК оказывается достаточно для перезарядки ёмкости затвора благодаря
невысокой частоте переключения (100 Гц). Это примерно на два порядка меньше
частоты, на которой работают MOSFET транзисторы в традиционных переключательных
схемах, например в импульсных источниках питания.
Отсутствие
драйвера может привести к самопроизвольному включению транзистора в случае
резкого всплеска напряжения на стоке. Этот эффект, известный под названием
CdV\dt turn-on, вызван наличием ёмкости между затвором и стоком (ёмкость
Миллера). Иногда вернуть транзистор в нормальный режим работы удаётся лишь
после отключения схемы от сети на несколько минут (на время остывания транзистора).
Одним из лучших способов предотвратить случайное включение является выбор
транзистора, у которого соотношение Qgd / Qgs1 составляет величину менее 1,4
[7]. Здесь Qgd – это величина заряда затвор-сток, Qgs1 – это величина заряда,
при котором напряжение на затворе достигает порогового значения (определяется
по графику Total Gate Charge). К сожалению, транзисторы, соответствующие
данному правилу, встречаются крайне редко. С другой стороны, случаи резких
всплесков напряжения на стоке тоже крайне редки.
При
резком спаде напряжения на стоке и отсутствии драйвера ёмкость Миллера не
приводит к самопроизвольному включению транзистора, но на затворе может
возникнуть отрицательный потенциал, превышающий допустимое напряжение
затвор-исток [10, раздел 3]. Это может стать причиной выхода транзистора из
строя. Поэтому одним из критериев при выборе транзистора стало наличие
встроенного ограничителя напряжения на затворе. Такое решение позволило
отказаться от дополнительных внешних компонентов. Кроме этого, встроенный ограничитель
предохраняет затвор от воздействия статического электричества, к которому
MOSFET транзисторы как класс приборов имеют высокую чувствительность.
При
напряжении ограничения встроенного в транзистор ограничителя около 30 В и
сопротивлении резистора в цепи затвора 10 кОм ток через выход МК составит
примерно 3 мА, что в три раза превышает допустимый. Поэтому для повышения
надёжности схемы между затвором и истоком транзистора можно поставить
дополнительный ограничитель с максимальным напряжением ограничения до 10 В. При
таком напряжении ток через внутренние защитные диоды МК будет находиться на
безопасном уровне 1 мА.
Также
для повышения надёжности можно поставить высокоомный резистор (порядка 100 кОм)
между затвором и истоком транзистора. Это предотвратит включение транзистора,
когда выходы МК находятся в высокоимпедансном состоянии, например при
срабатывании супервизора питания или сторожевого таймера. Поскольку такие
ситуации кратковременны и маловероятны, резисторы затвор-исток не используются,
поэтому на схеме не показаны.
Транзисторы
Для
того чтобы транзистор был пригоден для использования в данном устройстве, он
должен обладать следующими характеристиками:
-
ток стока – не менее 6 А, типовое сопротивление канала – не более 1 Ом;
-
напряжение сток-исток – не менее 600 В;
-
двусторонний ограничитель напряжения на затворе – есть;
-
максимальное пороговое напряжение затвор-исток – менее 5 В;
-
график зависимости тока стока от напряжения на затворе – нормирован для
напряжения затвора 5 В или меньше. То же относится к графику зависимости тока
стока от напряжения сток-исток.
Кроме
этого, в соответствии с требованием к проекту транзистор не должен сильно
нагреваться, в идеале – не нагреваться вообще. Величина нагрева Tja
характеризуется формулой:
Tja = P
• Rth = R
• I 2
• Rth + 25°C,
(2.8)
Где R
– сопротивление канала сток-исток;
I
– ток нагрузки;
Rth
– тепловое сопротивление транзистора (корпус-окружающая среда).
Так
как частота переключения транзистора не превышает 100 Гц, его динамические
потери малы, на нагрев не влияют, и поэтому в формуле не учитываются.
Из
формулы следует, что транзистор должен иметь как можно меньшее значение
теплового сопротивления. Выбранный транзистор имеет корпус практически
идентичный корпусу TO220, и обладает относительно невысоким тепловым
сопротивлением (62,5°C).
По
причине, указанной далее в разделе Защита от превышения сетевого напряжения,
транзистор должен быть рассчитан на напряжение сток-исток не менее 600 В.
Помимо этого, в случае обрыва защитного диода транзистор не выйдет из строя при
аварийном повышении напряжения сети вплоть до 380 В±10%.
По
результатам изучения продукции основных производителей MOSFET транзисторов
(Infineon, International Rectifier, Ixys, Fairchild, NEC, NXP, ON
Semiconductors, Renesas, Toshiba, Vishay) выяснилось, что встроенный
ограничитель напряжения на затворе имеется только у транзисторов фирмы Toshiba
(данные 2009 года). Следует отметить, что рекомендация основана только на
изучении описаний транзисторов. В частности, может потребоваться подбор
резистора в цепи затвора.
Теоретически
в устройстве можно применить и IGBT транзисторы. Однако найти такие экземпляры,
которые удовлетворяли бы всем вышеперечисленным требованиям, не удалось. Кроме
того, MOSFET транзисторы, как правило, дешевле. К сожалению, так называемые
logic level транзисторы, управляемые цифровыми уровнями сигналов и подходящие
по остальным параметрам, в частности, рассчитанные на напряжение 600 В, пока не
существуют.
л)
Резисторы в цепи затвора
Сопротивление
резисторов R5 и R6 оказывает влияние на следующие факторы:
-
защиту выхода МК от броска тока при перезарядке входной ёмкости транзистора
(чем больше сопротивление, тем меньше ток);
-
защиту выхода МК от превышения напряжения на затворе, которое возникает из-за
ёмкости Миллера (чем больше сопротивление, тем лучше защита);
-
степень нагрева транзисторов (чем меньше сопротивление, тем меньше нагрев);
-
уровень помех радио- и ИК-приёму, а также в электросети (чем больше
сопротивление, тем меньше помех);
-
силу звона нитей ламп накаливания (чем больше сопротивление, тем меньше звон).
Влияние
сопротивления на ток потребления, а также на падение напряжения на переходе
сток-исток транзистора в силу малых величин не учитывается
Анализируя
перечисленные факторы, приходим к очевидному выводу, что, в целом, чем больше
сопротивление, тем лучше. Однако слишком сильно его увеличивать тоже нельзя –
это приведёт к нагреву транзистора.
Для
начала выясним минимально допустимое сопротивление резистора в цепи затвора.
Оно определяется безопасным уровнем тока выхода МК при перезарядке ёмкости
затвора транзистора. В этот момент выход МК оказывается кратковременно замкнут
на землю. Учитывая ток выхода по описанию МК 20 мА и напряжение питания 5 В, по
закону Ома получаем минимально допустимое сопротивление 250 Ом.
Теперь
попробуем определить номинальное сопротивление резистора с точки зрения
ограничения напряжения на выводе МК. В описании МК сказано, что уровень
безопасного тока, протекающего через внутренние диоды, составляет 1 мА.
Максимально допустимое напряжение на затворе транзистора, указанное в его
описании, составляет ±30 В. Встроенный в транзистор двусторонний ограничитель
не позволяет напряжению превысить эту величину. Следовательно, чтобы обеспечить
безопасный ток через внутренние диоды МК потребуется сопротивление R = 30 /
0,001 = 30 кОм. При таком высоком сопротивлении в цепи затвора увеличится
сопротивление канала сток-исток. Это приведёт к уменьшению яркости лампы и
нагреву транзистора. Следовательно, выбирать сопротивление по данному критерию нельзя.
Кроме того, как было отмечено ранее, вряд ли в бытовой электросети встретятся
ситуации, вызывающие значительное повышение напряжения на затворе.
Остаётся
выбирать сопротивление, ориентируясь на степень нагрева транзистора, уровень
помех и силу звона нити лампы. Два последних фактора требуют высокого
сопротивления резистора, а первый – низкого. Получается, что сопротивление надо
выбирать как компромисс.
Следует
отметить, что помимо неприятного жужжания, звон нити лампы резко сокращает её
ресурс. Тестирование ламп различных производителей на минимальный уровень звона
нити позволило расположить их в следующем порядке предпочтений: Osram, Philips,
General Electric. В результате выбор остановился на матовых лампах Osram
Classic B FR 60 230V E14/SES, 660lm, Energy index E.
м)
Цепь защиты
Предохранитель
F1 и защитный диод VD1 формируют цепь защиты, которая предохраняет устройство
от выхода из строя при коротком замыкании нагрузки, превышения её мощности, а
также при бросках напряжения в сети, и аварийного повышения её напряжения до
380 В.
Страницы: 1, 2, 3, 4, 5, 6
|