Регулятор для вентилятора переменного тока
Добавлено: Вт июн 17, 2008 11:27:03
Как на АВРе сделать регулировку скорости вращения вентилятора переменного тока?
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Anjey_N писал(а):Как на АВРе сделать регулировку скорости вращения вентилятора переменного тока ?
ниже.Вы хотите сказать, что таким образом нельзя будет управлять скоростью вращения вентилятора?ARV писал(а): ШИМ и фазовое регулирование, грубо говоря, тут притянуты за уши.
хорошо бы читать вопрос, прежде чем давать ответ.
ARV писал(а):слишком много всяких нюансов... возможно, фазовое регулирование позволит как-то менять скорость, но не поручусь, что будет хорошо...
Я всем советую: не слушайте советов!
А может не применять ШИМ, а просто отсчитать нужное время для задержки после прохождения 0. Например, для половинной мощности после прохождения сети через 0 отсчитать таймером 5 мсек и подать импульс на открівание симистора. А при следующем прохождении через 0 импульс снять?Для этого можно задействовать ШИМ (PWM) таймера. Управляя шириной импульса, а точнее задержкой перед установкой имульса управлять углом открывания симистора, таким образом регулировать скорость вращения мотора. А отсчет задержки синхронизировать с точкой прохождения фазы через 0.
я в своем проекте так и делал т.к. pwm использовать у меня не поулчилсь почему-то. По сути я сделал программно фазо-импульсное управление.Anjey_N писал(а): А может не применять ШИМ, а просто отсчитать нужное время для задержки после прохождения 0. Например, для половинной мощности после прохождения сети через 0 отсчитать таймером 5 мсек и подать импульс на открівание симистора. А при следующем прохождении через 0 импульс снять?
Когда таймер отсчитает (закончилась задержка) - сработает прерывание для открывания симистора.interrupt [EXT_INT1] void ext_int1_isr(void)
{
//фаза прошла через 0
//Произошло внешнее прерывание - запуситить таймер
TCNT1H=(char)(PHAZA>>8 );
TCNT1L=(char)(PHAZA);
TCCR1B=0x04; //Старт T1
STEP++; //счет для повтора значений данной ширины импульса определенное число раз
}
Ширина Импульса - 300мкс. Этого достаточно для открывания симистора, а закроется он сам после перехода фзы через 0.// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
//Таймер отработал - выдать импульс открывания симистора
TCCR1B=0x00;//Stop T1
OUT = 1;
delay_us(300);
OUT = 0;
}