Forum: Mikrocontroller und Digitale Elektronik LED-Uhr mit Attiny26


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Alexander H. (alexander_h732)


Lesenswert?

Hallo Leute,

ich bin absoluter Anfänger in Sachen Mikrocontroller. Die unzählige 
Vorteile liegen aber auf der Hand, denn man kann auf umständliche 
Schaltungen und fertig ICs verzichten, noch dazu ist ein uC 
platzsparend.

Als erstes Bastelprojekt wollte ich eine klassische, sechsstellige 
7-Segment LED Uhr bauen.
Evtl. noch mit Zusatzfunktionen wie zB. Alarm, oder Stoppuhr und 
Countdowntimer.
In der Bastelkiste liegen mehrere Attiny26 und pinmässig (und 
grundsätzlich) dürfte sich der ATTiny auch für eine Uhr eignen, oder?
Ich bin mir noch unsicher, was Genauigkeit angeht(externer/interner 
Quarz?).
Wie groß wären die Abweichungen zB. auf ein Jahr bezogen?

Hat hier evtl. jemand gute Codebeispiele für eine Uhr mit Attiny26?
Das Ganze von Grund auf selbst zu schreiben traue ich mir definitiv 
nicht zu, daher bräuchte ich etwas Orientierung, wie man sowas 
angeht(gerne auch Lektüretipps und Beispielprojekte, die in die Richtung 
gehen).


Viele Grüße
Alexander

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Mache es dir nicht unnötig schwer, und nimm dafür einen Atmega328. Da 
musst du nicht um jeden freien Pin und um jedes Byte Speicher feilschen.

Es gibt keinen internen Quarz, das ist ein R/C Oszillator, der für eine 
Uhr völlig ungeeignet ist.

> Das Ganze von Grund auf selbst zu
> schreiben traue ich mir definitiv nicht zu

Dann lass es bleiben. Durch copy-paste Programmierung lernt man nichts. 
Sparen kannst du auch nichts, verglichen mit solchen Bausätzen:
https://de.aliexpress.com/item/1005003480148637.html
https://de.aliexpress.com/item/1005005199299726.html

Mein AVR Buch könnte dir gefallen. Da wird zwar keine 7-Segment Uhr 
erklärt, aber die Programmierung von 7-Segment Anzeigen und eine Uhr mit 
analoger Anzeige. Kombinieren kannst du das dort gelernte selber, wenn 
du magst.
http://stefanfrings.de/mikrocontroller_buch/

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die Programmierung einer Uhr besteht aus drei groben Programmteilen. Zum 
einen eine sinnvolle Ausgabe aufs Display und zum zweiten ein 
Uhrengetriebe, was m.E. am besten im Timerinterrupt angetrieben wird. 
Der dritte Teil betrifft das Stellen.
Das Getriebe kann man z.B. aus if-thens aufbauen, um Sekunden, Minuten 
und Stunden runterzuteilen.
Mit AVR GCC kann sowas so aussehen:
1
// a simple clock gearbox
2
volatile uint8_t fifties = 0;
3
volatile uint8_t seconds = 0;
4
volatile uint8_t minutes = 0;
5
volatile uint8_t hours = 0;
6
volatile uint16_t days = 0;
7
// clock gearbox is called every 1/50 of a second
8
// Note that it is really the CTC interrupt but the 8515 uses the COMP vector
9
// 6 byte clock : fifties:seconds:minutes:hours:dayshi,dayslo
10
// this clock will wrap around after 65535 days ~= 179 years 
11
12
ISR(TIMER0_COMP_vect) {
13
     fifties++;
14
     if (fifties > 49) {
15
  fifties = 0;
16
  seconds++;
17
  if (seconds > 59) {
18
    seconds = 0; 
19
    minutes++;
20
    if (minutes > 59) {
21
      minutes = 0;
22
      hours++;
23
      if (hours > 23) {
24
        hours = 0; 
25
        days++;
26
        }
27
      }
28
    }
29
  }
30
}

: Bearbeitet durch User
von Roland H. (rhaas80)


Lesenswert?

Evtl. mit Projekt fuer einen der Bausaetze anfangen:

https://github.com/ruthsarian/at89c2051_clock

Ist zwar noch fuer at89c2051 aber in C, sollte also uebertragbar sein.

von Harald A. (embedded)


Lesenswert?

Traue dich doch einfach, die folgenden Sätze bei ChatGPT oder CoPilot 
reinzuhauen und frage darüber hinaus alles nach, was Du nicht verstehst.

„Erstelle bitte ein Projekt in C für eine einfache Uhr mit einem Attiny 
26, 6 Stück 7-Segment, 6 Stück 74HC595 und einem 32kHz-Quarz.“

„Erkläre mir genau, was ich wo anschließen muss und wie ich die 
Schieberegister verdrahten muss“

„Erkläre mir, wie ich die Optionsbits für den Attiny setzen muss“

Wird hier in diesem Forum zerpflückt werden, egal, mache es trotzdem 
mal.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Alexander H. schrieb:

> Als erstes Bastelprojekt wollte ich eine klassische, sechsstellige
> 7-Segment LED Uhr bauen.
> In der Bastelkiste liegen mehrere Attiny26 und pinmässig (und
> grundsätzlich) dürfte sich der ATTiny auch für eine Uhr eignen, oder?

Na, mal sehen. Der ATTiny26 hat 16 prinzipiell nutzbare Pins. Allerdings 
wird man Reset mal Reset sein lassen wollen. Und MISO, MOSI und SCK 
(vulgo: ISP) wird man beim Erstkontakt mit dem µC auch eher frei lassen 
wollen. Wenn man eine Quarzuhr im Wortsinn bauen will, braucht man auch 
die XTAL-Anschlüsse. Es bleiben also 10 Pins übrig.

Eine 6-stellige 7-Segment Anzeige hat 7×6 = 42 Segmente. Und zwei 
Doppelpunkte will man wohl auch noch. Auch wenn man die Anzeige im 
Multiplex ansteuert, braucht man noch 7+6 = 13 Pins. Und da sind die 
Doppelpunkte noch gar nicht berücksichtigt. Und Tasten zum Stellen oder 
Alarm ein- und ausschalten ebenfalls nicht.

Das wird also ausgesprochen knapp (LOL) mit den Pins. Zumindest wenn man 
auf "umständliche Schaltungen und fertig ICs verzichten" will.

Tu dir selber einen Gefallen und nutze zum Basteln und Ausprobieren 
einen "großen" µC. Etwa einen ATMega1284. Da hast du dann Pins satt. 
Wobei es für das parallele Ansteuern einer 6-stelligen Anzeige auch dann 
nicht reicht.

> Ich bin mir noch unsicher, was Genauigkeit angeht(externer/interner
> Quarz?).

Der interne Oszillator ist ein RC-Oszillator und als Taktgeber für eine 
Uhr denkbar ungeeignet.

> Wie groß wären die Abweichungen zB. auf ein Jahr bezogen?

So groß bzw. klein wie du willst. Du kannst mit einem gut abgeglichenen 
Quarz wenige Sekunden im Jahr erreichen. Oder du bringst den Fehler auf 
0 indem du eine Funkuhr oder GPS-Uhr baust.

> Hat hier evtl. jemand gute Codebeispiele für eine Uhr mit Attiny26?
> Das Ganze von Grund auf selbst zu schreiben traue ich mir definitiv
> nicht zu

Die Uhr selber ist trivial. Das sind nur 3 Zähler, die bis 59, 59 und 23 
gehen. Das sollte jeder hinbekommen, der ernsthaft mit µC basteln will. 
Der aufwendigere Teil ist die Ansteuerung der LED und das macht 
eigentlich jeder anders. Auch beim Stellen der Uhr (falls überhaupt, 
eine Funkuhr braucht das nicht) gibt es viele Wege nach Rom. Beim Alarm 
scheiden sich dann endgültig die Geister. Wieviel Alarme? Mit 
Berücksichtigung des Wochentags? Vielleicht ein Lied spielen statt 
einfach nur piepen? Vielleicht noch Weihnachten und diverse Geburtstage 
kennen?

Anregungen bietet das Internet zuhauf. Wenn ich bei Google nach "DIY Uhr 
AVR" suche, werde ich mit Ergebnissen totgeworfen. Aber gut, wenigstens 
ein Beispeit. Scott-Falk Hühns Uhren haben manchen inspiriert: 
https://s-huehn.de/elektronik/multiuhr/multiuhr.htm

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> http://stefanfrings.de/mikrocontroller_buch/

der wievielte Account ist das eigentlich von dir Stefan?

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Falls es ein wenig innovativ sein sollte:

Nimm statt der klassischen 7-Segment-LED-Anzeigen einfach Schnipsel von 
adressierbaren LED-Strips (WS2812B o.ä.) zu je 3 ... 5 oder mehr LEDs. 
Die Stipse sind mit der Schere beliebig ablängbar.

Damit kann einerseits die Anzeige deutlich größer und damit 
einruckvoller sein und du hast freie Wahl bezüglich der Farbe. Aufgrund 
des eingebauten PWM gibts das Dimmen gratis dazu.

UND!!! - es braucht nur einen Pin am Mikrocontroller!!!

von Harald A. (embedded)


Lesenswert?

Frank E. schrieb:
> Falls es ein wenig innovativ sein sollte:
>
> Nimm statt der klassischen 7-Segment-LED-Anzeigen einfach Schnipsel von
> adressierbaren LED-Strips (WS2812B o.ä.) zu je 3 ... 5 oder mehr LEDs.
> Die Stipse sind mit der Schere beliebig ablängbar.
>
Guter Vorschlag, aber dann doch bitte mit der APA102. Ein Pin mehr aber 
soooo viel entspannter zu programmieren ohne dieses besch… Timing, wo 
einem der Interrupt in die Quere kommen KANN.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Alexander H. schrieb:
> Hat hier evtl. jemand gute Codebeispiele für eine Uhr mit Attiny26?

Beitrag "DCF77 Uhr in C mit ATtiny26"

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Alexander H. schrieb:
> ich bin absoluter Anfänger in Sachen Mikrocontroller (...)
> Als erstes Bastelprojekt wollte ich eine klassische, sechsstellige
> 7-Segment LED Uhr bauen.

Keine gute Kombination für den Startschuss.

von Frank G. (frank_g53)


Lesenswert?

Alexander H. schrieb:
> sechsstellige
> 7-Segment LED Uhr bauen.

Hierfür brauchst du weniger Pins:
https://www.az-delivery.de/products/4-digit-display

von Christian S. (roehrenvorheizer)


Lesenswert?

Alexander H. schrieb:
> Als erstes Bastelprojekt wollte ich eine klassische, sechsstellige
> 7-Segment LED Uhr bauen.

Nunja, das geht auch mit Schieberegistern und Transistoren, die die LEDs 
antreiben oder besser noch mit 7-Segment-Treibern, von denen es etliche 
zur Auswahl gibt. Der µC steuert dann nur noch die seriell ausgegebenen 
Bits für die Anzeige, läuft mit seinem Quarztakt und stellt das 
"Uhrengetriebe" dar.

mfg

von Martin B. (Firma: BINE Automatentechnik ◔) (pac-man)


Lesenswert?


von Mi N. (msx)


Lesenswert?

Frank E. schrieb:
> Falls es ein wenig innovativ sein sollte:

'Innovativ' und für einen Anfänger? Da wäre doch TFT das Einfachste :-(

Man kann LED/LCD bequem mit wenigen Pins ansteuern: 
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm
Bei LCD gibt es schon passende Anzeigen mit Doppelpunkten.

Ein Anfänger sollte sich zunächst einmal all das zulegen, was man zum 
Programmieren eines AVRs braucht: passende IDE und Programmieradapter.
Das sind die notwendigen Voraussetzungen. Lerne zunächst, damit 
umzugehen.

von Alexander H. (alexander_h732)


Lesenswert?

Ok, eure Tipps haben schon mal weitergeholfen. Vielen Dank!

Ich werde definitiv einen Atmega328 nehmen, da der über genug Pins 
verfügt.
Konkret schwebt mir eine Uhr mit Alarmfunktion und 6 Stellen vor.
Oft wird eine RTC als Zetbasis verwendet. Mir würde auch ein Quarz 
ausreichen.

Die meisten gut dokumentierten Projekte verzichten auf die 
Sekundenanzeige. Kann man das einfach ergänzen (sofern der Code lesbar 
vorliegt) oder würde das Programmiererfahrung voraussetzen?

Falls jemand eine Uhr mit Atmega328 kennt, die zuverlässig läuft, wäre 
ich interessiert. Beim Nachbau lernt man durchaus auch was😀

von Peter D. (peda)


Lesenswert?


von Frank O. (frank_o)


Lesenswert?

Peter D. schrieb:
> Es gibt auch fertige Anzeigen mit MAX7219:

Und dafür gibt es bei Arduino schon Bibliotheken.
Ich verstehe auch nicht, wieso das ein Attiny26 sein muss, wenn man noch 
nichts gemacht hat.
Üblicherweise fängt man mit "Hello World" (also eine blinkende Led) an.

Aber wenn schon, dann würde ich die fertig nehmen Mit dem Uno R4 hat der 
TO dann auch schon gleich eine Echtzeituhr dabei.

Aber jeder quält sich halt wie er will.

von Bauform B. (bauformb)


Angehängte Dateien:

Lesenswert?

Harald A. schrieb:
> Traue dich doch einfach, die folgenden Sätze bei ChatGPT oder CoPilot
> reinzuhauen und frage darüber hinaus alles nach, was Du nicht verstehst.

Kann man solche Tipps bitte unterlassen? Es ist sowieso schon schlimm 
genug, selbst DuckDuckGo bringt schon alles durcheinander. Normalerweise 
kennzeichnen die Werbung ziemlich auffällig :(

von Axel S. (a-za-z0-9)


Lesenswert?

Frank O. schrieb:
> Peter D. schrieb:
>> Es gibt auch fertige Anzeigen mit MAX7219:
>
> Und dafür gibt es bei Arduino schon Bibliotheken.

Oh nein, bloß nicht. Der ursprüngliche Zweck von Arduino war ja, Dinge 
schnell von fachfremden Leuten zusammenstöpseln zu lassen (Künstler 
etc). Und diese Zielstellung schimmert überall durch.

Der TE will aber gerade lernen mit µC umzugehen. Und da ist Arduino 
eher hinderlich als förderlich. Gegen eine achtstellige Anzeige mit 
MAX7219 spricht dabei natürlich nichts, da kann man die Zeit dann als 
HH-MM-SS darstellen. Die Anbindung per SPI erlaubt dann sogar die 
Verwendung des Tiny26, weil man nur noch 3 Pins für das Display braucht. 
Wenn das läuft, würde ich aber trotzdem den Aufbau eines eigenen 
Displays vorschlagen. Dann geht auch HH:MM:SS. Oder man kann die 
Sekunden kleiner machen.

Auch gegen die Verwendung eines z.B. Arduino nano (Klones) mit Mega328 
spricht nichts. Da bekommt man immerhin die Debugausgabe per USB-UART 
und das einfache Flashen über den Arduino Bootloader frei Haus.

Gegen ein full size Arduino Board spricht aber schon der Formfaktor 
und die nicht im 100mil Raster liegende zweite Pinreihe.


Alexander H. schrieb:
> Falls jemand eine Uhr mit Atmega328 kennt, die zuverlässig läuft, wäre
> ich interessiert. Beim Nachbau lernt man durchaus auch was

Schau bei Scott-Falk Hühn vorbei. Auf der Webseite sind massig Uhren und 
Wecker. Das Zeug ist auch anständig dokumentiert. Und einmal (bei der 
Wohnraumuhr2 IIRC) zeigt er auch, wie man extra Anzeigen (für die 
Sekunden!) per Schieberegister ansteuert wenn die Pins am µC knapp sind.

Ansonsten bin ich aber kein großer Fan von Nachbauten. Man soll sich 
ruhig selber Gedanken machen und Dinge auch mal anders lösen.

von Mi N. (msx)


Lesenswert?

Axel S. schrieb:
> Der TE will aber gerade lernen mit µC umzugehen. Und da ist Arduino
> eher hinderlich als förderlich. Gegen eine achtstellige Anzeige mit
> MAX7219 spricht dabei natürlich nichts, da kann man die Zeit dann als
> HH-MM-SS darstellen. Die Anbindung per SPI erlaubt dann sogar die
> Verwendung des Tiny26, weil man nur noch 3 Pins für das Display braucht.
> Wenn das läuft, würde ich aber trotzdem den Aufbau eines eigenen
> Displays vorschlagen. Dann geht auch HH:MM:SS. Oder man kann die
> Sekunden kleiner machen.

Da muß ich Dir voll zustimmen!
Sonst kommt hier noch ein Vorschlag, eine fertige Uhr zu kaufen und zu 
sehen, was dort verbaut ist :-(

Frank O. schrieb:
> Aber jeder quält sich halt wie er will.

Das ist so, wenn man etwas lernt. Irgendwann läßt der Schmerz auch 
wieder nach.

von Frank O. (frank_o)


Lesenswert?

Axel S. schrieb:
> Und diese Zielstellung schimmert überall durch.

Kann er in C programmieren. Ich meinte auch grundsätzlich die Hardware 
von Arduino.
So findet er wenigstens gut rein.
Und ob C, Assembler oder Arduino,  Bibliotheken wird man doch nach 
Möglichkeit fertige benutzen, wenn es die gibt.
Ich habe nach dem Einstieg Attiny10 genommen und in C programmiert. Aber 
halt erst, nachdem ich etwas sicher war.
Wozu gibt's sonst die Development-Kits?
Wenn man Arduino als solches betrachtet, dann hat man vielleicht nicht 
mehr solche Probleme damit.
Warum hat Arduino so viel Erfolg und warum gibt es Cube, weil der Mensch 
den einfachen Weg bevorzugt.

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Alexander H. schrieb:
> Die meisten gut dokumentierten Projekte verzichten auf die
> Sekundenanzeige.

Weil man Sekunden in der Praxis nur bei einer Stoppuhr braucht. Du baust 
aber einen Wecker.

> Kann man das einfach ergänzen (sofern der Code lesbar
> vorliegt) oder würde das Programmiererfahrung voraussetzen?

In der Regel ist das Ändern der Quelltexte von anderen Autoren 
schwieriger, als etwas eigenes zu programmieren.

: Bearbeitet durch User
von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Im Anhang mein "Uhrwerk" realisiert über einen Zeitstempel, allerdings 
zu Demozwecken ohne Anzeige mit Ausgabe auf UART für einen ATmegaxx8.

Sherlock 🕵🏽‍♂️ schrieb:
> In der Regel ist das Ändern der Quelltexte von anderen Autoren
> schwieriger, als etwas eigenes zu programmieren.

:-) könnte hier etwas umfangreicher sein das zu analysieren. Aaaaber 
wenn er das geschafft hat, schafft er alles andere auch.

Vielleicht hilfts.

von Frank O. (frank_o)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> In der Regel ist das Ändern der Quelltexte von anderen Autoren
> schwieriger, als etwas eigenes zu programmieren.

Wenn man fremde Bibliotheken benutzt, dann muss man schon die Beispiele 
her nehmen. Allein wegen der keywords.
Aber du hast vom Grundsatz recht.
Im eigenen Programm findet man sich besser zurecht.

von Frank E. (Firma: Q3) (qualidat)


Angehängte Dateien:

Lesenswert?

Übrigens: GPS-Chips/Breakouts gibts deutlich unter 10,-

Es gibt wohl kaum eine einfachere und billigere Methode, um an eine hoch 
genaue Zeit und Datum zu kommen, auch wenn man garnicht wissen will, wo 
man sich befindet.

Man muss nur den NMEA-Textstream parsen ...

Beispiel: 
https://www.amazon.de/APKLVSR-GPS6MV2-Antennen-Flugsteuerung-Positionsmodul-Arduino/dp/B0D3DJ58R8

Ich weiss, es gibt auch billige DCF-Module. Nach meiner Erfahrung 
empfangen die aber deutlich schlechter bzw. unsicherer und nur in großen 
Zeitabständen. Aus einem GPS-Empfänger sprudeln die Daten quasi ohne 
Unterlass, sobald er (nach längerem hartem Ausschalten) den "Almanach" 
geladen hat und auch nur ein einziger Sat empfangen wird. Das sollte 
auch in Innenräumen gelingen, sofern die Uhr nicht im Keller steht.

Da reicht am anzeigenden MC tatsächlich der RC-Oszi vollkommen aus.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Frank E. schrieb:
> Man muss nur den NMEA-Textstream parsen ...

Woher kommt bloß immer der Zwang, PNGs nur als Briefmarke zu posten.
Selbst mit Lupe ist nur schwer was zu erkennen.
Wenns am Datenvolumen hapert, man darf Text sogar als Text posten (C&P).

von Mi N. (msx)


Lesenswert?

Frank E. schrieb:
> Es gibt wohl kaum eine einfachere und billigere Methode, um an eine hoch
> genaue Zeit und Datum zu kommen, auch wenn man garnicht wissen will, wo
> man sich befindet.

Weißt Du denn, wo Du Dich befindest?
Für den Anfang reicht dem TO für den Funktionstest schon ein 
RC-Oszillator, bevor er dann die Schaltung mit einem Quarz hinreichend 
stabil bekommen kann.

von Peter D. (peda)


Lesenswert?

Frank E. schrieb:
> Beispiel:
> 
https://www.amazon.de/APKLVSR-GPS6MV2-Antennen-Flugsteuerung-Positionsmodul-Arduino/dp/B0D3DJ58R8

Brauchen die immer eine Stützbatterie oder kann man die auch ablöten. 
Ich mag keine Batterien auf der Platine wegen Auslaufen.

von Alexander H. (alexander_h732)


Lesenswert?

Wahnsinn, wie man eine Uhr alternativ auch noch bewerkstelligen kann.
Mir würde aber ein genauer (Uhren-)Quarz zur Takterzeugung oder ein RTC 
(teilweise störanfällig?) ausreichen.
Die Ausgabe soll in HH-MM-SS erfolgen (ein 8 digit display).
Die Anzeige von Datum, evtl. Countdown und Stoppuhr wären natürlich auch 
klasse. Leider sind die im Netz präsentierten Uhren öfters 
fehlerbehaftet, laufen zu schnell/zu langsam (wie man manchmal auf Blogs 
lesen kann).

Ob Attiny26 oder Atmega328 ist eigentlich egal. Wenn möglich wollte ich 
den Atmega328 nehmen, da dann externe Ansteurungs ICs entfallen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Peter D. schrieb:
> Frank E. schrieb:
>> Beispiel:
>>
> 
https://www.amazon.de/APKLVSR-GPS6MV2-Antennen-Flugsteuerung-Positionsmodul-Arduino/dp/B0D3DJ58R8
>
> Brauchen die immer eine Stützbatterie oder kann man die auch ablöten.
> Ich mag keine Batterien auf der Platine wegen Auslaufen.

Diese Batterie stützt einen RAM, in dem der sog. "Almanach" gespeichert 
ist. Das ist so eine Art Basis-Info, die es dem GPS-Empfänger 
erleichtert bzw. zeitlich verkürzt, sich quasi im Raum zwischen den Sats 
zurecht zu finden. Ohne dauert es nach einem Aus/Anschalten wesentlich 
länger, bevor Daten kommen.

Details hier: https://de.wikipedia.org/wiki/Almanach_(GNSS)

Ich meine, diese Zellen sind extrem long-live und werden sicher nicht 
auslaufen bzw. erst in Jahrzehnten.

von Peter D. (peda)


Lesenswert?

Alexander H. schrieb:
> Wenn möglich wollte ich
> den Atmega328 nehmen, da dann externe Ansteurungs ICs entfallen.

Der hat aber nicht die nötigen 64 Ausgänge für 8 Digits.
Du brauchst also doch Schieberegister oder Multiplexer mit 
Konstantstromausgängen.

Multiplexen ginge auch diskret (16 Transistoren + Hühnerfutter) und 
Software (Timerinterrupt).

von Mi N. (msx)


Lesenswert?

Alexander H. schrieb:
> Wahnsinn, wie man eine Uhr alternativ auch noch bewerkstelligen kann.

Und um diesen Wahnsinn zu beenden, solltest Du Dich endlich für einen 
µC, für die endgültig gewünschten Funktionen und auf eine konkrete 
Anzeige festlegen. Solange Du Dir nicht selber im Klaren über diese 
Punkte bist, wird das hier alles endlose 'Schwätzerei'.

Alexander H. schrieb:
> Leider sind die im Netz präsentierten Uhren öfters
> fehlerbehaftet, laufen zu schnell/zu langsam (wie man manchmal auf Blogs
> lesen kann).

Schrottikowsky muß man ja nicht nachbauen.
Eine Ganggenauigkeit < 1 ppm ist recht einfach eine von < 1 ppb etwas 
aufwendiger zu erreichen.

von Jens M. (schuchkleisser)


Lesenswert?

Frank E. schrieb:
> Ich meine, diese Zellen sind extrem long-live und werden sicher nicht
> auslaufen bzw. erst in Jahrzehnten.

Das sind in der Regel Akkus, und bei einem 10€-Modul ist das sicherlich 
der billigste den man kaufen kann.
Die laufen aber in der Regel nicht aus sondern tun es einfach nicht 
mehr, aber das Modul kommt in der Regel auch gut ohne klar, dauert der 
Kaltstart halt ewig. Die Stützzeit liegt eh in der Regel nur in der 
Größe von Tagen, d.h. das Modul muss beim Erststart sowieso erstmal 
alles neu laden.
Ob das spezifische Modul es allerdings hinbekommt die Daten auch aus nur 
einem Sat zu laden und dann Zeit auszugeben muss man vmtl. testen.

von Alexander H. (alexander_h732)


Lesenswert?

Peter D. schrieb:
> Alexander H. schrieb:
>> Wenn möglich wollte ich
>> den Atmega328 nehmen, da dann externe Ansteurungs ICs entfallen.
>
> Der hat aber nicht die nötigen 64 Ausgänge für 8 Digits.
> Du brauchst also doch Schieberegister oder Multiplexer mit
> Konstantstromausgängen.
> Multiplexen ginge auch diskret (16 Transistoren + Hühnerfutter) und
> Software (Timerinterrupt).

Ich dachte man macht das Multiplexing normalerweise per Software (bei 
common anode/cathode LED). Dann benötigt man nur 7+ 8 Ausgänge. Der 
Atmega hat 23, also bleiben noch genug für Quarz usw.:
https://embedded-lab.com/blog/lab-11-multiplexing-seven-segment-led-displays/

: Bearbeitet durch User
von 900ss (900ss)


Lesenswert?

Mi N. schrieb:
> Eine Ganggenauigkeit < 1 ppm ist recht einfach

hust ;)
Na ja, wenn man zu besonderen Uhren-ICs greift oder in der Software die 
Gangungenauigkeiten ausgleicht. Fällt aber kaum noch unter einfach 
(finde ich). Und 0815-Quartze haben deutlich mehr Abweichung.

von Christian (dragony)


Lesenswert?

Mi N. schrieb:
> Eine Ganggenauigkeit < 1 ppm ist recht einfach blablabla

Wie kommst du auf so einen Blödsinn? Hast du überhaupt jemals von 
Temperaturstabilität und Alterung gehört? Oder gehts dir nur um die 
Messung, die du direkt nach dem Kauf mit einem Exemplar in deinem 20-25° 
Zimmerchen anstellst?

Wobei ich bezweifle, dass du ein Zeitnormal besitzt, um überhaupt solch 
eine Messung durchführen zu können.

Schmeiss hier nicht mit Worten um dich, von denen du nichts verstehst.

Auf die 1ppb gehe ich der Höflichkeit halber einfach mal nicht ein.

von Christian (dragony)


Lesenswert?

Mein lokales Zeitnormal ist übrigens eine SA.35m Atomuhr.

von Christian (dragony)


Lesenswert?

Der TO wird sich mit der Frage "wie genau darfs denn sein?" noch länger 
auseinander setzen, denke ich.

MEMS, Quarz, TCXO, OCXO oder Atomuhr? Die Dinger haben ungefähr alle 
gleich viele Pins. ;)

von Axel S. (a-za-z0-9)


Lesenswert?

Alexander H. schrieb:
> Mir würde aber ein genauer (Uhren-)Quarz zur Takterzeugung oder ein RTC
> (teilweise störanfällig?) ausreichen.

Eine RTC ist nicht störanfällig. Wo hast du den Blödsinn her? Der 
Vorteil einer RTC ist, daß sie aus einer kleinen Batterie/Akku/Goldcap 
auch noch tage/wochen/monatelang weiterläuft wenn das Gerät 
ausgeschaltet ist. Brauchst du erstmal nicht.

> Die Ausgabe soll in HH-MM-SS erfolgen (ein 8 digit display).

Für die Uhrzeit ist die Trennung mit Doppelpunkten der Normalfall. Ich 
hatte das nur vorgeschlagen, weil die achtstelligen Displays die man 
billig kaufen kann, keinen Doppelpunkt zwischen den Ziffern haben. Aber 
es wäre natürlich ein Anfang. Und das kannst du gleich verinnerlichen: 
die meisten µC Projekte fangen klein an.

> Die Anzeige von Datum, evtl. Countdown und Stoppuhr wären natürlich auch
> klasse.

Ja, dann mach doch! Was hindert dich?

> Leider sind die im Netz präsentierten Uhren öfters
> fehlerbehaftet, laufen zu schnell/zu langsam (wie man manchmal auf Blogs
> lesen kann).

Na klar. Alle machen mal Programmierfehler. Wird dir auch passieren.

von Peter D. (peda)


Lesenswert?

Ein RTC mit internem Quarz ist auch eine Idee. Damit ist man unabhängig 
von der äußeren Beschaltung.
Z.B. der RX8010SJ ist recht günstig und mit 5ppm schon recht genau.
Er braucht nur 160nA, mit einem 1F Goldcap läuft er Monate.
Mit 1,27mm Pitch ist er noch gut zu löten.

von Ralph S. (jjflash)


Lesenswert?

Vor längerer Zeit einmal hatte ich mir die Genauigkeit von (billigen) 
Quarzen aus China ausgemessen gehabt und war (negativ) erstaunt (wenn 
man dem Hameg HM8021-3, alt aber gar nicht schlecht) glauben darf:

Durchweg in der Charge (ich glaube es waren 20 Stck.) war der gröbste 
Ausreiser (den weiß ich noch) 16001.300 MHz (entspricht 81 ppm). Selbst 
mit unterschiedlichen Lastkapazitäten (für den Ausdruck Ziehkondensator 
wurde mir hier der Hintern versohlt) würde man den schwerlich auf genau 
16 MHz ziehen können.

50 ppm entsprechen einer Gangungenauigkeit von 4,32 Sekunden am Tag 
(ergo ca. 2 Minuten im Monat), was den gängigen (miesen) Uhren so 
entspricht.

Entweder arbeitet man hier mit einer hochgenauen Zeitbasis oder fügt in 
der Software einen Fehlerausgleich für die Gangungenauigkeit des Quarzes 
ein.

von 900ss (900ss)


Lesenswert?

Peter D. schrieb:
> RX8010SJ

Interessant, danke :)

von Mi N. (msx)


Lesenswert?

Christian schrieb:
> Mi N. schrieb:
>> Eine Ganggenauigkeit < 1 ppm ist recht einfach blablabla
>
> Wie kommst du auf so einen Blödsinn? Hast du überhaupt jemals von
> Temperaturstabilität und Alterung gehört? Oder gehts dir nur um die
> Messung, die du direkt nach dem Kauf mit einem Exemplar in deinem 20-25°
> Zimmerchen anstellst?

Ein einfacher TCXO liefert das. Na gut, 2 - 3 Euro muß man schon 
investieren.

> Schmeiss hier nicht mit Worten um dich, von denen du nichts verstehst.
>
> Auf die 1ppb gehe ich der Höflichkeit halber einfach mal nicht ein.

Bleib mal ganz ruhig, Alter. Die Probleme, die Du mit dieser Stabilität 
vielleicht hast, haben andere längst gelöst.
Bauanleitungen für passende Frequenzzähler findest Du übrigens bei mir.

von Ralph S. (jjflash)


Lesenswert?

Peter D. schrieb:
> Z.B. der RX8010SJ ist recht günstig und mit 5ppm schon recht genau.

... kannte ich noch nicht und habe ich mir jetzt einmal bestellt.

Danke für den Hinweis !

Beitrag #7782059 wurde vom Autor gelöscht.
von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

So, auch wenn das wohl etwas "spät" im Thread jetzt ist, hat es mich 
doch "gepfupfert" gehabt, eine LED-Uhr aufzubauen (und witzigerweise 
habe ich festgestellt, dass ich eine 7-Segmentanzeigen-Uhr niemals 
"fertig" gemacht hatte, immer nur "BCD-Uhren").

Also: 7-Segment-Uhr mit ATmega328p die Hundertausendste!

Auch wenn das in der Rubrik "Projecte & Code" wohl besser passen würde, 
poste ich das hier zum Thema, weil ich denke, dass es 7-Segmentuhren 
wohl irgendwo zu Hauf geben wird und "meine" Uhr ist dann wohl die 
10.001 ... oder auch 100.001 (wie auch immer).

Ich habe jetzt mal im Schnelldurchgang versucht, die Uhr (und die 
Funktion) zu beschreiben, damit der TO hier evtl. doch etwas damit 
anfangen kann, auch wenn "meine" Uhr wohl nicht der klassischen ersten 
Uhr entspricht, die man so programmiert.

Diese Uhr hier hat eine Kalibrierfunktion, um die Ungenauigkeit des 
Uhrenquarzes (ich verwende einen 32.768 kHz Quarz und leite den 
Uhrentakt NICHT vom Takt des Systems ab) auszugleichen.

Die Uhr hier kann:

- auch Datum anzeigen
- Helligkeit der Anzeige variieren
- den Anzeigemodus wechseln (Uhrzeit permanent, Uhrzeit / Datum im 
Wechsel)

Alexander H. schrieb:
> Wahnsinn, wie man eine Uhr alternativ auch noch bewerkstelligen kann.
> Mir würde aber ein genauer (Uhren-)Quarz zur Takterzeugung oder ein RTC
> (teilweise störanfällig?) ausreichen.
> Die Ausgabe soll in HH-MM-SS erfolgen (ein 8 digit display).
> Die Anzeige von Datum, evtl. Countdown und Stoppuhr wären natürlich auch
> klasse. Leider sind die im Netz präsentierten Uhren öfters
> fehlerbehaftet, laufen zu schnell/zu langsam (wie man manchmal auf Blogs
> lesen kann).
>
> Ob Attiny26 oder Atmega328 ist eigentlich egal. Wenn möglich wollte ich
> den Atmega328 nehmen, da dann externe Ansteurungs ICs entfallen.

Mit "Ansteuerung-IC" wie bspw. TM1637 wäre es weniger Aufwand als so. 
:-) um es gaaaaaanz richtig zu machen (hier wird es nicht so wirklich 
gerne gesehen, wenn treibende Multiplex-Pins direkt an einen Controller 
OHNE Transistoren gehängt wird, habe ich das jetzt mal wirklich 
hochklassisch mit Transistoren für Digits und Segmente gemacht).

Wenn du hier noch mitliest: Schau es dir an (und den Code auch).

von Ralph S. (jjflash)


Lesenswert?

... und wieder einmal... hat sich ein Fehler eingeschlichen (sehe ich 
gerade)!

Der Kommentar zu

ISR (TIMER1_COMPA_vect)

mpx_6digit.c

ist falsch. Dieser stammt noch aus einem Frequenzzählerprojekt. Die 
Funktion des Interruptvektors hingegen ist jedoch korrekt. Er macht 
nichts anderes, als den Framebuffer der Anzeige anzuzeigen (was auch 
sonst).

von Alexander H. (alexander_h732)


Lesenswert?

Hallo Ralph, das ist ja der Wahnsinn.
Super Projekt! Ich bin seit vorgestern dabei, alles durchzulesen und 
versuche, nach und nach zu verstehen.
Die Erläuterungen/Dokumentation die du  gemacht hast ist genial. Genau 
das fehlt eigentlich immer(wahrscheinlich weil die Ersteller oft keine 
Anfänger mehr sind.)

Ich hab mittlerweile auch ein Nachbauprojekt für die Weihnachtszeit 
gefunden, das scheinbar relativ gelingsicher dokumentiert ist.

Beitrag "Schaltplan für IW-18 Uhr mit zwei UDN2981"

https://www.makerconnect.de/index.php?threads/iw-18-mit-zwei-udn2981.1835/

Seit Jahren liegt bei mir eine IV-18 VFD Röhre rum und hier hat jemand 
mit Atmega16 und zwei UDN2981 (oder TD62783AP) eine schöne Uhr gebaut 
(inkl. Datum, Jahr, Wochentag).
Auf Youtube sieht man eine alte und neue Version (Atmega8).

http://www.youtube.com/watch?v=5QCuKnXRlOg

https://m.youtube.com/watch?v=9xnal4g3nq4

Das hexfile ist wohl für die ältere Version mit Mega16.
Ich frag mich, ob es (ohne großen Aufwand) möglich wäre, die firmware 
der Uhr auf Atmega8 umzuschreiben, denn der Ersteller hat im Thread auch 
den Bascom Code eingestellt.
Müssten die Inputs/Outputs nicht in diesem Bascom file definiert sein, 
d.h. man könnte sie für Atmega8 passend ändern und dann neu als .hex 
kompilieren?
Oder ist das viel schwieriger als ich denke?🤔

Beim Atmega16 wären immerhin 11 I/Os unbeschaltet, beim Atmega8 nur 
drei, wenn ich das richtig sehe.

: Bearbeitet durch User
von Alexander H. (alexander_h732)


Lesenswert?

Was braucht man denn alles, um aus dem Bascomcode eine .hex-Datei zu 
kompilieren?
Ganz am Anfang sehe ich
$regfile = "m16def.dat"
Dort müssten doch die I/Os festgelegt sein, oder? Ist das eine weitere 
Datei, die benötigt wird?

von Mi N. (msx)


Lesenswert?

Alexander H. schrieb:
> Ich hab mittlerweile auch ein Nachbauprojekt für die Weihnachtszeit
> gefunden, das scheinbar relativ gelingsicher dokumentiert ist.

Bitte mache es nicht! Die Beiträge sind von 2011 mit exotischen 
Gurkenteilen. Du hast hier einige Empfehlungen bekommen, die allesamt 
besser umzusetzen sind.

von Ralph S. (jjflash)


Lesenswert?

Hm, irgendwie beschleicht mich das Gefühl (eigentlich schon etwas mit 
dem Eröffnungsthread), dass der TO - sagen wir es nett - etwas 
Schabernack mit uns treibt:

Hier will er eine Uhr mit ATtiny26 aufbauen, weil er viele ATtiny26 hat, 
Zitat:

Alexander H. schrieb:
> In der Bastelkiste liegen mehrere Attiny26 und pinmässig (und
> grundsätzlich) dürfte sich der ATTiny auch für eine Uhr eignen, oder?

In einem Nachbarthread möchte er welche kaufen:

Beitrag "Suche Attiny26L-8SU (NOS)"

Wie dem auch sei.

Alexander H. schrieb:
> Die Erläuterungen/Dokumentation die du  gemacht hast ist genial. Genau
> das fehlt eigentlich immer(wahrscheinlich weil die Ersteller oft keine
> Anfänger mehr sind.)

:-) danke für die Blumen, aber "genial" ist anderst. Die Erläuterungen 
sind aus einzelnen Projekten zusammengeschrieben und leider finde ich 
die Original Officedateien nicht mehr, aus denen ich PDF erstellt hatte. 
Andererseits mag ich (aus welchen Gründen auch immer) reine Textdateien 
lieber, weil ich die dann auch als Kommentar in die Quelltexte einfügen 
kann. Normalerweise schreibe ich zu den einzelnen Funktionen in meinen 
Quelltexten auch gleich die Funktion als "Dokumentation" mit rein, von 
daher ist es sicher keine schlechte Idee, die Quelltexte anzusehen.

Alexander H. schrieb:
> Ich hab mittlerweile auch ein Nachbauprojekt für die Weihnachtszeit
> gefunden, das scheinbar relativ gelingsicher dokumentiert ist.
>
> Beitrag "Schaltplan für IW-18 Uhr mit zwei UDN2981"
>
> https://www.makerconnect.de/index.php?threads/iw-18-mit-zwei-udn2981.1835/
>
> Seit Jahren liegt bei mir eine IV-18 VFD Röhre

Du hast wirklich eine solche Röhre rumliegen? Ich habe auch noch eine 
(mehrere hatte ich vor Jahren schon entsorgt, genauso wie ein paar VFD 
Displays ... und ärgere mich heute über das Entsorgen).

Mit einer reinen Röhre (ohne die Controller und ohne die hohe 
Spannungserzeugung von ca.30V) ist so ein Nachbau sicherlich nicht 
gelingsicher nachbaubar. Alleine aus 5V mittels eines MC34063 etwa 25V 
zu produzieren ist nicht so ganz so lustig (an die "Nörgler": ich weiß 
dass das funktioniert).

Alexander H. schrieb:
> d.h. man könnte sie für Atmega8 passend ändern und dann neu als .hex
> kompilieren?
> Oder ist das viel schwieriger als ich denke?

Erst wolltest du das mit einem ATtiny26 machen, dann hattest du dich auf 
einen ATmega328 festgelegt und jetzt möchtest du das mit dem wirklich 
sehr alten ATmega8 machen (der, wenn man den kaufen muß, deutlich teurer 
als ein 328er ist).

Zudem: wolltest du nicht das "Uhrwerk" im Controller bewerkstelligen. 
Das von dir verlinkte Projekt verwendet einen DS1307 als RTC 
Uhrenbaustein, für den gelinde gesagt einiges gemacht werden muß 
(Hardware- und Softwareseitig) bis das Teil genau geht. Ein DS3231 
funktioniert hier deutlich einfacher und läuft genauer, bei gleichen 
Steuerbefehlen.

Wenn es zudem keine Single-Chiplösung mit nur dem Controller als 
einzigem IC sein muß, kannst du dir aus dem Projekt Anleihen nehmen, um 
diskrete Transistoren durch Transistorarray zu ersetzen. Hier der 
UDN2981 als High-Side-Schalter für die Digits und einen ULN2804 als 
Low-Side-Schalter für die Segmente.

Alexander H. schrieb:
> Was braucht man denn alles, um aus dem Bascomcode eine .hex-Datei zu
> kompilieren?

Vor allen Dingen benötigt es den Bascom-Compiler (der -ich habe gerade 
nachgesehen- sein letztes Update in 2016 hatte), der nicht kostenfrei 
ist und es nur eine kostenfrei Demo-Version mit einer 
Codegrößenbeschränkung von 4kByte gibt. Der Full-Version Compiler kostet 
über 100€ !!! (im "Arduino-Zeitalter" wundert es mich, dass so etwas zu 
so einem Preis noch verkauft werden kann).

Alexander H. schrieb:
> $regfile = "m16def.dat"
> Dort müssten doch die I/Os festgelegt sein, oder? Ist das eine weitere
> Datei, die benötigt wird?

Natürlich ist das eine weitere Datei, die benötigt wird und die von 
Bascom zur Verfügung gestellt wird.

Alexander H. schrieb:
> Müssten die Inputs/Outputs nicht in diesem Bascom file definiert sein,
> d.h. man könnte sie für Atmega8 passend ändern und dann neu als .hex
> kompilieren?
> Oder ist das viel schwieriger als ich denke?

Für einen "Nicht-Anfänger" dürfte das nicht viel schwieriger sein, für 
Dich glaube ich jedoch schon.

Versuche das ganze doch in C (oder auch mit C++ und mit Arduino) zu 
machen, da gibt es - wenn es dir ernst ist - aus dem Netz deutlich mehr 
Unterstützung als mit Basic.

Wenn dir die Anzahl der Transistoren und Widerstände in meiner 
"Uhrenschaltung" zu viel sind (mir sind es zu viele), dann denke doch 
noch einmal über Anzeigentreiber nach (deines Projektes wegen sortiere 
ich gerade meine Sourcen zu diversen Treibern und versuche die in eine 
einzige .h / .c Kombination zu bringen).

Beitrag "TM1637, 4-stellige LED 7-Segmentanzeige mit AVR-GCC"

Den Code aus obigem Link habe ich mittlerweile erweitert (eben auf 
6-stellige Anzeige und das Lesen von gemultiplexten Tasten).

Für dich zum Testen, Spielen und Ausprobieren wäre das hier nützlich 
(wohl aber nicht vor Weihnachten bei dir):

https://www.ebay.de/itm/404308959588?_skw=tm1638&itmmeta=01JEAV5Z5A5XEGM5CAMMNDP6RP&hash=item5e22b12164:g:IKkAAOSwhBJkcv1W&itmprp=enc%3AAQAJAAAAwHoV3kP08IDx%2BKZ9MfhVJKnC91Ncub%2F5fubR4yGX2AxUe8nLbCHNlY67JMfY7L%2Bt44o7j9wELllPR9CLClWT%2FqCUqv1andzkqvgsVq%2BU8H0p%2B%2Fhsm6e8r2WHaTyXk5Ybgm9kamkF8pBCuzHJ08pkzQnN5PIBRxtCafUKY2gO33JpRZ0EYvW7o490JunragY%2FQcA%2F1yEvl8SiHq%2FNYzl4Sr9NOwzeI6SkJOF46QBKiJPhLySwfV2StFmcKkkgXbT6cQ%3D%3D%7Ctkp%3ABk9SR97yl9vyZA

Wenn es Dir ernst ist mit Deinem Uhrenprojekt: Gutes gelingen.

von Ralph S. (jjflash)


Lesenswert?

Wußte ich es doch, dass ich das hier einmal eingestellt hatte:

Code für TM1637 6-stellig mit Tasteneinlesen, wenn auch für ATtiny44:

Beitrag "Siebensegment und Tasten ansteuern mit TM1651 \ TM1637"

von Alexander H. (alexander_h732)


Lesenswert?

Bevor ich mir überhaupt Teile für den Nachbau zulege, muss ich  mir 
sicher sein, dass es funktioniert.
Daher fand ich die IV-18 Uhr mit Mega16 und dem Transistorarray 
(TD62783AP als Treiber-IC) ziemlich gut. Exotisch (und ungünstig) aus 
heutiger Sicht ist wohl der Bascomcode.

Ein weiteres, schön umgesetztes Projekt ist das hier:
http://robocua.blogspot.com/2017/11/blog-post.html?m=1

Da hätte ich einen Atmega8(alle I/Os belegt) mit RTC (DS1307) und 
Thermometer (DS18B20), Alarm und Helligkeitsregelung. Dazu sind die 
Menüs noch richtig gut gemacht mit Scrollingeffekt. Man könnte aber ein 
Transistorray statt Einzeltransistoren verwenden.

: Bearbeitet durch User
von Jens M. (schuchkleisser)


Lesenswert?

Alexander H. schrieb:
> Exotisch (und ungünstig) aus
> heutiger Sicht ist wohl der Bascomcode.

Die Demo kommt mit "compiles up to 4kB binary code"...
Vielleicht reicht's.

von Joachim B. (jar)


Lesenswert?

Ralph S. schrieb:
> Alleine aus 5V mittels eines MC34063 etwa 25V
> zu produzieren ist nicht so ganz so lustig (an die "Nörgler": ich weiß
> dass das funktioniert).

ist simpel und leicht möglich, mit in Reihe geschalteten SIM1 05/24 4-5 
Stück für 96V-120V. Für so Kleinigkeiten macht man doch keine 
Experimente.

von Ralph S. (jjflash)


Lesenswert?

Alexander H. schrieb:
> Da hätte ich einen Atmega8(alle I/Os belegt) mit RTC (DS1307) und
> Thermometer (DS18B20)

Wenn Du eine genaue Uhr haben möchtest, vergiß den RTC DS1307... ehrlich 
... und verwende DS3231.

Thermometer DS18B20 kann meine Uhr jetzt auch.

Hm, ich glaube ich melde mich hier einmal ab, denn du machst immer 
wieder neue Baustellen auf!

Lerne einfach, wie Mikrocontroller funktionieren, anstelle einfach stur 
etwas (auch die Hardware) nachbauen zu wollen, die Software einzusetzen 
(die du nicht verstehst).

Grundsätzlich hätte ich dir angeboten gehabt (jetzt allerdings nicht 
mehr), dir eine Platine eines älteren Projektes von mir zu verwenden 
(das war mein Kosmos CP1 Clone hier), der einen 7-Segmentanzeigentreiber 
auf der Platine hat, eine USB2UART Bridge, mit der du dann das Teil 
sogar mit Arduino hättest programmieren können und insgesamt 11 Tasten 
und darauf habe ich jetzt auch eine Uhr am laufen.

Bau Du deine Sachen und verwende Bascom (wenn du Glück hast, passt dein 
Code in die 4 kByte Speicher die der Demo-Compiler kann).

Gruß,
JJ

von Joachim B. (jar)


Lesenswert?

Ralph S. schrieb:
> Wenn Du eine genaue Uhr haben möchtest, vergiß den RTC DS1307... ehrlich
> ... und verwende DS3231.
>
> Thermometer DS18B20 kann meine Uhr jetzt auch

+1

von Alexander H. (alexander_h732)


Lesenswert?

„ Wenn Du eine genaue Uhr haben möchtest, vergiß den RTC DS1307... 
ehrlich ... und verwende DS3231.“

Ja, ich bin mittlerweile auch darauf gekommen, dass der DS3231 am besten 
funktioniert. Die ursprüngliche Version der verlinkten Uhr läuft auch 
mit DS3231 statt DS1307.😀👍

Bin gerade dabei, ein eigenes Layout zu erstellen und mir fiel auf, dass 
man bei VFDs immer wieder über unterschiedliche Treiber ICs diskutiert.

Es gibt ja sink/source (highside/lowside) zB. TD62083AFN oder TD62783AP 
(Darlington-/Transistorarrays) mit und ohne Diode an den Ausgängen.
Dann gibts spezielle VFD Treiber wie den UDN6118 mit pull-down 
Widerständen an den Ausgängen.
Aber zu funktionieren scheint fast alles.
Was benötige ich in meinem Fall:
http://robocua.blogspot.com/2017/11/blog-post.html?m=1

Einen sink- oder einen source Treiber?
Wäre der UDN6118 ein guter Kandidat?

Kann jemand aufklären, was technisch besser geeignet ist, bzw. welche 
Effekte auftreten könnten (ghosting von nicht angeschalteten Ziffern 
evtl.?)?

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Alexander H. schrieb:
> Was benötige ich in meinem Fall:
> ...
> Einen sink- oder einen source Treiber?

