PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 5Taster und 22logische schaltvarianten über 1 leitung an AVR



Elektrofips
16.01.2008, 09:09
Hallo leute,

bin absoluter anfänger und hab auch etwas probleme die richtige erklärung
für mein vorhaben zu finden also ich hoffe ihr versteht mich.

Hab an einem Ort "A" 5 Taster die ich in 22 logischen Varianten betätigen kann
Und an einem Ort "B" nur noch einen ADC eingang am controller frei.
möchte das signal so zu sagen auf einer leitung übertragen.
Hab es mit einem Spannungsteiler Probiert und komm dabei aber zu keinem verwendbaren ergebnis.

aso wichtig zu sagen ist noch. es handelt sich um den Kfz bereich....ich hab so zu sagen am Ort "A" als auch am Ort "B" einen Masseanschluss zur verfügung.

ich hoffe mir kann jemand helfen
mfg felix

radbruch
16.01.2008, 09:17
Hallo Felix,

schau mal hier:

http://www.avr-asm-tutorial.net/avr_de/keypad/keyboard.html#adc

Gruß

mic

Elektrofips
16.01.2008, 09:25
mh....klingt schonmal sehr gut.....ähnlich war meine variante auch.....nur seh ich das richtig wenn die probleme erst dann auftreten wenn ich mehre tasten gleichzeitig drücke?

radbruch
16.01.2008, 09:33
Ja, dass siehst du richtig. Das du ja 22 verschiedene Kombinationen erzeugen willst ist mir erst nach dem Absenden klar geworden. Diese Lösung dürfte dir nichts bringen...

Eine Alternative wäre vielleicht ein kleiner Coprozessor (ein tiny13 könnte knapp reichen) der die Tasten einliest und ein codiertes 1-Draht-Signal erzeugt.

mic

T.J.
16.01.2008, 11:34
kann man die Taster evtl. so geschickt mit Widerständen in ein Netzwerk umsetzen, dass es mit der normalen Spannungsteilervariante geht? Mir kam nur grad so die Idee, ich weiß nur nicht genau wie man es lösen könnte.

Ein Coproz geht zwar, aber ist ja wieder eine umständlichere Variante.

Elektrofips
16.01.2008, 12:16
genau das hab ich mir auch schon gedacht....also eine parallelschaltung der 5 taster allerdings mit unterschiedlichen vorwiederständen, damit sich somit bei jeder der 22 schaltvarianten ein anderer gesamtwiederstand ergiebt. ich hab mir dazu auch schon eine excel tabelle gemacht in der das immer ausgerechnet wird. nur was ich halt nicht weiß ist: wie groß muss ein spannungsbereich einer schaltvariante in V mindestens sein damit er eindeutig und fehlerfrei vom AVR erkannt werden kann. bzw wie viel mV müssen die bereiche geortnet auseinander liegen um erkannt zu werden?

T.J.
16.01.2008, 12:22
teil doch mal die möglichen werte (ich nehme mal an 1023) durch 22

der abstand sollte reichen, wenn du 1% metallschicht nimmst ist das denke ich recht sicher. ein versuch ist es allemal wert

Elektrofips
16.01.2008, 12:29
wird auch zum problem weil ich ja 5 varianten hab bei denen nur ein taster gedrückt wird. dann mehrere varianten mit nur zwei tastern. bis hin zu den schaltvarianten bei denen bis zu 4 taster gedrückt werden. ich bekomme so zu sagen keine gleichen abstände zwischen den 22 einzeln erzeugten spannungen hin.

T.J.
16.01.2008, 12:31
das ist ja richtig, aber rechne mal 5V durch 1023. rein theoretisch ist das dein mindestabstand. zur sicherheit muss der natürlich etwas grüßer sein. aber wenn dein kleinster abstand 5 digits ist ist doch alles in ordnung oder?

Elektrofips
16.01.2008, 12:39
na aber wenn ich die 22 möglichen schaltvarianten in ihren wiederstand umrechne, liegen die noch nichteinmal annähernt in gleichen abständen zu einander. und wenn ich 1023/anzahl der varianten rechne bekomme ich doch nur einen theoretich idealen wert....gut wäre halt wenn ich meine rechenrichtung einfach umdrehen würde um die 5 bzw sechs wiederstände direckt zu berechnen? nur wie das geht weiß ich halt nicht

JanB
16.01.2008, 13:12
Mit 5 Tastern gibt es genau 32 Kombinationen von gedrückt/nichtgedrückt.
Die lassen sich durch binär gestaffelte Widerstände kodieren.
Also z.B. 16k, 8k, 4k, 2k, 1k.
Jeder Taster schaltet einer dieser Widerstände parallel.
Also z.B Taster2 schaltet 8k und Schalter3 4k parallel usw.
So gibt es für jede der 32 Kombinationen jeweils einen bestimmten Gesamtwiderstand.
Einen ander Möglichkeit ist die Widerstände alle in Reihe zu legen,
und jeder Taster schliesst einen der Widerstände kurz.

Gruß Jan

radbruch
16.01.2008, 13:22
Hallo

Also manchmal sieht man den Wald vor lauter Bäumen nicht. Der asuro wertet doch seine 6 Taster mit nur einem ADC-Eingang aus: asurowiki (http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Tasten)

Gruß

mic

wkrug
16.01.2008, 13:24
Am Ort deiner Taster würd ich einen ATTINY 26 einbauen, der dann ein serielles Signal aus der jeweiligen Tastenstellung erzeugt.
Der ATTINY gehört zur Familie der ATMEL AVR Controller.
Das dürfte auch nicht mehr kosten, als eine ganze Packung Widerstände zu verbauen

Da Du an Ort B nur noch einen A/D Wandler Port freihast, kannst Du hier einen Software USART verwenden. Es sei denn die Pins des USART ( RxD ) wären am Ort B noch frei, dann gehts auch in Hardware.
Wenn die Leitungslängen zu lang werden, wäre noch ein Schnittstellentreiber auf beiden Seiten notwendig.
Da Du aber nur einen Draht hast geht ein RS485 Treiber leider nicht.
Das Programm für die Stelle A ist kein großes Problem.
Die Tasten werden ständig gepollt und die aktuellen Schalterstellungen ständig über den USART als 8 Bit Wort weitergegeben.
Wenn dann auch mal ein Paket versaut ist, kommt es somit beim Empfänger maximal zu einem kurzen Impuls.

Vorerst würde ich es aber ohne Treiber probieren, ein Auto ist ja nicht so groß. Aber leider gibts dort sehr viele Störquellen.

An Ort A brauchst Du noch eine Stromversorgung. Am Besten stabilisierte +5V für den Controller.

shaun
16.01.2008, 13:56
Entweder nimmst Du wie schon gesagt wurde binär gewichtete Widerstände und dann möglichst eine Konstantstromquelle zum Speisen, ansonsten bekommst Du eine nichtlineare Kennlinie, insbesondere, wenn Du einen besonders hohen Ausgangsspannungshub haben willst (und den willst Du!).
Oder Du setzt einen zweiten Controller an die Taster und überträgst seriell.
Was Du aber in keinem der beiden Fälle machst, ist die Karosserie als Masse zu benutzen! Du wirst die Störungen bis hin zur Zerstörung der Halbleiter ohne eigene Masseleitung nur mit sehr viel Aufwand eindämmen können, nicht umsonst haben in aktuelleren Autos auch weniger anspruchsvolle Steuergeräte eigene Masseleitungen, an die Struktur wird da fast nichts mehr geschraubt.

Elektrofips
16.01.2008, 15:58
Hallo nochmal,

bin erstmal begeistert was ihr alle für unterschiedliche lösungsvorschläge habt. nur leider is mein problem das ich wirklich NUR den masseanschluss zur verfügung habe. das heißt wenn ich einen pluspol am Ort "A" benötige bin ich automich verpflichtet eine weitere leitung zu ziehen. deswegen würde ich die Variante mit dem Spannungsteiler beforzugen. weiß halt nur nicht welche wiederstände die besten zu verarbeitenden werte liefern. aber trotzdem find ich eure anderen lösungen nich schlecht....
mfg felix

Elektrofips
16.01.2008, 16:06
ach ja was noch wichtig wäre zu sagen: Taster 1, 2 und 5 sind unabhängig von einander zu betätigen. nur die taster 3 und 4 sind eigentlich an einem UM- Schalter gekoppelt. somit würden von den 32 normalen varianten 9 varianten wegfallen und somit 23 logische übrig bleiben

radbruch
16.01.2008, 16:19
Hallo

Dir ist schon klar, dass die Widerstandsmessung nur eine Leitung benötigt? Von 5V über den Vergleichswiderstand (r24/1k) zu den Schaltern mit ihren Widerständen. Und von dort zurück über die Karosserie zu GND. Auf dem asuro-Plan wären dann PD3 die 5V und PC4 der Messpunkt des Spannungsteilers und dein ADC-Eingang. Von dort mit einer Leitung zu den Schaltern/Widerständen und über GND zurück. Oder eben ohne Karosserie mit zwei Leitungen...

http://www.asurowiki.de/pmwiki/uploads/Main/switches.jpg

Gruß

mic