Страница 1 из 1
ATmega16 : ШИМ (PWM) - вопросы новичка
Добавлено: Вт июн 26, 2007 10:48:10
Andrey_DP
Уважаемые, помогите разобраться:
ATMEGA16-2МГц
пытаюсь реализовать управление мощностью - ШИМ на фазовом принципе - ограничением времени подачи тока (возможно не правильно формулирую, сорри) в полупериоде синусоиды. Использую таймер1, режим PWM Fast. Хочу задать интервал увеличения времени - 1мс, т.е задать интервалы подачи сигнала - 0мс, 1мс,2мс,..9мс и время паузы 9мс,8мс,..0мс.
ПРОБЛЕМА: в режиме PWM Fast я не могу задать такие интервалы, у меня есть ближайшие варианты - 0.128мс, 1.024мс, 8.192мс.
Что я делаю неправильно? Где я ошибаюсь?
это мой первый проект - живых устройств пока не сделал - нахожусь на этапе проектирования и программирования.
Заранее благодарю!
Добавлено: Вт июн 26, 2007 14:44:40
Aheir
Микроконтроллер оперирует с временными интервалами, кратными тактовой частоте с делителями, яв ляющимися степенями двойки.
Т.е. 10МГц тактовой он может поделить на 256, 1024 и т.п. числа, поэтому ровно 1мс получить будет сложно.
Хм,а режим таймера Normal?(+)
Добавлено: Вт июн 26, 2007 17:01:01
Andrey_DP
Хм,так ведь в режиме таймера Normal я могу установить нужные задержки!
Для чего тогда такой режим ШИМ?
Добавлено: Вт июн 26, 2007 21:37:30
Aheir
Ну, предположим, не нужные, а кратные разрядности таймера и опять же тактовой частоте. Не стоит об этом забывать.
А ШИМ находит множество применений и в том виде, в каком он есть...

Re: Atmega16:ШИМ (PWI) -вопросы новичка
Добавлено: Вт июн 26, 2007 22:06:04
tych
Andrey_DP писал(а):пытаюсь реализовать управление мощностью - ШИМ на фазовом принципе
Тиристор или транзистор используете ?
Думаю на симмисторе, и еще вопрос:(
Добавлено: Ср июн 27, 2007 09:36:14
Andrey_DP
прикинул - наверное я плавную регулировку мощности реализую в режиме NORMAL, там я могу задать нормальные для меня интервалы - 1,2,..,10мкс. Я думаю один такт синусоиды разбить таймером на 2 интервала-подача/отключение. насколько важен в этом случае отсчет точки перехода через 0? я выбрал частоту, к которой привязывается таймер - 50гц, может быть лучше выбрать более высокую?
и еще не подкинете ли ссылки по т.н. УМНОМУ дому на МК? пока я думаю о централизованном контролллере.
Заранее благодарю!
люди,ау:)
Добавлено: Пн июл 02, 2007 12:37:53
Andrey_DP
наверное я очень глупые вопросы задаю?
Добавлено: Пн июл 02, 2007 12:53:41
ARV
Не устаю повторять: правильно сформулированная задача - это 50% ее решения.
Andrey_DP, давайте разберемся.
Быстрый ШИМ потому так и назван, что позволяет работать на высокой частоте, а у тебя сеть 50 Гц, как я понимаю... Не кажется тебе, что некое несоответствие тут присутствует?
Далее, при фазовом регулдировании важна привязка временных интервалов к моменту перехода через ноль сетевого напряжения - как ты будешь этот ШИМ (или NORMAL, если он тебе больше нравится) синхрониз-ировать с сетью?
По моему мнению (и оно подтверждено моими собственными разработками), для фазового регулирования удобно применять просто прерывание по переполнению таймера, или же по сравнению. Для синхронизации очень удобно использовать оба внешних входа запроса прерывания INT0 и INT1. По этому прерыванию запускаем таймер на счет так, чтобы он переполнился через нужный нам интервал (фазу), а в обработчике прерывания по переполнению - формируем импульс управления тиристором (а таймер останавливаем). Аналогично надо поступить и при работе от прерываний по сравнению.
ШИМ
Добавлено: Пн июл 02, 2007 15:47:16
Andrey_DP
Спасибо большое за ответ. А не подскажете где почитать о преимуществах ШИМов на различных частотах?
Привязка ШИМа к переходу через ноль обязательно требует работы ШИМа на ~50гц? и какие частоты для ШИМа предпочтительно выбрать для задачи регулирования мощности - яркости горения ламп накаливания?
Заранее благодарю!
Добавлено: Пн июл 02, 2007 17:46:38
ARV
Про ШИМ могу сказать следующее.
1. Если регулируешь фазовым способом мощность нагрузки на переменном токе, то термин ШИМ тут в общем-то притянут за уши - принято так и называть "фазовое регулирование". Для него привязка к нулю сети обязательна. Как правило, на переменном токе регулируют тиристорами или симисторами, а не транзисторами, хотя возможны и исключения.
2. Частота ШИМ на постоянном токе - это дело вкуса и конкретных требований по сглаживанию выходного напряжения. Если говорить о лампах накаливания, то глаз человека перестает замечать мерцание примерно с 30 Гц, но для надежности надо брать побольше - например, 100 Гц. Однако, если требуется на выходе ШИМ получить сглаженное напряжение, то требуются LC-фильтры, которые должны надежно срезать частоту несущей ШИМ. В этом случае для 100 Гц фильтры получаются громоздкие - даже для мощности в десятки ватт нужны тысячи микрофарад емкости и индуктивности порядка сотен миллигенри. Поэтому с целью уменьшения массо-габаритных параметров фильтра частоту ШИМ выбирают повыше - например, 1000 и более Гц. Однако тут другой подводный камень: потери в ключевых приборах. Начиная с определенной частоты коммутации динамические потери в транзисторах могут стать больше, чем мощность нагрузки. Поэтому почти никогда не применяют ШИМ на частоте более 100-200 КГц (хотя есть исключения: в материнских платах ноутбуков встречаются ШИМ-регуляторы, работающие на частоте порядка 1-2 МГц).
3. Для источников света сглаживание не требуется (в большинстве случаев).
4. Для нагревательных элементов (например, паяльника или печки) применяют так называемый число-импульсный ШИМ, когда 100 периодов сетевого напряжения принимают за 100% (как бы период несущей ШИМ), а регулируют путем уменьшения числа полупериодов, подаваемых на нагрузку (т.е. 70 периодов ключ открыт, а 30 периодов закрыт - это 70% мощности). В этом случае так же обычно применяют тиристоры или симисторы. Главное преимущество этого метода: коммутация происходит всегда в момент, когда напряжение в сети близко к нулю, т.е. возникает минимум помех. Однако для осветительных приборов этот метод неприемлем - сильное мерцание гарантировано.
5. Почти всегда регулирование мощности на переменном токе 50Гц при помощи тиристоров/симисторов выгоднее, чем при помощи транзисторов, т.к. обеспечивается минимум потерь на нагрев ключа.
Добавлено: Ср июл 04, 2007 15:22:46
Andrey_DP
Спасибо большое, буду разбиратьсясейчас
Добавлено: Пн сен 24, 2007 08:56:59
McDrew
Вот я сейчас задам самый глупый вопрос.
.include "m16def.inc"
.def temp = r16
.cseg
.org 0
rjmp RESET
.org 16
rjmp TIMER1_OVF
RESET:
ldi temp, low(RAMEND)
out SPL, temp
ldi temp, high(RAMEND)
out SPH, temp
ldi temp, 15
out WDTCR, temp
wdr
ldi temp, 0b00100000
out DDRD, temp
out PORTD, temp
ldi temp, 0b00000100
out TIMSK, temp
ldi temp, 0b11000011
out TCCR1A, temp
ldi temp, 0b00000001
out TCCR1B, temp
ldi temp, 0b01000000
out MCUCR, temp
sei
CYCLE:
ldi XL, low(1023)
ldi XH, high(1023)
STEP:
sleep
sbiw X,1
brne STEP
rjmp CYCLE
TIMER1_OVF:
out OCR1AL, XL
out OCR1AH, XH
wdr
reti
Почему на 4й ножке PD5 не меняется сигнал, он постонно на единичке, в то же время сигнал почему-то меняется на PinD5? Подскажите, что не так в программе?
Добавлено: Пн сен 24, 2007 15:11:48
McDrew
Я разобрался, спасибо.
Добавлено: Пн сен 24, 2007 18:16:08
tych
Добавлено: Чт янв 31, 2008 13:51:26
VladimirLe
Люди,помогите пожалуста, у меня проблема с реализацией ШИМа. Уже не знаю, что и делать. Вот привожу упрощенный кусок программы.
.include "m8535def.inc"
.def temp = r16
.cseg
.org 0
rjmp RESET
.org 8
rjmp TIMER1_OVF
RESET:
ldi temp,high(RAMEND)
out SPH,temp
ldi temp,low(RAMEND)
out SPL,temp
ldi temp,0x20
out DDRD,temp
ldi temp,0xdf
out portd,temp
out pind,temp
ldi temp, 0b00000100
out TIMSK, temp
ldi temp, 0b11000011
out TCCR1A, temp
ldi temp, 0b00010001
out TCCR1B, temp
sei
ldi XL, low(0xff)
ldi XH, high(0xff)
w1:
in temp,pind
cpi temp,0xff
breq w1
cpi temp,0xdf
breq w1
rjmp knopka
Knopka:
cpi temp,0xf7
breq knopka1
cpi temp,0xd7
breq knopka1
cpi temp,0xef
breq knopka2
cpi temp,0xcf
breq knopka2
knopka1:
ldi XH, high(0x1)
ldi XL, low(0xaa)
rjmp w1
knopka2:
ldi XH, high(0x3)
ldi XL, low(0xfc)
rjmp w1
TIMER1_OVF:
out OCR1AH, XH
out OCR1AL, XL
rjmp w1
Так вот, у меня в ПРОТЕУСЕ все работает как нужно, а на плате изменение импульсов ШИМ не происходит.ШИМ запускается, но на кнопки никак не реагирует. Подскажите, что я делаю не так???
