Forum: Mikrocontroller und Digitale Elektronik Mehrere DIP Schalter an einen ADC


von Tom (Gast)


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

von tim (Gast)


Lesenswert?

Mit einem Schieberegister würde es viel einfacher gehen.
Willst du es trotzdem mit dem ADC machen, dann würde ich ein 
Summierverstärker bauen, mit gewichteten Widerständen.

von Davis (Gast)


Lesenswert?

Wieviele Einstellungen benötigst du?

von Tom (Gast)


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.

von Klaus K. (leo9)


Lesenswert?

such mal nach R2R Netzwerk

von Davis (Gast)


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

von Tom (Gast)


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

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

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

Zu knapp.... und vor Allem... warum so eine geringe Toleranz?

von Karl H. (kbuchegg)


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  -->|     |
                               |
                               |
                               +
                               |

von Bernd T. (bastelmensch)


Lesenswert?

Machs einfach per SW und nimm eine höhere Toleranz, dann bist Du immer 
auf der sicheren Seite.

von Tom (Gast)


Lesenswert?

Danke, das war hilfreich.
Der Gedanke von Karl Heinz ist natürlich super die Schaltschwelle in die 
Mitte zu legen.

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.