PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrere Potis plus Tastatur abfragen an M-Unit 2.0



Endress
31.05.2006, 09:45
Hallo,

ich bin ein blutiger Anfänger und hoffe, dass ich niemandem aufn Nerv gehe mit meinen Anfängerfragen ;)

Ich habe hier mehrere Potis parrallel an +5V und GND und den Schleifer je auf einen anderen Port gelegt. Lassen sich auch alle prima abfragen. Wenn ich allerdings parallel dazu noch die Tastatur abfragen moechte, verändert sich der Wert der Tastatureingabe mit den Änderungen eines Potis.

Es sind alles Ports eindeutig definiert, ichhabe auch schon versucht, den Port umzulegen, hilft alles nichts. Ich habe eine ganz einfache IF Abfrage für das Poti laufen, dass nur bei bestimmten Grenzwerten am Port5 ein Relais schaltet ( standard schaltung vom Relais Baustein übernommen ) und genau dieses Poti macht die Probleme. alle anderen Potis üben keinen Einfluss aus. Es ist auch egal, welches der Potis ich benutze, immer das, das abgefragt wird macht Ärger. Warum nur ?

Ich danke schonmal für die Hilfe naja, allein wers sich bis hierin durchgelesen hat ... DANKE ;)

<edit: vielleicht hilft das noch bei der Lösung des Problems:
Der Wert verändert sich für Keine Taste gedrück : 2 - 32
bei allen anderen tasten ist max eine Veränderung von 7 drinn. Ist jetzt natuerlich auch so loesbar das ganze, eindeutige Werte hab ich ja immernoch, aber ich denke, dass ist nicht ganz "sauber"

Robotronix
31.05.2006, 12:57
die Potis (also deren Schleifer) kann man sinnvoll nur an die Analogports anschließen. Hast du das so gemacht?

Endress
31.05.2006, 14:30
Liegen auf AD2 AD3 AD5 AD6 ;)

Da macht das Programmieren echt keinen Spass, wenn man sich auf die Werte nicht verlassen kann.

Tappi
31.05.2006, 17:31
Hallo,

ist die Referenzspannung (der Jumper) korrekt?

Endress
01.06.2006, 10:04
Hallo,

ist die Referenzspannung (der Jumper) korrekt?

Die M-Unit sitzt bisher nur auf dem Applikationboard, habe also den Jumper abgezogen und beziehe die 5V vom Applikationboard.
Oder meintest du etwas anderes ?

Tappi
01.06.2006, 12:42
Auf der Unit befindest sich noch ein REF Jumper. Auszug aus dem Benutzerhandbuch:

"Bevor die A/D-Eingänge benutzt werden können, muss eine Referenz-Spannung mit dem
Referenzspannungseingang des Gerätes verbunden werden. Der angelegte Spannungswert gilt als
Obergrenze des Messbereiches der A/D-Wandlung und entspricht dem Wandlungswert 255 (FF
hexadezimal). Meistens kann die Betriebsspannung direkt als Referenz benutzt werden. Bei größeren
Ansprüchen an Genauigkeit und Stabilität kann eine 5V Referenz extern über der Pin UREF
eingespeist werden. Als Referenz für das untere Ende des Messbereiches der A/D-Wandlung dient
stets das Groundpotential (Masse, ,,Minus”) der Betriebsspannung."

Endress
01.06.2006, 13:29
Da sag ich mal vielen Dank fuers Raussuchen. Ich hab hier zum einen das Handbuch und dann diesen Conrad Sonderdruck "Alles über c-control..." anscheinend wohl doch nicht alles, denn überall finde ich Verweise auf den Jumper, den man im App.-Board doch abziehen soll, weil ja die 5 V eh vom Board kommen, aber nichts von Genauigkeit...

Woher kommt der Abschnitt ?

Tappi
01.06.2006, 13:32
Naja ich glaube, dass die 5 V nich für die REF Spannung vom APP Board kommen.

Endress
01.06.2006, 14:28
Also ich MUSS eine 5 V REF Spannung von aussen anlegen ?
Sorry, aber so ganz kapier ich das nicht. Es heisst doch in der Anleitung dass die 5 V vom Board kommen und man den Jumper REF abnehmen soll, weil man ja im APP Board KEINE externe Stromversorgung braucht ?
Und wenn nicht vom Board woher kommt sie ? Ich nerve sicherlich uebelst, aber ich verstehs so einfach nicht...

Dirk
01.06.2006, 17:18
Hallo Endress,

aus deiner Beschreibung des Problems kann ich nicht schlau werden. Poste hier 'mal den Anschlußplan der Potis und der Tastatur. Hängt die auch an einem A/D-Wandler? Schaltung der Tastatur?
Dann kann man vielleicht mehr sagen.

Gruß Dirk

Endress
02.06.2006, 12:49
Hallo Dirk und schonmal Danke fuers Angebot.

Die Tastatur haengt an AD8 und es handelt sich schlicht um die Orginaltastatur des Applicationboards : 13 Tasten an dem Spannungsteiler.
15 Widerstaende dazwischen die tasten auf Port 8 .

Die Potis hängen zwischen GND und +5V , der Schleifer jedes Potis führt auf einen anderen Ananlog Port. Es reicht, wenn man sich eins vorstellt, allein das bringt ja schon Probleme.

Zusaetzlich zum abgebildeten Spannungsteiler haengt zwischen GND und 5V das Poti, der Schleifer geht auf AD[3]

Dirk
02.06.2006, 19:09
Hallo Endress,

wenn du mehrere A/D-Wandler nutzt, können falsche Ergebnisse mehrere Ursachen haben:

1. Hardware:
- Vcc nicht ausreichend belastbar (schwankt daher) oder nicht geblockt (mit Blockkondensatoren 100 nF).
- Einstreuung von Wechselspannung durch Zuleitungen (z.B. der Potis): Versuch 'mal 10 nF an jedem A/D-Wandler-Eingang!

2. Software:
- Alle Lesevorgänge geschehen nur 1x an jedem Port in einer Schleife: Versuch 'mal, jeden Wert 5x zu lesen und dann zu mitteln.

Gruß Dirk

Tappi
02.06.2006, 23:38
- Vcc nicht ausreichend belastbar (schwankt daher) oder nicht geblockt (mit Blockkondensatoren 100 nF)

Naja es wird halt auch noch ein Widerstand dazu geschaltet (-> Ströme ändern sich). Vielleicht sollte man bei einer solchen Widerstandskette parallel zum ersten Widerstand der Kette noch eine Zenerdiode mit U_Z = 5 V in Sperrichtung schalten, um so die Spannung zu stabilisieren.

Gruß,

Stefan

DIE HARD
04.06.2006, 19:50
Also ich MUSS eine 5 V REF Spannung von aussen anlegen ?
Sorry, aber so ganz kapier ich das nicht. Es heisst doch in der Anleitung dass die 5 V vom Board kommen und man den Jumper REF abnehmen soll, weil man ja im APP Board KEINE externe Stromversorgung braucht ?
Und wenn nicht vom Board woher kommt sie ? Ich nerve sicherlich uebelst, aber ich verstehs so einfach nicht...

Hallo...
Du liegst richtig:
Beim Applikation-Board wird die REF vom Board erzeugt, deswegen
wird der Jumper auf der UNIT abgezogen.
Poste mal bitte dein Programm.
Welche Werte haben die Potis?

Endress
06.06.2006, 09:17
Vielen Dank für die Antworten.

Die Potis haben 2x 100K und 2x 10K .
Ich war jetzt gezwungen die Sache auf die Schnelle zu lösen und habe halt mit Ranges gearbeitet, das klappt. Da ich aber in Zukunft mit zuverlässigeren Werten arbeiten möchte, schliesse ich das Thema noch nicht ab.

