ATtiny 45 mit Zeitversatz

Hallo,

ich habe hier einen Sketch, bei dem in einer zeitlich festgelegten Reihenfolge LEDs ein- bzw. ausgeschaltet werden. Auf dem Arduino UNO funktioniert alles so wie es soll. Übertrage ich den Sketch auf einen ATtiny 45, so verändert sich die zeitliche Abfolge.
Hier ein paar Beispiele (in Minuten und Sekunden):
Soll: 14:45 Ist: 14:32 → 13 Sekunden früher
Soll: 19:45 Ist: 19:28 → 17 Sekunden früher
Soll: 24:25 Ist: 24:04 → 21 Sekunden früher
Also je länger das Programm läuft, umso größer werden die Abstände.

Woran liegt das?

Danke für eure Unterstützung und Grüße

Andreas

Test_Attiny45.ino (13 KB)

Hi,

welche Taktgeber werden jeweils verwendet, welche Toleranzen haben diese? Mal ins jeweilige Datenblatt geschaut?

Gruß André

Hi

Da weder der Arduino noch der ATtiny als Uhr konzipiert wurden: damit musst Du leben!
Oder Du spendierst Beiden eine Uhr - RTC nennt sich Diese (real time clock, nimm eine DS3231 oder vergleichbar).
Auch sind Arduino und ATtiny sehr temperaturabhängig - die Ergebnisse sind, wenn Du die Heizung etwas hoch drehst, direkt Andere!

MfG

pussy123:
Woran liegt das?

Deine Zeit leitest Du von millis() ab, was vom Takt abhängig ist, der wiederum vom Quarz, Resonator oder Oszillator abhängig ist. Im Kapitel "Calibrated Internal Oscillator" steht was zum Kalibrieren, habe ich aber noch nicht probiert.

Für genauere Zeiten eignet sich eine RTC wie DS3231.

Ich hab das schon gemacht für meine Kamera-Intervallsteuerung, aber genau ist was anderes...

Hallo zusammen,
vielen Dank für die Anmerkungen/Hinweise.
Da mir die Abweichungen beim ATtiny zu groß sind, werde ich in meinen Modellhäusern wohl Nanos verbauen müssen. Den Mehrpreis nehme ich da in Kauf.
Danke und schöne Neujahrsgrüße
Andreas

Du kannst auch einen ATtiny mit einem Quarz betreiben. Sind halt ein paar Bauteile mehr

Und auch den internen RC-Oszillator kann man wie gesagt kalibrieren. Siehe Seite 31:

Da gibt es hier auch schon mal einen Sketch dazu um das mehr oder weniger automatisch zu machen

Hallo,

ein Nano nützt dir genauso wenig wie ein anderer µC. Selbst wenn paar wenige Boards einen Quarz drauf haben, sagt das noch nichts über die Taktgenauigkeit aus. Maximal über deren Stabilität. Du möchtest jedoch genaue Zeiten haben. Entweder nimmst du wie schon gesagt wurde eine DS3231 und nutzt davon den Sekundentakt oder baust einen Uhrenquarz an deinen Arduino. Dann haste eine genaue Zeitbasis.

Wegen dem internen RC kalibrieren. Hilft nur wenn er Temperaturstabilisiert ist. Beim ATtiny841 weiß ich das durch eigene Tests, nur der Aufwand wäre hier höher und ob die Kalibrationsstufen dafür fein genug sind weiß ich nicht und die Versorgungsspannung muss auch konstant sein. Wäre also mit 5V USB oder 7805 nichts gewonnen. Ab Werk sind die für 3,3V kalibriert, mit der Genauigkeit der möglichen Abstufung eben.

Eine DS3231 ist der einfachste Weg. Die anderen dafür lehrreicher. Der Taktausgang einer DS3231 kann auch mehrere Boards versorgen, was ein Quarz nicht kann, hier müßtest du jedes Board individuell abgleichen.

Hi

Beim Quarz hast Du bei einigen µC die Möglichkeit, den Takt auch wieder auszugeben und Diesen an andere µC einzuspeisen, so kann man µC synchron betreiben, also exakt gleicher Takt/Flanke.

Aber: Kanonen & Spatzen - die RTC3231 läuft von sich aus, 1x auf Sekundentakt eingestellt, macht Die nichts Anderes, wirkt also wie ein 08/15 Taktgeber, nahezu kein Aufwand und wir haben, was wir wollen.
Der ATtiny muß nun nur noch alle Sekunde spätestens 1x loop() umrundet haben, um das externe Signal richtig mitzuschneiden - Das sollte schaffbar sein.

Das Einstellen kann man am Steckbrett per Arduino machen, danach braucht’s nur noch Spannung und der Sekundentakt kommt.
Eventuelle Ladeschaltungen bei normalen Knopfzellen deaktivieren - hier wurde wohl zu viel kopiert und dann die billigere Knopfzelle, statt der Knopf-Akku (LIR irgendwas) verbaut.

MfG

pussy123:
Hallo zusammen,
vielen Dank für die Anmerkungen/Hinweise.
Da mir die Abweichungen beim ATtiny zu groß sind, werde ich in meinen Modellhäusern wohl Nanos verbauen müssen.

Da würde mich schon mal interessieren, warum es in den Modellhäusern auf die Sekunde ankommt.

Wenn das so wichtig ist, könnte man einen Master nehmen, der genau genug ist, und alles anderen davon ableiten.
Oder die einzelnen Häuser nicht mit einem Controller bestücken, sondern evtl. mit einer Port-Erweiterung o.ä. die dann vom Master gesteuert wird.