Mehrere DIP Schalter an einen ADC

Gast #2991303
Lesenswert?

Guten morgen,

ich habe leider an meinem Atmega 8 einen Port zu wenig, um DIP Schalter 
direkt einzulesen (1 Port pro DIP Schalter).
Eine Porterweiterung wäre Verschwendung, da ich nur einen Port 
zusätzlicht benötige.

Ich habe hier im Forum mal gelesen (finde es aber nicht mehr), dass man 
es auch über den ADC machen kann und über ein Widerstands-Netzwerk. Hat 
hier jemand genaue Infos (Schaltung, kurze Vorgehensweise bei der 
ADC-Auswertung) oder einen Link?

Danke.

Tom
Gast #2991342
Lesenswert?

Hallo,

es sind 2 DIP-Schalter die mir noch fehlen.
Jeder soll getrennt erkannt werden können, also im Prinzip 4 
Möglichkeiten:
- Schalter 1 und 2 nicht gewählt
- nur Schalter 1 gewählt
- nur Schalter 2 gewählt
- Schalter 1 und 2 beide gewählt

Danke.
Gast #2991386
Lesenswert?

Prüfen. Wenn OK machen:

  o VCC
  :
 10 K
  :
  o----------o Portpin
  :
  o--------o
  :        :
 10 K     20 K
  :        :
  o        o
  :        :
   S1       S2
  :        :
 GND      GND


GGF andere Widerstandswerte wählen.


S1    S2       U

offen offen    VCC
offen zu       2/3 VCC
zu    offen    1/2 VCC
zu    zu       0,4 VCC
Gast #3002178
Lesenswert?

Nabend,

habe heute Zeit gefunden, den Schaltungsvorschlag von Davis umzusetzen. 
Läuft gut, der ADC hat eine Abweichung von +/- 1 Wert z.B. für Vcc halbe 
messe ich statt 511,5 (also 511) 510.
2/3Vcc ist rechnerischer Wert gleich Messwert (682), ebenso Vcc 1023. 
Bei 0,4Vcc habe ich ebenfalls eine Abweichung von einem ADW-Wert:
Berechnet 409,2 (also 409), gemessen 408.

Ist die Schwankung des ADCs so oder kann ich hier noch etwas tun. 
Beschaltet mit 10uH Spule und 100nF gegen GND (AVCC und AREF).

Ansonsten kompensiere ich das eben in der Software mit einer Differenz 
von +/-2...

Gruß
Tom
#3002203
Lesenswert?

Tom schrieb:

> Ansonsten kompensiere ich das eben in der Software mit einer Differenz
> von +/-2...

Ähm.
Du legst deine Auswerteumschaltpunkte genau zwischen deine errechneten 
Werte!

D.h. das was du vom ADC bekommst untersuchst du, in welchem Bereich(!) 
es liegt und die Bereichsnummer ist deine Tastennummer.

ALso nicht mit +-2 kleckern. Klotzen!
Welchen Wert erwartest du bei dem ersten Taster? Welchen Wert beim 
zweiten Taster? Die Mitte zwischen den Werten ist deine 
Umschaltschwelle. Ist der gemessene Wert kleiner als diese Schwelle, 
dann war es der erste Taster. Ist er größer dann der zweite (bzw. der 
dritte, vierte, etc)


                           ADC Wert

                          ^    +
                          |    |   --+
 theoretisch kriegst du        |     | in der Praxis akzeptierst du
 diesen Wert beim Taster 4  -> |     | alle Messwerte in diesem
                               |     | kompletten Bereich als 'Taster 4'
                               |   --+
                               +
                               |   --+
 theoretisch kriegst du        |     | in der Praxis ...
 diesen Wert beim Taster 3  -->|     |
                               |
                               |
                               +
                               |

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren