Mit PWM motor ansteuern

Gast #1585932
Lesenswert?

Hallo,

Also ich würd gern mit PWM einen Motor ansteuern....
Habe mir eine einfache H-brücke zusammen gebaut und die jeweiligen 
tranistoren an das PIN OC1A und OC1B angeschlossen.
Wenn ich mich nicht irre muss ich den Timer1 dementsprechend aktivieren 
und mein Problem ist, wenn ich ja den Timer1 aktiviere wird OC1A und 
OC1B aktiviert. Wie kann ich es so programmieren das immer nur einer von 
den PWM-Ausgängen aktiv ist?? Weil wenn ich beide gleichzeitg auf "1" 
habe wird ein Kurzschluss verursacht....

Hier sind beide Ausgänge aktiv oder??

void init(void)
{
  TCCR1A = (1<<WGM10) | (1<<WGM11) | (1<<COM1A1);
  TCCR1B = (1<<CS10);
  OCR1A = 0xFF0F;
  OCR1B = 0xFF0F;
}

Danke im Vorraus
lg Karl
Gast #1586846
Lesenswert?

Also wenn ich dich richtig verstanden habe, möchtest du den Motor in 
beide Richtungen drehen lassen - dafür die H-Brücke.

Den Kurzschluss verhinderst du, indem du die COM - Register für jede 
Richtung extra einstellst. Du darfst sie natürlich nicht gleichzeitig 
(als Beispiel) auf "Clear on Compare Match" setzen. Genau dann entsteht 
der Kurzschluss. Das heißt wenn du Linkslauf steuern möchtest das eine 
Register auf (als Beispiel) "Clear on Compare Match" und das andere auf 
"Normal Port Operation". Für den Rechtslauf dementsprechend umgekehrt.

Ich hoffe, dass ich helfen konnte.


lg Torsten
Gast #1586895
Lesenswert?

Hm... ich versuche es mal.

Ich halte mich jetzt mal nicht an das Datenblatt!!!

Angenommen PA0 = OC1A (PWM-Signal Linkslauf)
           PA1 = OC1B (PWM-Signal Rechtslauf)
           PA2 = Durchschalttransistor Linkslauf
           PA3 = Durchschalttransistor Rechtslauf

Für den Linkslauf
-----------------

1. Schritt :  PA1 abschalten, also OC1B = "Normal Port Operation"
2. Schritt :  PA3 abschalten

Somit sind die Transistoren für den Rechtslauf abgeschaltet und der 
Stromfluss ist in eine einzige Richtung definiert.

3. Schritt :  PA2 einschalten
4. Schritt :  PA0 einschalten, also OC1A = "Clear on Compare Match"

Für den Rechtslauf musst du es eben andersherum machen.


lg Torsten
Gast #1586963
Lesenswert?

Karl schrieb:
> Wie kann ich es so programmieren das immer nur einer von
> den PWM-Ausgängen aktiv ist??



PWM Ausgang OC1A abschalten:
 TCCR1A = (1<<WGM10) | (1<<WGM11) | (0<<COM1A1|0<<COM1A0)

PWM Ausgang OC1A einschalten:
 TCCR1A = (1<<WGM10) | (1<<WGM11) | (1<<COM1A1 | 0<<COM1A0)


PWM Ausgang OC1B abschalten:
 TCCR1A = (1<<WGM10) | (1<<WGM11) | (0<<COM1B1 | 0<<COM1B0)

PWM Ausgang OC1B einschalten:
 TCCR1A = (1<<WGM10) | (1<<WGM11) | (1<<COM1B1 | 0<<COM1B0)


Übrigens kann kein C :-)
#1587173
Lesenswert?

Hier mal eine kleine Anregung.

Anmerkungen:

1. Es kann kein Kurzschluss durch fehlerhafte Ansteuerung entstehen.

2. Die unteren FETs werden nicht optimal angesteuert - evtl. also noch 
eine Treiberstufe erforderlich. Funktioniert aber auch so.

3. Bei einem Tastverhältnis von 50% steht der Motor.

4. Die Schaltung sollte nicht längere Zeit ohne Signal (PWM) sein, da 
irgendwann die Ladung im Bootstrap-Kondensator nachlässt und der obere 
Transistor hochohmig und somit heiß wird.

T: z.B. IRF720
D: z.B. 1N4007
C: z.B. 22uF 25V
R: ca. 1k

Die Betriebsspannung sollte die maximal zulässige Gate-Source-Spannung 
nicht überschreiten.


Gruß

Jobst
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren