mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DC-Motor Speed Control


Autor: barcelinho (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

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

Autor: barcelinho (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: barcelinho (Gast)
Datum:

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

Autor: Franz h. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: barcelinho (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: der inoffizielle WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: barcelinho (Gast)
Datum:

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

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.