Замечательный Dead Time STM32F051
Заморочился инверторами с резонансными нагрузками.
Встал, как обычно, вопрос регулировки выходной мощности.
Пришла в голову мысль (может и не оригинальная) воспользоваться Dead Time.
У STM32F051 (и не только) есть замечательные таймеры TIM16, TIM17 с комплиментарными выходами
Поскольку при 48 МГц тактовой максимальное значение Dead Time~21 мкс, то от выходных частот ~15 кГц и выше можно простенько регулировать мощность (в примере устанавливается еще и период).
void set_pwr(uint8_t power, uint16_t Tr)
{
TIM16-›BDTR = power; //мощность
TIM16-›BDTR |= TIM_BDTR_MOE;
TIM16-›ARR = (uint16_t) Tr; //Период выходного сигнала
TIM16-›CCR1 = (uint16_t) (Tr››1); //Duty cycle = 50%
}
Нужно иметь ввиду, что при больших Dead Time, когда мощность ‹20%, на резонансных нагрузках возможен уход на 3 гармонику.
Ежели Dead Time станет равен или больше перида таймера, таймер тикает, но на комплиментарных выходах чистый ноль.
Это тоже может оказаться полезным.
__________________
Будь проще, дойдет и до синтеза.
|