Uhr mit STM8Sxx3 und TM1637

#7815600
Lesenswert?

Okay, es ist die einmillionsteundeine Digitaluhr mit 7-Segmentanzeigen...

Nachdem vor ein paar Wochen eine Mikrocontroller realisierte Uhr mit 7-Segmentanzeigen nachgefragt wurde (und das dann sogar durchaus ein längerer Thread geworden ist) habe ich doch tatsächlich nach (wirklich) ein paar Jahrzehnten eine 7-Segment Uhr gebaut (bisher war es eine BCD-Uhr mit dem alten ATtiny2313).

In dem dortigen Thread hatte ich eine Uhr mittels ATmega und gemultiplexter Anzeige (und Transistoren als Stromtreiber) auf Steckbrett aufgebaut gehabt und dachte mir, nachdem die Preise für PCB-Fertigung ins Bodenlose gefallen waren ich mache mal wirklich ein aufgebaute Uhr und diese dann (so als meinen eigenen Anreiz) so preiswert wie möglich.

Die erste Überlegung war, das mit meinem "Billigliebling" PFS154 zu machen, aber hier ging mir der Speicher für die Funktionen, die die Uhr können sollte aus. Den nächstgünstigen (billigen) Controller mit dem ich umgehen kann war dann ein STM8S003 für 29 Cent bei www.lcsc.com (Stand 22.01.2025). Anstelle von Transistoren als Stromtreiber habe ich dann den Anzeigentreiber TM1637 (16 Cent, Stand 22.01.2025) gewählt, der dann auch praktischerweise die Tastenanschlüsse gleich mit übernimmt (und es somit keiner 24 Transistoren bedarf).

Die Uhr ist 6-stellig, wobei eine 0.36" große 4-fach Anzeige die Stunden und Minuten darstellt, eine kleiner 0.28" große 2-fach Anzeige die Sekunden.

Die Uhr wurde nicht nach klassischer Methode durch das Hochzählen der Sekunden bis Überlauf von 59 nach 60 bei Erhöhung der Minuten, Überlauf der Minuten erhöht die Stunden, realsisiert, sondern sie lehnt sich an die C-Bibliothek time.h an bei der Uhrzeiten mittels Datumsstempel realisiert und manipuliert werden können.

So kommt hier denn auch meine, für Mikrocontroller abgespeckte Source, my_time.c / my_time.h zum Einsatz, die genau für den Einsatz in Mikrocontrollern entwickelt ist.

Dies macht dann auch möglich, dass die Uhr nicht nur die Uhrzeit, sondern auch das Datum anzeigen kann.

Wenn man dann schon dabei ist, habe ich die Funktionen für ein Auslesen eines DS18B20 Temperatursensors mit implementiert, so dass auch eine Temperaturanzeige gegeben ist.

In der Schaltung ist auch ein Ausgang für einen Lautsprecher vorhanden, der aber bei der derzeitigen Softwareversion noch keine Rolle spielt. Vielleicht mag ja der eine oder andere die Uhr um einen Wecker oder eine Stopuhr mit Signalton erweitern ?!?

Die Software ist ein reines Makefile-Projekt unter Linux und ein einfaches absetzen von make im Stammverzeichnis sollte das Projekt compilieren (sofern ein SDCC-Compiler systemweit verfügbar ist).

Ein kurzes (und sehr schlechtes, amateurhaftes) Video der Uhr gibt es hier:

https://www.youtube.com/shorts/3bqEEjXbZb8

Für denjenigen, der die Uhr tatsächlich nachbauen möchte sind im Zip-Archiv die Gerberfiles enthalten, welches direkt zu JLCPCB geschickt werden kann um sich hieraus eine Platine fertigen zu lassen. Die Platinengröße ist ca. 50x50 mm groß. Sollte es wirklich jemand interessieren und sich bei JLCPCB die Platinen fertigen lassen wollen, den Platz für die erlaubten 100x100 mm jedoch ausnutzen wollten kann man das ebenfalls hier angehängte Sprint-Layout

stm8_uhr_only.lay6

um seine eigenen Schaltungen erweitern.

:-) :-) :-) viel Spaß beim Nörgeln und beim Negativbewerten,

Gruß, JJ

Angehängte Dateien:
#7815609
Lesenswert?

Ralph S. schrieb:

Okay, es ist die einmillionsteundeine Digitaluhr mit 7-Segmentanzeigen...

:-) :-) :-) viel Spaß beim Nörgeln und beim Negativbewerten,

Uhren kann man nie genug haben, noch vor digitalen Multimetern und Labornetzteilen:-)

Du hast das Projekt schön vorgestellt, es gibt keinen Grund für Negativbewertungen.

Ich frage mich nur woher der Tick (schönes Wortspiel) für Uhren herkommt?

Beitrag #7815621 wurde von einem Moderator gelöscht.
#7815622
Lesenswert?

... kaum gepostet und dann gleich den ersten Fehler entdeckt: Nicht in der Software, sondern in der Beschreibung.

Ich habe hier die Beschreibung für my_time gepostet, die für GCC-basierende Compiler funktioniert.

In Ermangelung dessen, dass SDCC keine Strukturen als Funktionsargumente bearbeiten kann und auch keine Strukturen zurückliefern kann, funktioniert die SDCC-Variante von my_date über globale Strukturvariable... sorry.

Michael schrieb:

Ralph S. schrieb:

STM8S003

Hat ST den nicht abgekündigt?

Na ja, wie soll ich sagen: zuerst war der von ST als "not recommended for new designs" gesetzt, aber nach einer gewissen Zeit stand auf deren Homepage für Marketing Status als "active":

https://www.st.com/en/microcontrollers-microprocessors/stm8s-series/products.html

Zudem hat www.lcsc.com 290890 Stück "in stock" wobei ich dann hier davon ausgehe, dass die zumindest bei denen noch (und nicht nur bei denen) eine zeitlang verfügbar sein werden.

Bei der letzten Bestellung dort, habe ich mir "sicherheitshalaber" noch einmal 20 Stück mitbestellt, sodass zumindest für meinen Privatbedarf hier der Vorrat bestimmt gedeckt ist.

Angehängte Dateien:
#7815657
Lesenswert?

Jörg R. schrieb:

Ich frage mich nur woher der Tick (schönes Wortspiel) für Uhren herkommt?

:-) ich weiß gar nicht ob es diesen Tick gibt. Ich für meinen Teil mag Uhren eigentlich so gar nicht, weil sie mir jedesmal irgendeinen Termin zu einer bestimmten Uhrzeit vorgeben. Seit jeher weigere ich von daher, eine Armbanduhr zu tragen (und ich hasse Armbanduhren an mir regelrecht ... :-) meine Frau hingegen hat davon unzählige Uhren, allerdings ist das für sie wohl auch eher eine Art Schmuck).

Wenn schon Uhren, dann irgendwie welche, die anderst sind:

In meiner Bastelecke "tickt" (wie oben erwähnt) eine BCD-Uhr (bei der viele den Kopf schütteln und meinen, dass man da doch keine Uhrzeit ablesen kann) und in meinem Wohnzimmer steht über meinem Dampfradio Loewe Opta Meteor eine Nixie-Uhr (herrlich schön im Dunklen beim Fernsehgucken abzulesen).

Gast #7815892
Lesenswert?

Ralph S. schrieb:

Status als "active"

Gut zu hören. Ist ein netter kleiner Controller.

Harald K. schrieb:

CH32V003

Schickes Ding. Sogar das DB sieht da sehr vollständig aus. Wenn es dann irgendwann mal EU Distris dafür gibt und das Verständniss was über die pure Bauteillieferung hinaus alles an Nachweispflichten und Regularien im professionellem Verkehr zu erfüllen ist, könnten wir die mal näher ins Auge fassen.

Gast #7815977
Lesenswert?

Harald K. schrieb:

Arbeitest Du in irgendeiner Behörde? Das tut mir leid.

Nö, nur ein einem Bereich in dem auch DU darauf bestehen würdest das man zu jedem Zeitpunkt genau weiß was man wo aus welcher Quelle verbaut hat und das jede kleine Bauteiländerung zu einem äußerst kostenintensiven Rezertifizierungsprozess führt, weil nur so der hohe Standard erhalten werden kann.

Oder bist Du noch nie geflogen, warst medizinischen Maschinen ausgeliefert, hast Dein Leben automatischen Bremssystemen, Türsteuerungen und vielem anderen mehr anvertraut?

Arbeitest Du in einer Hinterhofbastelklitsche die Blinkeherzchen für Tankstellen herstellt? Das tut mir leid.

#7816320
Lesenswert?

Michael schrieb:

Oder bist Du noch nie geflogen, warst medizinischen Maschinen ausgeliefert, hast Dein Leben automatischen Bremssystemen, Türsteuerungen und vielem anderen mehr anvertraut?

Viele, die dieses Forum frequentieren, tun dies, weil sie ein Hobby haben.

Ich würde mir vielmehr ernsthafte Sorgen machen, wenn Personen, die die von Dir indirekt angegesprochenen Dinge entwickeln, sich hier Ratschläge holen würden.

#7816332
Lesenswert?

Harald K. schrieb:

Ich würde mir vielmehr ernsthafte Sorgen machen, wenn Personen, die die von Dir indirekt angegesprochenen Dinge entwickeln, sich hier Ratschläge holen würden.

hm, da würde ich mir keine Sorgen machen! Hier gibt es Mitglieder, die sind schon "hochgut" und von denen kann man sich auch Ratschläge holen, die für sicherheitsrelevante Systeme gelten. Wohlbemerkt Ratschläge! Ergebnisse sind immer zu testen und in Langzeitversuchen zu evaluieren.

Nur, weil die von dir angesprochenen Personen auf ihrem Gebiet hohe Verantwortung tragen (und ich gehe davon aus, dass sie dieser auch gerecht werden), heißt das nicht, dass diese unfehlbar sind oder niemals irgendwelche Probleme habe (und sei es, dass sie einen Einstieg für etwas neues benötigen).

Durch viel lesen hier, kommt man bisweilen auf Problemlösungsideen, die man zuvor nicht hatte.

#7816339
Lesenswert?

... und, um "Zoff" evtl. zu vermeiden: Chips wie Padauk PFS154, CH32V003 oder Puya PY32f030 etc. sind sicherlich nicht dafür gemacht um in sicherheitsrelevanten Dingen oder in Hochrisikogerätschaften eingesetzt zu werden.

Aber in "Spielzeugen" und Billiggerätschaften wie Uhren oder Raumthermometer etc. haben sie schon ihren Sinn.

Bspw. bin ich für einen ehemaligen Auszubildenden (der im Rollstuhl sitzt) und dessen Vater am Werkeln, eine (für mich riesige) Modelleisenbahn mit Elektronik zu unterstützen. Hier ist das Problem, dass hierfür insgesamt 108 Weichen anzufahren sind. Der ursprüngliche Gedanke war, alles über Schieberegister zu machen. Hier sind dann zum einen 3 Steuerleitungen von Nöten und die wären von einem Modul zum nächsten verbunden gewesen. Irgendwie kein guter Ansatz.

Also: nächste Idee! Proprietärer unidirektionaler OneWire-Bus (PWM) der an einen PFS154 Controller geht und der 2 kaskadierte Schieberegister anfährt. PFS154 liest 8 I/O Pins ein (als Deviceadresse) und reagiert dann entsprechend, wenn er auf dem Bus seine Adresse "sieht". Am Eingang des PFS154 wird noch ein Schmitt-Trigger verbaut, damit die Leitung relativ störunempfindlich wird (funktioniert jetzt mit ca. 20 Meter länge).

Wenn hier der Chip nicht zertifiziert ist, schaltet im schlimmsten Fall eine Weiche nicht und eine Modelllok entgleist oder fährt auf eine andere auf.

Hmmm, nicht schön, aber davon geht dann die Welt nicht unter. Ich glaube es gibt tausende von Anwendungen dieser Art, bei der billigste Controller eine Rolle spielen können. Und (so als Schlußwort): es ist egal, ob der Controller mit 8, 16 oder 32-Bit werkelt, hauptsache er ist seiner Problemstellung gewachsen.

#7816372
Lesenswert?

Peter S. schrieb:

Auch der N76S003 (mit 8051-Kern) sollte als Ersatz verwendbar sein.

Schmunzeln muß: Warum wollt ihr mir den STM8 "wegnehmen" und einen Ersatz dafür bringen? Den STM8 gibt es noch (und wahrscheinlich noch lange günstig).

All den "Ersatztypen" ist gemein: ich darf/muß dann wieder eine andere Toolchain lernen / ans laufen bekommen. Ich weiß noch, wie lange das mit dem PFS154 gedauert hat, bis ich mit dem einigermaßen vernünftig etwas anfangen konnte.

Einen CH32V003 habe ich bspw. hier und von Zeit zu Zeit versuche ich mich da mit mäßigem Erfolg an der Toolchain mit MounRiver... bei der riscv-gnu-toolchain scheue ich mich noch, die mehr als 6 GB downzuloaden und mir die Toolchain zu übersetzen (und ein Binary habe ich keines gefunden). Hier immerhin: Upload in den CH32V003 bekomme ich sogar mittels Bootloader hin.

Puya habe ich hier liegen (aber noch nicht angefasst) und mit Nuvoton bin ich am Fremdeln. MCS-51 würde zwar von der Toolchain her super zum SDCC passen, aber irgendwie will das hier nicht so recht.

Von daher: es gibt so irre viele günstige bis billige Controller in der Fassung: AVR (eher schon teuer), STM32, STM8 und Padauk. :-) ich brauche für so etwas einfaches wie die Uhr hier nicht wochenlange Versuche bis ich eine neue Familie im Griff habe (by the way: im Griff heißt für mich: Programmieren ohne IDE ... schön zu Fuß mittels Editor und makefile)

Aaaaaber: ich würde mich wirklich sehr über ausführliche "Geting started" Tutorials für die bisher genannten Controller freuen, wenn so ein Tutorial sich auf die Toolchain (nicht eine IDE) und dann auf Linux beziehen würde. Irgendwie finde ich da nichts wirklich "gescheites" im Netz: Alle schreiben von allen ab.

#7816440
Lesenswert?

Harald K. schrieb:

Es gibt eine deutlich schlankere Alternative:

https://github.com/cnlohr/ch32v003fun

grrrrr .... das kenne ich natürlich, aaaaaaaber: das gesamte Framework CH32V003FUN setzt einen bereits im System lauffähigen riscv-Compiler vorraus! Zudem (weil ich ja garantiert kein Platformio machen möchte) hat das ein sehr umfangreiches Makefile (bzw. ch32v003fun.mk welches ins Makefile inkludiert ist). Sollte ich das also wirklich mal machen (und irgendwie habe ich den Chip abgeschrieben) muß ich mir seeeeehr viel Zeit nehmen, weil meine PC-Hardware wirklich steinalt ist und ein compilierender Sourcen (6,3 GByte) garantiert ewig dauern wird (abgesehen von sicherlich genügend nicht installierter Abhängigkeiten).

Ich habe hier ein extrem abgespecktes Slackware-Linux (und arbeite damit sogar in einer Live-Version) damit ich noch gut damit werkeln kann (gerne auch in der Konsole).

Ob dein Fun-Framework wirklich schlanker ist als MounRiver kann sich erst dann zeigen, wenn der Compiler für CH32V003FUN installiert ist.

:-) :-) :-) :-) aber du kannst gerne den Source der Uhr hier nehmen, auf einen CH32V003 portieren und das Ergebnis dann mal zeigen. Würde mich wirklich interessieren.

#7816449
Lesenswert?

Ralph S. schrieb:

das gesamte Framework CH32V003FUN setzt einen bereits im System lauffähigen riscv-Compiler vorraus!

Na gut, wenn die Rahmenbedingungen so ... besonders sind, wie bei Dir, dann kann ich Dein Magengrimmen nachvollziehen.

Wie bekommst Du dann aber den doch auch recht fetten Brocken des "mounriver studio" zum laufen?

Wenn man, wie ich, sich nicht zu fein ist, Windows zu verwenden, ist das gcc-Paket, das man bei "sysprogs" herunterladen kann, 22 MByte groß ...

