Ich habe eine PH-Dosieranlage für meinen Pool, die den aktuellen PH Wert auf 2 7-Segment anzeigen ausgibt. Ich möchte diese Anlage nun in mein Smart Home einbinden und den PH Wert abgreifen.
Was ich mir überlegt hatte:
ESP32, da WLAN
MCP23017 an ESP, da der ESP zu wenig GPIOs für die 2x 7-Segmentanzeigen hat.
An jedem GPIO habe ich einen 1k Ohm Pullup Widerstand und einen Transistor BC548B. An der Base des Transistors habe ich dann wieder 1K Widerstand und wollte auf die 7 Segmentanzeige fahren (das ganze dann 14 mal)
Habe also alles zusammengebastelt und die Software geschrieben.
Das Problem der Eingang schaltet nicht auf LOW durch. Nach meiner Analyse muss das daran liegen, dass an der Anzeige nur ca 0.3V anliegen und das zu gering ist um den Transistor durchzuschalten. Glaube hierfür brauche ich min 0.7V
Habe den Transistor mal weg gelassen und bin direkt auf den MCP23017. Auch das ging nicht. Hier waren min. 1.8V erforderlich um den kanal als HIGH durchzuschalten.
Habt ihr ideen? Wie kann ich das Spannungsproblem lösen? Anderer Transistor? Spannung iwie hoch treiben?
Ist Masse der PH-Dosieranlage mit Masse des ESP+MCP23017 verbunden ?
Sicher, dass die Anzeige statisch angesteuert wird und nicht im Multiplexbetrieb ?
Sind das common anode Displays, deren Segmente einzeln nach Masse geschaltet werden ?
Dann wäre LOW ja ein leuchtendes Segment.
Warum verbindest du die Eingänge nicht direkt mit der Elektronik der Anzeige ? Vor allem sollte das jenseits der strombegrenzenden Vorwiderstände erfolgen.
um den Wert der Anzeigen zu rekonstruieren brauchst du nicht alle Segmente abzugreifen!
Auf deiner Zeichnung ist nichts wirklich zu erkennen. Es fehlt alles - welche Spannungen kommen woher, was gehört zum ESP, was zur Dosieranlage, welche Pins werden genutzt, wie ist das alles genau in der Dosieranlage aufgebaut etc...wo wird abgegriffen etc...welche Massen sind wo verbunden, ist die Anzeige gemuxt, welchen Treiber hat sie...
Ist Masse der PH-Dosieranlage mit Masse des ESP+MCP23017 verbunden ?
Sicher, dass die Anzeige statisch angesteuert wird und nicht im
Multiplexbetrieb ?
Sind das common anode Displays, deren Segmente einzeln nach Masse
geschaltet werden ?
Dann wäre LOW ja ein leuchtendes Segment.
Warum verbindest du die Eingänge nicht direkt mit der Elektronik der
Anzeige ? Vor allem sollte das jenseits der strombegrenzenden
Vorwiderstände erfolgen.
Ja die Massen sind verbunden.
Ja die sind Statisch angesteuert. Es sind LSHD-A103 Displays (also common Anode)
Ja genau LOW wäre leuchtend. (der ESP übernimmt die Logik und ermittelt aus den LOW / HIGH werten dann die angezeigte Ziffer)
Das Direktverbinden habe ich ja versucht auch hier zu wenig Spannung (siehe oben)
Ja die sind Statisch angesteuert. Es sind LSHD-A103 Displays (also
common Anode)
Ja genau LOW wäre leuchtend. (der ESP übernimmt die Logik und ermittelt
aus den LOW / HIGH werten dann die angezeigte Ziffer)
Das Direktverbinden habe ich ja versucht auch hier zu wenig Spannung
(siehe oben)
Zu wenig Spannung: Lege parallel zu jedem Segment einen 10k-Widerstand, dann sollte die Spannung bei Segment aus hoch genug sein, von der Logik erkannt zu werden.
Ja die sind Statisch angesteuert. Es sind LSHD-A103 Displays (also
common Anode)
Ja genau LOW wäre leuchtend. (der ESP übernimmt die Logik und ermittelt
aus den LOW / HIGH werten dann die angezeigte Ziffer)
Das Direktverbinden habe ich ja versucht auch hier zu wenig Spannung
(siehe oben)
Zu wenig Spannung: Lege parallel zu jedem Segment einen 10k-Widerstand,
dann sollte die Spannung bei Segment aus hoch genug sein, von der Logik
erkannt zu werden.
Das verstehe ich nicht ganz. parallel zu der Verbindung zwischen Basis und Display?!
Ja ihr habt recht gemeinsame Kathode daher hatte ich npn gewählt
Das Direktverbinden habe ich ja versucht auch hier zu wenig Spannung
Du hast wohl ein anderes Problem.
1
+5V
2
_|_
3
\_/ LED
4
|
5
Ansteuerung --Vorwiderstand--+-- Anzapfen
Wenn du direkt an der LED anzapft, wird die Spannung nie unter die LED Flussspannung gezogen und geht nie höher als die LED Flussspannung, bleibt also nahezu gleich egal ob die LED leuchtet oder nicht.
1
+3.3V +5V
2
| _|_
3
pullup \_/ LED
4
| |
5
Ansteuerung --+--Vorwiderstand--+
6
|
7
Anzapfen
Greifst du vor dem Vorwiderstand ab, bekommst du saubere Digitalsignale. Eventuell braucht der Eingang noch einen pullup.
Wenn die Anzeige mit der gemeinsamen Kathode an GND hängt kannst du den MCP direkt daran anschließen. Du brauchst nur Parallel zu jeder LED einen Pull-Down Widerstand.
Allerdings können die genannten 0,3V dann nicht stimmen. Vielleicht nochmal messen und herausfinden, womit wir es wirklich zu tun haben.
Wenn die Anzeige mit der gemeinsamen Kathode an GND hängt kannst du den
MCP direkt daran anschließen. Du brauchst nur Parallel zu jeder LED
einen Pull-Down Widerstand.
Allerdings können die genannten 0,3V dann nicht stimmen. Vielleicht
nochmal messen und herausfinden, womit wir es wirklich zu tun haben.
Das hatte ich ja probiert ohne Erfolg.
Mal den esp und den mcp weg gelassen: Messe ich direkt an d er Anzeige bekomme ich zwischen segment und gnd die 0,34 V
So so, nur 8 Vorwiderstände 220 Ohm aber Transistoren mit 1k Basiswiderstand um die Kathoden nach Masse zu schalten und das soll keine Multiplexansteuerung sondern statische Ansteuerung sein.
Immerhin gesockelt, besser kann man es nicht haben
Wofür 16 Transistoren?
Mehr als 10 brauchst du doch auf keinen Fall, um zwei statische angesteuerte 7-Segment Anzeigen abzulesen, die nur Ziffern anzeigen.
Oder was wird auf den beiden Anzeige außer dem pH-Wertes noch angezeigt?
von hayward erkennt man die Anzeigen an meinen lötversuchen
Vielleicht versuchst du besser erstmal nur ein einziges Signal abzugreifen, bevor du die ganze Platine verbrutzelst ;-)
Man könnte eine Zwischenplatine mit einem kleinen Prozessor konstruieren, der das Multiplex auswertet und auf eine passende Schnittstelle packt (I2C, SPI, etc.). Zuvor wie schon geschrieben mit einem Logicanalyzer (<10€ falls nicht vorhanden) schauen, wie das Timing genau aussieht.
Oder besser noch, einen separaten PH-Sensor direkt an den ESP.
https://atlas-scientific.com/ph/
Bin mir nämlich nicht sicher, ob das Gerät die Lötversuche auf Dauer überlebt.
Sind die grünen Klemmen der Anschluss für die PH-Sonde? Falls ja dürfte der TLC227 das analoge Signal für den MSP430 aufbereiten. Warum also nicht das analoge Signal parallel anzapfen.
Die beiden LED Anzeigen sind gemäß der Fotos mit 100% Sicherheit gemultiplext. Damit zerfällt der ursprüngliche Lösungsansatz zu Staub.
Zusätzlich zu den Signalen der 7 Segmente müssen auch die beiden COM Anschlüsse der Anzeigen überwacht werden. Und dabei ist zu berücksichtigen, das sämtliche Signale mit einigen zig bis hundert Hertz pulsieren.
Ist machbar, aber anders. Ich würde dafür einen separaten uC verwenden, der das Ergebnis zwischenspeichert und seriell (z.B. via I2C) abrufbar macht.
Also bei nur 2 7-Segment Anzeigen würde ich hier einen höheren Hardwareaufwand/Platzverbrauch in Kauf nehmen und jedes Segment einzeln mit Optokoppler abgreifen. Anschließend würde ich an den Ausgängen der Optokoppler noch einen Kondensator zur Glättung hängen um das gepulse vom Multiplexing weg zu bekommen. Der Vorteil wäre dann du kannst das ganze wie ursprünglich vorgehabt statisch auslesen und brauchst dir um das ganze Multiplexing keinen Kopf machen.
Gruß Sven
Also bei nur 2 7-Segment Anzeigen würde ich hier einen höheren
Hardwareaufwand/Platzverbrauch in Kauf nehmen und jedes Segment einzeln
mit Optokoppler abgreifen. Anschließend würde ich an den Ausgängen der
Optokoppler noch einen Kondensator zur Glättung hängen um das gepulse
vom Multiplexing weg zu bekommen. Der Vorteil wäre dann du kannst das
ganze wie ursprünglich vorgehabt statisch auslesen und brauchst dir um
das ganze Multiplexing keinen Kopf machen.
Gruß Sven
Das klingt für mich und meine Mittel umsetzbar.
Kannst du kurz aufzeigen wie das anzuschließen ist und was ich bräuchte an HW?
Und dabei ist zu berücksichtigen, das sämtliche Signale
mit einigen zig bis hundert Hertz pulsieren.
Ist machbar, aber anders. Ich würde dafür einen separaten uC verwenden,
der das Ergebnis zwischenspeichert und seriell (z.B. via I2C) abrufbar
macht.
Ein µC, der mit dem MCP23017 kommuniziert, muss doch schon vorhanden sein.
Der MCP23017 kann über Interrupts sogar Bescheid sagen, wenn der Multiplexer umschaltet. Wenn die Anzeige im Multiplex läuft (und nur Ziffern anzeigt), sollte man mit fünf IOs für Segmentsignale und einem sechsten für das Select-Signal auskommen. Der MCP23017 wird nicht wissen, wohin mit den ganzen GPIOs - but who cares.
Ohne Oszi oder LA wird man sich allerdings etwas schwer tun.
Beitrag "Re: Applikationsschaltung UAA 1003"
Der Sprachsynthesizer UAA-1003 wurde an den (nicht gemultiplexten) Siebensegmentanzeigen einer Digitaluhr angeschlossen. In der Appnote von ITT auf S.3 (von5) steht die Tabelle der ausgewerteten Segmente.
Am Ausgang des Verstärkers kann man das Analogsignal schon anzapfen,
parallel zum Eingang ist wegen der Hochohmigkeit natürlich tabu.
Nur ist das Analogsignal vermutlich noch nicht temperaturkompensiert,
das muss dann der verarbeitende µC mit reinrechnen.
Danke, dass Beiträge auch ohne Störung beantwortet werden können. Habe es mir mittlerweile selber erarbeitet. Das Signal ist also sehr hochohmig, verlangt nach Temperaturkompensation und einer speziellen Nachverarbeitung.
Sind die grünen Klemmen der Anschluss für die PH-Sonde? Falls ja dürfte
der TLC227 das analoge Signal für den MSP430 aufbereiten. Warum also
nicht das analoge Signal parallel anzapfen.
War spontan auch meine erste Idee. Allerdings muß man von Zeit zu Zeit so eine pH-Sonde kalibrieren. Dafür gibt es Kalibrierlösungen, meist pH 4 und pH 7, manchmal statt 4 auch 10. Diese Zweipunktkalibrierung muß der Mikrocontroller ebenfalls als Setpoint hinterlegen und dann Verschiebung und Steilheit berücksichtigen.
Von daher ist es sicherlich der geringere Aufwand, die 2 Siebensegmentanzeigen mit 4x 4-fach Optokopplern abzufragen (7 segmente u. der Dp) gleich 8 --> 2x 4 p. Stelle.
Hier wäre die Schaltung. Optokoppler müsste man einen empfindlichen Typ raussuchen der nicht zu viel Eingangsstrom braucht. Die Widerstände müsste man dann entsprechend anpassen. Der Widerstand darf aber nicht zu klein werden sonst wird die Anzeige immer dunkler bis ganz aus weil immer mehr Strom über die LED des Optokoppler fließt. Den Kondensator könnte man berechnen aus der Multiplexfrequenz, den 115µA des internen pull vom MCP23017, und dem Logiglevel wann der MCP23017 auf high schaltet. Aber das übersteigt da meine Kenntnisse. Ich probiere da eigentlich immer mehr rum als es auszurechnen. Da in den Datenblättern sowieso immer weite Bereiche der Werte angegeben sind. Ich würde da einfach mal mit 4,7 oder 10µF für die Kondensatoren probieren. Achso ich habe in der Schaltung keine Kollektorwiderstände eingezeichnet da der MCP23017 ja eingebaute Pull up Widerstände bestitzt. Diese müsstest du dann halt in deiner Software aktivieren.
Selbst bei statische Ansteuerung der Segmente wären vier der Optokoppler überflüssig. Wozu sollen die zusätzlichen OC gut sein?
Bei der inzwischen wohl als sicher geltenden Multiplexansteuerung würde die Schaltung sogar überhaupt nicht funktionieren.
Klarheit über die Art der Ansteuerung würde ein Blick auf die Platine unterhalb der Anzeigen oder eine Messung zwischen gleichen Segmenten beider Anzeigen liefern.
die den aktuellen PH Wert
auf 2 7-Segment anzeigen ausgibt
Hallo,
also ich habe schon mal eine vierstellige 7-Segment-Anzeige direkt am MCP angeschlossen gehabt in gemultiplexter Version. Dazu waren keine Transistoren nötig.
Falls es bei hellem Tageslicht noch lesbar sein muß, braucht man wiederum trotzdemm die Transistoren.
Selbst bei statische Ansteuerung der Segmente wären vier der Optokoppler
überflüssig. Wozu sollen die zusätzlichen OC gut sein?
Das stimmt man kann da sicher einige Segmente bei der Auswertung weglassen und die Optokopplerzahl reduzieren. Das kann er ja reuzieren wenn er möchte.
Bei der inzwischen wohl als sicher geltenden Multiplexansteuerung würde
die Schaltung sogar überhaupt nicht funktionieren.
Klarheit über die Art der Ansteuerung würde ein Blick auf die Platine
unterhalb der Anzeigen oder eine Messung zwischen gleichen Segmenten
beider Anzeigen liefern.
Bitte beachte die Optokoppler-LEDs sind einfach nur stumpf parallel zu den LEDs der 7 Segmentanzeigen geschaltet und bilden somit genau das nach was auch auf der Anzeige zu sehen ist. Inklusive dem Pulsen durch das Multiplexing. Aber das sollen die Kondensatoren an den Ausgängen der Optokoppler wegfiltern.
Bitte beachte die Optokoppler-LEDs sind einfach nur stumpf parallel zu
den LEDs der 7 Segmentanzeigen geschaltet und bilden somit genau das
nach was auch auf der Anzeige zu sehen ist.
Dann sind sogar acht der vierzehn Optokoppler eigentlich überflüssig, hat aber natürlich den Vorteil, dass man nicht weiter drüber nachdenken muss.
Im UAA1003 werden zehn Segmente der vierstelligen Anzeige ausgewertet. Die Minterme kann man z.B. mit Karnaugh-Veitch-Diagrammen aussuchen.
https://de.wikipedia.org/wiki/Karnaugh-Veitch-Diagramm
das geht mit Bleistift und Karopapier.
Selbst bei statische Ansteuerung der Segmente wären vier der Optokoppler
überflüssig. Wozu sollen die zusätzlichen OC gut sein?
Das stimmt man kann da sicher einige Segmente bei der Auswertung
weglassen und die Optokopplerzahl reduzieren. Das kann er ja reuzieren
wenn er möchte.
Bei der inzwischen wohl als sicher geltenden Multiplexansteuerung würde
die Schaltung sogar überhaupt nicht funktionieren.
Klarheit über die Art der Ansteuerung würde ein Blick auf die Platine
unterhalb der Anzeigen oder eine Messung zwischen gleichen Segmenten
beider Anzeigen liefern.
Bitte beachte die Optokoppler-LEDs sind einfach nur stumpf parallel zu
den LEDs der 7 Segmentanzeigen geschaltet und bilden somit genau das
nach was auch auf der Anzeige zu sehen ist. Inklusive dem Pulsen durch
das Multiplexing. Aber das sollen die Kondensatoren an den Ausgängen der
Optokoppler wegfiltern.
Glaube das habe ich verstanden als e leihe.
Frage mich nur wie ermittle ich die richtigen Bauteile. Muss alles bestellen und habe keine schubladenteile. :(
Habe jetzt doch mal konkrete Bauteile bei Reichelt rausgesucht mit denen das eigentlich funktionieren sollte. Den Plan habe ich auch nochmal angepasst:
Widerstand:
Flussspannung der LED in der 7 Segmentanzeige:2V
Flussspannung der LED im Optokoppler LTV 827-C: 1V
Bei einem Widerstand von 820 Ohm fließen dann 1,2mA durch die Optokopplerdiode. Müsste reichen. zumindest geht das Diagramm im Datenblatt soweit runter.
Zur not kaufst du auch noch 470 Ohm Widerstände dann hast du die Option den Strom auf 2,1mA zu erhöhen wenn das mit den 820ern nicht klappt. Aber wie gesagt je kleiner dieser Widerstand wird desto dunkler Werden die 7 Segment Anzeigen.
Optokoppler:
Beim Optokoppler nimmst du den LTV 827-C. Die Endung -C sagt aus das die speziell selektiert sind und haben eine garantierte bessere Verstärkung.
Denk dran IC Fassungen mit zu bestellen.
Reduzieren auf NULL weil kompletter Schwachsinn.
Die Ansteuerung der Anzeigen wird Multiplex sein, hast Du auch nicht verstanden.
Die A..F beider Anzeigen werden parallel liegen. Also sieben BC_irgendwas_NPN mit 50k an der Basis dran. Die Invertierung Segment aktiv = Low macht die Software.
An beide Kathoden einen PullUp 4k7 nach +5V dran. Dann hat man dort 5V (Stelle Aus) oder Null_Komma_etwas, wenn die Stelle aktiv ist. Auch da kommt je ein BC_irgendwas_NPN mit 50k an der Basis dran, um den Pegel zum ESP anzupassen. Der µC muß die sieben Segmente auslesen, wenn die Stelle aktiv ist.
Weil der Controller an den Anodenanschlüssen der 7 Segmentanzeigen ganz schnell im Wechsel die Zehner und Einer Stelle ausgibt. Damit man nun aber weiß ob nun gerade die Einerstelle oder die Zehnerstelle anliegt muss man die Kathodenansteuerung am besten beider Anzeigen auswerten. Denn nur weil das Teil 2 7-Segment Anzeigen hat heißt das ja nicht das der Multiplexbetrieb nur über diese beiden Stellen geht. Es könnte ja sogar sein das in einem dritten Schritt vielleicht noch irgendwelche Taster eingelesen werden oder es wurde eine Totzeit einprogrammiert. Wer weiß das schon.
Deswegen hatte ich ja meine komplizierte Schaltung vorgeschlagen. Man braucht dort nur an den LED Anzeigen rumlöten und hat auch noch eine galvanische Trennung des ganzen.
Reduzieren auf NULL weil kompletter Schwachsinn.
Die Ansteuerung der Anzeigen wird Multiplex sein, hast Du auch nicht
verstanden.
Die A..F beider Anzeigen werden parallel liegen. Also sieben
BC_irgendwas_NPN mit 50k an der Basis dran. Die Invertierung Segment
aktiv = Low macht die Software.
An beide Kathoden einen PullUp 4k7 nach +5V dran. Dann hat man dort 5V
(Stelle Aus) oder Null_Komma_etwas, wenn die Stelle aktiv ist. Auch da
kommt je ein BC_irgendwas_NPN mit 50k an der Basis dran, um den Pegel
zum ESP anzupassen. Der µC muß die sieben Segmente auslesen, wenn die
Stelle aktiv ist.
Kannst du die bauteilanordnung zeichnen ( Skizze) ich verstehe daraus nicht ganz wo was anzuordnen wäre. Danke dir
Die Schaltung taugt, aber ich würde die ganze Mimik mit DIL-Sockeln abgreifen und gar nicht auf der Leiterplatte rumlöten, sondern die OK-LED anstatt der LED der 7-Seg-Anzeige ansteuern. Den Wert, der dort angezeigt worden wäre, kann man dann ja am Handy ablesen...
Wenn es nicht potentialgetrennt sein muss, dann könnte ich mir da was mit einem 74er Latch ausdenken. Dazu muss man "einfach" nur die wirklich digitalen Signale abgreifen und immmer dann den 7-Segmentwert latchen, wenn die Kathode auf GND ist.
Keine, die man so remote einem blutigen Laien einfach erklären könnte.
Aber ich würde zum Demultiplexen ein kleines FPGA nehmen. Damit ginge das super einfach. Und die erkannte Zahl könnte per SPI (oder einer seriellen Schnitte wie I2C oder RS232) vom ESP eingelesen werden.
Die für dich einfachste (weil softwarelastigste) wird aber wohl die mit der Kamera und dem OCR sein.
Ich will nicht wissen, auf welchem Potential die PH-Dosieranlage fährt.
Und was die dazu meint, wenn man ihr irgendeinen anderen GND aufzwängt.
Wenn Du von einem Potentialversatz ausgehst, machen Optokoppler Sinn. Erinnere ich mich falsch, bist nicht Du derjenige, der häufig (angeblich) überflüssige Optokoppler anmeckert?
Welche Rückwirkung hat deren Strombedarf, wenn man sie direkt an die Segmente schaltet?
Die Ansteuerung der Anzeigen wird Multiplex sein, hast Du auch nicht
verstanden.
Doch, das kann die Schaltung tadellos, weil ja jeder OK nur dann
angesteuert wird, wenn die Commom-Leitung "seines" Sgements auf GND
liegt.
Das sehe ich nicht so, man kann nicht zwischen Segment aus und Stelle nicht angesteuert unterscheiden.
Multiplex, der µC muß erfahren, welche Stelle gerade aktiv ist. Also sieben OK an die Segmente, die eh parallel liegen und je einen weiteren an die CC-Leitung. Dann kann der µC die beiden Common pollen und bei Umschaltung schnell die Segmente abfragen.
Das sehe ich nicht so, man kann nicht zwischen Segment aus und Stelle
nicht angesteuert unterscheiden.
Wenn auf der Anzeige nichts dargestellt wird (alles aus), ist das auch egal.
Ansonsten wird irgendetwas leuchten und der µC sieht das an den Signalen der Optokoppler der betreffenden Stelle.
Multiplex, der µC muß erfahren, welche Stelle gerade aktiv ist. Also
sieben OK an die Segmente
Bei Abzeige eines pH-Wertes ist davon auszugehen, dass nur Ziffern angezeigt werden. Also reichen immer noch fünf Optokoppler, um die Ziffer zu erkennen. Wozu die sieben?
Mit einem weiteren zur Erkennung der Kathode kann der µC bei zwei Stellen erkennen, welche Ziffer gerade aktiv ist - zusammen also 6 OC
Bei Abzeige eines pH-Wertes ist davon auszugehen, dass nur Ziffern
angezeigt werden. Also reichen immer noch fünf Optokoppler, um die
Ziffer zu erkennen. Wozu die sieben?
Davon würde ich nicht ausgehen. Oft gibt es bei numerischen Anzeigen zusätzliche Pattern, z.B. E1 für eine Fehlermeldung oder -- für einen ungültigen Wert. Wenn schon Optokoppler, dann komplett alle Segmente erfassen.
Das sehe ich nicht so, man kann nicht zwischen Segment aus und Stelle
nicht angesteuert unterscheiden.
Doch, wenn die Stelle nicht angesteuert wird, wird der "vorherige" Wert in den Kondensatoren am Transistor der OK "gespeichert". Das einzig "Unsaubere" an dieser asynchronen analogen Lösung ist also, dass der Übergang zwischen den Zahlen (Segment an/aus) nicht zuverlässig gleichzeitig ist. Beim Übergang von 1 nach 8 kann dann z.B. kurz auch die 7 oder die 3 oder die 9 erkannt werden. Das muss die Software abfangen und den Wert erst dann verwenden wenn er "ausreichend lang" unverändert ist.
Oft gibt es bei numerischen Anzeigen zusätzliche Pattern
Das kann man aber sicher in der Doku nachlesen. Und tatsächlich: es kann auch "rc" ausgegeben werden, allerdings nur dann, wenn sowieso manuell am Display gearbeitet wird. Während des Betriebs werden nur Zahlen agezeigt.
Also reichen immer noch fünf Optokoppler, um die Ziffer zu erkennen.
Wozu die sieben?
Oft gibt es bei numerischen Anzeigen zusätzliche Pattern
wenn man die fünf Segmente a+b+e+f+g verwendet, kann man sogar das "rc" von den Zahlen unterscheiden. Man kann nur nicht das 'r' vom 'c' unterscheiden.
Habe jetzt doch mal konkrete Bauteile bei Reichelt rausgesucht mit denen
das eigentlich funktionieren sollte. Den Plan habe ich auch nochmal
angepasst:
Widerstand:
Flussspannung der LED in der 7 Segmentanzeige:2V
Flussspannung der LED im Optokoppler LTV 827-C: 1V
Bei einem Widerstand von 820 Ohm fließen dann 1,2mA durch die
Optokopplerdiode. Müsste reichen. zumindest geht das Diagramm im
Datenblatt soweit runter.
Zur not kaufst du auch noch 470 Ohm Widerstände dann hast du die Option
den Strom auf 2,1mA zu erhöhen wenn das mit den 820ern nicht klappt.
Aber wie gesagt je kleiner dieser Widerstand wird desto dunkler Werden
die 7 Segment Anzeigen.
Optokoppler:
Beim Optokoppler nimmst du den LTV 827-C. Die Endung -C sagt aus das die
speziell selektiert sind und haben eine garantierte bessere Verstärkung.
Denk dran IC Fassungen mit zu bestellen.
Danke für deinen Aufwand.
Habe das mal getestet. denke der Vorwiderstand mit 820 OHM war zu groß hier hat sich die Spannung am MPC von 3,3V nur auf 3,0V reduziert, was den Kanal weiterhin auf HIGH laufen ließ.
Habe dann den Widerstand auf 500 OHM reduziert am Optokoppler. Damit ließ sich die Spannung auf ca 0,7V am MCP absenken und der Kanal wird LOW.
Problem: Es werden alle Kanäle low, obwohl ich nur einen angeschlossen habe ?!
Was da los?
es nervt, denkst du wir können in deinen Kopf schauen?
denkst du wir wissen worauf du dich beziehst?
denkst du deine Prosa ersetzt ein Schaltbild komplett?
Ein 7.Segment auslesen ist pillepalle, auf low einen HC inverter nachschalten, auf high einfach auswerten.
es nervt, denkst du wir können in deinen Kopf schauen?
denkst du wir wissen worauf du dich beziehst?
denkst du deine Prosa ersetzt ein Schaltbild komplett?
Ein 7.Segment auslesen ist pillepalle, auf low einen HC inverter
nachschalten, auf high einfach auswerten.
Habe den Schaltplan von Sven P. umgesetzt ( wie auch von mir beschrieben) was wünschst du dir noch für einen Schaltplan?
Problem: Es werden alle Kanäle low, obwohl ich nur einen angeschlossen
habe ?!
Was da los?
Zeig einen Schaltplan, denn die weltweit ohne Übersetzung verständliche "Sprache" der Elektronik sind Schaltpläne. Und dann zeig deinen Aufbau, damit man sehen kann, ob der halbwegs zum Schaltplan passt.
Habe das mal getestet. denke der Vorwiderstand mit 820 OHM war zu groß
hier hat sich die Spannung am MPC von 3,3V nur auf 3,0V reduziert, was
den Kanal weiterhin auf HIGH laufen ließ.
Im Schaltplan sieht man dann sofort, dass der OK samt Vorwiderstand parallel zur (roten) LED der Anzeige liegt. Und dessen LED deshalb natürlich zu wenig Strom bekommt.
denke der Vorwiderstand mit 820 OHM war zu groß
Ein Tipp: steck mal die Segmentanzeigen aus. Und verwende die OK-LED statt der Anzeigen-LED.
Deinen Schaltplan mit den Innenbeschaltung deines Geräts, soweit sie deine "Zusatzschaltung" betrifft. Das brauchen übrigens nicht "wir", sondern das brauchst du, wenn du das Gebastel in einem halben Jahr noch verstehen willst.
Erinnere ich mich falsch, bist nicht Du derjenige, der häufig
(angeblich) überflüssige Optokoppler anmeckert?
Hier die Lösung ohne OK... ;-)
So wie ich das sehe, ist die Multiplex-Umschaltung am Pin 11 des µC. Die Invertierung und Ansteuerung für die jeweilige Anzeige wird mit 3 Transistoren gemacht. Also vom Pin 11 einen Pinchange-Interrupt auf dem auswertenden Rechner und in der zugehörigen ISR die Segmente einlesen.
Der Dezimalpunkt geht an den Pin 12 und die Segmente gehen über die 220 Ohm SMD-Arrays an die nachfolgenden Pins 13 bis 20. Dort direkt an den µC-Pins (und nicht an den LEDs) gehören die Signale abgegriffen, denn dort haben sie noch brauchbare logische Pegel.
Zuvor jedoch sollte man mal das Timing mit dem Oszilloskop ausmessen, denn wegen "ghosting" könnte es sein, dass zum Zeitpunkt des Anzeigenwechsels niemals ein Segment eingeschaltet ist.
Damit würde die Schaltung etwa so aussehen, wenn der MSP430 mit 3V3 versorgt ist:
Im Schaltplan sieht man dann sofort, dass der OK samt Vorwiderstand
parallel zur (roten) LED der Anzeige liegt. Und dessen LED deshalb
natürlich zu wenig Strom bekommt.
Von mir gestern wurde ignoriert:
Manfred P. schrieb im Beitrag #7638173:
Welche Rückwirkung hat deren Strombedarf, wenn man sie direkt an die
Segmente schaltet?
denke der Vorwiderstand mit 820 OHM war zu groß
Überschlägig komme ich auf 800µA für den Optokoppler.
Ein Tipp: steck mal die Segmentanzeigen aus. Und verwende die OK-LED
statt der Anzeigen-LED.
Dann aber mit deutlich kleinerem oder ganz ohne Vorwiderstand. Wobei aufgrund der unterschiedlichen Flußspannung der Optokoppler sogar parallel zur Anzeige geht, dann bleibt die aber aus.
Zuvor jedoch sollte man mal das Timing mit dem Oszilloskop ausmessen,
Ob er ein Scope hat?
denn wegen "ghosting" könnte es sein, dass zum Zeitpunkt des
Anzeigenwechsels niemals ein Segment eingeschaltet ist.
Es ist und bleibt Mist, die Anzeige auswerten zu wollen, ohne die beiden CC zu berücksichtigen. Der Bastelkram mit Elkos auf den OK-Ausgängen ist auch sehr windig - das ganze Ding ist festgefahren, geht in die falsche Richtung.
Überschlägig komme ich auf 800µA für den Optokoppler.
Welchen Überschlag hast du da gemacht?
Der Optokoppler liegt bei eingesteckter 7-Segment-Anzeige parallel zur Segment-LED:
1
Stecksockel
2
abcdefg
3
MSP Ausgang ----220R------O--------820R-----.
4
| | |/
5
V=> V=>| OK
6
- LED - |>
7
| |
8
.------O-----------------'
9
|/ CC
10
----|
11
|>.
12
|
13
---
Und es ist Zufall, dass die OK-IR-LED überhaupt leuchtet.
Wie ich schonmal schrieb: einfach die OK-LED statt der Anzeigen-LED verwenden. Dann reicht der Strom dank der 220 Ohm Widerstände locker:
1
Stecksockel
2
abcdefg
3
MSP Pin --------220R------O-----------------.
4
13..20 | |/
5
Anzeige V=>| OK
6
ausgesteckt - |>
7
|
8
.------O-----------------'
9
|/ CC
10
----|
11
|>.
12
|
13
---
Entscheide Dich, ob nun eine Potentialtrennung nötig ist oder nicht!
Ich kenne das Gesamtsystem nicht, deshalb kann ich es nicht entscheiden. Aber wenn ich die Aufgabe zu lösen hätte, dann wäre die inzwischen ohne Optokoppler gelöst (den entsprechenden Schaltplan habe ich schon gezeigt). Aber im Gegensatz zum TO bin ich eben auch ein Profi und kann die Zusammenhänge einstufen und die Wechselwirkungen abschätzen. Und deshalb hätte ich zuallererst den Schaltplan des Geräts abgemalt (das dauert keine halbe Stunde und ist eine nette Übung) und das Timing ausgemessen (das ist sowieso nötig, wenn ich ein Signal "desereialisieren" oder "demultiplexen" will).
ohne die beiden CC zu berücksichtigen
Es gibt nur den einen Multiplex-Pin 11 am uC. Das "andere" CC ist die Invertierung davon.
Ob er ein Scope hat?
Ohne so ein Gerät braucht man gar nicht mit der Elektronikentwicklung anfangen. Und billiger als heute war so ein Ding noch nie zu bekommen.
Also reichen immer noch fünf Optokoppler, um die Ziffer zu erkennen.
Genau, Verrenkungen in der Software machen
Da muss man sich nicht mehr verrenken als bei 7 Segmenten: egal ob aus 5 oder 7 Eingängen, wird aus dem Eingansvektor erst mal eine Binärzahl. Und aus der wird dann wieder die angezeigte Dezimalzahl.
Weil man das bei 5 Segmenten über eine 32 Byte große Tabelle machen kann, geht das ganz kompakt, wenn man die Eingänge in der richtigen Reihenfolge (gfeba) an einen Port angeschlossen hat:
1
uint8_tanzeigewert;
2
uint8_tseg2int={// r,c
3
8,0,6,0,9,4,5,0,2,0,0,99,3,0,0,0,
4
0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0};
5
6
anzeigewert=seg2int[port_einlesen()&0x1f];// Eingangsvektor als Index nehmen
Bei r und c wird der Wert 99 zurückgegeben.
um Bauteile für 1€ zu sparen.
Man gewinnt nichts, wenn man 7 Segmente nimmt und den 1 € zusätzlich ausgibt.
Problem: Es werden alle Kanäle low, obwohl ich nur einen angeschlossen
habe ?!
Was da los?
Eine Idee was sein könnte:
Auch wenn du erstmal nur einen Kanal angeschlossen hast musst du trotzdem alle "weak pull-up" im MCP23017 aktivieren. Dann hast du an den nicht angeschlossenen Pins einen definierten high Pegel. Wenn du das nicht machst flattern die Eingänge offen rum. Dann kann alles passieren z.B:
Der Eingang schwingt wild herum.
Irgendwelche Kriechstöme von benachbarten Pins auf der Leiterplatte werden stattdessen eingelesen.
Interne Schaltvorgänge im MCP23017 lassen die Eingänge umherschalten.
Selbst ein statisch aufgeladenes Stück Plastik was du in die Nähe hälst kann dann den Eingang umschalten.
Wenn du deinen Finger an den Pin dranhälst wirkst du als Antenne und der Eingang schwingt dann oft mit der 50Hz Netzfrequenz mit.
moin,
recht lustig das hier mit zulesen.
der MCP23017 wird dochh per I2C angesteuert.
mit dem esp32 die daten am SDA/SCL mitlesen und schon kannst du tun und lassen was du willst ohne dich um die duslige anzeige zu kümmern.
google mal nach I2CScanner.
Überschlägig komme ich auf 800µA für den Optokoppler.
Welchen Überschlag hast du da gemacht?
Der Optokoppler liegt bei eingesteckter 7-Segment-Anzeige parallel zur
Segment-LED:
Ich nehme rot mit 1,7 Volt und den Optokoppler mit 1 Volt an.
Das scheint so halbwegs zu passen, weil er schrieb, dass die mit 500 Ohm durchsteuern würden. Es wird nie stabil werden, keinerlei Reserve drin.
Entscheide Dich, ob nun eine Potentialtrennung nötig ist oder nicht!
Ich kenne das Gesamtsystem nicht, deshalb kann ich es nicht entscheiden.
Aber wenn ich die Aufgabe zu lösen hätte, dann wäre die inzwischen ohne
Optokoppler gelöst
Ist das Dir nicht peinlich, erst Optokoppler zu verteidigen und nun auf einmal doch ohne?
Na und? Oben wurde der LTV827 vorgeschlagen, der laut Datenblatt
typ. 1,2 / max. 1,4 Volt hat.
Bei sichtbaren LEDs (weiß) steht meist typ. 3 Volt, tatsächlich glimmen die schon ab 2,5 Volt - das wird auch beim Opto so sein, mit sehr gerimgem Strom rührt der sich unterhalb des typ-Wertes.
Wie ich schon sagte: Es bleibt Bastelei ohne Reserve, instabil.
Ist das Dir nicht peinlich, erst Optokoppler zu verteidigen und nun auf
einmal doch ohne?
Nein. Man sollte beide Möglichkeiten kennen. Und wissen, wann welche davon zur Lösung einer Aufgabe besser geeignet ist. Und ich habe auch geschrieben, wie ich das hier nach wenigen Stunden gelöst hätte.
Von einer falschen Annahme alleine läuft der Optokoppler nicht vernünftig - mehr steht im Datenblatt.
Bei sichtbaren LEDs (weiß) steht meist typ. 3 Volt, tatsächlich glimmen
die schon ab 2,5 Volt - das wird auch beim Opto so sein, ...
Es gibt eine Kennlinie, die angibt, welche Spannung bei welchem Strom und welcher Temperatur über der Diode abfällt.
Ein heißes Stück Kohle glimmt, aber bestimmt keine LED im Optokoppler.
Wenn der Ausgang irgendein vernünftiges Signal liefern soll, muss ausreichend Strom fließen, alleine schon um irgendwelche Kapazitäten in absehbarer Zeit umzuladen.
Ich hätte da 2 Stück Oktal-D-Latches an die LEDs gehängt, die gibt es bestimmt auch für 3,3V. Dann ist der Multiplex raus und man kann in aller Ruhe decoden.
Ich hätte da 2 Stück Oktal-D-Latches an die LEDs gehängt, die gibt es
bestimmt auch für 3,3V. Dann ist der Multiplex raus und man kann in
aller Ruhe decoden.
Du unterschätzt die Rechenpower so eines µC. Für das "Decoden" braucht er nur wenige Taktzyklen.
Um die Anzeige zu dekodieren, muss der µC nur auf das Umschalten der Anode reagieren und die 5 Segmente auslesen, sobald stabil. Damit geht er in eine Tabelle und liest dort direkt die binäre Ziffer ab. Was soll er da groß "in aller Ruhe decoden"?
Das würde mit den Latches wegfallen weil die immer stabil den Zustand
vor letzer Änderung abbilden.
Würde es nicht. Auch bei den Latches musst du wissen, wann das Signal stabil ist, so dass die Segmentdaten vom Latch übernommen werden können.
Es ist egal, ob der µC dann die GPIO-Pins einliest oder das Latch seine Flanke für die Datenübernahme bekommt.
Ich hätte da 2 Stück Oktal-D-Latches an die LEDs gehängt, die gibt es
bestimmt auch für 3,3V. Dann ist der Multiplex raus und man kann in
aller Ruhe decoden.
Du hast das 'Problem' nicht verstanden, nämlich die Spannungen vom Display auf für den µC passende Pegel umzusetzen, das ist erstmal Analogtechnik.
Deine D-Latches sind sinnfrei, solange man deren Triggerpunkt nicht kennt. Überflüssig sind sie sowieso, das bisschen Multiplex kann der µC fast nebenbei pollen.