Нужна программа для ATmega 8 для формирования синуса 50 Гц через ШИМ. ШИМ работает на частоте от 10-15 КГц.
Форма сигнала с 2х портов: на 1 порту половинка синуса - пауза
на 2 порту пауза - половинка синуса
Между переключением одной половинки на вторую нужно мертвое время ~2.5 милисекунды (чтоб транзисторы 1 плеча успели закрыться, а второго плеча открыться).
Как лучше организовать это?
Нужна программа для ATmega 8 для формирования синуса 50 Гц через ШИМ
Сообщений 1 страница 9 из 9
Поделиться12013-06-19 16:16:56
Поделиться22013-06-19 23:04:15
1 насчет 2.5 миллисекунд ты ошибся - наверное, микросекунд
2 МК М8 не очень годится. Чтобы получить ШИМ на двух выходах нужно использовать разные каналы. на это может быть использован только timer1 в режиме fact PWM. будут потрачены все ресурсы: icr1 - на период ШИМ, ocr1a - 1-й канал длительности ШИМ, ocr1b - 2-й канал
3 в M88 эти возможности есть во всех трех таймерах. а период 256 тактов можно получить автоматически в timer0 и 2.
4 еще лучше tiny85, где имеется ВЧ-ШИМ с тактовой частотой до 64 МГц. Т.е. можно получить Fibv=250 кГц. А это важно! Если необходимо получить широкий диапазон воспроизводимых частот. С t85 удается сформировать синус до 10 кГц!
5 Чтобы сформировать сигнал с помощью ШИМ необходимо с достаточно высокой частотой (например, 22 кГц) перезагружать значение ШИМ (в OCRXX). Для 50 Гц минимальное значение частоты перезагрузки ЦАП (ШИМ это тот же ЦАП) должно быть порядка 2-5 кГц (хотя бы 32 - 64 точки на период). при этом Кгармоник для синуса будет порядка 2-5 %.
Значения ШИМ берутся последовательно из таблицы в памяти. Поэтому форма может быть ЛЮБАЯ!
6 возможен принцип DDS
7 имеются некоторые проблемы с аналоговой частью (например, с ключами)
Поделиться32013-06-30 01:43:57
Можете попробовать это Простые програмки для начинающих до ваших требований довести.
Поделиться42013-07-17 09:35:58
Это я видел, но модель в Протеусе 7, не дала 50 Гц в лучшем случае 6 Гц
Поделиться52013-07-17 11:23:09
Это я видел, но модель в Протеусе 7, не дала 50 Гц в лучшем случае 6 Гц
Пожалуйста, один из вариантов, того, что Вы видели:
Синус 50 Гц
Для получения чистоты (именно "чи") синуса, поиграйтесь с RC - цепочкой.
$regfile = "m8def.dat"
$crystal = 8000000Config Portb.0 = Output
Dim Shag As Byte , Dann As Byte
Dim X As Byte , Tik As Byte
Dim Temp As ByteConfig Timer2 = Timer , Prescale = 1
Enable Timer2
On Timer2 Pwms
Start Timer2
Enable InterruptsDo
Restore Sin_table
For Shag = 1 To 10
Read Dann
X = Dann
Waitus 435
NextFor Shag = 1 To 10
Read Dann
X = Dann
Waitus 435
NextLoop
EndPwms:
Incr TikIf Tik = 16 Then
Tik = 0
Portb = 0
End If
If Tik > X Then Portb.0 = 1
Return
Sin_table:
Data 5 , 4 , 3 , 2 , 1 , 1 , 2 , 3 , 4 , 5
Data 6 , 8 , 12 , 13 , 14 , 14 , 13 , 12 , 8 , 6
Эмуляция в "Протеус" - скачать
Отредактировано sasha_1973 (2013-07-17 15:30:05)
Поделиться62013-07-17 15:27:45
загрузка CPU "40%" - зависит напрямую от мощности ПК
впрочем это информация второстепенная)
Поделиться72013-07-17 19:03:39
Как то делал ГКЧ из журнала "Радио" конец 80-х. Так там синус получался благодаря 6 диодам, включённых последовательно по 2 встречно параллельно. Диоды были только КД503А. (запомнил, потому-что долго искал). Синус был, на удивление чистым и ровным на всём диапазоне 10-50000 Гц

