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
tsaG schrieb:
> Welcher Controller? Schaltplan!
atmega32 und schaltplan ist eine einfache H-brücke aus 4 NPN
transistoren...
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
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
Klingt simple aber wie schalt ich OC1B auf "Normal Port Operation" bzw. OC1A?
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 :-)
gtf schrieb:
> Übrigens kann kein C :-)
ehm...wie soll ich dann wissen, ob das richtig ist, was du da
geschrieben hast?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.