Neuer Quarz für Uhr (Arduino Uno)

Hallo,

ich bin neu hier, daher bitte ich um Verständnis für dumme Fragen ;)

Ich habe vor langer langer Zeit mit einem Bekannten meinen Arduino so programmiert und mit einer Schaltung versehen, dass ich eine alte Bahnuhr ansteuern kann. Das Problem ist seit Anfang an, dass die Uhr immer mehr vorgeht. Der Bekannte meinte damals, dass ich doch einfach den Taktgeber auf dem Arduino durch einen Quarz austauschen soll. Also hab ich mir das Bauteil gekauft und wollte es einbauen. Doch wie es so ist, lag es jetzt sehr sehr lange im Schrank. Mit dem Bekannten habe ich jetzt leider kein Kontakt mehr und nun weiß ich nicht, wie ich das anstelle.

Meine Frage: Kann ich den Quarz (kleines silbernes Bauteil mit zwei Füßchen und der Beschriftung 16.000Mhz) auch über die Anschlüsse des Arduino den Takt angeben lassen. Wahrscheinlich nicht noch ein bisschen Programmierung, oder muss ich den alten Taktgeber auslöten und den Quarz ein? Wenn zweitens: wo ist das "alte" Bauteil auf dem Board zu finden?

Vielen Dank für die Hilfe :)

Ich kenn mich da leider auch nicht aus, hab aber einen alten Post gefunden: Klick

Hallo,

der Arduino hat einen Keramikoszillator als Taktgeber. Der ist nicht so genau wie ein Quarz. Ich fürchte allerdings, dass du mit deinem Vorhaben nicht erfolgreich sein wirst. Der Keramikoszillator hat eine andere Bauform und benötigt keine zusätzliche Kondensatoren nach Masse, die sind sozusagen schon integriert. Du müsstest den Keramikoszillator auslöten und dann den Quarz auf ein nicht passendes Lötpad einlöten und zusätzlich zwei SMD Kondensatoren anlöten. Möglich ist das, aber ohne wirkliche SMD Löterfahrung machst du wahrscheinlich mehr kaputt.

Besorg dir lieber ein billiges Real Time Clock Modul (z.B. mit DS3231) und lass das die Genauigkeit produzieren, die du suchst.

Gruß Reinhard

Der Link von Varoon bringt Dich nicht weiter. Der interne Takt ist noch gruseliger als der externe.

Wenn Du löten kannst spricht nichts gegen den Austausch, Hinweis von Reinhard zu den Kondensatoren bitte beachten. Muss nicht SMD sein, aber ich hab das Board auch nicht vor der Nase.

RTC ist die beste Variante weil langzeitstabiler und das Ding tickt auch weiter wenn mal der Strom ausfällt. Musst halt bissel programmieren, ist aber überschaubar.

Noch ne Alternative: Takt ausmessen und softwareseitig kompensieren. Erfordert entsprechende Messtechnik.

Schau mal, ob du bei du bei den Chinesen ein Uno Nachbau mit einem 16MHz Quarz findest. Alternativ versuch mal einen alten Duemilanove zu bekommen. Das Auslöten des Keramikresonators und einlöten eines neuen Quarzes + 2 Kondensatoren halte ich für Schwachsinn. Problem wird sein, dass dieser durch die Anbringung ebenfalls nicht so genau läuft. Besogt dir wie bereits gesagt einen DS3231(I2C Interface) oder DS3234(SPI Interface) und nutzte entweder direkt die Zeitauslesung von dort oder nutzte direkt den Ausgang des 32kHz TXCO. Im Gegensatz zu den Arduino Quarzen ist dieser einiges genauer über einen größeren Betriebstemperaturbereich.

Es gibt auch Arduino Derivate mit Quarzen, z.B. Freaduino, Seeeduino (ab v2.2) oder Olimexino

Der Arduino UNO R1 hatte Lötpads für einen Quarz und die dazugehörigen 22pF Kondensatoren. Die Modelle R2 und R3 haben einen Quarz nicht vorgesehen. UNO R1: http://arduino.cc/en/uploads/Main/ArduinoUnoFront.jpg

Nimm einen RTC wie erni-berni vorschlägt.

Grüße Uwe

Meine Frage: Kann ich den Quarz (kleines silbernes Bauteil mit zwei Füßchen und der Beschriftung 16.000Mhz) auch über die Anschlüsse des Arduino den Takt angeben lassen.

Soweit ich sehe, ist das noch keinem aufgefallen:
Was du siehst, ist der Quarz für den 16U2, der die USB - Schnittstelle bedient.

Quarz_Resonator.png
Der wird da gebraucht, und kann nicht am 328P angeschlossen werden. Wie wolltest du das machen? Es wäre weit einfacher, sich einen standalone atmega328P mit quarz zu bauen.

michael_x: Es wäre weit einfacher, sich einen standalone atmega328P mit quarz zu bauen.

Dann nimmt man doch einen ATMega, welche eine RTC eingebaut hat.

Oder, wenns beim Arduino bleiben soll, eine i2c RTC Uhr. Kostet ca 2 Euronen.

hi,

keine ahnung, ob der TO noch mitliest. aber es wäre interessant, ob er das ding eigentlich umprogrammieren KÖNNTE. oder ob das damals der bekannte im großen und ganzen alleine gemacht hat.

falls ja: natürlich eine RTC.

falls nein: sollte es arduino nachbauten in china geben, die einen quarz haben, könnte er ja einen solchen nehmen und einfach den atmega328 aus dem alten arduino ziehen und in den neuen stecken. bei den fuses muß man in dem fall doch nichts ändern, oder?

gruß stefan

Den Fuses stört es nicht, ob da nun ein Quarz oder Resonator verbaut ist mit 16MHz. Ein 8MHz Quarz würde ihm auch nicht auffallen, jedoch sind dann viele Sachen nur noch halb so schnell (delay(1000) dauert dann halt mal 2s)

Hallo,

ja ich lese hier mit, kann die Domain arduino.cc aber irgendwie leider nur schlecht erreichen. Ok, wenn das mit dem Taktgeber austauschen so ein Aufwand ist, lasse ich das lieber und schau mir mal die Lösung mit dem RTC an. Im Netz scheint es da auch Anleitung zusammen mit dem Arduino zu geben. Dann muss ich mal sehen, ob ich das programmiertechnisch hinbekomme. Aber das werde ich in einer ruhigen Minute ausprobieren. Ich werde mich dann hier nochmal melden und schreiben wies lief ;)

Viele Grüße und danke für die Tipps

Edit: noch ne kurze Frage. Was ist der Unterschied zwischen I2C und SPI? Auf die Schnelle konnte ich finden, dass es zwei verschiedene Busse sind. Hier gibts glaube ich eine ganz gute Anleitung mit Programmcode: http://www.geeetech.com/wiki/index.php/DS3234_Real-Time_Clock_Module Da nehmen sie einen mit SPI und binden die entsprechende Bibliothek ein. Das ist doch mal ein Anfang :)

Nimm aber einen DS3231 RTC, Der ist genauer als DS1307 oder DS1702. Grüße Uwe

Schau dich am besten nach dem DS3231 um. Der ist deutlich günstiger in der Bucht zu bekommen. Ich habe bevorzugt den DS3234 in avr gcc im Einsatz, da die meisten meiner Controller keinen I2C Bus als Master zur Verfügung stehen haben.

hi,

die I2C-RTC ist wesentlich gebräuchlicher, weil auch die billigeren RTCs mit diesem bus arbeiten. Du findest mehr codes und das ding ist auch günstiger. und hier im forum findest Du bestimmt auch mehr unterstützung bei fragen. wie schultewolter schrieb: die SPI-RTC ist eher ein sonderfall für spezielle anforderungen. klar geht es damit, aber nicht besser und eben teurer.

gruß stefan

Naja, teurer beim Großhändler nicht umbedingt. Aber der DS3231 ist halt der typische im Einsatz mit dem Arduino, da alle Arduinos von Haus aus I2C als Master verfügen.

Die Ics sind normalerweise recht teuer. (7-8€ ohne PCB). In der Bucht durchaus günstig zu bekommen. Empfehlenswert wäre die Module mit der 3V Lithium Batterie.

http://www.ebay.de/itm/3pcs-DS3231-AT24C32-Modul-Hochgenauigkeit-RTC-Modul-Timer-Speichermodul-/171668221480?pt=Wissenschaftliche_Ger%C3%A4te&hash=item27f8392e28

http://www.ebay.de/itm/2-DS3231-AT24C32-IIC-Modul-Prazision-Echtzeituhr-Time-Speichermodul-fur-Arduino-/111536398946?pt=Bauteile&hash=item19f8166262 (inkl Batterie)

Das Foto mit dem Quarz am USB-ATMEL und dem Resonator bringt mich auf eine verwegene Idee! :smiling_imp: Wenn man den Resonator auslötet und mit einem Stück Fädeldraht rüber zum Quarz geht und dort den Takt abgreift und den 328 auf externen Clock umfust ;) Ok, es ist nicht soo die saubere Lösung, da es halt kein richiger Oszillator mit entsprechender Ausgangsbelastbarkeit ist, aber funktionieren sollte es. man kann einen verfusten Controller so wiederbeleben :P

nix_mehr_frei: :smiling_imp: Wenn man den Resonator auslötet und mit einem Stück Fädeldraht rüber zum Quarz geht und dort den Takt abgreift und den 328 auf externen Clock umfust ;)

Ok, Du willst also daß keiner der beiden Controller mehr funktioniert?

Ehrliche Bewertung: Saublöde Idee; funktioniert sicher nicht.

Grüße Uwe

Also richtig verwegen fände ich wenn Du nichts auslötest und nur einen Draht dazu lötest. Und zwar auf der Controller Eingangsseite, d.h. der Pin der nicht getrieben wird. Warum das funktionieren KÖNNTE (ausprobiert habe ich das nicht). Letztendlich sind das zwei Schwingkreise die etwa die gleiche Mittenfrequenz haben. Einer davon schmalbandig der andere nicht. Es könnte sein (muesste man ausprobieren), daß es reicht die aneinander zu koppeln. Es könnte aber auch schief gehen und beide haetten dann keinen brauchbaren Takt mehr.

Das wäre aber ein echter Klassiker für Hackaday.

@Uwe: hängt von den Oszillatoreinstellungen up. Wenn der Controller mit dem Quarz auf "full swing" statt "low power oszillator" steht, dann besteht eine gewisse Chance, daß das klappt. Ich behaupte aber nicht, daß das stabil klappt. Ich würde einfach einen SMD Quarz und zwe SMD Kondensatoren oder direkt ein Oszialltormodul drauf löten.

Die Idee von nix_mehr_frei ist wohl nicht neu.

Hier wurde das schon gemacht, nur das der Clock an einem Pin des 16U2 durchgeschleift wird. Der müsste dann umgefused werden.

Es redet hier zwar von einem ATmega8U, das müsste mit dem 16U2 auch funktionieren.