Forum: Mikrocontroller und Digitale Elektronik Big 7-Segment Anzeige mit Arduino UNO ansteuern


von Gundelputz (Gast)


Angehängte Dateien:

Lesenswert?

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?

von m.n. (Gast)


Lesenswert?

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"

von Himbeertorte (Gast)


Lesenswert?

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.

von Gundelputz (Gast)


Lesenswert?

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.

von Gundelputz (Gast)


Lesenswert?

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.

von Gundelputz (Gast)


Lesenswert?

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

von Gundelputz (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.