Forum: Mikrocontroller und Digitale Elektronik Digitale Uhr mit sieben Segment Anzeigen


von Lukas H. (Gast)


Lesenswert?

Abend,
vor ein paar Monaten hab ich versucht, eine analoge Uhr mit sieben 
Segment Anzeigen aufzubauen. Das ist mir allerdings nicht vollständig 
gelungen...
(Dazu gibt es auch hier einen Beitrag) Hatte für das Ding aber 
irgendwann keine Zeit mehr und hatte es wohl erfolgreich 
verdrängt;)(Habe da einige Abende für die erfolglose Fehlversuche 
investiert). Als ich es eben da rum liegen sah und ich immer noch keine 
Lösung dafür habe dachte ich mir, dass ich das ja auch digital 
realisieren könnte.

Also nun zum neuen Projekt womit ich hoffentlich mehr Erfolg haben 
werde:
Ich würde gerne mit einem Atmega8 und sechs sieben Segment Anzeigen eine 
digitale Uhr bauen. Dazu gibt es hier im Forum und bei Google sehr viele 
Einträge, ich finde aber leider nichts passendes. Deswegen hier die 
Frage ob jemand Code + Schaltplan für so ein Projekt hätte.

Schon einmal Danke
Lukas

von Peter D. (peda)


Lesenswert?


von H.Joachim S. (crazyhorse)


Lesenswert?

Lukas H. schrieb:
> eine analoge Uhr mit sieben
> Segment Anzeigen aufzubauen

Interessanter Ansatz :-)

von Lukas H. (Gast)


Lesenswert?

Profi am Werk..
Ist ja klar was gemeint ist?

Zum MAX7219 finde ich auch keine Schaltpläne (ist aber ein tolles Teil, 
wird die Sache auf jedenfall vereinfachen).

von Jochen (Gast)


Lesenswert?

Lukas H. schrieb:
> keine Schaltpläne

Wie du den anschließen musst steht im Datenblatt des Bauteils. 
Stichwort: SPI schau mal in beiden Datenblättern (ATMEGA 8 und MAX 7219 
nach)

Und du hast recht, damit wirds einfacher, der nimmt dir fast die ganze 
Arbeit ab ;)

von Kolja L. (kolja82)


Lesenswert?

Eigentlich steht hier 
http://www.seeedstudio.com/wiki/Grove_-_4-Digit_Display
schon alles drin.

Programmierst du mit der Arduino IDE?
Ob ATMega8 oder Arduino (welcher auch immer) sollte für dein Vorhaben 
egal sein.
Du musst nur die beiden Pins anpassen.

Hier ist der von meiner Schreibtischuhr:
1
#include <TimerOne.h>
2
#include "TM1637.h"
3
#define ON 1
4
#define OFF 0
5
6
int8_t TimeDisp[] = {0x00,0x00,0x00,0x00};
7
unsigned char ClockPoint = 1;
8
unsigned char Update;
9
unsigned char halfsecond = 0;
10
unsigned char second;
11
unsigned char minute = 44;
12
unsigned char hour = 18;
13
14
15
#define CLK 9//pins definitions for TM1637 and can be changed to other ports
16
#define DIO 8
17
TM1637 tm1637(CLK,DIO);
18
19
void setup()
20
{
21
  tm1637.set();
22
  tm1637.init();
23
  Timer1.initialize(500000);//timing for 500ms
24
  Timer1.attachInterrupt(TimingISR);//declare the interrupt serve routine:TimingISR
25
}
26
void loop()
27
{
28
  if(Update == ON)
29
  {
30
    TimeUpdate();
31
    tm1637.display(TimeDisp);
32
  }
33
34
}
35
void TimingISR()
36
{
37
  halfsecond ++;
38
  Update = ON;
39
  if(halfsecond == 2){
40
    second ++;
41
    if(second == 60)
42
    {
43
      minute ++;
44
      if(minute == 60)
45
      {
46
        hour ++;
47
        if(hour == 24)hour = 0;
48
        minute = 0;
49
      }
50
      second = 0;
51
    }
52
    halfsecond = 0;
53
  }
54
 // Serial.println(second);
55
  ClockPoint = (~ClockPoint) & 0x01;
56
}
57
void TimeUpdate(void)
58
{
59
  if(ClockPoint)tm1637.point(POINT_ON);
60
  else tm1637.point(POINT_OFF);
61
  TimeDisp[0] = hour / 10;
62
  TimeDisp[1] = hour % 10;
63
  TimeDisp[2] = minute / 10;
64
  TimeDisp[3] = minute % 10;
65
  Update = OFF;
66
}

Und nicht vergessen die Librarys installieren!

von Bussard (Gast)


Lesenswert?


von 6a66 (Gast)


