Zwei Motoren unabhänig über Timer1 - PWM

Gast #4763458
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?
Gast
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.
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.
Gast
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.
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.