Главная » Настройки » Новогодняя гирлянда на atmega8 3 программы. Схема китайской гирлянды. Другие пути решения проблем

Новогодняя гирлянда на atmega8 3 программы. Схема китайской гирлянды. Другие пути решения проблем

ШИМ или PWM (широтно-импульсная модуляция, по-английски pulse-width modulation) – это способ управления подачей мощности к нагрузке. Управление заключается в изменении длительности импульса при постоянной частоте следования импульсов. Широтно-импульсная модуляция бывает аналоговой, цифровой, двоичной и троичной.

Применение широтно-импульсной модуляции позволяет повысить КПД электрических преобразователей, особенно это касается импульсных преобразователей, составляющих сегодня основу вторичных источников питания различных электронных аппаратов. Обратноходовые и прямоходовые однотактные, двухтактные и полумостовые, а также мостовые импульсные преобразователи управляются сегодня с участием ШИМ, касается это и резонансных преобразователей.

Широтно-импульсная модуляция позволяет регулировать яркость подсветки жидкокристаллических дисплеев сотовых телефонов, смартфонов, ноутбуков. ШИМ реализована в , в автомобильных инверторах, в зарядных устройствах и т. д. Любое зарядное устройство сегодня использует при своей работе ШИМ.

В качестве коммутационных элементов, в современных высокочастотных преобразователях, применяются биполярные и полевые транзисторы, работающие в ключевом режиме. Это значит, что часть периода транзистор полностью открыт, а часть периода - полностью закрыт.

И так как в переходных состояниях, длящихся лишь десятки наносекунд, выделяемая на ключе мощность мала, по сравнению с коммутируемой мощностью, то средняя мощность, выделяемая в виде тепла на ключе, в итоге оказывается незначительной. При этом в замкнутом состоянии сопротивление транзистора как ключа очень невелико, и падение на нем напряжения приближается к нулю.

В разомкнутом же состоянии проводимость транзистора близка к нулю, и ток через него практически не течет. Это позволяет создавать компактные преобразователи с высокой эффективностью, то есть с небольшими тепловыми потерями. А резонансные преобразователи с переключением в нуле тока ZCS (zero-current-switching) позволяют свести эти потери к минимуму.


В ШИМ-генераторах аналогового типа, управляющий сигнал формируется аналоговым компаратором, когда на инвертирующий вход компаратора, например, подается треугольный или пилообразный сигнал, а на неинвертирующий - модулирующий непрерывный сигнал.

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

Если же пила подается на неинвертирующий вход компаратора, а модулирующий сигнал - на инвертирующий, то выходные импульсы прямоугольной формы будут иметь положительное значение тогда, когда напряжение пилы выше значения модулирующего сигнала, поданного на инвертирующий вход, а отрицательное - когда напряжение пилы ниже сигнала модулирующего. Пример аналогового формирования ШИМ - микросхема TL494, широко применяющаяся сегодня при построении импульсных блоков питания.


Цифровая ШИМ используются в двоичной цифровой технике. Выходные импульсы также принимают только одно из двух значений (включено или выключено), и средний уровень на выходе приближается к желаемому. Здесь пилообразный сигнал получается благодаря использованию N-битного счетчика.

Цифровые устройства с ШИМ работают также на постоянной частоте, обязательно превосходящей время реакции управляемого устройства, этот подход называется передискретизацией. Между фронтами тактовых импульсов, выход цифрового ШИМ остается стабильным, или на высоком, или на низком уровне, в зависимости от текущего состояния выхода цифрового компаратора, который сравнивает уровни сигналов на счетчике и приближаемый цифровой.

Выход тактуется как последовательность импульсов с состояниями 1 и 0, каждый такт состояние может сменяться или не сменяться на противоположное. Частота импульсов пропорциональна уровню приближаемого сигнала, а единицы, следующие друг за другом могут сформировать один более широкий, более продолжительный импульс.

Получаемые импульсы переменной ширины будут кратны периоду тактования, а частота будет равна 1/2NT, где T – период тактования, N – количество тактов. Здесь достижима более низкая частота по отношению к частоте тактования. Описанная схема цифровой генерации - это однобитная или двухуровневая ШИМ, импульсно-кодированная модуляция ИКМ.

Эта двухуровневая импульсно-кодированная модуляция представляет собой по сути серию импульсов с частотой 1/T, и шириной Т или 0. Для усреднения за больший промежуток времени применяется передискретизация. Высокого качества ШИМ позволяет достичь однобитная импульсно-плотностная модуляция (pulse-density-modulation), называемая также импульсно-частотной модуляцией.

При цифровой широтно-импульсной модуляции прямоугольные подимпульсы, которыми оказывается заполнен период, могут приходиться на любое место в периоде, и тогда на среднем за период значении сигнала сказывается только их количество. Так, если разделить период на 8 частей, то комбинации импульсов 11001100, 11110000, 11000101, 10101010 и т. д. дадут одинаковое среднее значение за период, тем не менее, отдельно стоящие единицы утяжеляют режим работы ключевого транзистора.

Корифеи электроники, повествуя о ШИМ, приводят такую аналогию с механикой. Если при помощи двигателя вращать тяжелый маховик, то поскольку двигатель может быть либо включен, либо выключен, то и маховик будет либо раскручиваться и продолжать вращаться, либо станет останавливаться из-за трения, когда двигатель выключен.

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

Так работают преобразователи, где переключения происходят тысячи раз в секунду, и частоты достигают единиц мегагерц. Широко распространены специальные ШИМ-контроллеры, служащие для управления балластами энергосберегающих ламп, блоками питания, и т. д.