Lesenswert?

Lukas H. schrieb:
> Zum MAX7219 finde ich auch keine Schaltpläne (ist aber ein tolles Teil,
> wird die Sache auf jedenfall vereinfachen).

Hallo Lukas,
dieses "Tolle Teil" nimmt dir nur die Ansteuerung der 7-Segment Anzeigen 
ab. Das kann man auch selbst lösen ähnlich dem Prinzip für die 
LED-Cubes. Dafür 5 EUR zu spendieren macht nur Sinn wenn Du mit das 
Multiplexen nicht verstehen kannst oder möchtest. Dann nimm dem. 
Ansonsten reichen dafür 8 Transistoren plus n für die Anzahl der Digits.

rgds

von Lukas H. (Gast)


Lesenswert?

Multiplexen verstehe ich schon. Die Anzeigen mit Transistoren an den 
ATMega8 wäre auch kein Problem.
Aber der Code dazu (benutze Bascom und Ardruino IDE) wäre mit MAX7219 
einfacher oder liege ich da falsch?

von Lukas H. (Gast)


Lesenswert?

Habe gerade diesen Schaltplan + Code gefunden:
http://www.elektronik-radio.de/41323.html
Verstehe dort alles außer die dort sogenannte LED Spannung. Wäre die in 
meinem Fall einfach die Spannung einer Led in der sieben Segment 
Anzeige?
Und wenn ja, wie würde ich diese "erzeugen" würde ein passend 
dimensionierter Wiederstand reichen?

von G. H. (schufti)


Lesenswert?

prinzipiell kann das so passen wenn man wüsste welche 7Segmenter du 
verwendest: gem. Anode oder Katode

Je nach vorhandener Versorgungsspannung 3.3 oder 5V eben den 
Vorwiderstand für die gewünschte Helligkeit und je nach Datenblatt der 
7Segmentanzeige anpassen.

von Lukas H. (Gast)


Lesenswert?

Meine sieben Segment anzeigen haben eine gemeinsame Katode. Wenn ich das 
richtig sehe haben die im Schaltpan eine gemeinsame Anode oder?
Kann man das irgendwie passend umbauen?
Oder ist es einfacher sieben Segment Anzeigen mit einer gem. Anode zu 
kaufen?

von Peter D. (peda)


Lesenswert?

Den Anzeigen ist es herzlich egal, ob Du die Digits oder die Segmente 
multiplext.
Man kann die Schaltung oder die Software umbauen.

von Lukas H. (Gast)


Lesenswert?

Wie könnte man denn die Schaltung umbauen (wäre mir lieber als was am 
Code zu ändern)?
Oder wäre es um einiges einfach etwas am Code zu ändern?

von G. H. (schufti)


Lesenswert?

bei den modernen (hoch)effizienten LEDs die mit 2mA schon gut 
wahrnehmbar leuchten könnte man sogar ganz ohne die Transistoren 
auskommen.

die gem Katoden auf 4 I/Os eines Ports, die Segmente der 4 Anzeigen 
jeweils parallel und über passende Vorwiderstände auf 7 I/Os eines 
anderen Ports (Port Trennung nur zur Vereinfachung der Programmierung)

das wären dann max. 14mA die ein Port sinken muß bzw. 2mA sourcen. Das 
ist laut Datenblatt bei 5V ok.

Mit diesem "einfachen" Aufbau läßt sich das Grundprinzip schon mal 
umsetzen, testen und danach ggfs. erweitern.

von Stephan (Gast)


Lesenswert?

Lukas H. schrieb:
> Meine sieben Segment anzeigen haben eine gemeinsame Katode. Wenn ich das
> richtig sehe haben die im Schaltpan eine gemeinsame Anode oder?

dann nimm doch den 7221. Codebeispiele sind hier zu finden.

von MaWin (Gast)


Lesenswert?

Lukas H. schrieb:
> Habe gerade diesen Schaltplan + Code gefunden:

Die AVR UHR dort, mit grossen Segmenten aus mehreren LEDs.
Ja, es ist etwas doof, so was im Netz zu finden.
Entweder es sind Prinzipaufbauten aus den AppNotes der Hersteller,
die zwar Ziffern zeigen aber nicht in voller Helligkeit, weil
man sich zur Demonstration lieber die Stromverstärker spart,
(http://ww1.microchip.com/downloads/en/AppNotes/00615b.pdf,
man redet dann von low power design, denn mehr schafft sie nicht)
oder es sind besondere Uhren: Nixies, Grossziffern, Numitrons,
Wordclocks, Oszilloskopuhren,
es gibt alles, bloss (scheinbar) keine grundsolide normale Uhr
(mit Datum und DCF ? Nun ja, zumindest optional).

Das liegt natürlich daran, daß so was so supersimpel ist, dass
es gleich nach der blinkenden LED kommt (aber für die gibt es
Beispiele) aber LED-Uhren nicht verkaufsfähig sind - man will
dann wenigstens ein batteriesparendes Flüssigkristalldisplay.

Mir persönlich gefällt
https://www.sparkfun.com/tutorials/47
und http://arvin.schnell-web.net/dcf77/ und
http://www.electro-labs.com/diy-digital-desk-clock-with-temperature-display-part-1-hardware-design/
am Besten, die sind aber mit Microchip PIC Prozessoren gebaut.

Eine Uhr muss, finde ich, einen blinkenden Doppelpunkt haben,
und darf nicht so schummrig sein wie
http://i.ebayimg.com/t/Red-LED-Clock-Display-7-Segment-2-Pcs-For-Atmel-PIC-Arduino-Application-/00/s/Nzg0WDE2MDA=/z/srUAAMXQBwlRJLBc/$T2eC16FHJGIE9nnWprOPBRJLBbzCk!~~60_57.JPG

Uhren ohne Ende
http://kevinrye.net/files/category-arduino.php
aber ich kann dir auch keinen Bauvorschlag zeigen, an dem ich nichts 
auszusetzen hätte.

von Kay Neahnung (Gast)


Lesenswert?

Hier eine interessante Seite:
http://www.stefan-buchgeher.info/elektronik/dcf2/dcf.html

Aber da wirst du dich mit PICs anfreunden müssen oder den Code 
adaptieren.

von Peter D. (peda)


Lesenswert?


von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Lukas H. schrieb:
> Habe gerade diesen Schaltplan + Code gefunden:
> http://www.elektronik-radio.de/41323.html

Warum aber schliesst der Schöpfer AVCC nicht an? Wird wohl hoffentlich 
nur im Schaltplan fehlen...

Lukas H. schrieb:
> Verstehe dort alles außer die dort sogenannte LED Spannung. Wäre die in
> meinem Fall einfach die Spannung einer Led in der sieben Segment
> Anzeige?

Das hat er so gemacht, damit die LEDs nicht unbedingt von den geregelten 
5V des MC versorgt werden müssen. Hat Vorteile, denn der Regler muss 
nicht noch Verlustleistung für die LED verbraten und man kann die LED 
Spannung auch helligkeitsabhängig steuern. Der Schaltungsteil fehlt, 
wäre aber recht einfach dazu zu basteln.
Eine Helligkeitssteuerung fehlt mir bei vielen dieser Projekte. Kann man 
aber z.B. mit ADC und Multiplexstrategie auch allein in Software 
giessen.

von Karl H. (kbuchegg)


Lesenswert?

MaWin schrieb:

> Uhren ohne Ende
> http://kevinrye.net/files/category-arduino.php
> aber ich kann dir auch keinen Bauvorschlag zeigen, an dem ich nichts
> auszusetzen hätte.

Ich hätte ja auch gesagt, das wichtigste wäre jetzt erst einmal, dass er 
überhaupt irgendetwas selber macht.
So eine Uhr mit 7-Segment Anzeige ist (wenn MaWin ein Auge ein bischen 
zudrücken kann) keine Raketentechnik. Das sollte eigentlich jeder 
alleine hinkriegen, der sich für µC interessiert. Er kann gerne die eine 
oder andere Anregung aus dem Web benutzen, da hab ich keinen Einwand. 
Aber nach fertiger Hardware suchen, nach fertiger Software suchen, keine 
einzige Eigenleistung erbringen, das ist mit dann schon zu wenig.

von m.n. (Gast)


Lesenswert?

Vielleicht zur Orientierung für eine etwas andere Hardware (statische 
Anzeige) samt Software (frei laufender Zähler): 
Beitrag "7-Segm.-LED-Anzeige, 6-stellig, statische Ansteuerung mit (74HC)4094"

Das ganze als Anzeige für eine Uhr zu verwenden, kann man an anderer 
Stelle im Netz finden ;-)

von Lukas H. (Gast)


Lesenswert?

Erst einmal Danke für die vielen Antworten.
Ich habe mir gerade einmal alle Links angeschaut. Müsste damit machbar 
sein.
Habe aber noch eine Frage:
Viele Uhren sind mit DCF77 ausgestattet und es sieht nicht so 
kompliziert aus. Hat jemand von euch mit so einem DCF77 Modul schon 
Erfahrung und könnte mit eins empfehlen? Würde es gerne mal mit einem 
ausprobieren.

von Lukas H. (Gast)


Lesenswert?

