Содержание
Урок 1. Первый проект
Урок 2. Управление кнопками
Урок 3. Подключение LCD
Урок 4. Использование ШИМ
Урок 5. Таймеры
Урок 6.1. Статическая индикация
Урок 6.2. Динамическая индикация
Урок 7.1. Генерация звука
Урок 7.2. Генерация звука. Продолжение
Урок 8.1. Передача данных через UART
Урок 8.2. Передача данных через UART. Продолжение»
Урок 9. Передача данных через SPI
Урок 10. Изучение АЦП. Простой вольтметр
Урок 11. Получение синуса при помощи ШИМ
Урок 12. Измерение температуры
Урок 13. Внешние прерывания.
Урок 14. Использование отладчика
Урок 15.1. Управление инкрементальным энкодером
Урок 15.2. Управление громкостью, при помощи энкодера
Урок 16. Управление RGB светодиодом
Урок 17. Использование ИК
Урок 18.1. Знакомство с графическим дисплеем
Урок 18.2 Вывод изображения на графический дисплей
Урок 18.3 Вывод русскоязычного текста
Урок 19. Формирование сигнала, при помощи ЦАП (R2R)
Урок 20. Опрос матричной клавиатуры
Урок 21. Сторожевой таймер
Урок 22.1 Воспроизведение wav. Введение.
Урок 22.2 Воспроизведение wav. Продолжение.
Урок 23.1 Работа с внешней памятью
Урок 23.2 Работа с файловой системой Fat

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

Итак… Если пропустить генерируемый сигнал через фильтр низких частот, то получится постоянное напряжение.
pwm sin6

Так как скважность изменяется от 0 до 0xFF(255), значит у нас будет 255 уровней постоянного напряжения. Проще говоря, есть диапазон напряжения, допустим от 0 до 5В, этот диапазон разбивается на 255 значений. С шагом 5/255=0,0196В можно выставить любое напряжение.

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

Теперь перейдем к конкретной цели: получить синусоиду с частотой 50Гц с помощью микроконтроллера Atmega8. Глобальная задача — выставлять через определенные промежутки времени напряжение на выходе ШИМ, по синусоидальному закону.

Разберемся с первой частью задачи. Для того, получить определенные промежутки времени воспользуемся таймером. Допустим таймер настроен на частоту 8МГц, т.е. он будет тикать 8000000 раз в секунду. Синусоида колеблется 50 раз в секунду, значит на один период может приходиться 8000000/50=160000 тиков максимум. Раз у нас 256 уровней напряжения, то и максимальное разрешение синусоиды будет равняться 256.

Что же такое разрешение синуса? В данном случае это количество точек за период по которым построена синусоида. Для примера я построил в Excel, то как будет выглядеть синусоида для разного разрешения.

Для синуса с разрешением 4:

pwm sin1

Для синуса с разрешением 8 точек:

pwm sin3

 

Для синуса с разрешением 16 точек:

pwm sin2

Думаю «эволюция» синуса наглядно видна — чем больше точек(разрешение), тем меньше угловатостей и тем больше он похож на нормальную синусоиду.  В итоге я решил остановиться на разрешении синуса в 128 точек.

Теперь объединяем все сказанное ранее, 160000 тиков делим на разрешение 128 получаем 1250 — через столько тиков должно сработать прерывание, чтобы выставить следующий уровень напряжения. Значение 1250 нужно пихать в регистр сравнения OCR1A

OCR1AH=0x04;
OCR1AL=0xE2;

Вторая часть глобальной задачи — как построить синусоиду. Вспомним математику :D… Синус изменяется от -1 до 1. ШИМом сгенерить отрицательное напряжение не получится. Поэтому нужно сместить график над осью Х — sin(x)+1. Теперь он будет изменяться от 0 до 2, тоже не вариант, т.к. у нас 256 значений напряжения, поэтому умножим на 127, чтобы максимальным было значение 256. В итоге откопал такую формулу:

excel_pwm

128 — разрешение синуса, х — номер точки по (от 0 до 128). Сосчитал в Excel, получился массив sin[] из 128 значений, которые по очереди подставляются в OCR2.

Последнее о чем стоит упомянуть — фильтр низких частот, возможно в ближайшее время появится урок по фильтрам. В данный момент, формулы для его расчета не имеет смысла приводить, т.к. есть сайты с возможностью онлайн расчетов, достаточно набрать «фнч» в гугле.

Файл прошивки и протеуса

95 комментариев: Урок 11. Получение синусоидального сигнала при помощи ШИМ

  • Что такое дискретизация.Так вот это неполнение синуса шимом сигнала.Есть информация что она должна быть с частотой от 4Кгц -12Кгц.

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

  • Задача сделать частотник.А там другие параметры ШИМа от 4-12КГц.В вашем проекте 31КГц.Сверхзвуковая частота.

  • советую вам прочитать про то, как работают таймеры и как работает шим, т.к. судя по комменту вы полностью этого не понимаете

  • Понял .Но частота 31 Кгц для частотника большая.Нужно играться программно и с фильтрами поиграться.

  • Если понятно, то объясните, где вы там увидели 31кГц?

  • Автору низкий поклон! Нигде не мог найти объяснение этого процесса. А тут все четко и лаконично. Большое спасибо!

  • Сделал расчёт вышло 31 347.962 Гц.Может я не прав?

  • Иван, приведите расчеты, что вы считаете, какой таймер т1? т2?

  • Ну ШИМ я так понимаю в таймере 2 .А насчёт 1 таймера я не знаю как расчитать он 16 битный .

  • Если на 1 таймере ШИМ расчитывать.

  • Иван вы не разобрались с ШИМ, с тем как он работает и для чего он нужен, на этом сайте есть статьи с картинками и даже видосами.

  • Я не буду спорить .У вас таймер 2 настроен на работу ШИМа вот я его и расчитал.Посмотрю я ваши видосы.

  • Тогда скажите мне какова частота вашего ШИМ сигнала и по какой формуле можно определить?Я ШИМ настраивал в AVR и STM32.Но как определить частоту шим на таймере так и не понял.Тут она будет не постоянной так как синус .А средняя.?

  • разделите кашу, есть отдельно шим, есть отдельно синус, одно к другому не имеет отношения. начните с того что есть шим http://avr-start.ru/?p=367 у шима частота фиксированная

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика