Forum: Mikrocontroller und Digitale Elektronik AVR Joystick mit variablem Widerstand einlesen


von Jann S. (mistanegativ)


Lesenswert?

Hallo,

also mein Problem is folgendes:
Ich habe einen AVR ATMega8 als "Herz"  eines kleinen Ferngesteuerten 
Autos.
Ich habe 4 Motoren die über Treiber IC's Angeschlossen sind und auch 
soweit funktionieren.
Jetzt habe ich einen Joystick ( keinen wie man jetzt denkt zum an den Pc 
anschließen oder so ) der einfach nur simpel hoch, runter, rechts, und 
links schaltet. Allerdings nicht einfach an/aus sodern auch mit 
variablem Widerstand. Also wenn er nur halb nach oben is, is auch nicht 
ganz HIGH (5V) sondern halt nur 4.99 oder so. Jetzt ist meine Frage ob 
bzw wie ich das messen kann und dann natürlich möglichst das ganze auch 
wieder ausgeben kann ( der Treiber IC "L 298" hat einen Eingang dafür ).

Falls das schon mal jemand gefrag hat und ich es nur nicht gefunden hab: 
Tut mir unheimlich leid, ich habs nicht gefunden, also bitte kein 
Rumgeflame, sondern nur links wenns geht, Danke.

Sofern ich noch mehr angaben machen soll oder so, kann ich das gerne 
tun.

Danke schon mal für eure Antworten.

MFG

MistaNegativ

von STK500-Besitzer (Gast)


Lesenswert?

Mit'm AD-Wandler?!

von spess53 (Gast)


Lesenswert?

Hi

> der Treiber IC "L 298" hat einen Eingang dafür

Nein. Der L298 hat digitale Eingänge.

Also : Joystick -> ADC -> PWM -> L289 -> Motor

MfG Spess

von Jann S. (mistanegativ)


Lesenswert?

Danke erstmal, ich hab mal ein bisschen geguckt, würde der hier 
funktionieren? "MAX 517 BCPA"

von spess53 (Gast)


Lesenswert?

Hi

>Danke erstmal, ich hab mal ein bisschen geguckt, würde der hier
>funktionieren? "MAX 517 BCPA"

Möglicherweise. Aber erkläre erstmal, was die Motoren machen sollen, 
wenn du den Joystick bewegst.

MfG Spess

von Jann S. (mistanegativ)


Lesenswert?

Also ich hab den treiber IC der halt den Enable hat, der wenn man halt 
"fährt" von AVR auf HIGH gesetzt wird. Im Moment ist der salopp gesagt 
"Wie schnell"- Anschluss einfach in Vcc ( also HIGH -> voll ) drin.
Die 4 Motoren sind in 2 Paare gegliedert:
[ vorne links + hinten links ]
[ vorne rechts + hinten rechts ]
-> wenn man 'oben' drückt, sollen beide Paare an gehen ( das 
funktioniert auch schon ) und man nach 'rechts' drückt soll nur das 
linke paar angehen usw. Die Motoren Paare ( also der ENABLE Port vom 
Treiber IC ) sind jeweils an einen Port am AVR angeschlossen.

von Jann S. (mistanegativ)


Lesenswert?

Muss ich noch was sagen, oder warum antwortet ihr mir nich? ;)

von was-willst-du (Gast)


Lesenswert?

Ich hab nicht so recht verstanden, was es werden soll.
Aber vielleicht ist die Antwort weiter oben schon der Schlüssel für 
Deine Aufgabenstellung.

>Also : Joystick -> ADC -> PWM -> L289 -> Motor

Du hast Dich dazu nicht geäußert.
Tja, nun gibts mehrere Annahmen:
- es ist nicht das richtige
- Du hast es gar nicht nicht verstanden
- Du willst nur noch andere Vorschläge sammeln

Was nun?

von STK500-Besitzer (Gast)


Lesenswert?

>Ich hab nicht so recht verstanden, was es werden soll.

Scheinbar soeine Art Kettenfahrzeug - zumindest klingt die Steuerung 
danach.

>-> wenn man 'oben' drückt, sollen beide Paare an gehen ( das
>funktioniert auch schon ) und man nach 'rechts' drückt soll nur das
>linke paar angehen usw.

Wie liest du denn den Joystick ein?
Benutzt du den AD-Wandler des AVR?
Da müsstest du zwei Kanäle belegen: einen für vor und zurück und einen 
für links/rechts.

>der einfach nur simpel hoch, runter, rechts, und
>links schaltet.

Schaltet er, oder ist es ein Joystick mit Potis drin?
Wenn er nur schaltet, dann musst du nur in einer Schleife die vier 
Eingänge abfragen und je nach Richtung deine Motoren einschalten.

Ein Bild von deiner Schaltung und dein Programmcode wären nicht 
schlecht...

von Karl H. (kbuchegg)


Lesenswert?

> Jetzt ist meine Frage ob
> bzw wie ich das messen kann und dann natürlich möglichst das
> ganze auch wieder ausgeben kann ( der Treiber IC "L 298" hat einen
> Eingang dafür ).

Das eine hat mit dem anderen erst mal nichts zu tun.

Den Joystick kannst du mit 2 ADC Wandlern (die du im Mega8 vorrätig 
hast) leicht abfragen. Da kriegst du dann jeweils einen Zahlenwert von 0 
bis 1023 raus, je nachdem wo der Knüppel in einer Achse steht.

Das andere ist die Fragestellung, wie du die Motoren feiner als einfach 
nur ein/aus laufen lassen kannst. Da ist PWM die Antwort.

Aber ob die PWM jetzt von den Werten vom Joystick oder von einer 
Regellogik oder von einem Suchprogramm oder .... angesteuert wird, ist 
erst mal grundsätzlich Jacke wie Hose und hängt nicht miteinander 
zusammen.

von Jann S. (mistanegativ)


Lesenswert?

Also verstanden hab ich das schon, nur ich wusste nicht das der Mega8 
schon nen A/D wandler drin hat, deswegen wollte ich wissen ob der den 
ich gepotet hab der richtiege is ^^


Also es ist ein "ganz normales Auto", aber da ich kein Lenkung bauen 
wollte, hab ich einfach die logik eines Kettenfahrzeuges ( wenn man das 
so nenn will ^^ ) benutzt.

Zum "Bild" der Schaltung: ich hab keinen Wirklichen Schaltplan, ich mach 
das eher so frei Hand ;)

Habt ihr vllt irgendwelche Beispieltquellcodes oder Schaltungen, von 
denn ich mir das abgucken kann ?

von Gast (Gast)


Lesenswert?

Wie wäre es mit dem Tutorial oder mit dem Datenblatt des ATmega?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC

von Jann S. (mistanegativ)


Lesenswert?

Ok, das werde ich mir mal zu Gemüte führen - Danke erstmal ;)

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.