Ich weiß leider nicht mehr weiter darum Frage ich hier nach Hilfe.
Zu meinem Projekt: Ich möchte gerne eine 7-Segment-Uhr an meine Wand hängen. Die die es auf Amazon etc. Zu kaufen gibt waren mir alle zu klein deshalb dachte ich mir: baue ich sie mir doch selbst. In meiner Ausbildung zum Fachinformatiker hatte ich schon Erfahrung mit C#-Programmierung deshalb hatte ich mich für einen Arduino entschieden. Das Programmieren der Uhr selbst war kein Problem.
Um die LED-Stripes anzusteuern möchte ich 4 Shiftregister vom Typ CD4090BE (da dieser auch mit 12V läuft) und 28 Mosfets (für jedes Segment) verwenden. Auch die Mosfets funktionieren super.
Das ganze System betreibe ich mit 12V. 12V gehen an den VIN-Port vom Arduino-Uno. GND auf -. VDD vom Shiftregister geht auch auf 12V. VSS geht auch auf -.
Jetzt zum Problem: Ich hatte mit Hilfe des Datenblatts und des Internets versucht alles aufzubauen und anzuschließen. Leider Erfolglos. Nach Tagen und Wochen probieren und testen konnte ich herausfinden das:
Clockpin: NIRGENDS ANGESCHLOSSEN
Datapin: An arduino angeschlossen. Per Software jede Sekunde einen Flankenwechsel
Storepin: Dauerhaft auf 12V
Ergebis: Der LED-Stripe am Shiftregister blinkt wie er soll. Allerdings auf allen Ausgängen gleich da ich Clock ja nicht verwende..
Wenn ich Datapin dauerhaft auf HIGH schalte läuchtet der Stripe auch dauerhaft. Also alles noch in Ordnung.
Das Merkwürdige:
Wenn ich den Datapin direkt auf 12V stecke
Storepin auf den eben verwendeten Pin von arduino stecke (Dauer HIGH)
-Datapin direkt auf GND
Dann läuhtet der LED einfach weiter bis ich Storepin wieder vom Arduino trenne. Das gleiche ist auch der Fall wenn ich den Storepin auf GND schalte (um Daten ins shiftregister zu speichern wies gedacht ist)
Es scheint also so als würde der Arduino nicht genug Strom abgeben und das Shiftregister den Port als LOW erkennt.
Allerdings: wenn ich den Datenpin da drauf schalte funktioniert es ja einwandfrei.
Kann mir irgendjemand sagen wo ich evtl einen fehler habe? Am Code kann es nicht liegen. Im Code steht nicht mehr als "Pin 1 HIGH" oder zum test auch "PIN 1 Blink".
Wenn mir jemand sagt mit welcher Software diese Arduinoschaltpläne erstellt werden kann ich da auch gerne einen erstellen.
Falls noch etwas unklar ist gebt bitte bescheid.
Ich hoffe jemand kann mir helfen ich weiß leider nicht mehr weiter.
Einen CD4090BE kenne ich nicht, daher bitte das Datenblatt verlinken. Aber wenn es einen Clock-Pin gibt, den du nicht beschaltest kann das Ganze gar nicht funktionieren. All deine Beschreibungen wie was wann leuchtet sind daher völlig unbedeutend, erstmal muss die Hardware stehen.
[edit] Schaltpläne bzw. grafische Übersichtspläne werden häufig in Fritzing erstellt: Welcome to Fritzing
Bist Du sicher, dass Du einen CD4090 meinst? Den kenne ich auch nicht. Der CD4094 ist ein Schieberegister.
Was aber prinzipiell nicht geht, dass Du einen mit 12V betriebenen Logik-Baustein direkt mit dem Arduino ansteuerst. Der Arduino gibt bei 'HIGH' 5V aus, das erkennt ein mit 12V betriebener CD40xx nicht sicher als HIGH. Da brauchst Du einen Level-Shifter.
Darf ich mal kurz auf einen alten Thread verweisen. https://forum.arduino.cc/index.php?topic=131882.0
Dort habe ich mit den 74H595 gearbeitet da diese noch einen Eingang !OE (nicht Output Enable)haben darüber kann man dann mit Hilfe von einem Mosfet zum dimmen bringen dahinter sind noch ULN2803 damit läuft es super seit Mittlerweile 5 Jahre.
Gruß
DerDani
Edit: Mit dem Tablet kann man auf einmal keine Links als "Klick-Links" einbinden. Sorry
Das es ohne Clock nicht vernünftig funktioniert ist mir klar. Das war nur der einzige Weg das Shiftregister überhaupt dazu bekommen irgendetwas Controllergesteuertes machen zu lassen. Wenn ich alles nach Datenblatt korrekt anschließe sind 7 von 8 Ausgängen am Register auf HIGH. Dadurch das ich die Clock nicht verwende geben alle Ausgänge das gleiche aus was zum Testen in Ordnung ist.
@MarcoBahner:
So etwas hatte ich befürchtet. Wieso funktionert dann das steuern des dataPins über den Arduino? ist das einfach nur Zufall/Glück?
Hast du ein Beispiel für Level Shifters mit dem das funktioniert?
@volvodani:
Danke für den Link da gibt es ja einige Ähnlichkeiten. Mit dem ULN2803 bräuchte ich für jeden LED Stripe 3 (RGB) Mosfets richtig? Also 3 * 7 (7 Segmente) * 4 (Ziffern) = 84 Mosfets. Damit ich mir das sparen kann habe ich mir P Mosfets besorgt. Diese wollte ich an die Ausgänge meines CD4094BE ShiftRegisters schalten.
Ist das mit einem ULN2803A auch möglich?
Ich hoffe ich erkäre es vernünftig... Vielen Dank nochmal für eure Hilfe!
Alex0702:
Wieso funktionert dann das steuern des dataPins über den Arduino? ist das einfach nur Zufall/Glück?
Ja, so wird es wohl sein. Bei 12V liegt der Übergangsbereich LOW->HIGH irgendwo zwischen ca. 3,5 und 9V. Bei 5V kann also alles passieren.
Alex0702:
Hast du ein Beispiel für Level Shifters mit dem das funktioniert?
Der HCF40109 wäre so ein Baustein.
Man könnte aber auch des Schieberegister noch mit 5V betreiben, und erst bei der Ansteuerung der LED's auf 12V gehen. Z.B. mit dem erwähnten ULN2803 oder mit einem N-Fet, der bei 5V sicher schaltet.
Wie bereits gesagt wieso nimmst Du nicht WS2812? Da brauchst Du gar keine Schieberegister oder Treiber oder Transistoren und kannst jedes LED einzeln ansteuern.
Grüße Uwe
@MicroBahner:
Vielen Dank für die Info.
Ich werde es heute Abend noch mit einem 5V ShiftRegister und einem Mosfet versuchen. Wenn das zu keinem Erfolg führt werde ich mir ein paar ULN2803 zukommen lassen und diese testen.
@uwefed:
Die LED-Strips hatte ich noch Zuhause rumliegen und wollte diese verwenden. Außerdem habe ich schon die ganzen Teile bestellt. Aber vorallem: Ich möchte mich nicht geschlagen geben
ich habe mir jetzt einige ULMs bestellt. Mit diesen würde es wunderbar funktionieren. Allerdings bräuchte ich damit sehr viele N-Mosfets da ich RGB-LEDs habe und ich deshalb für jede Farbe an jedem Stripe einen Mosfet bräuchte also: 3 (RGB) * 7 (7 Segmente) * 4 (Ziffern) = 84 Mosfets. Dazu noch die zusätzlichen Shiftregister und ULMs um so viele Mosfets zu betreiben.
Außerdem hatte ich versucht einen P-Mosfet zu verwenden allerdings lässt sich dieser auch nicht mit 5V schalten. Der will leider auch 12V.
Hat noch jemand eine Idee wie ich um diese 84 Mosfets herum komme? Ich glaube ich müsste einen Transistor verwenden um mein 12V Shiftregister (CD4094) zu verwenden, richtig? Kennt jemand ein Beispiel für einen der diesen Zweck erfüllt?
Verträgt dein Schieberegister den den Strom von den Segmenten? Ich habe da so meine Zweifel. Befrage da lieber jemanden, der sich mit Datenblättern auskennt
Alex0702:
Ich glaube ich müsste einen Transistor verwenden um mein 12V Shiftregister (CD4094) zu verwenden, richtig?
Du kannst das Levelshifting auch mit Transistoren machen, wenn Du den HCF40109 nicht verwenden willst. Sehr hohe Frequenzen wirst Du ja nicht haben. Allerdings dreht sich dann die Logik um, weil der Transistor invertiert. Das musst Du im Sketch berücksichtigen.
Nachdem der Vorschlag von dir kam, dachte ich Du wüsstest wie das geht
Die Widerstandswerte sind nicht kritisch, beeinflussen aber die Flankensteilheit am CD4094 Eingang.