Forum: Mikrocontroller und Digitale Elektronik Phasenverschiebung bei PWM


von Martin (Gast)


Angehängte Dateien:

Lesenswert?

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

von Udo S. (urschmitt)


Lesenswert?

Wie soll das Signal für einen anderen Duty Cycle ausssehen?
Im Moment könntest du das Signal auch einfach invertieren.

von Martin (Gast)


Lesenswert?

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);
    }
}

von Erwin (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

Weil ich sie unabhängig erzeuge.
Ich weiß ich könnte es über einen Timer machen, geht es aber auch 
einfacher über einen Befehl?

von Rolf Magnus (Gast)


Lesenswert?

Erwin schrieb:
> 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...

Das kriegt man auch mit einem Transistor hin.

von Martin (Gast)


Lesenswert?

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.

von Harald W. (wilhelms)


Lesenswert?

Rolf Magnus schrieb:

> Das kriegt man auch mit einem Transistor hin.

Kann man den auch in C programmieren? :-)

von ich (Gast)


Lesenswert?

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)...

von Matthias L. (Gast)


Lesenswert?

>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.

von paul (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Rolf Magnus schrieb:
>
>> Das kriegt man auch mit einem Transistor hin.
>
> Kann man den auch in C programmieren? :-)

Der weiß auch ohne Programm, was er zu tun hat, ist also eigentlich viel 
intelligenter als ein µC. ;-)

von Max H. (hartl192)


Lesenswert?

Wenn ich's richtig verstanden habe, willst du nur das erste PWM 
invertieren.
Das könntest du mit einem externen Inverter oder auch im PIC machen:
dsPIC33F/PIC24H Family Reference Manual
Section 14. Motor Control PWM
14.11.4 Complementary PWM Output Mode
http://ww1.microchip.com/downloads/en/DeviceDoc/70187E.pdf

: Bearbeitet durch User
von Philipp (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.