Простой генератор трехфазного синусоидального ШИМ сигнала -загатовка электропривода АД U/F=const
- Войдите на сайт для отправки комментариев
Чт, 29/05/2014 - 10:27
// #include <util/delay.h> int ku=0 ; float F1=0 ; float F2=0 ; float F3=0 ; float ifl=0; int FI1[260] ; int FI2[260] ; int FI3[260] ; int i=0 ; int iT= 256 ; //******************************************************************** void setup() { pinMode(8, OUTPUT); digitalWrite(8, LOW); Serial.begin(9600) ; while (i<iT) { ifl=float(i)/iT ; F1=sin(6.28*ifl) ; FI1[i]=int(256*(F1+1)/2) ; F2=sin(6.28*ifl+(6.26/3)) ; FI2[i]=int(256*(F2+1)/2) ; F3=sin(6.28*ifl -(6.26/3)) ; FI3[i]=int(256*(F3+1)/2) ; Serial.print("FI1=") ;Serial.print(FI1[i]) ; Serial.print("FI2=") ;Serial.print(FI2[i]) ; Serial.print("FI3=") ;Serial.println(FI3[i]) ; i=i+1 ; } TCCR0B = TCCR0B & 0b11111000 | 2;//частота ШИМ 62500Гц TCCR3B = TCCR3B & 0b11111000 | 1 ;//частота ШИМ 62500Гц TCCR1B = TCCR1B & 0b11111000 | 1;//частота ШИМ 62500Гц TCCR2B = TCCR2B & 0b11111000 | 1;//частота ШИМ 62500Гц pinMode(11, OUTPUT);//выход ШИМ для тестирования частотомера analogWrite(11, 128); //Запустить ШИМ pinMode(12, OUTPUT);//выход ШИМ для тестирования частотомера analogWrite(12, 128); //Запустить ШИМ pinMode(10, OUTPUT);//выход ШИМ для тестирования частотомера analogWrite(10, 128); //Запустить ШИМ pinMode(5, OUTPUT);//выход ШИМ для тестирования частотомера analogWrite(5, 128); //Запустить ШИМ pinMode(8, OUTPUT);//выход ШИМ для тестирования частотомера analogWrite(8, 128); //Запустить ШИМ digitalWrite(8, HIGH); } //******************************************************************** void loop() { if (ku>255) ku=0 ; analogWrite(12, FI1[ku]); //Запустить ШИМ analogWrite(10, FI2[ku]); //Запустить ШИМ analogWrite(5,FI3[ku]); //Запустить ШИМ ku=ku+1 ; delayMicroseconds(10000/256); //без задержки 10 мс }
Может уже где и было, однако, народ спрашивает, вроде. Для МЕГА 2560, частота несушей около 30 кГц, можно установить и 3 кГц. В строчках закомментированах как частота ШИМ 30 кГц для этого в конце строчки надо поставить вместо 1 двойку. В сетапе генереруются таблички 3 фаз с дискретизацией 256. На это (довольно долгое) время по выходу 8 блокируется ШИМ усилитель. Таблички меняют ШИМ в луупе, длительность периода приблизительно 10 мс. Увеличить можно задержкой или вычислительно-измерительным процессом. Вполне для асинхронного электропривода с законом U/F=const заготовка.
Увы, ошибка в заголове - следует читать заготовка. :-) Ежли модератор сможет, плз, исправьте!!!!!!!!!!!
Мне код в предыдущем сообщении код отредактировать не удалось, вот лучше и вернее.
Да, увеличить основную частоту можно уменьшая дискретизацию (ku=ku+n) приблизительно в n раз.
На 328 атмеге не полочится реализовать? Правильно понимаю, добавив мощные транзисторы станет можно крутить мощные трёхфазные движки? Частоту вращения менять можно?
Про 328 не в курсах. Надо три ШИМ таймера. С приводом не все так просто. Необходима схемка россыпью до драйверов силовых транзисторов. Будет время опубликую простую. Т.е. надо получить сигналы верхнего и нижнего плеча с задержкой по включению.
А так да, частоту вращения можно менять. Останется даже время сигнал с таха простыми методами обработать. Ну и конечно остаются проблемы с напряжением питания силовой части и собственно поиском подходящей асинхронной машины.
Есть готовые сборки на IGBT транзисторах. На форуме chipmaker.ru есть теперь уже закрытая тема по изготовлению самодельных ПЧ. Только в этой теме управление на специализированой микросхеме.
328р как раз 6 таймеров для ШИМ, в 8-й меге - 3.