Hallo, Ich habe mehrere IR-Reflexschranken. Bei denen fällt am IR-Empänger eine Spannung ab, die abhängig davon ist, wie nah ich mit meiner Hand als Reflektor an der IR-Led bzw. IR-Empfänger dran bin. Ist meine Hand nicht da, so fallen 0V ab. Bin ich ganz nah dran, sind es 5V. Nun möchte ich ein digitales Signal der Reflexschranken\Refelxtaster über ein 74HC165 Eingangsschieberegister am Atmega einlesen. Auf ein Multiplexing mit einem ADC-Eingang und einem mehrkanäligen Analog-Digitalwandler möchte ich verzichten. Zum Einen aus Kostengründen zum Anderen, da ich im Mikrocontroller nur ein Binäres Signal haben möchte. Nun die Frage: Wie kann ich die "Schaltschwelle" einstellbar machen, also sagen, ab wieviel Volt am Schieberegister high oder low anliegt? Am besten noch einstellbar, ohne dass ich Bauteile umbauen muss. Also entweder irgendwas Richtung Poti, sodass ich einfach die Schwelle einstellen kann. (Poti ist wahrscheinlich nicht das richtige Einstellinstrument). Wie macht man es am besten generell? Mit einer Diode, die bis zu einer bestimmten Spannung sperrt? Oder einem Transistor?
Highii H. schrieb: (...) > Auf ein Multiplexing mit einem ADC-Eingang und einem mehrkanäligen > Analog-Digitalwandler möchte ich verzichten. Zum Einen aus Kostengründen Multiplexing auf einen ADC Eingang ist die kostengünstigste Lösung. z.B. CD74HC4067 (16:1) ca. 0,30 ... 0,80 EUR > zum Anderen, da ich im Mikrocontroller nur ein Binäres Signal haben > möchte. Eine Zeile Code in der Firmware. ADC Wert >= Schaltschwelle -> Digitalwert = 1 ADC Wert < Schaltschwelle -> Digitalwert = 0 Vorteil: Schaltschwelle ist in der Firmware für jeden Sensor konfigurierbar. Kann auch dynamisch verändert werden (z.B. bei Umgebungslichtänderung) > > Nun die Frage: > Wie kann ich die "Schaltschwelle" einstellbar machen, also sagen, ab > wieviel Volt am Schieberegister high oder low anliegt? Am besten noch > einstellbar, ohne dass ich Bauteile umbauen muss. Also entweder > irgendwas Richtung Poti, sodass ich einfach die Schwelle einstellen > kann. (Poti ist wahrscheinlich nicht das richtige Einstellinstrument). > Wie macht man es am besten generell? Mit einer Diode, die bis zu einer > bestimmten Spannung sperrt? Oder einem Transistor? Wenn man es unbedingt extern machen möchte, brauchst du für jeden Sensor einen Komparator, möglichst mit Hysterese. Die Ausgänge der Komparatoren kann man dann auf die Eingänge eines Schieberegisters legen. Insgesamt ist das ein wesentlich höherer Bauteileaufwand, und damit auch teurer.
Joe F. schrieb: > Multiplexing auf einen ADC Eingang ist die kostengünstigste Lösung. > z.B. CD74HC4067 (16:1) ca. 0,30 ... 0,80 EUR Das klingt sehr interessant. Dazu habe ich zwei Fragen: (1) Bei welcher Bezugsquelle findest du 0,30 bis 0,80 EUR? Ich möchte DIP-Gehäuse. (2) Kann man diese Kaskadieren, sodass ich 32:1 oder 48:1 realisieren kann?
1) nicht DIP aber SO24: http://www.reichelt.de/SMD-HC-4067/3/index.html?&ACTION=3&LA=446&ARTICLE=107904&artnr=SMD+HC+4067&SEARCH=4067 2) ja
Knut B. schrieb: > 1) nicht DIP aber SO24: > http://www.reichelt.de/SMD-HC-4067/3/index.html?&ACTION=3&LA=446&ARTICLE=107904&artnr=SMD+HC+4067&SEARCH=4067 > > 2) ja Das klingt sehr interessant. Den werde ich mir mal anschauen. Vielen Dank!
Knut B. schrieb: > 1) nicht DIP aber SO24: > http://www.reichelt.de/SMD-HC-4067/3/index.html?&ACTION=3&LA=446&ARTICLE=107904&artnr=SMD+HC+4067&SEARCH=4067 Gibt es eigentlich IC-Sockel von S024 nach DIP? Oder wie verlötet man diese am besten auf eine 2.54mm Platine?
Hallo, falls Dich I2C nicht stört und jeweils 4 A/D-Werte reichen, such mal bei ebay nach PCF8591. Dauert nur etwas, wenn Du in China bestellst. Gruß aus Berlin Michael
Knut B. schrieb: > 1) nicht DIP aber SO24: > http://www.reichelt.de/SMD-HC-4067/3/index.html?&ACTION=3&LA=446&ARTICLE=107904&artnr=SMD+HC+4067&SEARCH=4067 Selbstverständlich hat Reichelt auch DIP. Den 4067 als 4000er CMOS (statt 74HC) z.B. hier https://www.reichelt.de/ICs-C-MOS-DIL/MOS-4067/3/index.html?&ACTION=3&LA=2&ARTICLE=12620&GROUPID=2924&artnr=MOS+4067 ist mit EUR 1,55 aber vergleichsweise teuer. Aber wenn der TE ohnehin kaskadieren will, braucht er ja nicht notwendigerweise einen Analog- multiplexer mit 16 Ports. Der 4051 mit 8 Ports ist viel günstiger und mit 9 Stück davon kann man bis 64 analoge Eingänge realisieren. Den gibts wahlweise als klassischen 4000er: https://www.reichelt.de/MOS-4051/3/index.html?&ACTION=3&LA=446&ARTICLE=12610&artnr=MOS+4051&SEARCH=4051 für EUR 0,24 oder als 74HC: https://www.reichelt.de/74HC-4051/3/index.html?&ACTION=3&LA=446&ARTICLE=3229&artnr=74HC+4051&SEARCH=4051 für EUR 0,37.
Highii H. schrieb: > Wie kann ich die "Schaltschwelle" einstellbar machen Natürlich kannst du das so bauen
1 | +------+ |
2 | +5V ---+--------+----+----+--|VCC | uC |
3 | | | | | | | |
4 | +-----------+ | | 10k | |-- CLK |
5 | |IR-Schranke|---(---|+\ | | 74 | |
6 | +-----------+ | | >--+--|A HC |-- S/L |
7 | | Poti--|-/ | 165 | |
8 | | | |LM399 | |-- QH |
9 | GND ---+--------+----+-------|GND | |
10 | +------+ |
aber es wäre einfach bescheuert so was aufzubauen, es ist viel zu aufwändig. Die meisten uC können direkt 8 Analogsignale erfassen (du brauchst schon 3 Anschlüsse für deine extra-Elektronik), und wenn man externe Multiplexer wie CD4051 einsetzt, reicht auch ein Analogeingang.
1 | +------+ |
2 | +5V ---+--------|VDD | uC |
3 | | | | |
4 | +-----------+ | |-- A |
5 | |IR-Schranke|---|0 CD |-- B |
6 | +-----------+ | 4051 |-- C |
7 | | | | |
8 | | +--|VSS Y|-- A/D |
9 | GND ---+-----+--|VEE | |
10 | +------+ |
dann kann die Schaltschwelle in Software verstellt und gespeichert werden, viel weniger Aufwand, viel billiger, und weniger Platz kostet es auch noch.
Axel S. schrieb: > Der 4051 mit 8 Ports ist viel günstiger und > mit 9 Stück davon kann man bis 64 analoge Eingänge realisieren. Den > gibts wahlweise als klassischen 4000er: > https://www.reichelt.de/MOS-4051/3/index.html?&ACTION=3&LA=446&ARTICLE=12610&artnr=MOS+4051&SEARCH=4051 > für EUR 0,24 oder als 74HC: > https://www.reichelt.de/74HC-4051/3/index.html?&ACTION=3&LA=446&ARTICLE=3229&artnr=74HC+4051&SEARCH=4051 > für EUR 0,37. Das klingt sehr interessant. Was ist der Unterschied zwischen den beiden (MOS und 74HC)? Interessant für mich ist auch, in welcher Frequenz ich die einzelnen Kanäle ansprechen kann. Gerade wenn ich mehrere 4051 kaskadiere, sinkt ja die Auslesefrequenz für einen Kanal. Wenn mein xMega mit 32MHz läuft, in welcher Frequenz kann ich dann 48 Signale abtasten? (Wenn 48:1)
:
Bearbeitet durch User
Die 74HC... Version ist etwas schneller und hat niedrigere Widerstände im eigeschalteten Zustand. Auch ist der Versorgungsspannungsbereich wohl etwas kleiner. Einfach nur für die Lichtschranken macht es kaum einen Unterschied. Es ist zwar nicht schön, weil die Hysterese fehlt, aber man kann auch direkt von der Lichtschranke auf den 74HC165. Die schwelle kann man z.B. über je einen Widerstand/trimmer einstellen. In Grenzen geht das auch mit festen Widerständen und variabler Spannung. Eine etwas andere Lösung ist es die Leichtschranken (Phototransistor) nicht gegen einen Widerstand arbeiten zu lassen sondern einen Kondensator aufladen zu lassen. Die Empfindlichkeit kann man dann über die Zeit zwischen entladen des Kondensators und auslesen anpassen. Das kann man auch mit dem Auslesen per ADC kombinieren, wenn man z.B. die Intensitäten über einen sehr großen Bereich erfassen will. Für wenig Bauteile könnte man ggf. sogar die Versorgung der HC165 runter fahren und die Kondensatoren über die IC internen Diode entladen - nicht schön, dürfte aber funktionieren.
Der ADC im Xmage geht soweit ich weiß bis etwa 1 MHz Abtastrate. Für das Umschalte der Kanäle sollte man nicht allzuviel Zeit verlieren, zumindest wenn man 6 ADC Eingänge am µC nutzt und die MUX nicht noch Kaskadiert. Entpechend dürfte man 48 Känale wohl bis knapp 20 kHz abtasten können. Es kann aber gut sein, das dies nur bei hoher Lichtintensität gute Werte gibt - in nur 50 µs kommt ggf. noch kein gutes Signal zusammen. Um das Signal nicht nur aus der kurzen Abtastzeit zu erhalten sollte man wohl jedem Kanal einen eigenen Speicherkondensator spendieren, und nicht nur einfach die Lichtschranken als Phototransistor und Widerstand haben.
Danke für die hilfreichen Antworten. Das hilft mir sehr weiter.
Highii H. schrieb: > Axel S. schrieb: >> Der 4051 mit 8 Ports ist viel günstiger und >> mit 9 Stück davon kann man bis 64 analoge Eingänge realisieren. Den >> gibts wahlweise als klassischen 4000er: >> > https://www.reichelt.de/MOS-4051/3/index.html?&ACT... >> für EUR 0,24 oder als 74HC: >> > https://www.reichelt.de/74HC-4051/3/index.html?&AC... >> für EUR 0,37. > > Was ist der Unterschied zwischen den beiden (MOS und 74HC)? In deiner Anwendung: keiner. Der 4000er Typ funktioniert zwischen 3V und 15V Betriebsspannung, der 74HC zwischen 2V und 6V. Wenn du deinen µC mit 5V (oder auch 3.3V) betreibst, passen beide. Daß der 74HC schneller umschaltet (30ns vs. 300ns) und einen geringeren Kanalwiderstand hat, dürfte für deine Anwendung irrelevant sein. > Interessant für mich ist auch, in welcher Frequenz ich die einzelnen > Kanäle ansprechen kann. Gerade wenn ich mehrere 4051 kaskadiere, sinkt > ja die Auslesefrequenz für einen Kanal. Die Begrenzung kommt in jedem Fall durch den ADC. Ein ATmegaxx braucht mindestens 13µs für eine AD-Wandlung. Ob das Umschalten von einem Kanal auf den nächsten dann 30ns oder 300ns dauert, ist im Vergleich dazu unerheblich.
:
Bearbeitet durch User
Eine Sache fällt mir noch ein: Wenn ich mehrere 4051 kaskadiere, wie adressiere ich die am besten? Also bei jedem einzelnen muss ja über drei Signale die Kanal ausgewählt werden. Wie mache ich es bei mehreren? Ich will ja nicht n x 3 Outs von meinen Mikrocontroller zum adressieren verschwenden. Was ist eurer Meinung nach die Klügste Art das zu realisieren?
Wirklich kaskadieren würde ich nicht, sondern je einen 4051 zu einem ADC Eingang des µC schalten. Die Adressierung geht dann parallel, also bei allen 4051 die gleiche Adresse und dann auf 6 Eingänge am µC. Wenn man wirklich nur einen ADC Eingang frei hat, könnte man noch den Enable Pin am 4051 nutzen. Dann kämen die "Ausgänge" der 4051 alle zusammen, aber nur bei eine der Chips wird Enable aktive. Dafür bräuchte man dann moch ein IC wie z.B. 74HC139 oder 74HC42 oder ähnlich (die Polarität des Enable Signals müsste man noch prüfen, um zu sehen welche Art decoder passt). Damit hat man dann eine 3+3 = 6 Bit addresse für den Kanal - das spart aber auch nur 2 Pins und man braucht 1 extra IC. Soweit ich weiss ist der ADC beim Xmega noch etwas schneller - wohl aber nicht mit voller 12 Bit Auflösung. Bei nicht sehr viel Licht dürft eher die Lichtmenge die Geschwindigkeit begrenzen - das ist dann aber relativ unabhängig vom µC.
Highii H. schrieb: > Eine Sache fällt mir noch ein: > Wenn ich mehrere 4051 kaskadiere, wie adressiere ich die am besten? Also > bei jedem einzelnen muss ja über drei Signale die Kanal ausgewählt > werden. Wie mache ich es bei mehreren? Ich will ja nicht n x 3 Outs von > meinen Mikrocontroller zum adressieren verschwenden. Natürlich nicht. Mit drei digitalen Ausgängen deines µC kannst du einen von 8 Eingängen eines 4051 wählen. Um mehrere 4051 zu kaskadieren, schließt du einfach den Ausgang des 4051 an einen Eingang eines weiteren 4051 an. Da dieser 4051 der zweiten Ebene noch weitere 7 Eingänge hat, kannst du weitere 7 4051 auf die erste Ebene packen (die dann alle von den gleichen 3 Bit gesteuert werden). Insgesamt brauchst du dann 6 Bit - 3 für die erste Ebene und 3 für die zweite - um mit insgesamt 8+1 = 9 Stück 4051 einen von 64 Eingängen auf den ADC-Eingang durchzuschalten. Wenn es nur maximal 32 Eingänge sein sollen, dann reichen 4+1 4051 und 5 Bit zur Kanalwahl (den Eingang C des 4051 der zweiten Ebene legst du dann einfach fest auf L). Und alternativ kannst du statt des 4051 der zweiten Ebene auch einfach mehrere ADC-Eingänge deines µC verwenden. Intern hat der µC auch nur einen Analogmultiplexer ganz ähnlich zum 4051 zwischen allen seinen Analogeingängen und seinem einzigen ADC. Ist alles eine Frage wieviele (und welche) Pins du an deinem µC noch frei hast.
Ich habe es mal in der Schaltung umgesetzt. (Siehe Anhang) Mit 74HC154 (4 to 16 bit Decoder) kann ich über 4 Outputs bis zu 16 mal 74HC4051 ansteuern. 74HC154 ist hier an dieser Stelle zu viel, ließe aber die Erweiterung weiterer 4051 zu. Über Signalleitungen (V6, V7, V8) kann ich die Adressen von den 4051 auswählen. Dann braucht man noch die OR-Gatter (74HC32), um bei den restlichen 4051 Eingang Y7 durchzuleiten. Auf diese Weise kann ich mit 7 Outputs am Mikrocontroller theoretisch bis zu 113 ADC-Kanäle auf einen einzigen multiplexen. Jetzt braucht man nur noch ne kleine Logik im Controller, um die 7 Outputs korrekt zu besetzen. Was meint ihr? Könnte das gehen oder sehr ihr irgendwelche Probleme?
Das ist viel zu kompliziert - irgendwie noch wie Schieberegister gedacht. Günstiger ist es das Signal nur durch je einen der 4051 zu senden. Dazu gibt es den G Anschluss, um all Kanäle zu deaktivieren. Damit kann man dann die "Ausgänge" (Z) aller 4051 zusammen schalten und über die G Pins den Auswählen der gerade aktiv sein soll. Zur Auswahl könnte der HC154 passen - ggf. auch besser ein HC138. Mehr als einen 4051 je 8 Kanäle und den HC154/138 für bis zu 16 bzw. 8 der 4051 braucht man also nicht.
Lurchi schrieb: > Günstiger ist es das Signal nur durch je einen der 4051 zu senden. Dazu > gibt es den G Anschluss, um all Kanäle zu deaktivieren. Damit kann man > dann die "Ausgänge" (Z) aller 4051 zusammen schalten und über die G Pins > den Auswählen der gerade aktiv sein soll. Zur Auswahl könnte der HC154 > passen - ggf. auch besser ein HC138. Mehr als einen 4051 je 8 Kanäle und > den HC154/138 für bis zu 16 bzw. 8 der 4051 braucht man also nicht. Das habe ich leider noch nicht ganz verstanden. Was mir klar ist, ist, dass ich in der dargestellten Schaltung einen HC138 anstatt eines HC154 nehmen kann. Aber wo schalte ich alle Z der 4051 zusammen? Auf einen anderen 4051? Oder ist es so gedacht, dass ich alle Z auf wirklich einer mechanischen Leitung zusammenschließe? Also alle in einen Knoten zusammenlaufen?
Highii H. schrieb: > auf wirklich einer mechanischen > Leitung zusammenschließe? Nein, die Leitung sollte schon elektrisch sein. wendelsberg
wendelsberg schrieb: > Nein, die Leitung sollte schon elektrisch sein. Jo, is mir klar. Aber ist es so gedacht, dass sie sich in einem Knoten treffen?
Highii H. schrieb: > Das habe ich leider noch nicht ganz verstanden. > wo schalte ich alle Z der 4051 zusammen? Auf einen anderen 4051? Du sollst die Z-Anschlüsse deiner 4 4051 direkt miteinander verbinden. Dann darfst du aber natürlich den G Anschluß nur eines 4051 auf L legen (der ist dann aktiv) und die anderen alle auf H (die sind dann inaktiv). Diesen Teil kannst du mit einem L-aktiven Decoder wie z.B. dem '138 machen den du mit 2 GPIOs ansteuerst. Vom Aufwand her vergleichbar ist es, wenn du die vier Z-Anschlüsse an 4 Eingänge eines 5. 4051 anschließt und einen der Eingänge über S0, S1 auf Z (der an den ADC geht) durchschaltest. Das ist die Kaskadierung die ich schonmal vorgeschlagen habe. Einziger Nachteil der Kaskadierung ist, daß das Signal jetzt durch zwei 4051 durch muß statt immer nur durch einen. Die Anschlüsse A, B, C (oder meinetwegen S0, S1, S2) der 4 4051 verbindest du untereinander und mit je einem GPIO des µC. Den ganzen Kokolores mit extra Gattern läßt du weg.
Axel S. schrieb: > Du sollst die Z-Anschlüsse deiner 4 4051 direkt miteinander verbinden. > Dann darfst du aber natürlich den G Anschluß nur eines 4051 auf L legen > (der ist dann aktiv) und die anderen alle auf H (die sind dann inaktiv). > Diesen Teil kannst du mit einem L-aktiven Decoder wie z.B. dem '138 > machen den du mit 2 GPIOs ansteuerst. Danke. Jetzt hab ich es verstanden. Habe es eben mal in LTSpice umgesetzt. Es funktioniert. Jetzt werde ich es mal "real" nachbauen. Danke!!!
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.