Habe gerade noch das hier gefunden:
https://elektronik-kompendium.de/public/arnerossius/schaltungen/avr/dcfclk-big.htm
Dort gibt es auch Schaltplan und Code und es ist mit 
DCF77+Uhrzeit+Datum+Wochentag. wäre also für mich mehr als Perfekt auch 
wenn ich dann nichts wirklich selber gemacht habe...
Habe zu diesem Schaltplan 
(https://elektronik-kompendium.de/public/arnerossius/schaltungen/avr/dcfclk-big-matrix.png) 
noch zwei Fragen:
Heißt das unten links das Pin 8 und Pin 16 von IC3 und IC4 einfach an + 
und - angeschlossen werden?
sehe ich das richtig, dass die sieben Segment Anzeigen mit gem. Anode 
sind?

von Lukas H. (Gast)


Lesenswert?

Ich weiß es ist schon was her, ich habe aber letztes Wochenende mal eine 
Uhr aufgebaut nach diesem Schaltplan:
https://elektronik-kompendium.de/public/arnerossius/schaltungen/avr/dcfclk-big.htm
Ich habe die "ursprüngliche Version" aufgebaut. Um erst nichts groß an 
den Einstellungen zu ändern, habe ich die fertige .hex Datei benutzt und 
um die Datumseinstellung DDMMYYYY zu bekommen einfach die Sieben-Segment 
Anzeigen anders angeschloßen.
Jetzt zu meinem Problem(wäre auch ja zu einfach gewesen hätte alles 
gleich funktioniert):
Ich habe den Attiny2313 programmiert, in die Schaltung eingesteckt und 
obwohl ich eigentlich das Display aus hatte(Pin 7 nicht mit GND 
verbunden) leuchteten alle Sieben-Segment anzeigen und nach kurzer 
Zeit(ca. 1min) entschloss sich der Attiny dazu, heiß zu werden und ehe 
ich den Stecker ziehen konnte kaputt zu gehen.
Anschließend habe ich noch einmal alles überprüft, jedoch keinen Fehler 
gefunden und das Programm mal auf einen Attiny2313A gezogen und diesen 
benutzt. Zu dem Zeitpunkt hatte ich mir dann auch mal die Schritte bevor 
die Uhrzeit angezeigt wird angeschaut(Bild auf der Seite).
Allerdings zeigt meine Anzeige, da wo der erste Strich in der Mitte sein 
sollte eine 0 an(direkt nach dem Start), sie wechselst jedoch nach 
kurzer Zeit zu einem L und unten wechselt die Anzeige hin und her 
(Eingang 0/1). Sie zählt aber nur selten die Empfangenen Bits hoch und 
wenn nur bis maximal 3 bevor sie wieder oben auf das L schaltet.
Könnte das an dem Attiny 2313A liegen oder ist etwas anderes falsch?
Und hat einer eine Idee warum der Attiny2313 "abgeraucht" ist(der 
steckte vorher lange mit dem falschen Quarz und zwei Angeschlossenen 
Leds in meinem Programmierboard/das war der einzige Unterscheid zum 
Attiny2313A; könnte das daran liegen)?

von Rene H. (Gast)


Lesenswert?

Äh, auf der Seite sehe ich aber nichts von einem Attiny. Dir ist schon 
klar, dass das HEX File nicht kompatibel ist?

Grüsse,
René

von Lukas H. (Gast)


Lesenswert?

Das steht in der ersten Einstellung(bei Software).

von Harald W. (wilhelms)


Lesenswert?

H.Joachim S. schrieb:

>> eine analoge Uhr mit sieben
>> Segment Anzeigen aufzubauen
>
> Interessanter Ansatz :-)

Ja, passt nur, wenn wir demnächst einen sieben Stunden Tag einführen.

von Lukas H. (Gast)


Lesenswert?

Ich habe gerade einmal eine andere Version probiert(0.8.1), da wird der 
"Bildschirm" direkt nach dem einschalten richtig angezeigt, es werden 
aber maximal wieder drei Bits empfangen bis er wieder auf das"L" 
wechselt.

von Lukas H. (Gast)


Lesenswert?

Abend,
ich bin mal wieder ein bisschen weiter gekommen, ich habe einen dcf77 
Simulator gebaut und diesen angeschlossen.
Mit dem gehts:)

Also jetzt meine nächste Frage:
Kann man den dcf77 Empfang irgendwie verbessern?
(Ich habe das Empfangsmodul von Conrad)

von Harald W. (wilhelms)


Lesenswert?

Lukas H. schrieb:

> Also jetzt meine nächste Frage:
> Kann man den dcf77 Empfang irgendwie verbessern?

Normalerweise haben selbst einfache Empfänger einen
Empfangsbereichvon mindestens 1000kmrund um Main-
flingen. Das Problem sind Fremdstörungen innerhalb
von Gebäuden. Dagegen hilft manchmal das raussetzen
der Antenne ins Freie.

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.