Forum: Mikrocontroller und Digitale Elektronik Adresseingabe über einen ADC-Pin


von Flo K. (Gast)


Lesenswert?

Hallo,
ich stehe vor einem kleinen Problem. Ich habe mit einem Attiny45 einen
RGB Controller mit I2C Schnittstelle gebastelt. Um die einzelnen
RGB-Slaves zu unterscheiden muss ich aber jedem eine eigene Adresse
geben, und das am besten ohne jedes mal das Programm zu verändern. Nun
hab ich aber das Problem das ich nur noch einen freien ADC-Port zur
Verfügung habe.

Kennt jemand eine Methode (Hardware + Software) wie ich 3 Bit's mit
Widerständen kodieren kann?

P.S.
So etwas ähnliches hab ich mal in einer C-Control Applikation mit einer
Matrix-Tastatur gesehen, kann mich aber leider nicht mehr an den genauen
Aufbau erinnern.

von Aleksej (Gast)


Lesenswert?

Einen Wiederstand oben, 5V drauf, dann 3 gleiche unten kvaziparallel
(ganz unten auf GND und die anderen Anschluessen nicht verbinden, da
kommen 3 Bruecken). Damit kannst du sogar 4 bit kodieren (keine Jumper
- 5 V auf ADC, 1 Jumper - 2.5V, 2 Jumper - 1,7V, 3 Jumper - 1,25V)

von Aleksej (Gast)


Lesenswert?

Im Prinzip reichen schon 2 Wiederstande unten, dann hast du 5V, 2.5V und
1.7V

von Flo K. (Gast)


Lesenswert?

Und wie sieht's mit Bitkombinationen aus? 101 z.B. oder 100 ? So meinte
ich das eigentlich. Das mit der Parallelschaltung kannte ich schon
(hab's leider vergessen zu sagen). Ich möchte in etwa 9 verschiedene
Adressen am Bus.

von Rahul (Gast)


Lesenswert?

Du könntest einen Spannungsteiler so wie Aleksej es vorgeschlagen hat
aufbauen:
1 Widerstand gegen Vcc
Dann kannst du 8 Widerstände an 9 Taster/Schalter legen, und die
Widerstände jeweils so auswählen, dass sie eindeutige Spannungswerte
liefern. (9. Kontakt gegen Masse...).
In ungeschalteten Zustand liegt dann über den Widerstand 5V am ADC-Pin.
Wenn immer nur ein Schalter betätigt wird, hat man 9 ADC-Werte...
Binär (ca. 4 Schalter) könnte man das so realisieren, dass man
Widerstände in Reihe schaltet und sie durch betätigen der Schalter
überbrückt (negative Logik...)

von Hannes L. (hannes)


Lesenswert?

> Ich möchte in etwa 9 verschiedene
> Adressen am Bus.

Wenn du auf 8 oder 16 rasterst, wird die Auswerterrutine einfacher, der
Tiny15 rechnet binär und mag daher Zweierpotenzen besonders gern...

Wenn du mit Wechseljumpern (je 3 Stifte) arbeiten kannst, dann könnte
ein modifiziertes R2R-Netzwerk helfen, oder einfach "gewichtete
Widerstände" (1k, 2k, 4k, 8k).

...

von Flo K. (Gast)


Lesenswert?

Funktioniert prima mit den gewichteten Widerständen.
Mit ein bisschen Vorarbeit wie das Erstellen einer Wertetabelle für die
verschiedenen Spannungen ist es die beste Lösung.
Danke für die Antworten.

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.