Hallo,
Du machst da etwas falsch oder hast etwas falsch verdrahtet.
MfG Peter(TOO)
Guten Abend zusammen,
ich habe ein kleines Problem mit der Ansteuerung eines CD4543 (Digital zu 7-Segment wandler).
Für einen Timer habe ich 3 7-Sement anzeigen mittels Arduino angesteuert.
Die 4 Signale zum angeben der Záhl werden auf jeden CD4543 geführt,
und mittels Latch nacheinander ausgegeben.
Wenn beim Ablauf des Timers Stellen weg fallen (100 -> 99; 10 -> 9), möchte ich nicht benötigte
Anzeigeelemente ausschalten, da 009 blöd aussehen würde.
Der Eifachheit halber wollte ich statt der nutzung des blanking Pins einfach eine ungültige Zahl ausgeben,
da lt. Datenblatt die Anzige dann ausgeschalten wird.
Mein Problem ist jetzt, egal ob ich die Anzeige mittels blanking oder mit einer ungültigen Eigangskombination ausschalte,
werden keine weiteren Eingaben mehr angenommen. Sprich habe ich einmal die Azeige aus, ist es mir nicht mehr möglich,
eine andere Zahl anzeigen zu lassen. (Ich muss alles von der Spannung trennen und wieder verbinden, damit es wieder funltioniert).
Ist das so gewollt, mache ich etwas falsch und wie kann ich das Problem beheben?
Mit freundlichen Grüßen
- - - Aktualisiert - - -
Guten Abend zusammen,
ich habe ein kleines Problem mit der Ansteuerung eines CD4543 (Digital zu 7-Segment wandler).
Für einen Timer habe ich 3 7-Sement anzeigen mittels Arduino angesteuert.
Die 4 Signale zum angeben der Záhl werden auf jeden CD4543 geführt,
und mittels Latch nacheinander ausgegeben.
Wenn beim Ablauf des Timers Stellen weg fallen (100 -> 99; 10 -> 9), möchte ich nicht benötigte
Anzeigeelemente ausschalten, da 009 blöd aussehen würde.
Der Eifachheit halber wollte ich statt der nutzung des blanking Pins einfach eine ungültige Zahl ausgeben,
da lt. Datenblatt die Anzige dann ausgeschalten wird.
Mein Problem ist jetzt, egal ob ich die Anzeige mittels blanking oder mit einer ungültigen Eigangskombination ausschalte,
werden keine weiteren Eingaben mehr angenommen. Sprich habe ich einmal die Azeige aus, ist es mir nicht mehr möglich,
eine andere Zahl anzeigen zu lassen. (Ich muss alles von der Spannung trennen und wieder verbinden, damit es wieder funltioniert).
Ist das so gewollt, mache ich etwas falsch und wie kann ich das Problem beheben?
Mit freundlichen Grüßen
- - - Aktualisiert - - -
Hallo Gast, laut Datenblatt sehe ich da keine Besonderheit.
Falsche oder andere Werte als 0..9 werden nicht dargestellt und da gibt es meiner Meinung nach auch keine spezielle Funktion.
Ich vermute das Problem in deiner Software.
- - - Aktualisiert - - -
Wie soll es ein Problem der Software sein,
wenn ich nur 4 Bits ausgebe, welche ich umwandeln lasse,
und dann über eine Treiberstufe das Segment ansteuere.
Es funktioniert alles reibungslos, bis ich einmal eine Kombination die nicht 0-9 ergibt anlege.
Ab dann geht nichts mehr...
Mit freundlichen Grüßen
Hallo,
Du machst da etwas falsch oder hast etwas falsch verdrahtet.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Dann würde ja alles andere nicht gehen, oder?
https://www.dropbox.com/s/7ede4bfarr...mer.T3001?dl=0
Das ist die Target-Datei mit Schaltplan und Laout.
Ich denke nicht, dass da etwas falsch ist, lasse mich aber gerne eines besseren belehren.
Mit freundlichen Grüßen
DochDas ist die Target-Datei mit Schaltplan und Laout.
Ich denke nicht, dass da etwas falsch ist, lasse mich aber gerne eines besseren belehren.
Ich kann das Target-Format nicht lesen und habe auch keine Lust Target zu installieren!
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Dann hilft mir dein "Doch" auch nicht viel weiter....
https://www.dropbox.com/s/ueiutwd4jz...48.58.png?dl=0
https://www.dropbox.com/s/k30sn0bsnb...49.31.png?dl=0
Ich habe mal einen Screenshot vom Schaltplan und Layout gemacht.
Vielleicht kannst du mir ja so helfen.
Mit freundlichen Grüßen
Naja, wenn du alles richtig gemacht hättest, würde es funktionieren
Grundsätzlich sehe ich keinen wirklichen Fehler in der Schaltung.
Was ist mit der Software? Eine Variante wäre, dass du versehentlich die Arduino-Ausgänge als Eingänge umschaltest. Durch die Pull-Ups kannst du dann 0x0f, also einen ungültigen Wert ausgeben...
Hilft ein Hardware-Reset oder muss die Spannung weg?
Hast du einmal gemessen, welchen Strom die Schaltung aufnimmt, wenn sie blockiert ist?
Durch Spannungsspitzen (siehe Layout), kann ein Latch-Up entstehen:
https://de.wikipedia.org/wiki/Latch-Up-Effekt
Aus diesem Zustand kommt man nur durch abschalten der Spannung wieder raus, allerdings nimmt die Schaltung dann einen entsprechend hohen Strom auf.
Also zum Layout:
1. Da sind mehr Stecker im Layout als im Schema.
2. Leiterbahnen für GND und V+ können nie zu breit sein! Du hast 7 Segmente mit je 20mA, das sind 140mA. Wenn deine Leiterbahn 1 Ohm hat, erzeugt dies Spannungsschwankungen von 0.14V, dies hat du dann als zusätzlichen Eingangspegel an den Eingängen. Neben dem Ohmschen Widerstand hat jeder gerade Draht auch eine Induktivität, dies erhöht den Widerstand für schnelle Strom/Spannungsänderungen. Flankensteilheiten von 10ns entsprechen 100MHz, also schon ganz viel Hochfrequenz!
3. Die Leiterbahnführung ist grundsätzlich schlecht. Du musst jede Leiterbahn als Widerstand betrachten, je nach Strom hast du deinen Spannungsabfall. Die 140mA fliessen durch Pin 9 von IC1. Dies erzeugt einen Spannungsabfall zwischen diesem Punk und Pin 8 von X5. Dieser Spannungsabfall addiert sich dann aber zu den Eingangsspannungen an IC1. Wenn du diese Verbindung auftrennst und von Pin 9 von IC1 senkrecht nach unten fährst, fällt dieser Effekt raus. Allerdings hast du immer noch das selbe Problem mit der GND des Arduino und den Eingängen von X1.
4. Da der CD4543 Flip-Flops enthält, kann das genügen dies umzuwerfen. Es fehlen also noch Blockkondensatoren. So 100-220nF Keramik mit möglichst kurzen Leiterbahnen an X5 zwischen VSS und VDD. Ein Elko um die 140mA-Sprünge zu puffern, ist auch nicht falsch!
5. Bei 3 Stellen, ist der maximale Stromspung 3*140mA = 420mA.
6. Oft bestimmt nur die Verdrahtung ob eine Schaltung funktioniert oder eben nicht, auch wenn alle richtigen Punkt miteinander verbunden sind. Wer mal analoge Audio-Verstärker gebaut hat, kennt das Problem als hörbaren Brumm. Da hört man dann den Unterschied zwischen einer sauberen Sternmesse und einer wirren Verdrahtung. Selbiges gilt auch für die Versorgungsspannung.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Danke für deine Umfangreiche Antwort.
Zum Programm:
Die Ansteuerung der Ausgänge ist immer gleich, werden also nicht als Eingänge definiert.
void digi7()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
}
void digi8()
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
}
void digi9()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
}
void digiO() <-------- Ausschalten
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
}
Was meinst du mit Hadware Reset?
Ich muss die Spannung abtrennen um das Ganze wieder zum Laufen zu bringen.
Der Arduino gibt weiterhin die Signale aus, aber die Ausgänge des CD4535 sind alle auf 0.
Im Zustand dass nichts mehr weiter geht, nimmt die Schaltung 46mA auf.
Mit freundlichen Grüßen
Ich verwende ein 9V Netzteil.
An dieses sind alle Bauteile angeschlossen.
(Arduino, 7-Segment Anzeige, CD4543, ULN4
Ich habe einen Anschluss des Netzteiles getrennt und habe dort den Strom gemessen.
Oder soll ich nur den des CD4543 messen?
Mit freundlichen Grüßen
- - - Aktualisiert - - -
Ich habe derzeit 1 Modul angeschlossen
Der Arduino läuft mit 5V oder 3.3V?
An welcher Spannung ist der CD4543 angeschlossen?
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Lesezeichen