dip-codierung mit nur einem pin ?!?

hallo zusammen :slight_smile:

ich würde meinen funksender gerne codieren (also interval und nummer über dip-schalter einstellen).
da die tinys nicht viele pins haben bzw das ganze so klein wie möglich sein sollte, würde ich gerne nur eine bzw zwei pins verwenden.

ich dachte da an folgendes:

widerstand(Rv) - zenerdiode
parallel zur z-diode dann
dip-schalter (jeder dip bekommt ein eigenen widerstand) und in reihe dazu ein widerstand (Rm)....
der arduino oder tiny misst dann die spannung am Rm.

z-diode weil die versorgungsspannung ja von der kapazität der batterie abhängt...

mit der z-diode hätte ich doch dann eien stabile spannung zum messen bzw codieren...

zB bekommt
der erste dip-schalter ein 10k widerstand
der zweite ein 20k widerstand
und der dritte ein 40k widerstand

dann hätte ich bei:

000 = 0V bzw 0ohm weil kein dip geschaltet ist
100 = 10k
010 = 20k
001 = 30k
110 = 15k
101 = 25k
111 = 35k

oder so ähnlich.......

ein drehpoti mit festen positionen wäre natürlich noch besser aber finde da nichts bzw weiß nicht, wonach ich da genau suchen muss

was haltet ihr davon ?
macht das sinn ?
oder gibts einfachere lösungen zur codierung ?
also möglichst platzsparend, günstig, und ohne viele pins zu benötigen ?!

VCC direkt über die DIP Schalter laufen zu lassen reicht voll. Solche Widerstandsnetzwerke hingegen sind etwas kritisch. Was hast du an Pins frei. Hier würde sich SPI anbieten mit ParrallelSerial ICs. Drehpoti mit festen Widerständen gibt es so auch glaub nicht. Was du meinst, wäre ein Stufenschalter.

Hallo,

mit analogRead kannste nicht genau auf einen Wert abfragen, Du müßtest auf einen Bereich abfragen. Den der eingelesene Wert wird schwanken und je nach Temperatur noch viel mehr.

Haste noch I2C frei? 2 Pins. 8 Bit Port I/O Expander ran und die 8 Eingänge abfragen an diesen Deine 8 DIP Switche hängen. Haste bis zu 256 verschiedene Zustände.

ich glaub der attiny hat kein i2c.

naja aber wenn ich direkt mit vcc an den dip-schalter rangehe und eine batterie verwende ist die spannung doch nicht stabil ?

deswegen die geschichte mit der z-diode und dem widerstand.

naja theoretisch hab ich noch 6 eingänge frei......
also platz genug für ein 3er dip für die ID und ein 3er dip für die sendefrequenz......

eigentlich wollte ich aber noch einen pin um die dipschalter nur im setup einzuschalten (um strom zu sparen) aber kann man ja auch anders machen.....

im setup dann
pins an denen die dips liegen auf input......
zustand abfragen und entschlüssel bzw werte den variablen zuweisen und dip-pins wieder auf output stellen ???

wenn ich allerdings ein quarz verwende, fehlen mir zwei eingänge....

deswegen ist die nächste frage, die ich mir stelle "brauche ich überhaupt ein quarz?"....

macht ein quarz bei einem zB temperatur-sender irgendwie sinn ?
in den anleitungen, die man im netz findet, hat keiner ein quarz verwendet !?

magictrips:
ich glaub der attiny hat kein i2c.

Ich nutze ATtiny 4313 und 85 mit I2C. Welchen ATtiny nutzt Du? ATtiny 2313/4313 haben 17 I/Os.

magictrips:
ich glaub der attiny hat kein i2c.

naja aber wenn ich direkt mit vcc an den dip-schalter rangehe und eine batterie verwende ist die spannung doch nicht stabil ?

Ist doch egal ob die Spannung stabil ist. Das Verhältnis der Spannungsteiler bleibt.

Hallo,

wegen den DIP Schaltern. Ganz einfach. 10k Pullup und der DIP. Entweder liegt Ub am Pin oder Masse.
Beschaltung

Und wenn Dir die Ports ausgehen und Du bei deinem µC bleiben willst, ich glaube es gibt auch Software I2C. Dann kannste die I/O's auch erweitern. Ob das dann noch Dein RAM und/oder Flash mitmacht weis allerdings nicht.

ich nutze den 84.

aber ich lass einfach das quarz weg, dann passts (;

ja, das verhältnis bleibt, aber wenn ich nur einen pin verwenden würde, könnte ich ja auch nur eine spannung messen und wüßte die spannung, die am anderen widerstand abfällt nicht.

was passiert denn wenn, ich auf die pull-ups verzichte ?
ich hatte eigentlich gehofft, das ich vcc direkt auf ein eingang legen kann ?

Hallo,

willst Du jetzt mit den DIP's was einstellen um analog zu messen oder mit 3er Block an 3 digitalen Eingängen?

Bei letzerem. Klar kannste Vcc direkt an den Eingang legen. Aber nicht wenn Du noch auf Masse mit den DIP's umschalten möchtest. Überleg mal was passiert wenn Du den Pullup wegläßt in der verlinkten Schaltung und den DIP schließt. ? Richtig, satter Kurzschluss. Die DIP's sind nur Schalter mit reiner Schließerfunktion. Die schalten keine Kontakte um. Also der schaltet nicht zwischen 2 Kontakten hin und her. Wenn Du einen Wechselschalter hättest, dann könntest Du einen Kontakat an Vcc, den anderen an Masse und den Wechselkontakt an den µC Eingang legen.
Ich weis jetzt nicht ob es DIP Schalter als Wechsel- bzw. Umschalter gibt. Ich glaubs eher nicht.

also wenn es möglich ist,
mit einem pin,
bei nicht konstanter betriebsspannung
und in einem temperaturbereich von -20 bis 50°C
und möglichst platzsparend
etwas zu codieren, dann würde ich das bevorzugen.

ansonsten würde ich (wenn möglich) einfach ein kontakt des dip-schalters auf vcc legen und den anderen jeweils auf ein pin und im sketch den zustand "high" abfragen......
so, wie in der rechten schaltung in deinem link.....den linken teil versteh ich nicht so ganz..zb wofür PD gut ist und der taster.....

erstmal vielen dank für die beteiligung !

stand gestern etwas neben mir, deswegen hab ich das mit dem verhältnis nicht sofort begriffen (;
kla, wenn ich das verähltnis der widerstände kenne, ist die anliegende spannung egal, weil ich ja eine spannung messe und die sich im gleichen verhältnis, wie die widerstände aufteilt.....

ich hab noch ein anderen threat zu dem thema gefunden:
http://forum.arduino.cc/index.php?topic=139982.0

ich glaube, ich werde entweder direkt auf die eingänge des tinys gehen oder eventuell ein schieberegister, portexpander oder so verwenden......

Ich würde da ein R2R Netzwerk nehmen und mit Vcc versorgen. Dann bekommt man den Binärcode mit sowas wie
analogRead(pin) * N / 1024; //N=Anzahl der Schalter