Генератор ШИМ сигнала с изменением скважности - ELSTROIKOMPLEKT.RU

Генератор ШИМ сигнала с изменением скважности

Генератор ШИМ сигнала на микроконтроллере с регулируемой скважностью

Это простой ШИМ-генератор работающий от стабилизированного источника питания с напряжением 4,75…5,25 В. На его выходе генерируется прямоугольный сигнал с постоянной частотой 1 Гц, но с регулируемым коэффициентом заполнения в диапазоне 0…100% с шагом 1%, в зависимости от установленных перемычек J1-J7.

Устройство найдет применение в мастерской каждого радиолюбителя, например, при тестировании различных прототипов цифровых схем.

Основой генератора является популярный микроконтроллер ATmega48. Вместо него можно использовать модели ATmega88 или ATmega168, которые отличаются только большим объемом памяти.

Управляющая программа написана на ассемблере и идентична для каждого из упомянутых микроконтроллеров (занимает 2440 байт флэш-памяти). После включения источника питания или сброса микроконтроллера с помощью кнопки S1 управляющая программа конфигурирует вывод PB0 (№ 14) в качестве выхода с низким логическим уровнем (LOW), а все остальные выводы — как входы с высоким логическим уровнем (включены внутренние подтягивающие резисторы).

Затем микроконтроллер считывает состояние перемычек J1-J7, которые подключены к контактам PD0…PD6. Если все перемычки открыты (OFF), программа переходит к выполнению цикла, генерирующего сигнал с заполнением 0% (режим 0) и на выходе генератора все еще остается низкое логическое состояние (LOW).

Однако если при помощи перемычек установлено некоторое двоичное значение X = 1…99 (J1 — самый младший бит), то программа переходит к соответствующему циклу (режим X), который выполняется без прерывания.

В каждом таком цикле есть две инструкции, которые переключают состояние выхода PB0 на противоположное. Время между переключениями различается (за исключением 50% заполнения), но их сумма всегда равна 1 секунде. Благодаря этому на выходе генератора получается прямоугольный сигнал с различным заполнением, но всегда с частотой 1 Гц.

Если перемычками установлено двоичное значение X > 99, программа переходит к выполнению цикла, генерирующего 100% сигнал (режим 100), при этом на выходе генератора постоянно высокое логическое состояние (HIGH).

Для правильной работы генератора необходимо использовать кварцевый резонатор Q1 с номинальной частотой 4 МГц, поскольку циклы в управляющей программе написаны именно для этой частоты микроконтроллера.

Резистор R2 и конденсатор C1 образуют низкочастотный фильтр, который подавляет дребезг контактов, возникающий в момент нажатия кнопки S1. Транзисторы VT1 (BC547) и VT2 (BC557) работают в качестве выходного буфера с током до 100 мА.

Все возможные для установки комбинации перемычек J1-J7 и соответствующий им коэффициент заполнения сигнала, приведены в следующей таблице.

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

При программировании необходимо установить соответствующие fuse и lock биты:

  • FL (Fuse Low): $F7
  • FH (Fuse High): $DF
  • FE (Fuse Extended): $F9 ($FF для ATmega48)
  • LB (Lock Bits): $FF

При таких настройках:

  • используется внешний кварцевый резонатор (биты CKSEL3-0 = 0111);
  • делитель частоты на 8 отключен, что вызывает тактирование микроконтроллера на полной частоте резонатора (CKDIV8 = 1);
  • увеличено время запуска до 65 мс после включения напряжения питания (SUT1-0 = 11);
  • отключена генерация тактовой частоты микроконтроллера на выводе PB0 (CKOUT = 1);
  • включена возможность сброса PC6 (RSTDISBL=1) и программирования через последовательный интерфейс (SPIEN=0).

После программирования микроконтроллера отключите программатор от платы. Затем перемычками J1-J7 установите комбинацию, которая соответствует выбранному коэффициенту заполнения, и нажмите кнопку S1. На выходе генератора должен появиться прямоугольный сигнал с частотой 1 Гц и выбранной скважностью.

Скачать прошивку (2,6 KiB, скачано: 517)

Простые схемы ШИМ генераторов на одной микросхеме

Maxim ICM7555 MAX998

Budge Ing, Maxim Integrated

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

Устройства, состоящие из одной микросхемы, могут быть сделаны по двум схемам. В одной используется интегральный таймер ICM7555, а в другой – маломощный компаратор MAX998. Мы рассмотрим обе схемы.

Схема 1: использование маломощного таймера в качестве ШИМ генератора

Таймер ICM7555 включается согласно Рисунку 1.

