Phasenverschiebung bei PWM

Gast #3541316
Hallo,
ich erzeuge 2 von einander unabhängige PWM Signale. Beide haben die 
Frequenz 10kHz also eine Periodendauer von 100µs. Momentan sind sie 
übereinander gelagert (siehe Bild 1), doch ein Signal muss ich so 
ändern, dass es High wird wenn das andere Low wird (siehe Bild 2). Diese 
Signale sollen gleichzeitig gestartet werden.

Ich verwende:
dsPIC33FJ256MC710A µC
dsPICDEM MCLV Developmend Board
PCD Compiler von CCS

Ich hoffe jemand kann mir helfen eine Phasenverschiebung bei einer PWM 
zu erzeugen.

mfg
Angehängte Dateien:
Gast #3541328
Es soll gleich aussehn.
Ja invertieren würde funktionieren aba wie sieht mein Code dann aus?

Mein Code ist momentan:

#include <33FJ256MC710A.h>
#include <stdio.h>
#include <stdlib.h>

#fuses XT,PR_PLL, NOWDT
#use delay (crystal=8M, clock=80M)

void main()
{
    set_tris_b(0);

    while(1)
    {

//1.PWM Signal
   setup_motor_pwm (1,MPWM_FREE_RUN,3998);

   set_motor_unit(1,1, MPWM_ENABLE  ,0,0);

   set_motor_pwm_duty(1,1,3600);

//2.PWM Signal
   setup_motor_pwm (1,MPWM_FREE_RUN,3998);

   set_motor_unit(1,2, MPWM_ENABLE ,0,0);

   set_motor_pwm_duty(1,2,3600);
    }
}
Gast #3541874
Wieso nennst du die PWMs unabhängig, wenn die eine genau
das Gegenteil der anderen sein soll?

DAS kriegt man mit den kleinsten AVR-Tiny-µC hin...

Keine Ahnung von PICs, ich nehme aber an, dass die das
auch können.
Gast #3542576
Ich weiß, ich verwende aber einen µC weil ich dann in weitere Folge eine 
Motorsteuerung machen muss.
Dazu muss ich aber wissen wie ich bei PWM-Signalen eine 
Phasenverschiebung erzeugen kann.
Gast #3542633
Harald Wilhelms schrieb:
> Rolf Magnus schrieb:
>
>> Das kriegt man auch mit einem Transistor hin.
>
> Kann man den auch in C programmieren? :-)

Wenn man einen Tiny im SOT-Gehäuse als Transistor tarnt, dann schon :-)
(Weiß jetzt nicht die Bezeichnung der kleinen Tinys)...
Gast #3542637
>dass es High wird wenn das andere Low wird (siehe Bild 2). Diese
>Signale sollen gleichzeitig gestartet werden.

Hm.. ich vermute was..


>eine Motorsteuerung machen muss.

Dachte ich mir. Die beiden Signale sollen bestimmt Hi/Lo-Side FET 
ansteuern.

Da musst DU einen Timer nehmen, der Komplementärausgänge mit Totzeit 
hat.

Sieh mal in Datenblätter eines Atmel AT90PWM... als Beispiel.
Gast #3542638
Ich glaube du solltest dir die Methoden nochmal genau ansehen. Ich kenne 
mich mit den dsPIC und dem CCS nicht aus, aber mir fällt als erstes auf:
Du hast setup_motor_pwm(), set_motor_unit() und set_motor_pwm_duty() in 
der while Schleife.
Zumindest setup_motor_pwm sollte vor der Schleife stehen.
Gast #3676563
Hallo ich habe das gleiche Problem und konnte es bisher noch nicht 
beheben. Kann mir bitte wer dabei helfen die PWM Signale zu invertieren?
Ich nutzte ebenfalls den dsPIC33FJ256MC710A und auch das dsPICDEM MCLV.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.