PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Joystick Probleme



Daddydoof
09.07.2009, 02:22
Hey Leute erstma mein werkzeug ^^ also die Grundschaltung des atmega32 mit isp programmer. Einen Handelsüblichen analogen joystick. Joah das wars ^^ So mein Problem is jezt das ich zwar weis welche pins vom Joystick ich ablesen muss, mit dem Digitalmultimeter kann ich bei vollem anschlag zur einen und zur anderen Seite zwar einen Unterschied von ca. 0.06 v erkennen weis aber nicht wie ich das mit dem Atmega 32 wahrnehemn soll.... meine Programmiersprache is Bascom...
Bisher habe ich es versucht mit

dim x as word
x = getadc(0)
if x > 5.10 then...

jezt hab ich aba das problem das der mir sagt das der nen single erwartet ich x aber nicht als single definieren darf...
ich bin ratlos deswegen bitte ihc um hilfe ..
danke schonmal im vorraus :)
](*,)

Andree-HB
09.07.2009, 06:10
Du solltest Dir in der Hilfe die Grundlagen der verschiedenen Variablentypen durchlesen. Per "Word" kann man nur ganzzahlige Zahlen verarbeiten.

Und da der ADC ein 10-Bit Wandler ist, reicht seine "Zahlenwelt" von 0-1024 (entspricht einer Spannung am Eingang von 0-5V, bzw. eingestellter Referenzspannung).

Ergo : Word ist korrekt, eine Spannung von z.B. 2,5V am ADC(0) bei eingestellter 5V-Referenz ergibt für x etwa den Wert 512 :


dim x as word
x = getadc(0)
if x > 512 then...

Ausserdem - wie beschaltest/misst Du denn Dein (Joystick)Poti ?

Daddydoof
09.07.2009, 12:12
Ah oke shconmal danke das Word nich funktioniert wusste ich wohl. Aber das das system der Adc wandler so ist wusste ich nich. also im mom jag ich einfach 5 v in den Joystick rein und mess dann am ausgang die spannung allerdings habe ich das Gefühl ich sollte einen vorwiderstand einbauen um die werte zu Fächern? Ist das Sinnvoll?
Schonmal danke für weitere Hilfe

Andree-HB
09.07.2009, 12:39
Word MUSST Du nehmen, ein anderer Variablentyp geht nicht, bzw. ist nicht sinnvoll (z.B. Byte) .

An einem Joystick brauchst Du keinen Vorwiderstand anlöten, der bildet bauertbedingt mit den Potis einen (zwei) optimalen Spannungsteiler.

Mein Tipp -> elektrische und programmtechnische Grundlagen aneignen !

Daddydoof
09.07.2009, 13:24
Dim Upx As Word
Dim Y As Word
Dim X As Word
Config Portd.7 = Output
Config Portc.0 = Output
Config Portc.1 = Output
Config Portd.6 = Output
Led1 Alias Portd.7
Led2 Alias Portc.0
Led3 Alias Portc.1
Led4 Alias Portd.6
'ADC Starten für AD-Wandler
Config Adc = Single , Prescaler = Auto
Start Adc
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
'sezt die nullstellung des Joysticks
Upx = Getadc(0)
Do
X = Getadc(0)
Y = Getadc(1)
If X > Upx Then
Led1 = 0
Waitms 100
End If
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Loop

So hab ich das bis jezt aber es funzt net wirklich. Und es wäre nett wenn ihr nicht an meinen kleinen Programmier fähigkeiten mausert. Sondern mir beim lernen helft?

Andree-HB
09.07.2009, 14:04
...Du bildest Upx aus dem Wert vom ADC(0), vergleichst dann mit X, welches ebenfalls aus dem gleichen Wert von ADC(0) gebildet wird...was soll da nun auch passieren ?

X wird nie grösser sein als Upx, weil es immer gleich sein wird !

Daddydoof
09.07.2009, 15:47
Schau nochmal genau hin-.- upx wird zu anfang nur EINMAL definiert wo hingegen x = adc(0) in der loop schleife steht und immer wieer neu genommen wird-.-

BurningBen
09.07.2009, 16:08
Du hast aber schon nen Spannungsteiler aufgebaut mit deinem Joystick, nicht einfach nur 5V angeschlossen. (Sprich GND auf den andren Anschluss des Potis, und den Schleifer an den ADC gehängt).

Ist der Joystick evtl. gar nicht mit Potis, sondern hat nur taster?

Daddydoof
09.07.2009, 16:31
Ne es is genau wie du beschrieben hast Potis sind drin mit dem Digi multimeter kann ich wie schon geschrieben auch eine differenz von 0,06 v wahrnehemn aber iwie funzt das nicht mit dem prog.. also ein pin am joystick is masse einer 5v+ und der andere is poti

Willa
09.07.2009, 16:50
0.06V kommt mir sehr wenig vor.... und deine Software könnte eigentlich funktionieren. RS232-Anschluss hast du nicht? Dann könntest du gleich sehen was der µC misst. Hast du mal die Widerstände zwischen den drei Poti-Beinen gemessen?

Daddydoof
09.07.2009, 17:32
Hmm dran gedacht hab ich auch schon war nur zu faul bisher und hab eigentlich versucht es zu vermeiden aber denke werd den da jezt wohl ma eben ranbaseln dann weis ich hoffentlich mehr ^^ Auf nullstellung besteht zwischen 5v+ und dem poti Ausgang ein widerstand von 53kohm

Willa
10.07.2009, 09:08
...und wie stark ändert sich der Widerstand wenn du den Knüppel bewegst...?

BurningBen
10.07.2009, 16:03
und sind vom potiausgang zu gnd ebenfalls 53K?

Richard
11.07.2009, 18:45
und sind vom potiausgang zu gnd ebenfalls 53K?

Moin moin.

Das würde ich jetzt auch gerne wissen. :-)
Ich fürchte das Poti ist einfach falsch angeschlossen, 0,06V
sprechen eine deutliche Sprache! Man sollte sich schon mal
schlau lesen was ein Poti eigentlich ist und was es macht...





5V--------------
|
---
| |
ADC-----------| |
| |
----
GND------------|




Nicht schön aber...

Gruß Richard

Daddydoof
12.07.2009, 18:19
Hey erstma danke für die hilfe:) Zu gnd besteht keine verbindung also wird es wohl kein poti sein.... Habt ihr vllt ne idee wie ich das sosnt ncoh machen könnte?
ps:
Ja ich weis wie ein poti funktioniet ;) während der widerstand zwischen + und adc größer wird wird er zwischen gnd und adc kleiner und umgekehrt
Hab grad ma eben in meinen Joystick reingeguckt und habe die potis enddeckt bei denen aber nur + und der abgriff angeschlossen ist.