Леонид Иванович (29.03.2007 22:23, просмотров: 1) ответил LordN на там нет описания работы самого брезенхемовского модулятора, т.е. нет алгоритма, которым получают равномерно распределенную последовательность нулей и единиц
Ну я пользовался при написании программы только http://upload.caxapa.ru/Brazenhame.zip
тем, что находится по ссылке. На Цэ это будет примерно так:
<c>
u8 Power; //требуемое значение мощности
u8 Phase;
s8 Delta;
Phase = MAXPOW; //инициализация, делать 1 раз
Power = MyPower; //задаем требуемое значение мощности
//делать по вылавливанию перехода через 0:
Delta = Power + Delta;
if (Delta < 0)
{
TriacOff();
}
else
{
TriacOn();
Delta = Delta - MAXPOW;
}
Phase = Phase - 1;
if (Phase == 0)
{
Phase = MAXPOW;
Delta = - (Phase / 2);
}
</c>
Хотя я не понимаю, каким боком алгоритм Брезенхема применим к управлению асинхронными движками. Им ведь надо чатоту и напряжение питания менять. Сейчас это реализуется очень просто: генератор трехфазной последовательности (лучше ШИМ-овый синус, но на крайняк пойдут и прямоугольники), затем IR2130, затем трехфазный мост на MOSFET или IGBT по вкусу. See appnotes 494, 495 from Atmel.