Hallo, ich möchte gerne 2 Motoren unabhängig per PWM regeln und Drehrichtung ändern: ich hab folgenen Code: #define MOTORB PD4 #define MOTORA PD5 /* fpwm = F_CPU/(Prescaller*Obergrenze)*/ TCCR1A |= (1<<WGM11)|(1<<COM1A1)|(1<<COM1B1); /* Modus 14: Fast PWM mit beliebiger Schrittzahl (festgelegt durch ICR1) nicht Invertiert(COM1x1)*/ TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS12) | (1<<CS10); /*(WGM13 und WGM12 gehören zu Modi auswahl) CS = Prescaler 1024*/ ICR1 = 31250; /* Obergrenze */ /* Test Frequenz = 16MHz/(1024*31250) = 0,5Hz = 2s Periodendauer*/ OCR1A = 31250/2; /* Einschaltzeit MOTORA 50%*/ OCR1B = 31250/3; /* Einschaltzeit MOTORB 33%*/ DDRD |= (1<<MOTORA)|(1<<MOTORB); /* MOTORA und MOTORB als Ausgang*/ das klappt auch super. hab die beiden andern Eingänge des Motors jetzt erstmal mit Masse verbunden so laufen beide unabhängig. jetzt möchte ich auch die Drehrichtung ändern heißt ich müsste die beiden andern Eingänge jetzt auch am UC anschließen. Jetzt sind ja ORC1A und ORC1B die PWM Ausgänge um die dreh Richtung zu ändern müsste ich ja die jetzigen PWM Ausgänge auf Masse ansteuern und die Masse Kanal die PWM bekommen. Nur wie kann ich das bewerkstelligen. Dachte es über Interrups für Overflow und Comp Match der beiden Motoren nur was passiert, wenn beide wenn beide Motoren die selbe Frequenz haben dann würden ja beide COMP Interrups gleichzeitig aufgerufen und das ist ja ein Problem oder? oder gibt es dort bessere Lösungen?
Suche mal nach H-Brücke, anders wird die Richtungsumkehr nicht funktionieren.
wenn ich die ORC = 0 setzte bekomm ich doch ein reines Ground Signal auf den ORC1A und ORC1B Ausgängen? dann würde ich den rückwärtslauf einfach ohne PWM steuern.
Nur mal so nebenbei gefragt: Du hast die beiden Motoren direkt an den Prozessor gehängt? Oliver
Also wenn Du die beiden anderen Eingänge der Motoren nicht auf Masse legst, sondern je ein Ausgang spendierst, kannst du die Drehrichtung ändern. Durch Änderung des Pegels an den zusätzlichen verwendeten Ausgängen. Ich nehme jetzt mal bewust keine Rücksicht auf die Belastbarkeit der Ausgänge. Die sind normalerweise nicht für eine Motoransteuerung geeignet. PWM ----- Motor1 ----- Ausgang(low) Drehrichtung links PWM ----- Motor1 ----- Ausgang(high) Drehrichtung rechts Du musst natürlich beim ändern der Drehrichtung auch das PWM Verhältnis umkehren.
:
Bearbeitet durch User
also du meinst einfach das masse Signal bei umkehr mit einer PWM füttern, so das masse gegen high und high gegen high Signal habe. nein die Motoren hängen nicht direkt am uc.
Also Drehrichtung1: MotorA1 = PWM auf ORC1A MotorA2 = GRound Drehrichtung2: MotorA1 = PWM auf ORC1A (invertiertes Verhältnis) MotorA2 = High
Jup genauso habe ich es gemeint Phillip schrieb: > nein die Motoren hängen nicht direkt am uc Na dann geht das so nicht. H-Brücke wurde schon erwähnt. Solltest Du einsetzen. Gibts fertige Treiberbausteine Nochmal zur Erklärung - PWM besteht aus H und L. - Gegen L gemessen hast Du die eine Drehrichtung - Gegen H gemessen hast Du die andere Drehrichtung.
:
Bearbeitet durch User
Achso mit der Invertierten PWM als GND Signal funktioniert. danke
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.