Du bist ein sehr spezieller Fall, darum ist es egal :-(

von Alexander H. (alexander_h732)


Angehängte Dateien:

Lesenswert?

Um meine Frage zu konkretisieren:
Ich habe 2xUDN6118 da, die ich gerne statt den 17× BC857 nehmen würde.
Geht das einfach so?

Die 2x UDN6118 reichen nicht aus.
Daher muss ich für das neunte Gitter einen (Einzel-)Transistor nehmen.
Die Variante mit BC857 ist schön kompakt, vorallem im Gegensatz zum 
Aufwand, einen Kanal des UDN6118 diskret aufzubauen.
Es gibt aber tausend Varianten, wenn man danach googelt.
Wie würdet ihr das machen?

Kann mir einer erklären, was die Z-
Diode (5,1V) zwischen der Mittelanzapfung der Heizspannung und der 
Gitter-/Anodenspannung bewirkt?

von Ralph S. (jjflash)


Lesenswert?

... und woher weißt du, welchen Übertrager Trafo du dafür brauchst... 
und wieso der Schwingungssignale erzeugt? Ah, okay, bau halt einfach 
irgendwelche Trafos ein, wird schon funktionieren!

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


Lesenswert?

Alexander H. schrieb:
> Diode (5,1V) zwischen der Mittelanzapfung der Heizspannung und der
> Gitter-/Anodenspannung bewirkt?

Das VFD ist eine Röhre, bei der der Heizfaden gleichzeitig die Funktion 
der Kathode übernimmt. Wie immer bei einer Röhre muss die Kathode 
negativ vorgespannt werden, damit die emittierten Elektronen dann vom 
positiven Grid und Segment angezogen werden und das Segment leuchten 
lassen. Im Vergleich mit der Röhre ist also das Grid das Steuergitter 
und das Segment die Anode.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Alexander H. schrieb:
> Kann mir einer erklären, was die Z-
> Diode (5,1V) zwischen der Mittelanzapfung der Heizspannung und der
> Gitter-/Anodenspannung bewirkt?

Die soll dafür sorgen, daß die Elektroden ausgeschaltet leicht negativ 
sind, d.h. sicher sperren. Ansonsten könnte Ghosting auftreten.

von Andrea B. (stromteam)


Lesenswert?

Ralph S. schrieb:
> Bau Du deine Sachen und verwende Bascom (wenn du Glück hast, passt dein
> Code in die 4 kByte Speicher die der Demo-Compiler kann).

Bascom hat für eine Uhr incl. DCF77 alles dabei und kann schnelle 
Erfolge liefern, die Uhr sollte in der Demo Version laufen.

Benutze ein Breadboard und fang klein an:
- Hello world
- Hello World mit Taster Abfrage
- 7-Segmant Anzeige zählen lassen
- ...
- Uhr mit vier Stellen
- ...

Je höher der Anspruch beim Enstieg desto größer kann der Frust sein und 
für ein Ende der Aktivitäten bezüglich µC sorgen.

Was nützt es dem TO wenn es nicht funktioniert und er nicht feststellen 
kann ob er ein Hardware oder Software Problem hat?

von Ralph S. (jjflash)


Lesenswert?

Andrea B. schrieb:
> Bascom hat für eine Uhr incl. DCF77 alles dabei und kann schnelle
> Erfolge liefern, die Uhr sollte in der Demo Version laufen.

Was nutzt es einem Anfänger, einfach einen Code einzubinden und laufen 
zu lassen ohne diesen zu verstehen? Wenn auch DCF77 nicht so ganz so 
schwierig ist, (je nach Einstiegshöhe) ist es eben für einen Anfänger 
eben doch "undurchsichtig".

Ursprünglich ging es hier einmal um eine Uhr mit ATtiny und 7-Segment 
LED Anzeigen.

Der Controller wurde gewechselt, die Anzeige wurde gewechselt.

Andrea B. schrieb:
> Je höher der Anspruch beim Enstieg desto größer kann der Frust sein und
> für ein Ende der Aktivitäten bezüglich µC sorgen.

Deswegen steigt man ja auch gleich mit DCF77 ein !!!

Andrea B. schrieb:
> Was nützt es dem TO wenn es nicht funktioniert und er nicht feststellen
> kann ob er ein Hardware oder Software Problem hat?

Deswegen verwendet man DCF77 !!!

Andrea B. schrieb:
> Benutze ein Breadboard und fang klein an:
> - Hello world
> - Hello World mit Taster Abfrage
> - 7-Segmant Anzeige zählen lassen
> - ...
> - Uhr mit vier Stellen
> - ...

Das stimmt komplett und es ist vollkommen Wurst, mit welcher Sprache man 
das macht. Aber der TO will das eben nicht. Momentan ist er in seine 
VFD-Röhre verliebt !

Wie war das noch einmal mit dem Fehler in Hardware oder Software ???

----------------------------------------------------------------------

Ich finde diesen Thread hier zum Mitlesen dennoch spannend, weil es hoch 
interessant ist, was denn alles zum Thema "gemeint" wird, wohin alles 
abschweift ... und ob der TO sich noch einmal meldet ! (am spannensden).

von Alexander H. (alexander_h732)


Lesenswert?

Bin grad am Locherasteraufbau.
Eine Frage zum Thema Multiplexing mit PNP/NPN hab ich noch.
Die IV-18 Schaltung schaltet die -21V für Gitter/Segmente mit BC557 
(PNP).
Wenn ich NPN Transistorrays (wie UDN6118) nehmen will, müsste ich dann 
zwingend die Signale in Software invertieren, oder geht das auch anders 
(Anoden/ Gitter umpolen?) bzw. gibts für den Fall irgendeinen Trick?
Oder würde das Ganze einfach so laufen, ohne Änderung?
Die Invertierung mittels Einzeltransistoren scheidet natürlich aus.

Die Spannungserzeugung (AC Heizung und 20V DC) hab ich übrigens mit 
LM9022 (LM4871) gemacht, so wie im Datenblatt. Läuft gut.👍🙂

: Bearbeitet durch User
von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Herjeh, ich werde mir selbst untreu und schreibe hier jetzt doch noch 
einmal etwas zum Thema (Erklärung): Das nennt man bei mir wohl 
"Ausbilderkrankheit".

Zu allererst einmal so die Frage (vorrausgesetzt Du hälst uns hier alle 
nicht zum Narren):

Hast du diese Teile so einfach rumliegen? Ich weiß nicht, wann ich das 
letzte mal einen UDN6118 in freier Wildbahn gesehen hatte und wann ich 
einen solchigen benötigt habe. Wenn ich das richtig erinnere, dann hatte 
ich den nur für Reparaturzwecke in der Hand. Wie dem auch sei: Du 
solltest Dir vielleicht einmal grundlegende Dinge zur Elektronik 
aneignen, denn Transistoren und Transistorarrays (und wie sie 
funktionieren) gehört hier zum Handwerkszeug (Bipolare und Unipolare).

Alexander H. schrieb:
> Wenn ich NPN Transistorrays (wie UDN6118) nehmen will, müsste ich dann
> zwingend die Signale in Software invertieren, oder geht das auch anders
> (Anoden/ Gitter umpolen?) bzw. gibts für den Fall irgendeinen Trick?
> Oder würde das Ganze einfach so laufen, ohne Änderung?

Ich beziehe mich im Folgenden auf den Schaltplan der Röhre aus Deinem 
Posting:

Beitrag "Re: LED-Uhr mit Attiny26"

Um meine Erklärungen vorwegzunehmen: Ich glaube nicht (d.h. ich weiß es 
nicht), dass du die PNP Transistoren durch einen UDN6118 an dieser 
Stelle ersetzen kannst, wenn ja, muß der Pegel in Software geändert 
werden.

Vorneweg:

- alle einzelnen Segmente der Röhre liegen auf ca. -20V
- mit den einzelnen PNP-Transistoren können +5V auf jedes einzelne 
Segment gegeben werden.

Wann wird nun ein PNP-Transistor leitend? Dann, wenn ein Strom aus der 
Basis herausfließen kann (oder auch technisch ausgedrückt ein negativer 
Strom in die Basis fließt). Typischerweise wird ein solcher Strom gegen 
Ground (oder auch gegen eine negative Spannung) fließen. D.h. dass ein 
steuernder Controller einen 0-Pegel hat, der Basisstrom des PNP in den 
Controllereingang fließt, Controller schaltet somit Lo-Side.

Ergo: es wird eine 0 benötigt um deinen PNP zu schalten, damit der +5V 
an ein einzelnes Segment anlegen kann.

Was macht nun der UDN6118?

Wieder vorneweg: er benötigt einen High-Pegel um eine Spannung an seinen 
Ausgang zu legen (könnte man nun einfach so stehen lassen und das hätte 
man aus dem Datenblatt so auch herauslesen können). Ein einziger Blick 
auf die Innenbeschaltung (nennt sich im Datenblatt "PARTIAL SCHEMATIC - 
ONE DRIVER" ) hätte das auch gezeigt.

Ich habe Dir das mal herauskopiert und die Innenbeschaltung bearbeitet 
(siehe Anhang).

Grundsätzlich: Die minimale Betriebsspannung des UDN6118 beträgt 5V !!! 
Du bewegst dich hier also an der untersten Grenze dessen was Du machen 
möchtest.

Zur Funktionsweise:

T4 und T5 bilden eine Darlingtonschaltung in Kollektorschaltung. Hier 
gilt, dass eine U_ce von 2 * U_be nicht unterschritten werden kann. D.h. 
dass du hier mindestens einen Spannungsabfall von 1V, eher 1,3V bis 1,4V 
hast. Um diese Spannung wird die Ausgangsspannung geringer als die 
Betriebsspannung sein.

Sieh dir das bild an und du wirst sehen: Bei einem Eingangspegel von 0V 
sind alle Transistoren gesperrt und der Ausgangspegel ist 0V. Das ist 
dann hier auch die Crux bei der ich mir nicht sicher bin ob ein UDN6118 
in der von dir gezeigten Schaltung als Ersatz für die PNP-Transistoren 
funktioniert. Begründung: Schaust du dir das Innenschaltbild an, so 
liegt der Ausgang nun über einen 125k Widerstand gegen Masse. Das dürfte 
reichen um das einzelne Segement anzusteuern, welches über einen 300k 
ansonsten auf -20V liegt. Du möchtest hier allerdings entweder +5V oder 
-21V haben !!!!

Legst du an den Eingang des UDN6118 einen High-Pegel (lt. Datenblatt ist 
die "Input ON Voltage" von 2,4V .. 15V gegeben) so wird T2 leitend. T1 
begrenzt die Basisspannung von T2. Dadurch dass nun T2 leitend ist, kann 
der Basisstrom von T3 über einen Widerstand, C-E Strecke T2 und R_e 
abfließend und ist somit leitend und versorgt die Darlingtonkombination 
von T4 / T5 mit einem Basisstrom, womit dieser auch leitend wird.

Schau dir das Bild hier im Anhang an und probiere eine einfache 
Simulation im Falstad-Online Simulator:

https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWcMBMcUHYMGZIA4UA2ATmIxAUgoqoQFMBaMMAKABcQ9jCQUEfiKPL35RwIBjATZpGPFwAsWBMTDyo0BVoWFsKHbkJwMC5FQAmdAGYBDAK4AbNu057eCqnkKn9VKhElYBCUcHC8EDDBcYmEYBTxIIwQwfmY8OTkkMDgQS1tHZwB3Tm8RHnkqPh5IFmKvH30QQWEURpri5t5Gzt8oWqahLtNOsCM+jhweVtM5BtMqJgk4hWx5bIxiJQVpVVNAhRjCYLw1KNGMSAhsi2t7J37Z909Rp77ix7RhR9G-FgAnTgvXonHi4ea8C5wfog154Ny9GoAiogMGcBIowixcCUKF1F6o5Go9poqgE9FVN4DFoYFBUjGxaHk0RcKaiYnfMYjMbEwmYunYPmI-l8zpaLFgPjwfqdAXCa7CWV9AGTIYgFU-MS4KXvAXgMYc37K3XTNW6vR+EAeKETSCmbC6lX26riBjYaAyYgIOHYZhyIRKbAaA7YGICwg07ZgGK2sy5W4Ff6m0F4Ga6sWanHstPxNUpy05mo2u158O01bggJxYghuGEUuR6PzaD8LiCNLcSMpWN5O5FNUx8tJlF5rPJ1OghC04ml+kgGdOynzh0D3XTmmWnIz9Nr2nplXb-pLniERoLoUnu26i-5rFa3FzxrprcFxPBS-H0+rsxQgAec7hlpqP2EAKCgIHgKYAAqrB-iYoIhmqpTYKBloQSAkEoCwsHcF0zwNIGphgFB2BYSUgZgYGay8C8hFQQopHVuQfDCJ6SBEOBRHoQgDy6hqb56r8ABKFBaAJFASmJFoeNQFpSCwwn8QuyRll+VDSUgsnNiwADmQ57mmpS-DqY65sW8wPHm6aii+AAOpnDjMlk5oG-jfvAxLWXKcDCAednyrO-npi54jXO5NSwTkKxfEBWgcaYgl0Ien48PwpIjiwdmpQ5FBjEFYhXGF95ZU+j4vn+hAvMwxBNJO4CtKhjQAKoACIAHIVWoAA6ADOACSAB2-V0P1ABGdDdQAxgAFjYTh2P12ksKs+YgAAYhAFpoBIECNT1A02XYzjLSsa0bdQW2LAAQnQbB-AAlnQI3dd1Nk2IN82LUAA

Dort kannst du auf der rechten Seite die Eingangsspannung und die Input 
Voltage mit den Schiebereglern variieren und sehen was passiert!

von Axel S. (a-za-z0-9)


Lesenswert?

Alexander H. schrieb:
> Eine Frage zum Thema Multiplexing mit PNP/NPN hab ich noch.
> Die IV-18 Schaltung schaltet die -21V für Gitter/Segmente mit BC557
> (PNP).

Nicht minus 21V. Plus 21V. Den Anhang im komischen Maker-Forum kann 
ich nicht sehen. Aber wenn überhaupt, dann liegt die Glühkathode auf 
-21V und die Gitter/Anoden werden von den Transistoren auf GND bzw. wohl 
eher +5V geschaltet und von Pulldown-Widerständen auf -21V gezogen.

> Wenn ich NPN Transistorrays (wie UDN6118) nehmen will, müsste ich dann
> zwingend die Signale in Software invertieren, oder geht das auch anders

Das geht gar nicht. Damit die Anoden leuchten, muß Strom in sie hinein 
fließen und in die Gitter auch. Das Netz sagt für die IW-18 ca. 11mA pro 
Gitter und 8mA für alle 7 Segmente. Wenn die Anoden aus sind fließt 
hingegen praktisch kein Strom (auch nicht in das Gitter). Deswegen ist 
nur PNP + Pulldown praktisch verwendbar. Im Prinzip ginge auch NPN + 
Pullup, aber dann müßte man die Widerstände viel niederohmiger machen 
und würde mit einer Heizung enden.

Warum versuchst du auf Teufel komm raus eine Uhr mit esoterischen 
Bauelementen wie einem VFD zu bauen? Wenn du das willst, dann geh auch 
den ganzen Weg und nimm die richtigen Treiber dafür!

von Ralph S. (jjflash)


Lesenswert?

Nachtrag:

Als Ersatz für die "unteren" PNP in deiner Schaltung VT13 bis VT20, die 
die Digits von GR1 bis GR9 ansteuern, wird der UDN6118 wohl 
funktionieren (allerdings auch hier mit einer softwareseitigen 
Invertierung des Steuersignals)

von Ralph S. (jjflash)


Lesenswert?

Axel S. schrieb:
> Warum versuchst du auf Teufel komm raus eine Uhr mit esoterischen
> Bauelementen wie einem VFD zu bauen?

Weil er scheinbar diese Röhre liebt !

von Ralph S. (jjflash)


Lesenswert?

Axel S. schrieb:
> Nicht minus 21V. Plus 21V. Den Anhang im komischen Maker-Forum kann
> ich nicht sehen. Aber wenn überhaupt, dann liegt die Glühkathode auf
> -21V und die Gitter/Anoden werden von den Transistoren auf GND bzw. wohl
> eher +5V geschaltet und von Pulldown-Widerständen auf -21V gezogen.

ganz genau das. Bei Verwendung mit UDN6118 wird das jedoch verhindert 
und mit 125k Widerständen nur auf 0V gezogen.

von Ralph S. (jjflash)


Lesenswert?

Axel S. schrieb:
> Wenn du das willst, dann geh auch
> den ganzen Weg und nimm die richtigen Treiber dafür!

Vor allen Dingen: Wenn man davon ausgeht, dass die Schaltung so wie er 
sie angegeben hat auch funktioniert (mit diskreten Transistoren), warum 
müssen die - um es mit Deinen Worten zu sagen - "auf Teufel komm raus" 
nun durch einen - ungeeigneten - Treiber ersetzt werden. Bei dem 
ursprünglichen Vorhaben wollte er für eine LED-Anzeige partout keine 
Treiberbausteine verwenden.

Jetzt müssen es partout welche sein !

von Alexander H. (alexander_h732)


Lesenswert?

Die UDN6118 stammen von Ebay und waren ursprünglich auch mal für die 
IV-18 gedacht. Verbaut waren sie wohl früher oft in Displays von 
Pinball/Flipperautomaten.
Richtige Treiber ICs mit serieller Schnittstelle (die meinte ich) sind 
das ja auch nicht, wie einige Maxim ICs.

Also muss ich per Software invertieren, sonst bekäme ich quasi ein 
umgekehrtes Bild.
Die original Uhr ist hier zu sehen:
https://radiokot.ru/circuit/digital/home/215/
Ganz unten sind auch Software (hex und Quellcode (codevisionAVR 
compiler) angefügt.
Eigentlich dürfte die Invertierung nicht viel Aufwand sein (wenn man 
weiß, wo man ansetzen muss🙂), oder?
Vielleicht benutzt hier jemand cvavr und könnte mal in den Quellcode 
schauen.
Den Quellcode kann man wohl auch nur mit dem jeweiligen Compiler 
öffen/editieren nehme ich an?

: Bearbeitet durch User
von Ralph S. (jjflash)


Lesenswert?

Du kannst nicht lesen, und (schriftliches) hören auch nicht !!!!

Und dann läßt du eine Salamitaktik heraus, bei der du nach und nach 
deine Quelle angibst (und hier dazu auch noch russisch).

Also:

Du hast schon wieder einmal den Controller gewechselt, jetzt soll es der 
alte ATmega8 sein (zumindest ist das der in der Originalschaltung). Hier 
ist anzumerken: Auch wenn der Mega328 fast alles mitmacht, was der M8 
macht, so unterscheiden sie sich eben doch (und sei es nur in den 
Timerbezeichnungen).

Der ATmega8 hat andere Fuse-Einstellungen als der Mega328 (wäre 
allerdings auch kein wirkliches Problem), der ATmega8 läuft in der 
Schaltung mit 8MHz internem Takt.

Nächstes: Der verwendete Compiler ist ein C-Compiler, aber es ist nicht 
der AVR-GCC mit dem in aller Regel zumindest hier gearbeitet wird. Auch 
der Code nach AVR-GCC zu portieren ist noch machbar (allerdings glaube 
ich nicht von dir).

Die Originalschaltung verwendet (wie von mir oben bereits empfohlen) 
einen DS3231 RTC-Chip.

Für diesen hat der gute Russe jedoch weder den Quellcode für den Chip 
selbst mit in sein Archiv gepackt #include <ds1307.h> (der "schlechtere" 
DS1307 ist softwarekompatibel mit dem DS3231) noch für den I2C-Bus, der 
den DS3231 ansteuert : #include <i2c.h>

Diese müßtest du dann selbst schreiben, oder dir irgendwoher 
zusammenkopieren und anpassen.

Dasselbe gilt für seinen Temperatursensor DS18B20. Hier hat der Autor 
offenbar selbst einen Quellcode verwendet, der nicht von ihm ist, 
erkennbar am Schreibstil der Quelle und vor allem an der Dateiendung der 
Quelle *.hci.

Die Quelle selbst für den Temperatursensor, die den Sensoransteuert - 
ein sogenannter One-Wire-Bus - hat er in seinem Archiv ebenfalls nicht 
mit eingepackt #include <1wire.h>.

Der Quellcode selbst ist reiner ASCII-Text und kann mit jeder beliebigen 
IDE oder jedem beliebigen Texteditor bearbeitet werden. Sein Projekt 
selbst ist scheinbar ein Atmel Studio 11 Projekt, das er mit Microsofts 
Visual Studio erstellt hat.

Nächstes: Der Autor verwendet einen 32-pol. ATmega8 im Gehäuse TQFP. Das 
ist SMD und den kannst du schwerlich auf einer Lochrasterplatine 
verlöten. Du kannst diesen auch nicht durch einen 28 pol. Chip ersetzen, 
weil bis auf einen einzigen Anschluß (ADC7) auch alle Pins des ATmega 
benötigt werden. Willst du also einen TQFP-Chip auf eine Adapterplatine 
löten und diesen dann auf eine Lochrasterplatine setzen?

Zur Hardware: Ich war mir nicht sicher, ob ein UDN6118 die PNP 
Transistoren ersetzen kann (ich glaubte eher nicht) und wie

Axel S. (a-za-z0-9)

(besser als ich) anmerkte, wird das zumindest für die oberen PNP 
NICHT... in einzelnen Buchstagen : N --- I --- C --- H ---T 
funktionieren !!!

Glaubst du wirklich, dass du diese Widrigkeiten alle aus dem Weg räumen 
kannst, wenn du nicht einmal weißt, wie Portpins softwaremäßig zu 
invertieren sind und von Elektronik du bestenfalls rudimentär etwas 
weißt ?

Das gezeigte Projekt mit der Röhre kann in deinem Fall also nur als 
Anregung dienen, das ganze selbst zu machen (was glaube ich weniger 
Aufwand ist, als das bestehende Projekt an eigene Gegebenheiten 
anzupassen).

Wenn du also unbedingt diese Röhrenuhr willst, dann setze dich mit der 
modifizierten Drosselspule die der Autor verwendet auseinander um die 
Spannungen die die Uhr benötigt zu erzeugen. Nehme das Sprint-Layout 6.0 
und erzeuge daraus die nötigen Gerberfiles und schicke die zu JLCPCB, 
die werden dir für 5€ oder so die Platine fertigen und bestücke die 
Platine (so du SMD löten kannst).

-------------------------------------------------------------------

Mann, Mann, Mann

-------------------------------------------------------------------

Ich ärgere mich (über mich selbst), dass ich wieder geantwortet habe. 
lernresistenten Menschen sollte man nicht versuchen, etwas beizubringen!

von Peter D. (peda)


Lesenswert?

Wenn man von nichts ne Ahnung hat, sollte man nicht auch noch 
komplizierte Hardware verwenden. Man weiß dann nicht, liegt der Fehler 
in der HW oder SW, also wie anfangen mit dem Debugging.

LED-Anzeigen machen dagegen die Hardware schön unkompliziert. MAX7219 
nehmen und fertig.
Es geht auch gut der MM5450 für je 4 Digits. Er wird als einfaches 
Schieberegister angesprochen.

von Ralph S. (jjflash)


Lesenswert?

Peter D. schrieb:
> LED-Anzeigen machen dagegen die Hardware schön unkompliziert. MAX7219
> nehmen und fertig.

MAX7219 kann 8x8 LEDs.
Für geforderte 6x8 LEDs geht auch ein TM1637. Den habe ich jetzt durch 
den Thread hier für ein Uhrenlötprojekt für Auszubildende verwendet. 
Allerdings (um das billig zu halten) mit einem STM8S003.

TM1637 hat auch 2 Keyscan-Leitungen, mittels denen es dann möglich ist 
bis zu 16 Tasten abzufragen, sodass für die eigentliche Uhr und die 
Tasten zur Ansteuerung nur 2 Leitungen notwendig sind. Auf einer 
weiteren kann dann ein One-Wire-Bus für einen DS18B20 realisiert werden, 
und - wenn man das möchte - 2 weitere für ein I2C um einen DS3231 
anzusprechen.

Für all das zusammen, egal für welche MCU man das macht, ist die 
Einstiegshöhe dann schon etwas gestiegen.

By the way:

@Peter : war von dir nicht der Artikel

https://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC

sehr lesenswert und ich bin am überlegen, wie ich auf einer 
7-Segmentanzeige (ich habe so etwas wie ein Menu realisiert) einen 
Kalibrierwert für den Reloadwert eines Timers eingeben kann. Bisher habe 
ich - der Einfachheit halber - einfach einen Kalibrierwert pro Sekunde 
am Tag eingebbar gemacht. Wenn es gerade einen doofen Quarz hat, der x.5 
Sekunden am Tag falsch geht bedarf es einer weiteren Kalibrierung. Werde 
ich sehen wie ich das lösen kann ( :-) damit ich auch einmal ein 
Uhrenprojekt zu Ende gebracht habe)

von Alexander H. (alexander_h732)


Angehängte Dateien:

Lesenswert?

Dass das Original einen DS3231
verwendet hatte ich weiter oben schon mal geantwortet.
Der 32 Pin Atmega sitzt bereits auf Lochraster (Pins mit Lackdraht 
herausgeführt). Das war nervig aber machbar.🙂
Wenn die UDN6118 definitiv nicht gehen, werd ich auf PNP umbauen.

Bei meiner VFD Versorgung mit
LM9022 (eigentlich ein „brigded mono power amplifier“, baugleich mit 
LM4871) stellt sich nur die Frage, wo ich dort meine Mittelanzapfung (im 
Bereich der Ladungspumpe?) habe, bzw. da ich wohl keine habe, müsste ich 
evtl. mittels Widerständen eine „künstliche Mittelanzapfung“ einfügen.
Hat einer eine Idee zur Dimensionierung der Widerstände?
Die Mittelanzapfung müsste ich bei der PNP Version beachten.


Ich hab die VFD Versorgung genau nach Datenblatt aufgebaut (Application 
Fig. 1 + 2. kombiniert).

So ganz verstanden hab ich die Ansteuerung mit PNP und nur 5V noch 
nicht.
Ich dachte, dass ein VFD leuchtet, wenn zB. 5V AC Heizspannung und +20V 
am Gitter und Segment gleichzeitig anliegen (klappt im Testaufbau auch).
(Die 20V hätte ich an Vbb der beiden UDN6118 geklemmt und dann mittels 
uC angesteuert (invertiert)).

Warum genau würde der direkte
Austausch von PNP durch UDN6118 bei den unteren (GR1-9, die für die 
Gitter) evtl. klappen und bei den oberen (Segmente) nicht?

: Bearbeitet durch User
von Ralph S. (jjflash)


Lesenswert?

Alexander H. schrieb:
> Warum genau würde der direkte
> Austausch von PNP durch UDN6118 bei den unteren (GR1-9, die für die
> Gitter) evtl. klappen und bei den oberen (Segmente) nicht?

Weil !

von Axel S. (a-za-z0-9)


Lesenswert?

Alexander H. schrieb:

> Bei meiner VFD Versorgung mit LM9022 ...

Ach guck, eine weitere Scheibe Salami.

> LM4871) stellt sich nur die Frage, wo ich dort meine Mittelanzapfung (im
> Bereich der Ladungspumpe?) habe, bzw. da ich wohl keine habe, müsste ich
> evtl. mittels Widerständen eine „künstliche Mittelanzapfung“ einfügen.

Die Mittenanzapfung brauchst du nicht. Der LM9022 legt die Enden des 
Filaments wechselweise auf GND/+5V (eigentlich eher 0.15V und 4.85V). 
Die Mitte liegt also immer bei 2.5V. Das mußt du bei der Dimensionierung 
der Versorgungsspannung für das VFD berücksichtigen. Es sind dann 
effektiv 2.5V weniger.

ABER mit der Heizung (aka Filament aka Glühkathode) bezogen auf GND 
brauchen die Gitter/Anoden dann +20V (also effektiv +17.5V über der 
Entladungsstrecke). Und dann paßt auch der UDN6118 wieder. Nur die 
Steuersignale müssen dann im Vergleich zu PNP-Transistoren natürlich 
invertiert werden.

UND die IW-18 braucht nur ca. 3V Heizspannung. Der LM9022 liefert aber 
ca. 4.7V. Kann schon zu viel sein.

> So ganz verstanden hab ich die Ansteuerung mit PNP und nur 5V noch
> nicht.
> Ich dachte, dass ein VFD leuchtet, wenn zB. 5V AC Heizspannung und +20V
> am Gitter und Segment gleichzeitig anliegen

Es müssen ca. 3V (DC oder Effektivwert AC) an den Enden des Filaments 
anliegen, so daß selbiges ganz schwach dunkelrot glüht (sieht man nur im 
Dunklen, wenn man es im Hellen sieht ist es zuviel Heizstrom).

Und dann müssen ca. 20V zwischen Anode/Gitter (Pluspol der 20V) und dem 
Filament (Minuspol der 20V) liegen. Dann leuchtet die Anode.

Dem VFD ist dabei egal, ob es sich um +20V und GND handelt. Oder um +5V 
und -15V. Es "sieht" ja nur die Differenz. Klassisch nimmt man PNPs und 
einen 5V µC. Dann schalten die VFD-Anoden/Gitter zwischen +5V und -20V 
hin und her. Die Heizung legt man über die Z-Diode 4.7V auf ca. -15V.

Alternativ kann man die Ansteuerung auch mit +20V und dem UDN6118 machen 
und die Heizung mit dem LM9022. Diese IC gab es aber zur Zeit der VFD 
noch gar nicht. Das sind schließlich Röhren und uralte Technik.

von Ralph S. (jjflash)


Lesenswert?

Ich glaube nicht, dass er das verstanden hat...

von Joachim B. (jar)


Lesenswert?

Ralph S. schrieb:
> @Peter : war von dir nicht der Artikel

war er, genau wie eine geniale DCF77 Routine en passant und 
Tastenentprellung bullet proof

von Frank O. (frank_o)


Lesenswert?

Ralph S. schrieb:
> Du hast schon wieder einmal den Controller gewechselt, jetzt soll es der
> alte ATmega8 sein (zumindest ist das der in der Originalschaltung). Hier
> ist anzumerken: Auch wenn der Mega328 fast alles mitmacht, was der M8
> macht, so unterscheiden sie sich eben doch (und sei es nur in den
> Timerbezeichnungen).

Wo wir dann wieder beim Arduino (als Hardware) wären.
... und am Ende beschäftigt er sich dann doch lieber damit, seine 
Klospülung instand zu setzen. Damit er die ganze Scheiße dann auch im 
Klo abspülen kann.

von Joachim B. (jar)


Lesenswert?

Frank O. schrieb:
> Wo wir dann wieder beim Arduino (als Hardware) wären.

stimmt so nicht, die Timer Entprellroutine habe ich auch schon auf einem 
ESP32 eingesetzt, man muß es nur erst mal verstehen dann kann man es 
locker portieren.

von Frank O. (frank_o)


Lesenswert?

Joachim B. schrieb:
> stimmt so nicht,

Alexander H. schrieb:
> Hallo Leute,
>
> ich bin absoluter Anfänger in Sachen Mikrocontroller.

Zur Erinnerung!

von Joachim B. (jar)


Lesenswert?

Frank O. schrieb:
> Zur Erinnerung!

zitieren mußt du lernen, programmieren der TO.

Frank O. schrieb:
> Zur Erinnerung!

Alexander H. schrieb:
> Hat hier evtl. jemand gute Codebeispiele für eine Uhr mit Attiny26?

lernen alles in kleine Schritte zu zerlegen:

LED an/aus
Printausgaben zum debuggen
uvam

hier gibt es jede Menge Codebeispiele und wie schon genannt Artikelseite

von Frank O. (frank_o)


Lesenswert?

Joachim, das haben wir ihm doch schon ganz zu Anfang geraten.

von Joachim B. (jar)


Lesenswert?

Frank O. schrieb:
> Joachim, das haben wir ihm doch schon ganz zu Anfang geraten.

deswegen ist meine Aussage nicht falsch!
Mit dem ESP geht es ähnlich zum AVR, jedenfalls nicht soweit es nur dem 
AVR zuzuschreiben.

von Frank O. (frank_o)


Lesenswert?

Natürlich ist deine Aussage nicht falsch. Habe ich auch nicht behauptet.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Axel S. schrieb:
> Dem VFD ist dabei egal, ob es sich um +20V und GND handelt.

Oder +9V für die russischen ICs.

ciao
gustav

von Joachim B. (jar)


Lesenswert?

Frank O. schrieb:
> Natürlich ist deine Aussage nicht falsch. Habe ich auch nicht behauptet.

ach?

Joachim B. schrieb:
> Frank O. schrieb:
>> Wo wir dann wieder beim Arduino (als Hardware) wären.

die war nun mal falsch, denn du beziehst dich auf AVR und meine Aussage.
Es gibt zwar Arduino auch für AVR, aber die Beispiele von PeDa bezogen 
sich viel auf AVR und erst später auf C welches auch auf dem ESP 
kompiliert werden kann.

von Alexander H. (alexander_h732)


Lesenswert?

Ich bekomme leider keine Verbindung zum Atmega8.
Kennt jemand hier die Standardeinstellungen für den Atmega8 und Atmel 
AVRISP MKII + AVRDude(baud rate, bit clock und alles, was sonst noch 
relevant ist)? Nutze die AVRDude GUI (avrdudess).
Vielleicht liegt es an einem Pullup von RST auf +5V.
Notfalls teste ich einen Atmega8 ohne Beschaltung, falls es mit 
Schaltung nicht läuft.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Alexander H. schrieb:
> relevant

ISP Takt sollte bei fabrikneuen Chips unter 1MHz/4 eingestellt sein 
(siehe Datenblatt)

von Ralph S. (jjflash)


Lesenswert?

Kommandozeile:

avrdude -c avrispmkII -p m8 -P usb -vv -B 20

Dann solltest du eine Verbindung sehen. Parameter -B 20 schränkt den 
Takt des ISP sehr ein, so dass ein eventueller Flashvorgang langsam ist. 
Grund: Fabrikneuer Chip läuft mit 1 MHz internem Takt.

Als erstes sollten also die Fuses für einen angeschlossenen Quarz 
eingestellt werden.

Vorsicht: werden die Fuses geändert und man hat keinen Quarz oder 
externen Taktgeber angeschlossen, ist ein Zugriff auf den Chip mittels 
ISP nicht mehr möglich (dann MUSS ein Quarz angeschlossen werden).

von Frank O. (frank_o)


Lesenswert?

Joachim B. schrieb:
> denn du beziehst dich auf AVR und meine Aussage.

Joachim, wenn du immer noch ein Problem damit hast, dann lies bitte, was 
ich eingangs geschrieben hatte.
Sinngemäß: Statt einen Tiny, dann doch ein Arduino Uno oder Nano, damit 
der Anfang auch sicher klappt.
Ich hatte ESP nicht genannt und auch nichts dagegen oder dafür.

Auf diesen Beitrag bezog ich micht, als ich schrieb: "Womit wir wieder 
beim Arduino sind!"

Frank O. schrieb:
> von
>
>         Frank O.
>         (frank_o)
>
>       25.11.2024 09:18

Wenn du jetzt weiter Haare spalten willst, wo schon lang nichts mehr 
wächst, kannst du das machen, aber ich mache da halt nicht mit.

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.