Отношение полной длительности периода импульса ко времени включения (положительной части импульса) называется скважностью импульса. Так, если время включения составляет 10 мкс, а период длится 100 мкс, то при частоте в 10 кГц, скважность будет равна 10, и пишут, что S = 10. Величина обратная скважности называется коэффициентом заполнения импульса, по-английски Duty cycle, или сокращенно DC.

Так, для приведенного примера DC = 0.1, поскольку 10/100 = 0.1. При широтно-импульсной модуляции, регулируя скважность импульса, то есть варьируя DC, добиваются требуемого среднего значения на выходе электронного или другого электротехнического устройства, например двигателя.

Как получить из шима постоянное напряжение, знает каждый начинающий электронщик. Всё просто, надо пропустить шим через фильтр низких частот(в простейшем случае RC цепочка) и на выходе фильтра получим постоянное напряжение, не так ли?

На самом деле, как мне кажется всё гораздо интереснее, при попытке получить из шима постоянное напряжение появляются следующие вопросы:

Как подобрать номиналы элементов фильтра?

Сгладиться ли шим полностью или останутся пульсации?

И как вообще это работает, ведь конденсатор заряжается и разряжается через один и тот же резистор и по идее если коэффециент заполнения будет меньше половины, напряжение на конденсаторе вообще будет равно нулю. Например, у нас коэффециент заполнения равен 30%, тогда 30% периода конденсатор будет заряжаться, а 70% разряжаться, через тот же резистор и в итоге на нём ничего не останется, по крайне мере можно так подумать.

Давайте проверим это на практике, для этого соберём схему, изображённую ниже и подключимся щупами осциллографа в точки 1 и 2, надо отметить что период шима на порядок больше постоянной времени данной цепочки.

На осциллограмме видно, что действительно так и происходит, как быстро конденсатор зарядился также быстро и разрядился. Как же вообще получают постоянное напряжение из шима?

Единственная идея, которая напрашивается - это изменить номиналы RC фильтра, давайте на порядок увеличим значение резистора, тем самым увеличив постоянную RC цепи(теперь она будет равна периоду шима) или уменьшив частоту среза фильтра.


Ух ты, что-то начинает проясняться, у нас появилась постоянная составляющая. То есть в наши рассуждения закралась ошибка и заключается она в том, что конденсатор заряжается от 0 до 63% за время равное R*C(T ), а разряжается он от 63% до 5% за время больше чем 2T , ниже графики, поясняющие это.

На графиках видно, что скорость зарядки и разрядки конденсатора не постоянна и зависит от заряда конденсатора, это свойство и позволяет получать из шима постоянное напряжение .

Теперь, когда мы нашли ошибку в наших размышлениях давайте, проанализируем что происходило, в первом эксперименте. Известно, что полная зарядка или разрядка конденсатора происходит за время равное 5T , а зарядка до 95% и разрядка до 5% примерно за 3T . Так как постоянная времени RC цепочки(которую мы использовали как ФНЧ) была мала, то за один период шима конденсатор успевал, почти полностью зарядиться и разрядиться.

После того как мы увеличили постоянную времени цепочки, скорость его зарядки и разрядки стала разной. Например, конденсатор успел разрядиться до 63% за время х , чтобы полностью разрядиться ему надо время превышающее . Чтобы понять это можно посмотреть на графики выше.

Итак вывод, постоянная времени RC цепочки должна быть равна или больше периода шима, тогда за один период не будет происходить полный заряд-разряд конденсатора. Если же ещё на порядок увеличить постоянную времени RC цепочки, то увеличится время переходного процесса и уменьшаться пульсации. Время переходного процесса - это промежуток времени, за которое напряжение на конденсаторе изменится от 0 до некоторой постоянной величины. Данный вывод приведен для общего понимания.

Теперь примерно, понимая как вообще получают из шима постоянное напряжение, давайте перейдём к реальной задаче.
Необходимо на одном из входов ОУ формировать опорное напряжение с помощью шима и ФНЧ, логическая единица у шима составляет 3 вольта, частота шима 10KHz, допустимый уровень пульсаций 30 милливольт. Считаем, что входы ОУ ток не потребляют, в качестве ФНЧ возьмём фильтр первого порядка, реализованный на RC цепочке.

Самый простой путь - это взять RC цепочку, у которой Т на два порядка больше величины шима и посмотреть какие будут пульсаций и дальше подбирать номиналы фильтра, но это есть не что иное, как метод научного тыка, а хотелось бы всё по-честному рассчитать.


Итак для расчёта по-честному, давайте посчитаем во сколько раз надо ослабить сигнал, 3000/30 = 100 и переведём в децибелы, получается -40дб.

