Forum: Mikrocontroller und Digitale Elektronik DC-Motor Speed Control


von barcelinho (Gast)


Angehängte Dateien:

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

von johnny.m (Gast)


Lesenswert?

Wenn Du am Analog-Eingang nen Pull-Up aktivierst, ist klar, dass Murks
rauskommt! Du wirst vermutlich so ziemlich immer den Maximalwert
rausbekommen.

von johnny.m (Gast)


Lesenswert?

Übrigens:
> Es funktioniert jedoch nicht so wie es sollte...
...ist ne ziemlich schwammige Aussage. Du solltest das vielleicht etwas
präzisieren!

von barcelinho (Gast)


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???

von barcelinho (Gast)


Lesenswert?

Hab jetzt den Pull-up widerstand für die ADC-Conversion weggelassen,
doch es tut sich am Motor trotzdem noch nichts.

von Franz h. (Gast)


Lesenswert?

Dann hast du in deinem Programm irgendwo anders noch einen Fehler.
Soweit ich weiß darf man am Analogen Eingang keinen pull-up
aktivieren.

mfG Franz

von johnny.m (Gast)


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!

von barcelinho (Gast)


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)

von der inoffizielle WM-Rahul (Gast)


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.

von Profi (Gast)


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).

von barcelinho (Gast)


Lesenswert?

Der Motor sollte schon bremsen, sprich ich brauch den Enable. Aber wo
soll ich den anschließen???

von daniel (Gast)


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

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.