
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04



ЧТО ТАКОЕ ШИМ?
ШИМ-СТЕНДЫ ДЛЯ МОДУЛЯЦИИ ШИРИНЫ ИМПУЛЬСА - это метод, с помощью которого изменяется ширина импульса.
Чтобы четко понять эту концепцию, рассмотрите тактовый импульс или любой прямоугольный сигнал, он имеет рабочий цикл 50%, что означает, что период Ton и Toff одинаковы. Общая длительность, в течение которой сигнал был высоким, и продолжительность, в течение которой сигнал был низким, называется общей. временной период.
Для изображения, показанного выше, эта волна имеет рабочий цикл 50%.
Рабочий цикл = (время включения / общее время) * 100
Время включения - время, в течение которого сигнал был высоким
Время выключения - время, в течение которого сигнал был низким. Общее время - Общий период времени импульса (время включения и выключения)
Шаг 1: выбор микроконтроллера

Выбор подходящего микроконтроллера для проекта является важной частью проекта. ШИМ-сигналы могут генерироваться в микроконтроллерах с ШИМ-каналами (регистрами CCP). Для этого проекта я планирую использовать pic16f877. Вы можете скачать ссылку на техническое описание, указанную ниже
Технический паспорт PIC16F877a нажмите здесь
Модуль CCP отвечает за формирование сигнала PWM. CCP1 и CCP2 мультиплексируются с PORTC. PORTC - это двунаправленный порт шириной 8 бит. Соответствующий регистр направления данных - TRISC. Установка бита TRISC (= 1) заставит использовать соответствующий вывод PORTC в качестве входа. Очистка бита TRISC (= 0) сделает соответствующий вывод PORTC выходом.
TRISC = 0; // Очистка этого бита сделает вывод PORTC
Шаг 2: НАСТРОЙКА МОДУЛЯ CCP


CCP - ЗАХВАТ / СРАВНЕНИЕ / ШИМ МОДУЛИ
Каждый модуль Capture / Compare / PWM (CCP) содержит 16-битный регистр, который может работать как:
• 16-битный регистр захвата
• 16-битный регистр сравнения
• Регистр рабочего цикла PWM Master / Slave
Настройте регистр CCP1CON в режим ШИМ
Описание реестра
CCPxCON Этот регистр используется для настройки модуля CCP для операций Capture / Compare / PWM.
CCPRxL Этот регистр содержит 8-мегабитные биты ШИМ, младшие 2 бита будут частью регистра CCPxCON.
TMR2 Счетчик автономной работы, который будет сравниваться с CCPR1L и PR2 для генерации выходного сигнала ШИМ.
Теперь я буду использовать двоичный код для представления битов для настройки регистра CCP1CON.
см. изображение выше.
CCP1CON = 0b00001111;
Вы также можете использовать шестнадцатеричный формат
CCP1CON = 0x0F; // настраиваем регистр CCP1CON для режима ШИМ
Шаг 3: Настройка модуля Timer2 (регистр TMR2)

Timer2 - это 8-битный таймер с предделителем и постделителем. Его можно использовать в качестве временной базы ШИМ для режима ШИМ модуля (ов) CCP. Регистр TMR2 доступен для чтения и записи и очищается при любом сбросе устройства.
Показан регистр T2CON
Предварительное масштабирование и последующее масштабирование будут регулировать выходную частоту сгенерированной волны ШИМ.
Частота = тактовая частота / (4 * предварительный делитель * (PR2-TMR2) * постделитель * счетчик)
Где Tout = 1 / частота
T2CON = 0b00000100;
Это будет генерировать кристалл 2,5 кГц при 1 МГц или 100 кГц при 4 МГц (практически существует ограничение для этой частоты ШИМ, см. Конкретную таблицу данных для более подробной информации)
шестнадцатеричное представление
T2CON = 0x04; // включить T2CON без настройки предварительного масштабирования и пост-масштабирования
Шаг 4: Настройка PR2 (Регистр периода таймера 2)
Модуль Timer2 имеет 8-битный регистр периода PR2. Timer2 увеличивается с 00h до совпадения с PR2, а затем сбрасывается на 00h в следующем цикле приращения. PR2 - это регистр с возможностью чтения и записи. После сброса регистр PR2 инициализируется значением FFh.
Установка соответствующего диапазона для PR2 позволит использовать для изменения рабочего цикла сгенерированной волны ШИМ.
PR2 = 100; // Установите время цикла на 100 для изменения рабочего цикла от 0 до 100
Для простоты я использую PR2 = 100, сделав CCPR1L = 80; Можно достичь 80% рабочего цикла.
Шаг 5. Настройте модуль CCPR1l
Поскольку PR2 = 100, CCPR1l может быть настроен где угодно между 0-100, чтобы получить желаемый рабочий цикл.
Шаг 6: напишите набросок на своей MPLAB X IDE, код указан ниже

#включают
void delay (int a) // функция для генерации задержки {
для (int i = 0; i <a; i ++)
{
для (int j = 0; j <144; j ++);
}
}
пустая функция()
{TRISC = 0; // Очистка этого бита сделает вывод PORTC.
CCP1CON = 0x0F; // настраиваем регистр CCP1CON для режима ШИМ
T2CON = 0x04; // включить T2CON без настройки предварительного масштабирования и пост-масштабирования.
PR2 = 100; // Установите время цикла на 100 для изменения рабочего цикла от 0 до 100
в то время как (1) {
CCPR1L = 75; // сгенерировано 75% задержки рабочего цикла (1);
}
}
Я также немного изменил код, чтобы частота генерируемой волны ШИМ
Этот код смоделирован в Proteus, а выходной сигнал ШИМ показан ниже. Чтобы загрузить его на свои платы разработки pic, используйте #include с подходящими битами конфигурации.
Спасибо
Рекомендуемые:
Генерация ШИМ-сигнала высокого разрешения для сервоприводов RC с устройствами STM32: 3 шага

Генерация ШИМ-сигналов высокого разрешения для сервоприводов RC с устройствами STM32. В настоящее время я создаю передатчик / приемник RC на основе радиочастотного чипа SX1280. Одна из целей проекта состоит в том, чтобы я хотел получить 12-битное разрешение сервоприводов от стиков до сервоприводов. Отчасти потому, что современные цифровые сервоприводы имеют 12-битное разрешение
Как сделать дрон с помощью Arduino UNO - Сделать квадрокоптер с помощью микроконтроллера: 8 шагов (с картинками)

Как сделать дрон с помощью Arduino UNO | Сделать квадрокоптер с помощью микроконтроллера: ВведениеПосетите мой канал на Youtube Дрон - очень дорогой гаджет (продукт) для покупки. В этом посте я собираюсь обсудить, как я могу сделать это дешево ?? И как вы можете сделать это своими руками по дешевой цене … Ну, в Индии все материалы (моторы, регуляторы
ШИМ с ESP32 - Диммирование светодиода с ШИМ на ESP 32 с Arduino IDE: 6 шагов

ШИМ с ESP32 | Диммирование светодиода с помощью ШИМ на ESP 32 с помощью Arduino IDE: в этой инструкции мы увидим, как сгенерировать сигналы ШИМ с ESP32 с помощью Arduino IDE & ШИМ в основном используется для генерации аналогового выхода из любого микроконтроллера, и этот аналоговый выход может быть любым в диапазоне от 0 В до 3,3 В (в случае esp32) & из
Конфигурация предохранителей микроконтроллера AVR. Создание и загрузка во флэш-память микроконтроллера программы мигания светодиода: 5 шагов

Конфигурация предохранителей микроконтроллера AVR. Создание и загрузка во флэш-память микроконтроллера программы мигания светодиода. В этом случае мы создадим простую программу на языке C и запишем ее в память микроконтроллера. Мы напишем нашу собственную программу и скомпилируем шестнадцатеричный файл, используя Atmel Studio в качестве интегрированной платформы разработки. Настроим предохранитель би
Управление двигателями постоянного тока с помощью L298N с помощью микроконтроллера CloudX: 3 шага

Управление двигателями постоянного тока с помощью L298N с помощью микроконтроллера CloudX: В этом проекте мы объясним, как использовать наш H-мост L298N для увеличения и уменьшения скорости двигателя постоянного тока. H-мостовой модуль L298N можно использовать с двигателями, которые имеют напряжение от 5 до 35 В постоянного тока. Также имеется встроенный регулятор 5 В, поэтому, если ваш