Известно, что крутизна спада у фильтра первого порядка составляет 20дб/декаду и ослабление сигнала на 40дб, соответствует увеличению частоты на две декады . (20дб/декаду - уменьшение амплитуды в 10 раз(20дб), при увеличении частоты в 10 раз(декада).


Зная, что частота среза фильтра должна быть на две декады(в 100 раз) меньше частоты шимы, можно её рассчитать 10KHz/100 = 100Hz .

Номиналы фильтра можно подобрать пользуясь известной формулой.


Сопротивление возьмем равным 16K, а конденсатор 100nF.
Давайте проверим, что получится на практике, соберём схему, изображённую ниже и подключимся к точкам один и два.



И нарисуем ЛAЧХ нашей схемы.

У данного генератора импульсная система питания, которая сильно шумит, это можно видеть во втором канале, но если присмотреться, то видно, что амплитуда пульсаций на осциллограмме примерно 40 милливольт, то есть немного отличается от расчётной, но это нормально так, как шим содержит высшие гармоники, которые вносят свой вклад и спад не везде равен 20дб/декаду, это видно на ЛАЧХ. Несмотря на
некоторые допущения, мне этот расчёт показался очень простым и понятным, ведь мы с помощью простых логических размышлений и школьных формул, решили такую интересную задачу. При решении данной задачи важно понять именно физический смысл, что мы по сути на АЧХ абстрактного фильтра находим точку, которая соответствует нужному подавлению сигнала, вторая координата точки - это частота, она должна быть равна частоте шима. Таким образом мы находим одну из точек АЧХ фильтра, пользуясь этой точкой находим частоту среза, а зная её мы находим номиналы фильтра, вот и всё.


"Документация" - техническая информация по применению электронных компонентов , особенностях построения различных радиотехнических и электронных схем , а также документация по особенностям работы с инженерным программным обеспечением и нормативные документы (ГОСТ).

Фирма Microchip продолжает разработку и производство передовых продуктов, предоставляющих пользователю большую функциональность, гибкость и надежность. Микроконтроллеры PICmicro используются во многих приборах повседневного спроса - от стиральных машин и автомобильной техники до медицинских приборов. Модуль сравнения, захвата и ШИМ (ССР), который присутствует во многих микроконтроллерах Microchip, используется в основном для измерения и формирования импульсных сигналов. Расширенный модуль ССР (enhanced CCP - ECCP), имеющийся во многих новых микроконтроллерах, предоставляет дополнительные возможности для формирования широтно-импульсной модуляции (ШИМ). Модуль ЕССР обеспечивает поддержку управления мостовыми и полумостовыми схемами управления, программируемое время задержки переключения (для предотвращения протекания сквозных токов через внешние силовые ключи, связанного с их разным временем переключения) и возможность автоматического выключения ШИМ при аварийных ситуациях. Модули ССР и ЕССР имеют широкие области применения. Эта статья описывает основные принципы использования данных модулей в каждом режиме, а также "нестандартные" варианты использования в практических решениях.

Модуль захвата (capture)

В режиме захвата 16-битное значение таймера (Timer 1) захватывается в регистр CCPRxH:CCPRxL при каждом событии на входе CCPx. Событие для захвата задается в регистре CCPxCON:
  • каждый спад входного сигнала;
  • каждый фронт входного сигнала;
  • каждый 4-й фронт входного сигнала;
  • каждый 16-й фронт входного сигнала.

Модуль захвата используется для измерения длительности между двумя событиями, например периода, длительности импульса, скважности и т. п.

Пример 1. Измерение периода дискретного сигнала (рис. 1).

Рис. 1. Измерение периода

    • вычитаем сохраненное время (t1) из захваченного значения времени (t2) и сохраняем результат периода Т;
    • сохраняем захваченное время t2.

Пример 2. Измерение периода с усреднением результата (рис. 2).


Рис. 2. Измерение периода с усреднением результата

Усреднение результата измерений часто требуется при зашумленном входном сигнале. Модуль ССР в PIC-контроллерах Microchip позволяет выполнить усреднение с минимальными программными издержками.

  1. Конфигурируем управляющие биты CCPxM3:CCPxM0 (CCPxCON) на захват по каждому 16-му фронту входного сигнала.
  2. Конфигурируем предделитель Timer1 так, чтобы не происходило переполнение таймера за измеряемое время.
  3. Разрешаем прерывание от CCP (бит CCPxIE).
  4. При возникновении прерывания:
    • вычитаем сохраненное время (t1) из захваченного значения времени (t2) и сохраняем результат 16 периодов (168Т);
    • сохраняем захваченное время t2;
    • сдвигаем полученный результат на 4 шага вправо (деление на 16) - получаем усредненный результат за 16 периодов.

Пример 3. Измерение длительности импульса (рис. 3).


Рис. 3. Измерение длительности импульса

  1. Конфигурируем управляющие биты CCPxM3:CCPxM0 (CCPxCON) на захват по каждому фронту входного сигнала.
  2. Конфигурируем предделитель Timer1 так, чтобы не происходило переполнение таймера за время измеряемого импульса.
  3. Разрешаем прерывание от CCP (бит CCPxIE).
  4. При следующем прерывании вычитаем из t1 новое захваченное значение. Результат будет соответствовать длительности импульса.

Пример 4. Измерение скважности импульсов (рис. 4).


Рис. 4. Измерение скважности импульсов

Типичный пример, где требуется такого рода измерение - это измерение ускорения. Цифровые акселерометры обычно имеют выходной сигнал со скважностью, пропорциональной ускорению движения прибора. Скважность можно измерять по следующему алгоритму.

  1. Конфигурируем управляющие биты CCPxM3:CCPxM0 (CCPxCON) на захват по каждому фронту входного сигнала.
  2. Конфигурируем предделитель таймера 1 так, чтобы не происходило переполнение таймера за время TMAX (максимально возможная длительность периода).
  3. Разрешаем прерывание от CCP (бит CCPxIE).
  4. При возникновении прерывания сохраняем захваченное значение таймера (t1) и переконфигурируем захват по спаду импульса.
  5. При следующем прерывании вычитаем из t1 новое захваченное значение t2. Этот результат будет соответствовать длительности импульса (W).
  6. Переконфигурируем модуль ССР на захват по следующему фронту импульса.
  7. При возникновении прерывания вычитаем из t1 новое захваченное значение t3. Этот результат будет соответствовать периоду (Т).
  8. Разделить значение T на W - получим значение скважности.
  9. Повторять пп. 4-8 для получения следующих значений скважности.

Пример 5. Измерение скорости вращения энкодера.


Рис. 5. Оптический энкодер

Скорость вращения энкодера может быть измерена разными способами. Два наиболее часто встречающихся типа датчиков в энкодерах - это оптический сенсор и датчики Холла. Оптические энкодеры используют инфракрасный светодиод и датчик, а также колесо с прорезями, модулирующими световой поток (рис. 5). Другой тип использует чувствительные к магнитному полю датчики Холла, с помощью которых можно определять положение магнитов в электромоторе или постоянных магнитов, закрепленных на вращающемся объекте (рис. 6).


Рис. 6. Энкодер с датчиками Холла

Такой датчик выдает один или несколько импульсов на один оборот объекта. На рис. 7 показаны временные диаграммы при разных скоростях вращения. При увеличении скорости вращения период импульсов и их длительность становятся меньше. Период и длительность импульса пропорциональны скорости вращения. Для получения большей разрешающей способности лучше использовать датчики с несколькими импульсами на 1 оборот. Описание измерения периода для определения скорости вращения энкодера см. в примере 1, а метод усреднения измерений периода - в примере 2.


Рис. 7. Выход энкодера при разных скоростях вращения

Пример 6. Измерение периода аналогового сигнала.


Рис. 8. Схема измерения периода аналогового сигнала

Микроконтроллер со встроенным аналоговым компаратором и модулем CCP или ЕССР может быть легко использован для измерения периода аналогового сигнала. На рис. 8 приведен пример схемы с использованием периферийных модулей контроллера PIC16F684. Резисторы R3 и R4 задают порог срабатывания компаратора. При пересечении входным сигналом уровня порога, выходной уровень напряжения компаратора переключается между 0 и 1. Резисторы R1 и R2 задают гистерезис для предотвращения "дребезга" при равенстве порогового и входного напряжений. Рис. 9 демонстрирует эффект гистерезиса.

Рис. 9. Диаграммы в контрольных точках

Модуль ССР конфигурируется в режим захвата для измерения периода на выходе компаратора.

Модуль сравнения (compare)

В режиме сравнения 16-разрядные значения регистра CCPRx сравниваются с состоянием таймера. При совпадении происходит прерывание и вывод контроллера CCPx:

  • устанавливается в 1;
  • устанавливается в 0;
  • состояние не меняется;
  • переключается конфигурация модуля.

Реакция вывода определяется битами управляющего регистра CCPxCON .

Триггер специальных событий

Таймер 1 обычно не сбрасывается в 0 при возникновении прерывания от модуля CCP в режиме сравнения, кроме случая конфигурации модуля в режим Триггера специального события. В этом режиме, когда значения таймера и регистра CCPRx равны, формируется прерывание, таймер 1 очищается и автоматически запускается преобразование АЦП (если это разрешено).

Работа модуля в режиме сравнения подобна функции таймера в обычном секундомере. В случае секундомера определенное время загружается в часы и производится отсчет в обратном порядке с установленного времени до достижения нуля. Отличие работы таймера в режиме сравнения заключается в том, что время отсчитывается от нуля до установленного значения. Этот способ полезен для того, чтобы произвести определенные действия в точные интервалы времени. Обычный режим работы таймера может использоваться для исполнения тех же самых функций, однако в этом случае таймер нужно будет перезагружать каждый раз. Режим сравнения также может автоматически изменять состояние вывода CCPx.

Пример 7. Формирование модулирующих импульсов для различных форматов передачи данных.


Рис. 10. Широтно-импульсная (ШИМ)

Модуль ССР в режиме сравнения может использоваться для формирования различных форматов модуляции. На рис. 10-12 приведены различные варианты представления 0 и 1 в различных форматах передачи данных. Передача данных похожа на асинхронную передачу данных, содержащую СТАРТ-бит, восемь информационных бит и СТОП-бит. Время ТЕ является базовым временным элементом в каждом формате модуляции и задает скорость передачи данных. Триггер специального события может использоваться для формирования времени ТЕ. При возникновении прерывания от CCP подпрограмма обработки прерывания формирует требуемый формат передачи данных.

Рис. 11. Манчестерская модуляция

Рис. 12. Модуляция положением импульса

Пример 8.

Обычно стандартные модули ШИМ имеют разрядность в 10 бит. Модуль ССР в режиме сравнения может использоваться для формирования ШИМ с 16-разрядной точностью. Для этого:

  1. Настраиваем модуль ССР на установку вывода ССРх в "0" в режиме сравнения.
  2. Разрешаем прерывание от Timer 1.
  3. Записываем значение периода в Timer1 и его предделитель.
  4. Устанавливаем длительность импульса в регистр сравнения CCPRxL и CCPRxH.
  5. Устанавливаем выход ССРх в "1" при возникновении прерывания от переполнения Timer1. Следует заметить, что маленькие значения длительности импульса не могут быть сформированы из-за конечного времени обработки прерывания от Timer1. Это не сказывается на периоде формируемого сигнала, так как время выполнения прерывания от периода к периоду будет одинаковым.

Рис. 13. Формирование 16-разрядной ШИМ

Таймер Timer1 имеет четыре значения предделителя: 1:1, 1:2, 1:4 и 1:8. Возможная формируемая частота рассчитывается по формуле:

F PWM = F OSC /(65536 x 4 x предделитель)

Для микроконтроллера, работающего на частоте FOSC = 20 МГц, значения частот FPWM будут составлять 76,3 Гц, 38,1 Гц, 19,1 Гц и 9,5 Гц.

Пример 9. Последовательное измерение с помощью АЦП.

Триггер специального события в режиме сравнения (при совпадении значения Timer1 и регистра сравнения CCPRxL и CCPRxH) может формировать периодические прерывания и дополнительно автоматически запускать измерения АЦП. Покажем на примере, как организовать последовательный опрос АЦП в четко определенные моменты времени.


Рис. 14. Последовательное измерение напряжений

Пример. Микроконтроллер PIC16F684 работает от внутреннего генератора, сконфигурированного на работу с частотой 8 МГц. Нужно последовательно опрашивать каналы АЦП и измерять входное напряжение на выводах RA0, RA1 и RA2 через каждые 30 мс.

Таймер 1 переполняется через время TOSC x 65536 x 4 x предделитель. Для предделителя 1:1 таймер переполнится через 32,8 мс.

Значение регистра CCPR1 рассчитывается по формуле:

CCPR1 = время/(TOSC x 4 x предделитель) = 30 мс/ (125 нс x 4 x 1) = 6000 = 0хЕА60 . CCPR1L = 0x60, CCPR1H = 0xEA .

Модуль ЕССР должен быть сконфигурирован в режим триггера специального события. Этот режим формирует прерывание при совпадении значения Timer1 и регистра сравнения CCPRxL и CCPRxH. Для этого режима CCP1CONТ = "b00001011". При возникновении прерывания таймер автоматически очистится и установит бит GO в регистре ADCON0 для запуска преобразования АЦП. Когда произойдет прерывание от модуля ECCP, нужно выбрать следующий вход АЦП с помощью регистра ADCON0.

Применение широтно-импульсной модуляции (ШИМ)

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

V СР = скважность х V макс

Рис. 15. Зависимость среднего значения напряжения от скважности ШИМ

Модуль ССР в микроконтроллерах Microchip может формировать ШИМ-сигнал с 10-разрядной точностью на выводе CCPx-микроконтроллера. Расширенный модуль ЕССР может формировать ШИМ на одном из 4 выводов Р1A...P1D в следующих режимах:

  • одиночный выход (только на выводе P1A);
  • управление полумостом (только на выводах P1A и P1B);
  • управление мостом (возможность реверсирования двигателя).

В мостовом режиме управления доступны четыре варианта работы:

  • PA1A, P1C активный уровень "1"; P1B, P1D активный уровень "1";
  • PA1A, P1C активный уровень "1"; P1B, P1D активный уровень "0";
  • PA1A, P1C активный уровень "0"; P1B, P1D активный уровень "1";
  • PA1A, P1C активный уровень "0"; P1B, P1D активный уровень "0".

Пример 10. Выбор частоты ШИМ Частота ШИМ зависит от различных факторов. При увеличении частоты увеличиваются потери на переключение, емкость и индуктивность нагрузки влияет на изменение формы сигнала. Поэтому в микромощных устройствах следует выбирать минимально возможную частоту ШИМ, а в схемах с емкостной или индуктивной нагрузкой выбирать частоту исходя из анализа схемы.

Управление электродвигателями

ШИМ применяется для управления двигателями в импульсном режиме. По характеристикам двигателя необходимо подобрать значение частоты ШИМ, чтобы обеспечить оптимальные характеристики электропривода. При выборе задающей частоты важным критерием являются акустические шумы, создаваемые двигателем при работе. Коллекторные двигатели могут создавать звуковой шум на частотах от 20 Гц до 4 кГц. Для исключения этого нежелательного эффекта нужно выбирать частоту выше 4 кГц. На таких частотах акустического шума уже не будет, так как механические части имеют более низкие резонансные частоты.

Светодиоды и устройства освещения

ШИМ часто используется для изменения яркости световых приборов. Эффект мерцания может быть заметен на частотах ниже 50 Гц, поэтому на практике частота ШИМ выбирается около 100 Гц или выше.

Пример 11. Управление коллекторным двигателем постоянного тока с использованием модуля ССР

Скорость вращения двигателя пропорциональна скважности ШИМ на выводе контроллера CCP1 (рис. 16). Рассмотрим, как нужно сконфигурировать микроконтроллер PIC16F628 для формирования ШИМ с частотой 20 кГц и 50-процентной скважностью. Тактовая частота контроллера 20 МГц.


Рис. 16. Управление скоростью вращения коллекторного двигателя постоянного тока

    Выбираем величину предделителя Таймера 2: F PWM = F OSC /((PR2 x 1) x 4 х предделитель) = 19531 Гц , при PR2 = 255 и предделитель = 1.

    Полученная частота несколько ниже, чем 20 кГц, таким образом, величина предделителя подходит.

    Вычисляем величину регистра периода PR2: PR2 = F OSC /(F PWM x 4 x prescaler) - 1 = 249

    Вычисляем значение регистра скважности CCPR1L и CCPCON: CCPR1L:CCP1CON = = скважность G 0x3FF = 0x1FF CCPR1L = OxlFF " 2 = 0x7F, CCP1CON = 3

  1. Конфигурируем модуль ССР в режим ге нерации ШИМ: CCP1CON = "b001111000" .

Пример 12.


Рис. 17. Реверсивное управление коллекторным двигателем постоянного тока с использованием модуля ЕССР

Модуль ЕССР имеет опции для управления коллекторными двигателями постоянного тока. На рис. 17 приведена схема подключения мостовой схемы управления двигателем. Выводы модуля ЕССР P1A...P1D могут работать в режиме управления мостовой схемой и задавать скорость и направление вращения. Для примера, изображенного на рис. 17, модуль ЕССР конфигурируется так: P1A, P1C активный уровень "1"; P1B, P1D активный уровень "1" (CCP1CON). Это сделано для того, чтобы MOSFET-драйверы (ТС428) открывали выходные ключи. В таблице указана связь между режимами работы двигателя и выходами ШИМ.

Режим Р1А Р1В Р1С Р1D CCP1CON
вперед 1 X X ШИМ b01xx1100
назад X ШИМ 1 X b11xx1100
инерция X X X X не важно
торможение X 1 1 X не важно

Пример 13. Управление шаговым двигателем в режиме микрошага

Шаговые двигатели занимают уникальную нишу среди всего многообразия применений двигателей. Шаговые двигатели используются в системах измерения (в качестве индикаторов параметров) и в системах управления позиционированием исполнительных механизмов. Часто возникает необходимость управлять шаговым двигателем в режиме микрошага. Применение микроконтроллера дает много преимуществ: возможность управлять скоростью движения вала, то есть варьировать ускорением и торможением, точно позиционировать объект управления. Микроконтроллер PIC16F648 идеально подходит для большинства таких задач управления шаговым двигателем. Этот дешевый 14-вы-водной контроллер имеет 2К слов Flash-памяти программ, восемь каналов 10-разрядного АЦП, два аналоговых компаратора и модуль ECCP. Таким образом, используя только периферию контроллера, можно управлять шаговым двигателем с помощью специализированного модуля ШИМ - ECCP и реализовать защиту по току с помощью встроенного компаратора.

Подробное описание алгоритма управления шаговым двигателем и пример программы опубликованы на сайте Microchip в документе AN906 "Stepper Motor Control Using the PIC16F684".

Пример 14. Формирование аналогового сигнала


Рис. 18. Формирование аналогового сигнала с помощью ШИМ и ФНЧ

Выход ШИМ может применяться для цифро-аналогового преобразования с помощью нескольких внешних элементов. Преобразование ШИМ-сигнала в аналоговый осуществляется на основе фильтра ФНЧ (рис. 18). Для исключения появления в выходном сигнале нежелательных гармоник необходимо, чтобы частота модуляции (F PWM) была намного выше, чем частота выходного сигнала (F BW):

F PWM =К x F BW ,

причем, чем больше значение К, тем меньше гармоник.

Для расчета фильтра применяется следующая формула:

RC=1/(2πF BW)

Выбрав значение емкости С, вычисляют значение резистора R. Подавление частоты ШИМ в выходном сигнале определяется выражением:

-10 x log (дБ)

Если подавление недостаточное, то увеличивают коэффициент К, увеличивая тем самым частоту модуляции. Подробное описание примера реализации есть в документе AN538 "Using PWM to Generate Analog Output in PIC17C42" на сайте Microchip.

Пример 15. Повышающий преобразователь напряжения


Рис. 19. Повышающий преобразователь

Широтно-импульсная модуляция используется в преобразователях напряжения, например в повышающих схемах (рис. 19). Работу схемы можно разделить на две фазы. В первой фазе, когда на выходе ШИМ активный единичный уровень, происходит накопление энергии в катушке L1 путем подключения ее вывода на "землю" транзистором Т1. Во второй фазе на выходе ШИМ нулевой уровень, который запирает транзистор. Ток из катушки течет через диод D1 на конденсатор накопления С2 и на нагрузку. При этом напряжение на нагрузке получается выше напряжения питания. Расчет необходимых характеристик схемы производится по формулам:

U вых /U вх =1/(1-D) ,

где D - скважность импульсов ШИМ.

Выбор значения индуктивности производится на основе максимального выходного тока:

L = U вх (1-D)DT/2I вых ,

где Т - период ШИМ.

При расчете максимальная скважность D принимается не более 75%, а частота ШИМ - 10...100 кГц. Также необходимо рассчитать пульсации тока:

I пульс = U вх DT

Если ток пульсаций превышает значение тока насыщения индуктивности, то необходимо выбрать более высокое значение индуктивности.

кважность ШИМ вычисляется контроллером по закону ПИД, что позволяет поддерживать выходное напряжение при изменении нагрузки. Более подробно данный метод описан в примере AN258 "Low Cost USB Microcontroller Programmer" на сайте Microchip.

Пример 16. Управление яркостью светодиодов

Для изменения яркости светодиодов можно использовать ШИМ. Для этого на выход ССР подключается светодиод через резистор, ограничивающий максимальный ток. Изменяя скважность импульсов с помощью регистра CCPRxL в широких пределах (00...FF), можно менять яркость свечения. Необходимо отметить, что частота ШИМ должна быть не менее 100 Гц для устранения мерцания.

Пример 17. Протокол передачи данных Х-10. Синтез несущей частоты

Для передачи информации по электросетям, например, передачи данных внутри квартиры по силовой проводке 220 В, часто используется протокол Х-10. На основную частоту (50/60 Гц) накладывается модулированный сигнал более высокой частоты (120 кГц). Для получения такой частоты в контроллере можно применять модуль ССР в режиме ШИМ. На рис. 6 показана реализация передатчика.

В соответствии со спецификацией Х-10 частота 120 кГц должна иметь отклонения не более 2 кГц. Получение точного значения частоты в модуле ССР обусловлено примением системного кварца частотой 7,68 МГц. Подключение несущей частоты осуществляется в момент перехода сетевого напряжения через ноль.

В примере AN236 "X-10 Home Automation Using the PIC16F877A" можно найти более детальное описание протокола и исходные коды программ.

Рис. 20. Схема передачи сообщений по силовой сети 220 В по протоколу Х-10

Совместное использование модулей захвата, сравнения, ШИМ

Модуль ССР (ЕССР) в контроллерах Microchip может программироваться "на лету", за счет чего эти модули могут выполнять различные функции в одном и том же устройстве в зависимости от алгоритма работы. Рассмотрим возможности гибкого изменения функций на конкретных примерах.

Пример 18. Автоопределение скорости передачи RS-232

Интерфейс связи RS-232 имеет различные скорости передачи. Возможность устройства определять скорость связи и автоматически настраивать приемник и передатчик требует наличие в программе устройства соответствующих процедур.

Во многих новых контроллерах Microchip существует аппаратный модуль EUSART с возможностью автоматического определения скорости приема данных и подстройки скорости передачи, возможностью работы в режиме SLEEP и другими функциями, необходимыми для реализации таких протоколов, как LIN.


Рис. 21. Калибровочный символ для автоопределения скорости передачи RS-232

В тех контроллерах, где нет аппаратного модуля USART, модуль ССР можно использовать в режиме захвата для автоматического определения скорости связи и затем перенастроить в режим сравнения для формирования или приема данных через RS-232. Для работы алгоритма автоопределения скорости необходим калибровочный байт, с которого начинается передача данных от одного устройства к другому. Один из возможных калибровочных символов изображен на рис. 21. Известные временные параметры калибровочного символа позволяют принимающему устройству определить и настроить скорость передачи интерфейса RS-232.

Алгоритм определения скорости передачи по калибровочному символу:

  1. Настраиваем модуль ССР на захват по спаду (определение стартового бита).
  2. Когда стартовый бит определен, сохраняем значение регистра CCPR1.
  3. Настраиваем модуль ССР на захват по фронту (определение стопового бита).
  4. Когда стоповый бит определен, сохраняем значение регистра CCPR1.
  5. Определяем разность между значениями CCPR1, полученными в п. 4 и в п. 2. Это время 8 битовых интервалов.
  6. Разность сдвигаем на три бита вправо для деления на 8. Полученное значение - время битового интервала.
  7. Сдвигаем еще на один бит вправо. Получаем время половины битового интервала.

Примеры программ для организации приема и передачи информации по последовательному каналу, а также процедуры автоопределения скорости передачи есть в AN712 "RS-232 Autobaud for the PIC16C5X Devices".

Пример 19. АЦП двойного интегрирования

Модуль ССР позволяет построить АЦП двойного интегрирования на основе внешнего интегратора. На рис. 8 представлена схема такого устройства. Интегрирование входного сигнала U вх осуществляется за фиксированный промежуток времени Т1. Затем на вход интегратора подается U оп и измеряется время, за которое на выходе интегратора появится нулевой уровень. По временам Т1 и Т2, а также по U оп можно вычислить U вх.


Рис. 22. АЦП двойного интегрирования с применением модуля ССР

Для задания времени Т1 нужно использовать режим сравнения модуля ССР, а для определения Т2 - режим захвата. Кратко алгоритм можно представить так:

  • Настраиваем ССР на режим сравнения, используем триггер специального события.
  • Подключаем Uвх на вход интегратора.
  • Отсчитываем Т1. Это время определяется параметрами интегратора.
  • По прерыванию от ССР подключаем на вход интегратора Uоп и задаем режим захвата модуля ССР по спаду.
  • По прерыванию от ССР фиксируем время Т2.
  • Вычисляем величину Uвх.
U вх = U оп T2/T1

Благодаря большому разнообразию контроллеров Microchip и их программной и аппаратной совместимости все описанные примеры могут быть легко перенесены на тот или иной контроллер в зависимости от требований разрабатываемой системы. Компания Microchip постоянно расширяет номенклатуру контроллеров как в сторону уменьшения числа выводов и увеличения периферийных устройств, так и в сторону мощных контроллеров с большим объемом памяти и с максимально возможной периферией.


Дата публикации: 01.09.2004

Мнения читателей
  • Олег / 03.03.2015 - 13:52
    Отличная статья. Спасибо!
  • Катя. / 24.12.2009 - 09:08
    я прошу вас надати мені інформація.

Предлагаемый автомат световых эффектов содержит четыре группы светодиодов, объединенных в новогоднюю гирлянду, которой управляет микроконтроллер.

Основа автомата световых эффектов (см. рисунок) — микроконтроллер, что позволило сделать устройство максимально простым. Органы управления — переменный резистор R2 и кнопка SB1.

Схема

С помощью кнопки выбирают эффект (из десяти возможных), а переменным резистором регулируют скорость его воспроизведения (быстрее, медленнее).

Управляющие сигналы с выходов микроконтроллера DD1 через токоограничивающие резисторы R5, R6, R8, R9 поступают на базы транзисторов VT1—VT4, которые подают питающее напряжение на группы светодиодов HL1—HL3, HL4—HL6, HL7—HL9, HL10 -HL12. Резисторы R4, R7, R10, R11 ограничивают ток через светодиоды.

Рис. 1. Принципиальная схема автомата световых эффектов на светодиодах и микроконтроллере.

Детали

Применены постоянные резисторы МЛТ, С2-23, переменный R2 — СПО, СП4-1, его сопротивление может быть в интервале 1...50 кОм, но должно соблюдаться условие R1 = R2. Оксидные конденсаторы - импортные, СЗ - К10-17, светодиоды можно применить любые с допустимым током до 20 мА и напряжением до 3 В.

Транзисторы КТ315Б заменимы на транзисторы серий КТ315, КТ3102 с любыми буквенными индексами. Стабилизатор напряжения можно применить любой с выходным напряжением 5 В, диодный мост — также любой с допустимым током не менее 0,15 А и допустимым обратным напряжением не менее 20 В.

Понижающий трансформатор — с напряжением на вторичной обмотке 9... 10 В при токе до 0,15 А. Кнопка малогабаритная с самовозвратом — ПКн159, DTST-6, выключатель питания — МТ1, МТД-1, П1Т1-1. Четыре группы светодиодов свивают в одну гирлянду, в которой светодиоды должны расположиться в следующей последовательности: HL7, HL1, HL4, HL10, HL8, HL2, HL5, HL11 и т. д.

Налаживание

Налаживания устройство не требует. В случае необходимости яркость свечения светодиодов можно изменить подборкой резисторов R4, R7, R10, R11. При программировании устанавливают следующую конфигурацию микроконтроллера: CKSEL0=1, CKSEL1=0, RSTDISBL=0, SPIEN=0, BODEN=1, BOD-LEVELS.

В авторском варианте переменный резистор оказался невысокого качества (ненадежное прилегание подвижного контакта к резистивному слою), что иногда приводило к "зависанию" программы микроконтроллера. Этот недостаток был устранен установкой постоянного резистора 1 МОм между выводом 1 микроконтроллера и минусовой линией питания.

До Нового года осталось совсем немного, и в магазинах и на рынках, на выбор предлагают огромное количество всевозможных китайских гирлянд. Всё это хорошо, но решил сделать новогоднюю гирлянду для ёлки самостоятельно, на микроконтроллере.

Во первых захотелось просто творчества, во вторых - своя самодельная гирлянда светит как-то и радостнее и веселее покупных.
Гирлянда собрана на микроконтроллере ATmega8, и состоит из 42-х светодиодов.
Автор данного проекта Дмитрий Базлов (Дима9350) и он написал код для микроконтроллера, в котором для реализации устройства заложено 11 эффектов (программ), из которых 8 программ для синих, красных и жёлтых светодиодов (по схеме верхний ряд), и 3 эффекта (программы) для белых светодиодов (нижний ряд светодиодов), среди которых имеется эффект падающей снежинки.
Напряжение питания гирлянды от 7 до 15 вольт (можно до 24 вольт, если на стабилизатор поставить небольшой радиатор), или если без стабилизатора напряжении L7805, то 5 вольт, например: USB порт компьютера. Длинна гирлянды в авторском варианте составила один метр. Ниже видео авторской гирлянды с питанием от порта USB.

Схема устройства состоит из:
- микроконтроллера ATmega8;
- чип резисторы для светодиодов 300-330 Ом - 21шт;
- микросхема L293:
- 2 конденсатора 16 вольт 10мкф;
- стабилизатор на 5 вольт - 7805.
Фьюз биты микроконтроллера установлены на 8 мГц от внутреннего генератора.

Рисунок 1.
Схема гирлянды.

Печатная плата гирлянды.

Рисунок 2.
Печатная плата гирлянды.

Внешний вид собранной гирлянды на печатной плате со стороны деталей.

Рисунок 3.
Внешний вид собранной гирлянды на печатной плате со стороны деталей.

Внешний вид собранной гирлянды на печатной плате со стороны монтажа.

Рисунок 4.
Внешний вид собранной гирлянды на печатной плате со стороны монтажа.

Так, как в авторском варианте схемы, в составе гирлянды имеется микросхема L293 (4-х канальный драйвер управления светодиодами), которая по цене соизмерима с микроконтроллером, да и не везде наверное доступна, то схема была немного переделана, и драйвер заменён на два транзистора разной проводимости (КТ814, КТ815 и один резистор на 1 кОм), которые вполне отлично справляются со своей задачей.
Обновлённая схема гирлянды, представлена на рисунке ниже.

Рисунок 5.
Схема гирлянды.

Нижний ряд светодиодов на схеме - это светодиоды белого цвета свечения, верхний ряд - чередование светодиодов по цвету: - синий, жёлтый, красный и так далее.
Цвета могут быть на Ваше усмотрение. Светодиоды желательно применять с повышенной яркостью свечения.
Начало гирлянды, (или её конец, как хотите) - идёт справа налево. "Снежинки" падают, начиная с белого светодиода HL2 и до светодиода HL42, то есть светодиоды HL1 и HL2 должны располагаться на самом верху (ими заканчивается или начинается гирлянда).
В качестве драйвера здесь применены два транзистора разной структуры. Были использованы, как уже говорилось выше, транзисторы КТ814, КТ815. Вполне справятся в этой схеме и транзисторы КТ315 и КТ361, но я их не пробовал ставить.

В авторском варианте белые светодиоды установлены на одном уровне с цветными, так как они подключены параллельно им, но разно-полярно. Расстояние между светодиодами 4-5 см., потому длина гирлянды составила метр.
Я ставил белые и цветные светодиоды отдельно друг от друга, и на расстоянии 5-6 см. Длина гирлянды в моём варианте два с небольшим метра, что вполне подойдёт для ёлки средних размеров. Причём плату спаял в течении получаса, а с гирляндой пришлось немного повозиться. Провода для соединения светодиодов желательно применять тонкие, многожильные. Я использовал связные, многожильные провода, диаметром 0,5-0,6 мм. (вместе с изоляцией), и жгут гирлянды у платы, получился не толстым.

Посмотрите демонстрационное видео работы новогодней гирлянды.



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта