Forum: Mikrocontroller und Digitale Elektronik Zwei Motoren unabhänig über Timer1 - PWM


von Phillip (Gast)


Lesenswert?

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?

von Hubert G. (hubertg)


Lesenswert?

Suche mal nach H-Brücke, anders wird die Richtungsumkehr nicht 
funktionieren.

von Phillip (Gast)


Lesenswert?

also per Software nicht möglich ?

von Hubert G. (hubertg)


Lesenswert?

Nein, nicht möglich.

von Phillip (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

Nur mal so nebenbei gefragt: Du hast die beiden Motoren direkt an den 
Prozessor gehängt?

Oliver

von Winne Z. (rugbywinne)


Lesenswert?

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
von Phillip (Gast)


Lesenswert?

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.

von Phillip (Gast)


Lesenswert?

Also Drehrichtung1:

MotorA1 = PWM auf ORC1A
MotorA2 = GRound

Drehrichtung2:
MotorA1 = PWM auf ORC1A (invertiertes Verhältnis)
MotorA2 = High

von Winne Z. (rugbywinne)


Lesenswert?

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
von Phillipp (Gast)


Lesenswert?

Phillip schrieb:
> oder gibt es dort bessere Lösungen?

nen Motortreiber wie L293D benutzen.

von Phillip (Gast)


Lesenswert?

das ding hängt an nen L293D nur das PWM Signal muss ja auch alle 4 
INPUTS

von Phillip (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.