Phasenverschiebung zwischen 3 PWMs erzeugen

Hallo Forum Freunde

Ich habe 3 PWM Signals mit dem Arduino DUE erzeugt.

Ich möchte nun die drei Signale jeweils 120 Grad zu einander verschoben haben um damit später einen Drehstrommotor anzusteuern

Mit delay geht das irgendwie nicht weil delay für alle PWMs gilt

Kann jemand mir einen Tipp diesbezüglich geben

void setup() 
{
    uint32_t  pwm_duty_1 = 16383;//2^16 =65536 also maximaler Wert fuer duty cycle ist 65536-1
    uint32_t  pwm_duty_2= 16383;
    uint32_t  pwm_duty_3= 16383;
    uint32_t  pwm_freq1 = 30000;  

    pwm_set_resolution(16);  
//pwm_setup (pin,freq,iclock)

    pwm_setup( 7, pwm_freq1, 2);  
    pwm_setup( 8, pwm_freq1, 2);  
    pwm_setup( 9, pwm_freq1, 2);  
      
    
   
    pwm_write_duty( 7, pwm_duty_1 ); // pin, duty_cycle_pro_phase
    pwm_write_duty( 8, pwm_duty_2 );  
    pwm_write_duty( 9, pwm_duty_3 );  


delay(30000);  // 30sec Delay für das PWM Signal
        

 
    //pwm_stop( 7 );
    //pwm_stop( 8 );
    //pwm_stop( 9 );

        


}

void loop() 
{  
}

Der Sketch ist nicht vollständig, die includes fehlen. Und poste auch gleich Links zu den von Dir verwendeten Bibliotheken, denn sie sind nicht in der IDE standardmässig vorhanden.

Ich habe mit dem Due noch nie direkt mit der Hardware gesprochen, bei den 8-bittigen Arduinos kann die Hardware die Phasenverschiebung nicht, da die PWM nicht unabhängig voneinander sind (zumindest nicht alle).

Hallo danke für deine Antwort.

Den Code samt header Datei findest du unter

http://forum.arduino.cc/index.php/topic,144446.msg1149044.html#msg1149044

Die header Datei heisst pwm01.h

Also du meinst, dass es nicht geht die Signale in Phasen auszugeben oder wie ?

Danke im Voraus

einen Drehstrommotor anzusteuern

Welche Frequenz hast du im Sinn?
50 - 60 Hz sind ca. 7 ms offset zwischen 2 Phasen, das geht locker mit Standard Arduino ( Ohne Hardware PWM ).

Die Frequenz ist ca. 30 KHZ

Ich habe schon ein delay implementiert wenn du das meinst aber ein delay verzögert doch die 3 PWM gleichmäßig

Ich möchte aber, dass die Phase1 in 120 Grad Phasneverscheibung zur 2 Steht usw.

Das funktioniert so nicht
Du brauchst 3 Phasen. Die Phasen sind aber nicht die PWM Signale. Die PWM-Signale lehnen sich einer Sinusspannung an (der Mittelwert der PWM-Spannung entspricht der Sinusspannung) Diese 3 Sinusspannungen sind dann um 120 Grad Phasenverschoben.



http://www.mikrocontroller.net/topic/132855
http://www.mikrocontroller.net/topic/119778

http://interface.khm.de/index.php/lab/experiments/arduino-dds-sinewave-generator/

Grüße Uwe

oh danke für die Tipps.. ich habe bis jetzt 3 PWM Signale erzeugt dann war ich scheinbar auf dem Holzweg

Ich habe gesucht ob es so ein Projekt mit Arduino behandelt wurden ist. Ich habe aber leider nichts gefunden..

Hast du einen Link von Arduino dazu ?

Der letzte Link gefällt Dir nicht?
Grüße Uwe