DC-Motor Speed Control

Gast #355585
Lesenswert?

Hallo!

Hab folgendes Problem: Hab nen Atmega16 und nen DC-Motor. Will jetzt
mittels ADC-Converter den Motor mit einem PWM Signal zum laufen
bringen. Außerdem will ich mit einem Switch die Richtung steuern. Hab
jetzt folgendes vor:

Verkabelung:
IO:
ADC Converter -> ADC0
SWITCH1 -> PA5

Motor(L293):
Input1 -> OCR1A
Input2 -> PD7
GND -> GND
PWR_MOT -> VCC
EN????

Im Programm konfiguriere ich den ADC und starte anschließend Timer1 mit
PWM-Mode 14. In der Routine des ADC schreibe ich den Wert ADCH in das
OCR1A Register.

Es funktioniert jedoch nicht so wie es sollte. Wäre daher für die
Aufklärung meines Denkfehlers dankbar.

mit vielem Dank im Voraus
Angehängte Dateien:
Gast #355588
Lesenswert?

Mit es funktioniert nicht so wie es sollte meine ich, dass überhaupt
nichts passiert. Aber die ADC Conversion funktioniert auch mit
aktivierten pull-up. Denn wenn ich das ergebnis auf den LEDs ausgebe
funktioniert es (von 0 LEDs bis alle LEDs leuchtend). Wo muss ich den
EN12 Pin des Motorboards anschließen???
Gast #355591
Lesenswert?

> TCCR1A = _BV(WGM11) | _BV(COM1A1) | ~_BV(COM1A0);

Das kann so nicht funktionieren. Erkundige Dich bitte, was das Makro
_BV() macht! Afaik wird _BV(BIT) durch (1 << BIT) ersetzt. Wenn Du Dein
Register mit ~_BV(COM1A0) (also mit ~(1 << COM1A0)) verODERst, werden
alle Bits bis auf COM1A0 gesetzt! Und das ist bestimmt nicht die
Einstellung, die Du brauchst. Zum löschen eines Bits muss man die
invertierte Maske mit '&' verknüpfen!
Gast #355592
Lesenswert?

da hab ich ziemlichen mist gebaut. da hatte ich wohl einen kleinen
(besser gesagt: riesigen) aussetzer. Natürlich hatte ich die falsche
einstellung in TCCR1A. Danke für den hint.
jedoch hab ich noch immer das problem, dass ich nicht weiß wo ich den
EN12 Pin am Motorboard anschließen muss. (bzw. ob meine verkabelung
überhaupt stimmt)
Gast #355593
Lesenswert?

Sinnvoller ist es zwecks einer Drehzahlregelung den EN-Eingang des L298
mit der PWM zu betun.
Mit IN1 und IN2 kann man dann die Drehrichtung festlegen.
Das Programm habe ich mir nicht angeguckt.
Gast #355594
Lesenswert?

@Rahul:
Bei PWM auf Enable hast Du den Fast-Decay-Mode, d.h. wenn keine Energie
in die Induktivität geschickt wird, liegt die negative Vbat (über die
Freilaufdioden, die hoffentlich vorhanden sind) an, und das Magnetfeld
wird schnell abgebaut. Das kann zu erhöhtem CurrentRipple und zu hohen
Eisenverlusten (Wirbelstrom) führen.

Ob und wie Du Enable beschaltest, hängt auch davon ab, ob der Motor
beim Abschalten bremsen soll (Kurzschluß über Enable=on) oder frei
auslaufen soll (Enable off).
Gast #355596
Lesenswert?

Hi,

ich habe mal eine Frage zu der Aussage, das man prinzipell das PWM auf
den EN legt. Warum ist das so? Laut datenblatt habe ich bei EN eine
FastBrake und bei 1A High 2A High ebenso ein Fastbrake(bzw.invertierte
Signale an 1A un 2A).Es funktioniert beides.
Warum ist es besser mit einem PWM auf Enable zu arbeiten?

daniel

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