Eine Sache ist äusserst komisch: Ich hatte bei meinem ersten Post eine Differenz von bis zu 30 ( 2-31 ohne gedrückte Taste ) dieses Problem ist wie verflogen. Leider habe ich nicht die geringste Ahnung, was ich angestellt habe. Die Schwankungen liegen jetzt im Bereich von 1 - 3 und das ist durchaus zu verschmerzen.


Ich werde die Variante mit der Z-Diode mal austesten.

Endress
08.06.2006, 15:00
Kann mir jemand verraten, ob ich mehr als 8 Potis an der M-Unit 2.0 abfragenm kann ?

DIE HARD
08.06.2006, 17:40
Kann mir jemand verraten, ob ich mehr als 8 Potis an der M-Unit 2.0 abfragenm kann ?


Hallo....
Das geht nur mit einem externen ANALOG-SCHALTER z.B. CD4051
Der verteilt 8 Analogeingänge auf einen Ausgang.
Du kannst also mit einem einzigen AD-Wandler 8 Potis abfragen

Endress
12.06.2006, 12:31
Danke, das hat wohl den Nachteil, dass ich am Ausgang nicht mehr weiss, welches der Potis "ausschlaegt" ... naja whatever kommen halt 2 M-Units rein. Oder gibts noch ne andere Lösung ?

Suggarman
12.06.2006, 13:59
Mit AD-Wandlern über I2C könntest Du noch viele Potis abfragen....
Suche mal z.B.nach MAX127.
Ich frage mich allerdings, wofür man so viele Potis benötigt und ob man das programmtechnisch nicht eleganter lösen könnte.

mfg

Stefan

DIE HARD
12.06.2006, 18:42
Danke, das hat wohl den Nachteil, dass ich am Ausgang nicht mehr weiss, welches der Potis "ausschlaegt" ... naja whatever kommen halt 2 M-Units rein. Oder gibts noch ne andere Lösung ?


nein, du weisst ja welchen Multipexer-Kanal du eingestellt hast, wenn
du die Abfrage machst.

Endress
13.06.2006, 08:08
Ich frage mich allerdings, wofür man so viele Potis benötigt und ob man das programmtechnisch nicht eleganter lösen könnte.


Hallo Stefan,

ich habe 4 "Joystik"-Potis, über eine mechanische Umsetzung soll an einem bestimmten Punkt eine bestimmte LED angehen. Ich habe also 4 Flächen, die bewegt werden koennen, die Aktionen auslösen. Bei der Bewegung sind alle 4 Richtungen ausschlaggebend, daher die Joystick -Potis. Für jede Achse ein Poti = 8 Potis. Da ich aber noch Empfindlichkeit der Bewegung und die Dauer der Aktion einstellen muss sinds schon 10.

Ich fürchte da wird Softwaretechnisch wenig möglich sein ;)

Endress
01.03.2007, 12:12
Hallo,

ich muss diesen uralt Thread nochmal wiederbeleben wegen einer ähnlichen Geschichte:

Ich habe nun 25 Taster, die an eine C-Control angeschlossen werden sollen. Nun hab ich mir schonmal diese Tastaturmatrix angesehen und befürchte fast, dass der Aufbau mit 5x5 Tastern nicht möglich wird, weil die Messbereiche zwischen den WIderständen zu klein werden. Soweit richtig ?

Mit einem Multiplexer wäre mein Problem gelöst, allerdings bin ich scheinbar zu dämlich. Ich hab mir die Schaltbilder ettliche male angesehen und ich komm einfach nicht dahinter, wie ich die Kanäle ansteuern soll und wie ich dann sehen kann, welcher Taster gedrückt wurde.

Könnte mir das jemand kurz umschreiben oder gibts am Ende schon eine Schaltung ?

Vielen Dank schonmal, Grüße
Endress

Endress
06.03.2007, 12:18
Eine mögliche Lösung ist wohl, einfach zweimal 4x4 Tastaturmatrizen an zwei verschiedenen Analogeingängen zu nutzen. Ich werde das wohl auch so realisieren, aber die Frage nach dem Multiplexer hat sich damit nicht erübrigt, ich würde es zumindest gerne verstehen, damit ich es beim nächsten mal auch umsetzen kann.

Niemand mehr da der mir helfen kann ?

Jörn Arne
17.03.2007, 14:25
Hallo

vielleicht kann ich dir bei den Matrixkeys helfen.
wenn du 5x5 Tasten hast, brauchst du 10 ports (es sei denn man verwendet einen Treiber dazwischen, so mache ich es)

Du steuerst jede Spalte nach einander an, und liest dann die Reihen.
Also erste Spalte ansteuern (auf Masse ziehn) dann Reihe lesen.
Wenn in der Reihe alle Werte log. 1 sind, ist in der 1. Spalte keine Taste gedrückt. Ist einer der Werte log. 0, dann wurde eine Taste gedrückt, welche erkennst du, welcher port auf log. 0 liegt

Wenn keine taste gedrückt wurde (alle Werte log. 1) dann steuerst du die nächste Reihe an (ziehst die 2. Spalte auf log. 0, lässt die 1. Spalte wieder auf log. 1 zurück kommen) und so fähst du mit allen Spalten fort.

Schau dir mal das Beispiel an

'-------------------------------------------------
'--------------- DECODE COL ----------------------
'-------------------------------------------------
FUNCTION DEC(VALUE as byte)
define KEY as byte
define OFFSET as byte
KEY=255
if (VALUE and F0h) = 11100000b then OFFSET=0
VALUE=VALUE and 0Fh
if VALUE=00001110b then KEY=1+OFFSET
if VALUE=00001101b then KEY=5+OFFSET
if VALUE=00001011b then KEY=9+OFFSET
if VALUE=00000111b then KEY=13+OFFSET
IF KEY=10 THEN KEY=0
OFFSET=OFFSET+1
RETURN KEY
END FUNCTION
'------------------------------------------------
'--- TASTATURDECODER PCF8574 - 4x4 MATRIX --
'-------------------------------------------------
FUNCTION GET_MATRIX_KEY()
define EXTPORT byteport[10]
define KEY as byte
'--------- DECODE COLUMN 1 1-5-9-C -- diese "wandernde" 0 wählt die Spalten aus
EXTPORT=11101111b
KEY=DEC(EXTPORT)
if KEY<>255 then goto EXIT
'--------- DECODE COLUMN 2 2-6-0-D --
EXTPORT=11011111b
KEY=DEC(EXTPORT)
if KEY<>255 then goto EXIT
'--------- DECODE COLUMN 3 3-7-A-E --
EXTPORT=10111111b
KEY=DEC(EXTPORT)
if KEY<>255 then goto EXIT
'--------- DECODE COLUMN 2 4-8-B-F --
EXTPORT=01111111b
KEY=DEC(EXTPORT)
#EXIT
RETURN KEY
END FUNCTION

zugegeben das ist nicht ganz einfach, aber wenn man den code verstanden hat, kann man beliebig große Matrizen basteln (zumindest software technisch)

Ach ja noch was dazu:

Eine mögliche Lösung ist wohl, einfach zweimal 4x4 Tastaturmatrizen an zwei verschiedenen Analogeingängen zu nutzen

matrizen werden an digitalports angeschlossen, nicht an analog ports.

Gruß
Jörn

Dirk
17.03.2007, 16:49
Hallo Jörn,

matrizen werden an digitalports angeschlossen, nicht an analog ports.

Bei mir funktionieren sie auch prima am A/D-Wandler (natürlich mit ein paar Widerständen).

Gruß Dirk

Jörn Arne
17.03.2007, 17:18
Hallo Dirk, das überrascht mich in der tat, wie realisierst du das? Steuerst du über digitalports die Spalten an und liest die Reihe dann per analogport ein?

Gruß
Jörn

Dirk
17.03.2007, 17:31
Nee, alles nur analog.
Z.B. so: