ATMEGA16-2МГц
пытаюсь реализовать управление мощностью - ШИМ на фазовом принципе - ограничением времени подачи тока (возможно не правильно формулирую, сорри) в полупериоде синусоиды. Использую таймер1, режим PWM Fast. Хочу задать интервал увеличения времени - 1мс, т.е задать интервалы подачи сигнала - 0мс, 1мс,2мс,..9мс и время паузы 9мс,8мс,..0мс.
ПРОБЛЕМА: в режиме PWM Fast я не могу задать такие интервалы, у меня есть ближайшие варианты - 0.128мс, 1.024мс, 8.192мс.
Что я делаю неправильно? Где я ошибаюсь?
это мой первый проект - живых устройств пока не сделал - нахожусь на этапе проектирования и программирования.
Микроконтроллер оперирует с временными интервалами, кратными тактовой частоте с делителями, яв ляющимися степенями двойки.
Т.е. 10МГц тактовой он может поделить на 256, 1024 и т.п. числа, поэтому ровно 1мс получить будет сложно.
Ну, предположим, не нужные, а кратные разрядности таймера и опять же тактовой частоте. Не стоит об этом забывать.
А ШИМ находит множество применений и в том виде, в каком он есть...
прикинул - наверное я плавную регулировку мощности реализую в режиме NORMAL, там я могу задать нормальные для меня интервалы - 1,2,..,10мкс. Я думаю один такт синусоиды разбить таймером на 2 интервала-подача/отключение. насколько важен в этом случае отсчет точки перехода через 0? я выбрал частоту, к которой привязывается таймер - 50гц, может быть лучше выбрать более высокую?
и еще не подкинете ли ссылки по т.н. УМНОМУ дому на МК? пока я думаю о централизованном контролллере.
Не устаю повторять: правильно сформулированная задача - это 50% ее решения. Andrey_DP, давайте разберемся.
Быстрый ШИМ потому так и назван, что позволяет работать на высокой частоте, а у тебя сеть 50 Гц, как я понимаю... Не кажется тебе, что некое несоответствие тут присутствует?
Далее, при фазовом регулдировании важна привязка временных интервалов к моменту перехода через ноль сетевого напряжения - как ты будешь этот ШИМ (или NORMAL, если он тебе больше нравится) синхрониз-ировать с сетью?
По моему мнению (и оно подтверждено моими собственными разработками), для фазового регулирования удобно применять просто прерывание по переполнению таймера, или же по сравнению. Для синхронизации очень удобно использовать оба внешних входа запроса прерывания INT0 и INT1. По этому прерыванию запускаем таймер на счет так, чтобы он переполнился через нужный нам интервал (фазу), а в обработчике прерывания по переполнению - формируем импульс управления тиристором (а таймер останавливаем). Аналогично надо поступить и при работе от прерываний по сравнению.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Спасибо большое за ответ. А не подскажете где почитать о преимуществах ШИМов на различных частотах?
Привязка ШИМа к переходу через ноль обязательно требует работы ШИМа на ~50гц? и какие частоты для ШИМа предпочтительно выбрать для задачи регулирования мощности - яркости горения ламп накаливания?
Про ШИМ могу сказать следующее.
1. Если регулируешь фазовым способом мощность нагрузки на переменном токе, то термин ШИМ тут в общем-то притянут за уши - принято так и называть "фазовое регулирование". Для него привязка к нулю сети обязательна. Как правило, на переменном токе регулируют тиристорами или симисторами, а не транзисторами, хотя возможны и исключения.
2. Частота ШИМ на постоянном токе - это дело вкуса и конкретных требований по сглаживанию выходного напряжения. Если говорить о лампах накаливания, то глаз человека перестает замечать мерцание примерно с 30 Гц, но для надежности надо брать побольше - например, 100 Гц. Однако, если требуется на выходе ШИМ получить сглаженное напряжение, то требуются LC-фильтры, которые должны надежно срезать частоту несущей ШИМ. В этом случае для 100 Гц фильтры получаются громоздкие - даже для мощности в десятки ватт нужны тысячи микрофарад емкости и индуктивности порядка сотен миллигенри. Поэтому с целью уменьшения массо-габаритных параметров фильтра частоту ШИМ выбирают повыше - например, 1000 и более Гц. Однако тут другой подводный камень: потери в ключевых приборах. Начиная с определенной частоты коммутации динамические потери в транзисторах могут стать больше, чем мощность нагрузки. Поэтому почти никогда не применяют ШИМ на частоте более 100-200 КГц (хотя есть исключения: в материнских платах ноутбуков встречаются ШИМ-регуляторы, работающие на частоте порядка 1-2 МГц).
3. Для источников света сглаживание не требуется (в большинстве случаев).
4. Для нагревательных элементов (например, паяльника или печки) применяют так называемый число-импульсный ШИМ, когда 100 периодов сетевого напряжения принимают за 100% (как бы период несущей ШИМ), а регулируют путем уменьшения числа полупериодов, подаваемых на нагрузку (т.е. 70 периодов ключ открыт, а 30 периодов закрыт - это 70% мощности). В этом случае так же обычно применяют тиристоры или симисторы. Главное преимущество этого метода: коммутация происходит всегда в момент, когда напряжение в сети близко к нулю, т.е. возникает минимум помех. Однако для осветительных приборов этот метод неприемлем - сильное мерцание гарантировано.
5. Почти всегда регулирование мощности на переменном токе 50Гц при помощи тиристоров/симисторов выгоднее, чем при помощи транзисторов, т.к. обеспечивается минимум потерь на нагрев ключа.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
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? Подскажите, что не так в программе?
Так вот, у меня в ПРОТЕУСЕ все работает как нужно, а на плате изменение импульсов ШИМ не происходит.ШИМ запускается, но на кнопки никак не реагирует. Подскажите, что я делаю не так???