• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
3 fazowy modulator PWM
#1
Witam, mam do zrobienia 3 fazowy modulator PWM. Z tego co wiem najlepiej będzie jak wygeneruje 3 sygnały sinusoidalne przesunięte względem siebie o 120 stopni. W projekcie muszę zwiększać wypełnienie PWM za pomocą klawiatury. Znalazłem kod na 3 fazowy generator sygnału sinusoidalnego i tutaj rodzi się  problem, mianowicie:
-Czy można z tego kodu wywalić potencjometr i ustalić stała częstotliwość?
-Chciałbym zwiększać wartość PWM z klawiatury membranowej, wiem że PWM ma wartości od 0 do 255, natomiast tutaj w kodzie wystepuje na wyjściu PWM:
pp1 = 126*sin(x+ph1);
p1 = pp1+128;
gdzie: const float ph1 = 2*pi/3; ,   x = x + y; , float x = 0;
-Ostatni problem czy da się wywalić drugie wejście tak żeby program od razu chodził i klawiszami bym sobie sterował tylko wypełnieniem poszczególnych
Kod:
int out1 = 11;
int out2 = 12;
int out3 = 12;
const float pi = 3.1415;
float x = 0;
int enable = A3;
int freqpin = A1;
unsigned char p1 = 0;
unsigned char pp1 = 0;
unsigned char pp2 = 0;
unsigned char pp3 = 0;
unsigned char p2 = 0;
unsigned char p3 = 0;
const float y = pi/30;
const float ph1 = 2*pi/3;
const float ph2 = 4*pi/3;
const float ph3 = 2*pi;

void setup() {
 pinMode(out1, OUTPUT);
 pinMode(out2, OUTPUT);
 pinMode(out3, OUTPUT);
 pinMode(enable, INPUT);
 pinMode(freqpin, INPUT);
}

void loop()  {

 x = x + y;
 analogWrite(out1, p1);
 analogWrite(out2, p2);
 analogWrite(out3, p3);
 pp1 = 126*sin(x+ph1);
 p1 = pp1+128;
 pp2 = 126*sin(x+ph2);
 p2 = pp2+128;
 pp3 = 126*sin(x+ph3);
 p3 = pp3+128;
 if(x >= 2*pi) x = 0;
 delay(freqpin);

}
Kod zaczerpnięty jest z tego wątku: https://forum.arduino.cc/index.php?topic=114252.0
 
Odpowiedź
#2
Witam,
Kod, który zamieściłeś nie generuje przebiegu sinusoidalnego, gdyż analogWrite() dla UNO nie powoduje, że na wyjściu masz napięcie, które jest drugim parametrem wejściowym funkcji. Parametr ten decyduje o szerokości (wypełnieniu) impulsu, czyli PWM. Ale to pewnie wiesz. Kiedyś zrobiłem generator sygnału sinusoidalnego ale na DUE, bo ono posiada przetwornik C/A.
Pozdrawiam.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości