Hallo alle zusammen, Ich habe vor einiger Zeit ein 4-stellige 7-Segmentanzeige(Counter) mit dem Arduino UNO gebastelt. Leider sind mir die Anschlüsse irgendwann mal ausgegangen so das ich den UNO mit Schieberegistern erweitert habe. Der Nachteil ist nun das die Anzeige flimmert. Um eine steuerung mit PWM zu umgehen möchte ich mit einen BCD Decoder die Schaltung realisieren. Zu dem benötigt die Anzeige ca. 6.9V bei 20mA. Also habe ich mir gedacht ich benutze als Decoder den 4543 und für die gemeinsamme Anode der Anzeige einen ULN2803 zu verbauen. Aber bereits nach zwei Anschlüssen fängt der 4543 an zu "kochen". Also habe ich mir gedacht ich setze einen UDN2981 zwichen die Ausgänge des Decoders und der 7-Sementanzeige. Da der UDN aber negiert muss ich den PI an Pin6 aus Masse setzen was wiederum den 4543 nicht nur zum "kochen" sondern gleich zum "glühen" bringt. Kann mir jemand sagen was ich falsch mache?
Gundelputz schrieb: > Kann mir jemand sagen was ich falsch mache? Ja, bei der Ansteuerung der Anzeige über Schieberegister flimmert nichts. Dazu muß man aber auch pro Digit ein Schieberegister spendieren. Bei größeren Anzeigen kann man einen ULN2803 nachschlalten - wiederum ein ULN/Digit. Beispiel: Beitrag "7-Segm.-LED-Anzeige, 6-stellig, statische Ansteuerung mit (74HC)4094"
Schalte jeden Schieberegisterausgang über einen 1K-Widerstand an einen Transistor (2.B. 2N3904). An den Collector kommen 6.9V, an den Emitter die Anoden der Anzeigen. Die Kathoden schaltest du ähnlich, nur Kathode an den Collector und Emitter nach Minus.
Ja du hast natürlich vollkommen Recht(bereits getestet und für Gut befunden). Ich habe nicht erwähnt das ich Zeitgleich eine 20x8 Dot Matrix betreiben möchte. Jedes für sich macht keine Schwierigkeiten aber beide zusammen sehr wohl. Habe schon überlegt sie mit zwei Atmel168 zu betreiben. Möchte es aber erst mal so versuchen.
habe jetz die vorgeschlagene Schaltung mit dem seperaten Schieberegister(4094) versucht und habe auch hier das gleiche Problem. Es wird ziemlich schnell ziemlich heiss. Auch ohne das ein Signal anliegt.
habe gerade den 4094 gegen einen älteren 4094 getauscht. dieser bleibt schön kalt. Also von den neu bestellten wieder einen anderen rein und heiss. alt: MC14094BCP neu: 74HC4094B1 dollet Ding beschalte gleich mal mit 5V
Der Vollständigkeit halber hier noch meine Lösung. int freigabe1 = 11;//CD4094 PIN1 (storePin) int tackt1 = 12;//CD4094 PIN3 (clockPin) int bit1 = 13;//CD4094 PIN2(datapin) int uebergabe = 10;// übergibt die Zeichen an Anzeige int spalten_wert = 0; int display_zeichen = 5; byte daten_spalte; int count1 = 10000; void setup() { pinMode(freigabe1, OUTPUT); pinMode(tackt1, OUTPUT); pinMode(bit1, OUTPUT); pinMode(uebergabe, OUTPUT); } void loop() { zeil_schreib(); for (int i = 1; i < 8; i++) { digitalWrite(freigabe1, LOW); daten_spalte = spalten_wert; shiftOut(bit1, tackt1, LSBFIRST, daten_spalte); digitalWrite(freigabe1, HIGH); } digitalWrite(uebergabe, HIGH); } void zeil_schreib() { //hier soll die Auswahl für die zeichen hin geschrieben: a,b,c,d,e,f,g,dp switch(display_zeichen) { case 0: spalten_wert = B11111101; break; case 1: spalten_wert = B01100001; break; case 2: spalten_wert = B11011011; break; case 3: spalten_wert = B11110011; break; case 4: spalten_wert= B01100111; break; case 5: spalten_wert = B10110111; break; case 6: spalten_wert = B10111111; break; case 7: spalten_wert = B11100001; break; case 8: spalten_wert = B11111111; break; case 9: spalten_wert = B11110111; break; } }
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.