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
Wenn Du am Analog-Eingang nen Pull-Up aktivierst, ist klar, dass Murks rauskommt! Du wirst vermutlich so ziemlich immer den Maximalwert rausbekommen.
Übrigens:
> Es funktioniert jedoch nicht so wie es sollte...
...ist ne ziemlich schwammige Aussage. Du solltest das vielleicht etwas
präzisieren!
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???
Hab jetzt den Pull-up widerstand für die ADC-Conversion weggelassen, doch es tut sich am Motor trotzdem noch nichts.
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
> 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!
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)
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.
@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).
Der Motor sollte schon bremsen, sprich ich brauch den Enable. Aber wo soll ich den anschließen???
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.