#7816487
Lesenswert?

Harald K. schrieb:

Na gut, wenn die Rahmenbedingungen so ... besonders sind, wie bei Dir, dann kann ich Dein Magengrimmen nachvollziehen.

Okay, wenn ich wollte (aber darauf programmiere ich nicht) ... hätte ich auch noch einen Win11 PC (okay okay nicht fein) mit i7 12. Generation und 32 GB RAM (und dort auf einer anderen Bootpartition ein Ubuntu). :-) der Rechner wird jedoch für anderes genutzt. Ich habe mir schon überlegt gehabt, dort noch eine Bootpartition einzurichten um dann dort das Kompilieren vorzunehmen. Allerdings werd ich auch so nicht wirklich warm mit der Toolchain.

Harald K. schrieb:

Wie bekommst Du dann aber den doch auch recht fetten Brocken des "mounriver studio" zum laufen?

Da hatte ich irgendwo ein Binary gefunden und ausprobiert und oh wunder (zu meiner Überraschung) funktionierte das. Allerdings wie gesagt sehe ich für mich den Sinn (außer meinem Spieltrieb) nicht, zwingend diesen Chip zu verwenden. Mit STM32 kenne ich wenigsten ein klein wenig aus und die Toolchain mit den von mir verwendeten Sourcen funktioniert so zur Zufriedenheit (ich verwende libopencm3) und die kleinen STM32F gibts ja mittlerweile auch schon ab 60 cent. Einen STM32C habe ich hier liegen (den proklamiert ST als Ersatz für 8-Bit Systeme) und für den muß ich mir einiges umbasteln und umbiegen (vom STM32G) und damit bin ich dann auch noch etwas beschäftigt.

:-) außerdem muß es auch mal mit meinem kleinen Terminaldisplay weitergehen... und das habe ich auf einem STM32F030 angefangen

Gast #7816598
Lesenswert?

Harald K. schrieb:

Ich würde mir vielmehr ernsthafte Sorgen machen, wenn Personen, die die von Dir indirekt angegesprochenen Dinge entwickeln, sich hier Ratschläge holen würden.

Ich bin Profi. Selbst die Putzkraft hier im Büro könnte etwas sagen das mich auf die richtige Idee bringt. Und da mc.net sich noch einen Rest Fachkompetenz bewahrt hat, gegen erheblichen Widerstand der YT Fraktion und eher fragwürdigen 'Strömungen' ziehe ich durchaus Nutzen aus mc.net und gebe von zeit zu zeit auch was zurück.

Zumal ich ja mit keinem Wort die WCH MCU schlecht gemacht habe. Nur beschäftige ich mich ca. 180Std jeden Monat mit Elektronik Entwicklung und allem was rundherum zu bewegen ist bis man von der Idee zu einem zertifizierten Produkt kommt. Ich bin einfach nicht gewillt mich mit Dingen zu beschäftigen die nirgendwohin führen weil es bereits an den grundsätzlichen Dingen fehlt. Und bei uns ist es auch ziemlich egal ob eine MCU 30Cent oder 3€ kostet.

Ich verfolge aber durchaus mit Interesse was die Hobby Fraktion so mit den China MCUs macht. All das hat keinerlei Einfluss auf meine professionelle Handlungsweise. Ich befolge die notwendigen Regeln meines Marktes und kann zugleich links und rechts des Weges schauen. Toll oder?

#7816705
Lesenswert?

Michael schrieb:

Ich verfolge aber durchaus mit Interesse was die Hobby Fraktion so mit den China MCUs macht. All das hat keinerlei Einfluss auf meine professionelle Handlungsweise. Ich befolge die notwendigen Regeln meines Marktes und kann zugleich links und rechts des Weges schauen. Toll oder?

genau so ... muß es sein! Und das ist gut (oder auch toll) !

Harald K. schrieb:

Klingt unglaubwürdig, also der Teil nach "und".

Wieso ist das unglaubwürdig?

Dienstlich darf ich nur Dinge verbauen, die zertifiziert sind. Privat interessiert mich das dann nur am Rande!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren