DCF77 und RTC mit ATmega unter BASCOM

Jooo geil, mag ich auch haben sowas!

Mit wieviel Umdrehungen fährst Du ab? Verwendest Du einen Schrittmotor zum Drehen oder hast Du einen Drehwinkelsensor?

Wo gibt es sowas zum Nachbauen? Hast Du schon mal an die Veröffentlichung von Deinem Projekt gedacht?

Wie definierst Du die Formen für die Ausgabe? Hast Du Dir einen eigenen Editor geschrieben oder machst Du alles von Hand?

Ja ich weiß, Fragen über Fragen aber das finde ich richtig toll. Mal wieder ein schönes Thema. Der Eine schießt farbige Wasserfontänen durch den Graten, der andere baut Wolkensensoren und Du hast was richtig tolles fürs Wohnzimmer.

Ich auch hab will!
 
Hallo Hellmar!

Ja, das Projekt gefällt mir auch sehr gut! ... ist bestimmt nicht so einfach die Grafik so hinzubekommen.

Was mich interessieren würde: wird die Abhängigkeit der aktivierten LEDs vom Winkel in Echtzeit berechnet, oder hast du dafür ein PC-Programm, welches die Daten zuvor am PC errechnet?

Wenn man ausreichend Flash-Memory hat, könnte man die Grafik sogar noch animieren.

Grüße
Dirk
 
hallo markus, hallo dirk,
freut mich zu hören, dass es euch gefällt ... mir übrigens auch.

wir werden das ganze - sobald ganz fertig - hier auch gerne als komplettes projekt veröffentlichen ... mit allem was dazu gehört. im moment tue ich mir damit noch ein bischen schwer ... das ganze ist mehr als nur hobby, speziell diese leuchte (oder display) mit dem colibri ist für ein cafe gedacht dessen logo ein colibri ist. und nachdem ich nun echt viel arbeit in die ganze sache gesteckt habe, denke ich auch über eine vermarktung nach.

nichtsdestotrotz gebe ich meine erfahrungen gerne weiter, denn davon lebt ja die ganze sache hier.

also ...
den vogel habe ich anfangs noch per hand umgerechnet, d.h. in einem grafikprogramm das bild reingeladen und dann mit "32 kleinen runden kreisen" (=den 32 leds) die 360 grad in 1 grad schritten abgetastet ... das macht keinen spass!!! daher gibt es mittlerweile ein kleines pascal-programm, welches den datensatz komplett selbst generiert.

die berechnung erfolgt, ich würde sagen in echtzeit?? ich erfasse über einen hall-sensor die zeit pro umdrehung, teile das durch 360 und speise damit einen timer, der somit pro grad zuschlägt und dann lade ich mir die led daten aus einer matrix. echtzeit? auf jeden fall funktioniert es mit meinem in BASCOM wirklich un-optimal geschriebenen code prächtig bei drehzahlen von 1500 bis 2000 u/min. es entsteht eine "stehende" grafik mit periodischem zucken, was aber gerade den charme ausmacht. vielleicht noch soviel, ich steuere die 32 leds über 4 latchs per spi. als motor hatte ich am anfang einen supra-lauten getriebemotor von conrad, der ist nun einem stinknormalen wechselstrommotor aus einem dieser drehbaren standventilatoren gewichen. der ist schön leise und stark genug.

was die bewegte grafik angeht, da braucht man wahrscheinlich nicht mal ausreichend flash sondern nur die möglichkeit daten aus einer sd karte auszulesen, da bin ich gerade dran ... bin da auch für tips dankbar.

sodele, hoffe das reicht euch erst mal
gruss
 
Hallo Hellmar,

den vogel habe ich anfangs noch per hand umgerechnet, d.h. in einem grafikprogramm das bild reingeladen und dann mit "32 kleinen runden kreisen" (=den 32 leds) die 360 grad in 1 grad schritten abgetastet ... das macht keinen spass!!!

... das kann ich mir gut vorstellen. Mit "Echtzeit" meinte ich, der AVR errechnet selber aus einem Bitmap-Bild auf Grund des aktuellen Winkels die logischen Zustände der LEDs. Du errechnest es also vorher, der AVR berechnet es nicht in Echtzeit, was ja auch sehr sinnvoll ist.

ich erfasse über einen hall-sensor die zeit pro umdrehung, teile das durch 360 und speise damit einen timer, der somit pro grad zuschlägt und dann lade ich mir die led daten aus einer matrix
... gute Idee, so kannst du jeden Motor verwenden, der Mikrocontroller muss den Motor nicht mal ansteuern.

was die bewegte grafik angeht, da braucht man wahrscheinlich nicht mal ausreichend flash sondern nur die möglichkeit daten aus einer sd karte auszulesen, da bin ich gerade dran ... bin da auch für tips dankbar.

Aus wieviel Bytes besteht denn das Bild, 360 x 32Bit = 1.440Byte? Ganz grob geschätzt: In einen ATmega128 passen hier bestimmt 60 "Bilder" rein, neben Programmcode. Da bekommt man schon eine schöne Animation hin.

Bezüglich SD-Karte, kann ich dir diese Seite von Ulrich Radig empfehlen, sie hat mir schon sehr geholfen, danke Ulrich! Allerdings wirst du feststellen, dass die Ansteuerung einer SD-Karte nicht so einfach ist, manche Karten laufen, manche nicht. Du solltest dich hier auf eine SD-Karte eines bestimmten Herstellers festlegen (zum Beispiel Sandisk) wenn es möglich ist. Wenn du nicht Megabyte-weise Speicher benötigst, wäre hier auch Dataflash sinnvoll.

Grüße
Dirk
 
Hallo Hellmar, hallo zusammen.

An einer SD-Karte bin ich auch gerade dran, oder besser gesagt, ich möchte es implementieren. Die Seiten von Ulrich sind OK, im Netz gibt es auch jede Menge Beispiele. Allerdings möchte ich nicht von der Karte lesen, sondern schreiben. Und das auch in einem Format, das von jedem PC gelesen werden kann. Also DOS im Textformat (siehe Wolkensensor). Ulrich hat da ja ein Mini-DOS entwickelt, das kostenfrei bei BASCOM dabei ist.

Bin mal gespannt, ob wir das hin bekommen.

Thomas
 
Hi,

was haltet Ihr davon, für das Thema SD-Card und Rotordisplay einen eigenen Thread aufzumachen denn wenn jemand nach so Themen sucht wird er sie sicher nicht unter RTC und DCF suchen :D

Selbst wenn Ihr die Projekte nicht gleich vorstellt aber diskutieren können wir ja jetzt schon im Thread, was haltet Ihr davon -> los los auf auf :p

Grüße,
Ma
 
Hallo Ihr:D

Ich muss noch mal nachfragen wie man in der DCF77.lib von D. Ottensmeyer den Port ändert. Standartmässig ist der auf Portd.3 eingestellt. Ich würde aber gerne Portd.7 nutzen weil die drei schon weg ist.:eek:

;Eingang für DCF77-Empfänger-Anschluss:
.equ PIND = &H10 ;Pind
.equ PIND3 = 3 ;3 = Pin 3

Kann mir bitte einer einen Tip geben. Weil mit ASM kann ich rein garnichts anfangen.

Danke:D
 
Hallo fixer Tipper ;)

na, einfach die 3 durch die 7 ersetzen :

;Eingang für DCF77-Empfänger-Anschluss:
.equ PIND = &H10 ;Pind
.equ PIND3 = 7 ;7 = Pin 7

Vorsicht ! Nicht bei PIND3 den 3er ändern, das ist eine Variable. Bin da auch schon reingefallen und habe daraufhin ganz fix alle PIND3 in DCF_Pin geändert. Kannste auch mit dem PIND in der Zeile darüber machen. Also PIND in DCF_Port, dann ist es auch übersichtlicher.

Assembler ist auch nicht mein Ding, aber ich habe es wenigstens hinbekommen ;)

Thomas
 
Hallo Knickohr

Bin am testen, mal sehen was passiert.(aufgeregt hin und her rutsch):)

Gruß Andreas
 
Ich schon wieder

Geht nicht:mad: Hab auch das Includefile angepasst, nichts. Hab mich mal von Portd.3 hoch gearbeitet, und je höher ich komme um so eher geht es nicht. Irgendwas stört da bestimmt.
 
Hallo Tipfix,

welcher Mikrocontroller wird denn verwendet? Nicht immer ist die IO-Adresse von PIND 0x10.

Grüße
Dirk
 
Hallo


Das scheind zu passen, weil pind.3 geht. Und da dauert der Sync so um die zwei Minuten. Wenn ich aber einen höheren verwende wird es deutlich schlechter. Das LCD gibt auch status anzeigen aus wie Bit 15 vom DCF aber ein Sync geht nicht oder selten.
 
Hallo Ihr:)

Ich fang noch mal von vorne an. Also ich habe meine LED-Clock mit DS1307. Diese möchte ich wenn ich Sie einschalte nach DCF stellen. Mir zur verfügung stehen ein Includefile und ein DCF77.lib. Ich hab da mal was versucht was aber nicht den gewünschten Erfolg bringt. Die vorhergehenden Beiträge bezogen sich auf einen versuch mit einem LCD. Haben also mit dem eigentlichen Ziel nichts zu tun. Anbei mal das was ich habe.
Die Uhr_ds1307_dcf77 ist das eigentliche Programm.
Die dcf77_soft das Includefile.
Die dcf77 das Lib.
Jetzt wäre für mich interesant wie ich es hin bekomme das zu verknüpfen.

Ich hoffe jetzt wird einiges klarer.
 

Anhänge

  • uhr_ds1307_dcf77.txt
    5,6 KB · Aufrufe: 124
  • dcf77_soft.txt
    3,1 KB · Aufrufe: 97
  • dcf77.txt
    14,4 KB · Aufrufe: 93
Hallo,

also die Libs scheinen zu stimmen, sind richtig angepaßt. $10 ist beim 16er richtig. Alle anderen Einstellungen sollten auch stimmen. Zumindest auf dem ersten Blick.

Hast Du mal versucht, die dcf77_soft mit in Dein Programm zu integrieren ? Ich hatte da auch schon komische Probleme mit den $include aufgerufenen "Unterprogrammen". Meines Wissens darf ein $include nur ganz am Ende des Programmcodes erfolgen. Versuch das Programm mal ein bißchen zu strukturieren. Ja ich weiß, gar nicht so einfach, hab da auch immer meine Probleme ;)

Da ist aber noch ein Hund drin :

Ddrd = &B11111111

sollte es nicht heißen :

Ddrd = &B01111111

wenn Du D7 als Eingang für den DCF verwenden willst ?

Könnte es sein, das der Prozzi da irgendetwas durcheinander bringt ?

If Anzeige1 = 0 Then Portd = Lookup(jahreiner , Segmente) 'tageiner
If Anzeige1 = 1 Then Portd = Lookup(jahrzehner , Segmente) 'tagzehner
If Anzeige1 = 2 Then Portd = Lookup(monateiner , Segmente) 'Mineiner setzen
If Anzeige1 = 3 Then Portd = Lookup(monatzehner , Segmente) 'Minzehner setzen
If Anzeige1 = 4 Then Portd = Lookup(tageiner , Segmente) 'Stdeiner setzen
If Anzeige1 = 5 Then Portd = Lookup(tagzehner , Segmente) 'Stdzehner setzen

Bist Du sicher, das der Port nicht irgendwie doppelt genutzt wird oder einzelne Pins gesetzt werden ? Könnte, zumindest mir, das "Je höher ich komme, umso eher geht es nicht erklären".

Thomas
 
Hallo

das "Je höher ich komme, umso eher geht es nicht erklären".

Das bezog sich auf meine Tests mit einen LCD. Hat mit der LED-Uhr nichts zu tun. Bei der ist nur noch der Pind.7 frei. Ursprünglich hatte ich als anregung folgendes Prog benutzt.
Das habe ich als anregung genommen und probiere damit rum das irgendwie bei meinem Prog zu integrieren. Aber ohne LCD und den ganzen Statusmeldungen. Kann man irgendwas integrieren um zu sehen ob überhaupt was vom Empfänger kommt? Habe noch eine LED an Portb.6.
 

Anhänge

  • DCF77-Test.txt
    3,8 KB · Aufrufe: 58
Abend

Hier mal ein Update. Habe es geschaft das das DCF-Signal jetzt an Portd.7 empfangen wird.
.equ PIND = &H10 ;Pindd
.equ PIND7 = 7 ;7 = Pin 7

Fragt mich nicht warum auch PIND3 in PIND7 geändert werden musste.

Ausserdem bereite ich das Signal vom DCFempfänger über einen Transistor auf.

Allerdings kommt beim stellen Komische sachen raus. Passt nicht zur aktuellen Zeit. Die Stunden sind 6 zu wenig. Habe leider nicht die möglichkeit über RS232 zu gucken was er macht. Also laut beobachtung stellt er die Uhr bis 15 Minuten richtig. Ab da fängt er mit 10 an. Ich guck weiter.
 
Ich noch mal

Kann mir jemand sagen in was für einen Format die Bascom-Softclock die Werte für _sec..._year ausgibt?
Dort häng ich fest. Danke
 
Und schon wieder

Habe jetzt mal alle Werte die so gestellt werden zusammen gefasst.
Kann mal jemand drüber gucken un mir sagen wie das Prog darauf kommt?

Danke:)
 

Anhänge

  • wertetabelle.txt
    583 Bytes · Aufrufe: 74

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)