Рисунок 1. ШИМ генератор и таймер на одной микросхеме.

На Рисунке 1 ширина импульса на выводе 3 модулируется управляющим напряжением VCONTROL, приложенным к выводу 5. Лабораторные измерения схемы были выполнены при напряжении питания 5 В. На Рисунках 2…5 показаны выходные ШИМ сигналы при трех различных управляющих напряжениях: 1 В, 2 В и 4 В. Конденсатор C1 заряжается напряжением источника питания VSUPPLY до уровня VCONTROL и разряжается от VCONTROL/2 до уровня земли. При отсутствии внешнего управляющего напряжения напряжение VCONTROL составляет 2/3 от VSUPPLY.

Рисунок 2. Выход ШИМ генератора при управляющем напряжении,
равном 1 В.
Рисунок 3. Выход ШИМ генератора при управляющем напряжении,
равном 2 В.

Рисунок 4. Выход ШИМ генератора при отсутствии управляющего напряжения.
Рисунок 5. Выход ШИМ генератора при управляющем напряжении,
равном 4 В.

Представленные осциллограммы иллюстрируют влияние управляющего напряжения, приложенного к выводу 5, на изменения пороговых напряжений двух внутренних компараторов. В отсутствие управляющего напряжения (Рисунок 4) пороги заряда и разряда C1 определяются внутренней структурой таймера и составляют 1/3 и 2/3 от напряжения питания. Этими порогами, равноудаленными от напряжения питания и земли, устанавливается коэффициент заполнения равный 50%. При изменении управляющего напряжения изменяется время заряда C1, за которое напряжение на конденсаторе должно достичь VCONTROL, и время разряда, в течение которого напряжение спадает до VCONTROL/2. Этот процесс приводит к модуляции ширины выходного импульса.

Время заряда определяется формулой

Время разряда можно вычислить из выражения

Схема 2: генератор ШИМ с компаратором

Компаратор MAX998 включается согласно Рисунку 6.

Рисунок 6. ШИМ генератор и компаратор.

Ширина выходного импульса модулируется под управлением напряжения, приложенного к R1. При напряжении питания 5 В были проведены лабораторные измерения, результаты которых представлены на Рисунках 7…9, демонстрирующих формы выходных сигналов ШИМ при управляющем напряжении, равном 1 В, 2 В и 4 В.

Рисунок 7. Выход ШИМ генератора при управляющем напряжении,
равном 1 В.
Рисунок 8. Выход ШИМ генератора при управляющем напряжении,
равном 2 В.
Рисунок 9. Выход ШИМ генератора при управляющем напряжении,
равном 3 В.

Приложенное к микросхеме MAX998 управляющее напряжение устанавливает пороговые напряжения, определяющие моменты начала заряда и разряда C1. Верхний порог равен

а нижнее пороговое напряжение равно VCONTROL/2.
Время заряда можно найти из формулы

Время разряда описывается выражением

Варианты ШИМ генераторов на двух микросхемах

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

В Схеме 1 пилообразное напряжение с вывода 6 необходимо подать на вход второго компаратора. Это напряжение будет задавать коэффициент заполнения выходных импульсов постоянной частоты. Аналогично, в Схеме 2 на второй компаратор подается пилообразное напряжение с инвертирующего входа MAX998.

Читайте также  Бур для земли электрический своими руками

Перевод: AlexAAN по заказу РадиоЛоцман

ШИМ сигнал

Очень часто в робототехнике возникает необходимость плавно управлять каким-то процессом, будь то яркость светодиода, мощность обогревателя или скорость вращения моторчика. Вполне очевидно, что управление напрямую связано с изменением напряжения на потребителе: и светодиод будет по-другому светить, и моторчик крутиться с другой скоростью. Но проблема в том, что управлять напряжением может только такая штука, как ЦАП – цифро-аналоговый преобразователь, а в нашем микроконтроллере встроенного ЦАПа нет, у нас есть только цифровой сигнал, т.е. либо вкл, либо выкл: Можно ли добиться плавного управления цифровым сигналом? Оказывается можно! Представьте себе вентилятор, вращающийся на полной мощности, напряжение постоянно. Представим теперь, что секунду напряжение подаётся, и секунду – нет, и так продолжается “по кругу”. Вентилятор начнёт крутиться в два раза медленнее, но мы скорее всего будем замечать моменты включения и выключения, особенно если вентилятор маленький. Большой вентилятор более инертен и там можно даже не заметить изменений скорости в пределах двух секунд. Можно теперь включать напряжение на 0.5 секунды, а на остальные 1.5 секунды – выключать. Вентилятор будет крутиться со скоростью 25% от максимальной. Мы с вами смогли представить так называемый ШИМ сигнал, широтно-импульсную модуляцию С лампочкой накаливания оно тоже будет работать, она ведь весьма инертна, но вот со светодиодом мы будем видеть, как он включается и выключается, потому что он практически не имеет задержки включения/выключения. Что же делать? Всё очень просто, поднять частоту. В мысленном эксперименте у нас был период 2 секунды, что есть 0.5 Гц. А теперь представьте себе такой сигнал с частотой скажем 1000 Гц. Или 25’000 Гц (25 кГц). Теперь роль играет инертность глаза, он не заметит вспышек на такой частоте, для него это будет просто уменьшение яркости. Задача решена! Изменяя так называемое “заполнение” ШИМ сигнала можно менять “суммарное” напряжение (интегрированное) за некоторый период. Чем больше заполнение ШИМ, тем выше напряжение, но не выше напряжения, которое мы “ШИМим”: При помощи ШИМ сигнала можно даже модулировать сложные аналоговые сигналы, например – синусоиду. На картинке ниже показан ШИМ (снизу) и этот же ШИМ после фильтров: Вот таким образом кстати и работают инвертеры DC-AC. Возвращаясь к свойствам ШИМ сигнала, их всего два: частота (frequency) и заполнение (duty), с ними мы разобрались. Давайте перейдём к генерации ШИМ при помощи Arduino.

Arduino и ШИМ

В уроке про функции времени я рассказывал, что у микроконтроллера есть так называемые счётчики, которые считают “пинки” от тактового генератора (кварца). Данные счётчики как раз и генерируют ШИМ сигнал, т.е. само вычислительное ядро микроконтроллера в этом не участвует. Помимо расчётов, даже вывод сигнала с ноги МК ложится на плечи счётчика. Это очень важно понимать, потому что ШИМ сигнал не тормозит выполнение кода, так как его генерацией занимается буквально “другая железка”. На платах UNO/Nano/Pro Mini у нас есть три таймера-счётчика, у каждого таймера есть по два выхода на пины МК, то есть у нас есть 2*3=6 пинов, способных генерировать ШИМ сигнал. Для генерации ШИМ у нас есть готовая функция analogWrite(pin, duty)

  • pin – пин, являющийся выводом таймера. Для Нано/Уно это пины D3, D5, D6, D9, D10, D11. На некоторых платах они помечены * звёздочкой, а вообще для определения ШИМ пинов на любой другой модели Ардуино достаточно загуглить распиновку
  • duty – заполнение ШИМ сигнала. По умолчанию все “выходы” ШИМ у нас 8-битные, то есть duty может принимать значение с “разрешением” 8 бит, а это 0-255

Совместим эти знания с прошлым уроком и попробуем менять яркость светодиода, подключенного через резистор к пину D3. Потенциометр подключен к пину A0

Рассмотренный пример меняет яркость светодиода в зависимости от положения рукоятки потенциометра. Пару слов о “стандартном” ШИМ сигнале – мы получаем его с такими настройками, какие нам даёт библиотека Arduino.h, а настройки эти сильно занижены по сравнению с возможностями Arduino. Про “улучшение” ШИМ мы поговорим позже, а сейчас давайте глянем на характеристики ШИМ “из коробки”:

Таймер Пины Частота Разрешение
Timer 0 D5 и D6 976 Гц 8 бит (0-255)
Timer 1 D9 и D10 488 Гц 8 бит (0-255)
Timer 2 D3 и D11 488 Гц 8 бит (0-255)

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

Видео

Генераторы функциональных сигналов для тестирования устройств: недорогие модели с Aliexpress

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

С целью тестирования и проверки оборудования применяют различного вида сигналы нужной формы, частоты и скважности, амплитуды и т.п. Пример такого тестирования можно посмотреть в недавнем обзоре осциллографа Rubyster 1C15 с полосой до 110 МГц. Я использовал недорогой генератор JDS-2900 c диапазоном генерации до 60 МГц.

Начну, пожалуй, с одного из самых-самых бюджетных вариантов, а именно с генератора PWM (ШИМ) сигналов FNIRSI XY-PWM1, с диапазоном генерации сигналов от 1 Hz до 150 KHz. Скважность, длительность и период повторения импульсов регулируются. Также предусмотрен таймер на отключение генерации. Настраивать удобно кнопками с контролем по дисплею. Устройство реализовано на базе контроллера Nuvoton серии N76, так что вариант интересный.

