Forum: Mikrocontroller und Digitale Elektronik 9 IR Sensoren an Arduino Uno


von Stefan (Gast)


Lesenswert?

Gutan Tag,

wir müssen für die Hochschule eine kleine Installation mit Arduino 
erstellen, leider haben wir beide keine Ahnung davon. Der Software Teil 
ist kein Problem, bei der Hardware setzt es allerdings bei uns aus.

Was wir machen wollen.
Wir wollen 9 Infrarot Sensoren vom Arduino auslesen lassen. Das Arduino 
Uno hat allerdings nur 6 analoge Eingänge.
Uns wurde gesagt, dass das mit einem Multiplexer möglich sei. Also hat 
uns der Fachhändler einen ULN2801A mitgegeben, nachdem wir ihm unser 
Problem erläutert haben. Aber nachdem wir ins Datenblatt geschaut hatten 
waren wir mehr verwirrt als geholfen, da wir 3 Steuerleitungen 
erwarteten.
irgendwann entscheiden wir uns jeweils zwischen 2 Sensoren mit 2 
Transistoren hin und herzuschalten, allerdings sind auch Transistoren 
neuland. Habe an die Basis einen digitalen Ausgang gehängt und somit 
zwischen HIGH und LOW geswitched. Ergebnis war, dass der analoge Wert 
bei LOW ganz normal ausgelesen hat, bei HIGH allerdings, den max. Wert 
des sensor angezeigt hat. Wenn ich dann 2 Sensoren auf einen analogen 
Pin gelegt habe, dann hatte HIGH und LOW keine Auswirkung mehr.

Wie kann ich das Problem am einfachsten lösen?
Welcher Multiplexer ist für sowas der RIchtige?

Danke.

Gruß
Stefan

von Christian Schmidt (Gast)


Lesenswert?

Hi!

Also zunächst wäre interessant, was ihr unter IR Sensoren 
versteht...Wollt ihr tatsächlich ein analoges Signal auswerten? Dazu: 
prinzipiell geht das mit einem Multiplexer (Analogschalter), der 
ULN2801A ist, wie man aus dem Datenblatt sehen kann, ein 
Darlington-Array. Wikipedia sagt euch was zu Darlington, kurz und knapp 
hat sowas in eurer Anwendung imho nichts verloren. Achja, was ist denn 
die geplante Anwendung? Was für ein Bauteil ist dieser IR Sensor?

schöne Grüße

Chris

von Stefan (Gast)


Lesenswert?

Also der Infrarot Sensor ist ein Sharp 2Y0A21.
Ziel ist eine Platte mit einer 3x3 Matrix aus IR Sensoren. Wenn man mit 
der Hand darüberfährt, dann sollen LEDs im Bereich der Hand aufleuchten.

Welcher Multiplexer wäre denn für sowas geeignet?

Gruß und Danke
Stefan

von Peter D. (peda)


Lesenswert?

Multiplexer: 74HC4051

von randy (Gast)


Lesenswert?

da wuerde ein guter alter CD4051 analog multiplexer gehen.

http://www.ti.com/lit/ds/schs354a/schs354a.pdf


gruss,
-- randy

von Christian Schmidt (Gast)


Lesenswert?

Hi,

ok, also Ihr müsst wirklich eine Analogspannung sprich die Entfernung 
vom Sensor erfassen. Prinzipiell sollte ein beliebiger Analogschalter 
funktionieren, hier mal ein Beispiel:

http://www.analog.com/static/imported-files/data_sheets/ADG419.pdf

Das ist jetzt ein einfacher SP2T, also ein Umschalter. Ihr könntet also 
bspw. 8 Sensoren mit 4 Analogeingängen erfassen, indem zwischen 2 
Sensoren und einem Eingang keweils ein solcher Schalter sitzt. Der 9. 
Sensor sitzt dann direkt am fünften Eingang, falls dies timingmäßig 
Probleme macht, muss beim Abfragen des fünften Sensors die Umschaltzeit 
der übrigen Sensoren "simuliert" werden. scheint mir aber in der 
Anwendung unkritisch. Dadurch, dass (nahezu) kein Strom in die 
Analogeingänge fließt, sollte die On-Resistance keinen großen Einfluss 
auf die gemessene Sensorspannung haben, da werdet Ihr aber wohl eh etwas 
experimentieren müssen, die Kurve im Datenblatt siet schon relativ krumm 
aus.


schöne Grüße

Chris

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Schonmal danke für die tolle Hilfe euch allen ;)

Habe mir jetzt den 74HC4051 geholt, allerdings habe ich noch so meine 
Probleme mit. Übergebe 3 binäre Zeichen an die Steuereingänge des 
Multiplexers, hochzählend von 000 - 111. Wenn ich denausgelesenen 
analogen Wert dann jeweils mit einer Switch Case Anweisung an 8 
Variablen übergebe, daann schreibt er in jede Variable den selben Wert.

Habe mich bei anschliessen an das linke Diagramm gehalten:
http://playground.arduino.cc/uploads/Learning/4051_pins.jpg

Code ist im Anhang.

Danke
Gruß Stefan

von PittyJ (Gast)


Lesenswert?

Wenn ich den Code so sehe...
In jedem vernünftigen C-Buch gibt es auch einen Abschnitt zu Arrays.

von Stefan (Gast)


Lesenswert?

Ja haste Recht, war nur schnell zum Testen, ohne zu überlegen. Seh mich 
auch nicht als Programmierer. Aber zum eigentlichen Problem. Was mache 
ich falsch?

von PittyJ (Gast)


Lesenswert?

das
a0IR = analogRead(0);

muss natürlich in die Schleife. Soll doch jedesmal neu gelesen werden. 
Oder??

von Stefan (Gast)


Lesenswert?

Super danke dir...
wir haben jetzt allerdings ein neues Problem. Und zwar haben wir jetzt 
die 9 Sensoren dran und ab dem 8ten Senso streikt das Arduino. ISt es 
möglich, dass das Arduino zu wenig Leistung liefert für alle 9 Sensoren? 
Wenn ja, ist es einfach z.Bsp möglich die Ground und + Leitung aus einem 
anderen Stromkreis zu nehmen? Oder irgendeine andere Möglichkeit.

Danke Gruß Stefan

von Hubert G. (hubertg)


Lesenswert?

Eine eigene 5V Versorgung für die Sensoren wird notwendig sein.
Nicht vergessen den Ground zu verbinden.

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.