Портативный функциональный генератор от Juntek — модель JDS2900-60М с диапазоном генерации 60 МГц. Представляет собой компактный цифровой двухканальный DDS генератор сигналов с выходом BNC (х2). Есть встроенный частотомер. Можно настроить сигнал под себя либо воспользоваться предустановленными (синус, меандр, пила). Что проверить таким? Да хоть новые модели осциллографов и мультиметров.

Простейшая модель для радиолюбителя, представляет собой DDS функциональный генератор сигналов на базе микроконтроллера. Устройство имеет частотный диапазон от 1 Гц- до 65534 Гц. Форму сигнала можно настроить: доступны синусоидальный, прямоугольный, треугольный сигналы на выходе. Фронты сигнала выдаёт чёткие. Большой диапазон регулировок и настроек. Выход — BNC разъемы. Провода и адаптеры для такого генератора можно изготовить самостоятельно. Такой генератор подойдет для тестирования и проверки аудиоустройств.

Отличный функциональный генератор сигналов произвольной формы от UNI-T. В лоте на выбор две модели: UNI-T UTG932 и UNI-T UTG962. Отличаются соответственно предельной частотой генерации: 30 МГц и 60 МГц соответственно. Обе модели двухканальные. Имеет большой экран и серьезный функционал, в том числе и изменение фазы. Внутри установлен прецизионный источник цифрового сигнала 200 Ms/s (14 bit DAC). Предусмотрен встроенный частотомер.

Читайте также  Как правильно установить вытяжку над электрической плитой?

Если вы ищете совсем недорогой, но высокостабильный и, одновременно, высокочастотный генератор функциональных сигналов, то обратите внимание в сторону готовых модулей CJMCU-5351 на базе генератора Si5351/Si5351A. Представляет собой отдельный модуль для подключения к контроллеру по шине I2C, в зависимости от сигнала устанавливается выход. Тактовая частота микросхемы составляет 25 МГц, но в модуле предусмотрены умножители и делители частоты, реальный сигнал модно получить аж до 160 МГц. Минимальный — от 8 кГц. Подойдет и для Arduino, и для STM32, и для других отладочных плат. Модуль под пайку, в комплекте есть стандартная гребенка с шагом 2.54 мм. Выход ВЧ сделан с разъемами SMA-типа. Это самый бюджетный вариант такого плана.

Наверное, это самый недорогой генератор сигналов с возможностью получить синус/треугольник/квадратный на выходе. Продается в виде комплекта, который нужно будет собрать. В составе есть акриловый корпус и все необходимое. Микросхема XR2206 дает возможность генерировать тестовый сигнал в пределах 1 Гц-1 МГц. Можно регулировать выходную амплитуду в нужных пределах.

Удобный и недорогой вариант модуля-генератора импульсных сигналов, аналог такого же, что был в начале подборке. Представляет собой отдельный модуль без корпуса, со встроенным дисплеем и генератор сигналов PWM или импульсным сигналов. Можно устанавливать частоту импульсов, период повторения и скважность импульсов. Рабочий диапазон от 1Hz до 150Khz, пределы выходного напряжения от 3,3 V до 30 V.

Специальный модуль с тестовыми сигналами для VGA мониторов. Представляет собой небольшую плату со специализированой микросхемой. Питается от 7 V до 12 V (работает от любых блоков питания или батарейки типа «Крона» 9 V). Удобно для тестирования ЖК-дисплеев в ремонте или при покупке. Выдает несколько стандартных картинок для проверки матрицы.

Еще один недорогой модуль DDS генератора сигналов на основе AD9833. На этот раз характеристики чуть попроще, цена ниже. Также работает с микроконтроллерами Arduino и STM32. Удобный и недорогой способ собрать дома генератор сигналов с синусоидальным, прямоугольным, треугольным сигналом на выходе. Выход ВЧ сделан с разъемами SMA-типа.

Одна из самых лучших плат-генераторов HackRF с софтовым приемником (SDR). Может не просто принимать любой сигнал в диапазоне от 1 МГц до 6 ГГц, но и генерировать сигнал на антенну. Можно использовать в радиолюбительских целях, для исследований, для студенческого или кандидатского проекта. Фактически, это популярные RTL-SDR, но с расширенным диапазоном и возможностью передачи сигнала. По ссылке несколько вариантов комплектации, это один из самых доступных лотов на Алиэкспресс.

Поваренная книга разработчика аналоговых схем: Операционные усилители 12

Тим Грин, Пит Семиг, Колин Веллс (Texas Instruments)

Перед вами – глава из «Поваренной книги разработчика аналоговой электроники», созданной инженерами компании Texas Instruments (TI). Поваренная книга – сборник рецептов, а данный цикл статей – сборник стандартных схем с операционными усилителями. Каждой схеме посвящена отдельная статья, содержащая пример типового расчета с указанием формул и последовательности действий. Результаты расчетов дополнительно проверяются в программе SPICE-моделирования. Расчеты выполнены для конкретных усилителей из производственной линейки TI. Разработчик может использовать и другие изделия, широкий выбор которых представлен на страницах каталога компании КОМПЭЛ. От читателя требуется понимание базовых принципов работы операционных усилителей. Если же знаний недостаточно, следует вначале ознакомиться с учебными курсами TI Precision Labs (TIPL). Авторы обещают обновлять и дополнять статьи цикла.

Мы публикуем главы Поваренной книги на нашем сайте регулярно – дважды в месяц.

ШИМ-генератор на ОУ

Исходные данные к расчету представлены в таблице 34.

Таблица 34. Исходные данные к расчету

Вход Выход Питание
ViMin ViMax VoMin VoMax Vcc Vee Vref
-2,0 В 2,0 В 0 В 5 В 5 В 0 В 2,5 В

Описание схемы

Данная схема использует генератор треугольных импульсов и компаратор для формирования ШИМ-сигнала с частотой 500 кГц и коэффициентом заполнения, обратно пропорциональным входному напряжению (рисунок 42). Операционный усилитель (U3) и компаратор (U4) генерируют треугольный сигнал, подаваемый на инвертирующий вход второго компаратора (U2). Входное напряжение схемы поступает на инвертирующий вход усилителя рассогласования (U1) и далее на неинвертирующий вход компаратора (U2). Выходной ШИМ-сигнал формируется при сравнении входного напряжения и треугольного сигнала. Сигнал с выхода U2 используется для обратной связи и подается на вход усилителя рассогласования (U1). Это сделано для улучшения точности и линейности при генерации ШИМ-сигнала.

Рис. 42. Схема ШИМ-генератора

Рекомендуем обратить внимание:

  • используйте компаратор c выходом типа “push-pull” и минимальным временем задержки;
  • Применяйте ОУ с подходящими значениями скорости нарастания, GBW и диапазона выходных напряжений;
  • частота полюса, создаваемого конденсатором С, должна лежать ниже частоты переключений и значительно выше слышимого звукового диапазона;
  • импеданс источника опорного напряжения должен быть минимальным. Для этой цели может быть использован выход ОУ.

Порядок расчета

  • Выбираем коэффициент усиления для входного сигнала по формуле 1:
  • Выбираем сопротивления R1 и R2 для деления опорного напряжения и получения единичного усиления сигнала на неинвертирующем входе (формула 2):

Тогда VO_DC = 2,5 В.

  • Амплитуда Vtri должна быть выбрана выше максимальной амплитуды входного напряжения (2,0 В), чтобы избежать коэффициента заполнения ШИМ-сигнала 0% и 100%. Выбираем Vtri = 2,1 В. Амплитуда V1 = 2,5 В (формула 3):

Задаем R6 = 10 кОм и определяем R5 по формуле 4:

  • Задаем частоту ШИМ 500 кГц, исходя из формулы 5:

Задаем С3 = 100 пФ и рассчитываем R7 по формуле 6:

  • Выбираем С1 для ограничения полосы пропускания усилителя ниже частоты ШИМ (формула 7):
  • Выбираем С2 для фильтрации шума Vref и подставляем в формулу 8:

C2 = 100 нФ (номинал).

Моделирование схемы

Моделирование в режиме постоянных токов (DC-анализ) изображено на рисунке 43.

Рис. 43. Зависимость выходного напряжения усилителя от входного

Осциллограмма переходных процессов представлена на рисунке 44.

Рис. 44. Осциллограммы переходных процессов

Рекомендации

Параметры ОУ, используемого в расчете, приведены в таблице 35.

Таблица 35. Параметры ОУ, используемого в расчете

OPA2365
Vss 2,2…5,5 В
VinCM Rail-to-rail
Vout Rail-to-rail
Vos 100 мкВ
Iq 4,6 мА
Ib 2 пА
UGBW 50 МГц
SR 25 В/мкс
Число каналов 2

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

Таблица 36. Параметры альтернативных ОУ

TLV3502 OPA2353
Vss 2,2…5,5 В 2,7…5,5 В
VinCM Rail-to-rail Rail-to-rail
Vout Rail-to-rail Rail-to-rail
Vos 1 мВ 3 мкВ
Iq 3,2 мА 5,2 мА
Ib 2 пА 0,5 пА
UGBW 44 МГц
SR 22 В/мкс
Число каналов 2 2

Список ранее опубликованных глав

Перевел Вячеслав Гавриков по заказу АО КОМПЭЛ

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: