Forum: Mikrocontroller und Digitale Elektronik Arduino Uno R3 und anderer Quarz


von M. W. (rallini94)


Lesenswert?

Hallo,

ich habe da eine zeimlich doofe Frage. Ich habe schon die Foren-Suche 
bemüht, aber nicht das passende gefunden.

Ich bin am überlegen, mir eine Kleinigkeit zu bauen. Dafür benötige ich 
einen µC. Deshalb war mein Gedanke: Ich kaufe mir eine Arduino Uno R3 
Board und benutze dieses quasi als Programmer. Schreiben würde ich das 
Programm auch mit der Arduino-Umgebung.

Jetzt das Problem: Die Boards laufen ja alle mit einem 16MHz Quarz und 
ich habe jetzt mehrfach gelesen, dass dann im Kontroller die Fuses 
dementsprechend eingestellt sind und nicht mehr geändert werden können.

In meiner Schaltung würde ich aber lieber einen 4,096 MHz Quarz 
benutzen.

Geht das? D.h. sind die µC nur auf externer Quarz eingestellt und es ist 
im schnuppe, welche Frequenz da hinter hängt.


Entschuldig die dumme Frage. Hatte bisher nur mit einem PIC und dessen 
internen Oszillatoren zu tun.

Vielen Dank!

von Falk B. (falk)


Lesenswert?

@M. W. (rallini94)

>einen µC. Deshalb war mein Gedanke: Ich kaufe mir eine Arduino Uno R3
>Board und benutze dieses quasi als Programmer.

Wieso Programmer?

> Schreiben würde ich das
> Programm auch mit der Arduino-Umgebung.

>Jetzt das Problem: Die Boards laufen ja alle mit einem 16MHz Quarz und
>ich habe jetzt mehrfach gelesen, dass dann im Kontroller die Fuses
>dementsprechend eingestellt sind und nicht mehr geändert werden können.

Mehr oder weniger. Man müsste auch den Bootloader anpassen, wegen der 
Baudrate.

>In meiner Schaltung würde ich aber lieber einen 4,096 MHz Quarz
>benutzen.

Warum?

>Geht das? D.h. sind die µC nur auf externer Quarz eingestellt und es ist
>im schnuppe, welche Frequenz da hinter hängt.

Im Prinzip ja, aber dann kann man den uC nur noch mittels eines 
ISP-Programmieradapters programmieren oder man muss den Bootloader 
ändern.

von Ulrich F. (Gast)


Lesenswert?

Falk B. schrieb:
> oder man muss den Bootloader
> ändern.

Und in der boards.txt die richtige Frequenz eintragen.
Sonst tun es millis() und delay() nicht genau. Auch wird die Baudrate 
falsch berechnet.

von M. W. (rallini94)


Lesenswert?

Falk B. schrieb:
> @M. W. (rallini94)
>
>>einen µC. Deshalb war mein Gedanke: Ich kaufe mir eine Arduino Uno R3
>>Board und benutze dieses quasi als Programmer.
>
> Wieso Programmer?


Ok, vielleicht muss ich meine Idee nochmal verdeutlichen:
Ich möchte mir eine Unor R3 kaufen auf dem ein Atmega328 in DIP gehäuse 
drauf ist. Dann kann man in Ruhe basteln/texten/etc., wenn man möchte.
Später will ich aber eine eigene Platine machen. D.h. Programm in der 
Arduino Umgebung schreiben (aber eigentlich in reinem C, ich bediene 
mich also der ganzen Arduino-Funktionen nicht), per Arduino Uno R3 Board 
auf den Atmega328 spielen, diesen aus dem Board nehmen und dann in meine 
eigene Schaltung setzen (welche eine 4,096 MHz Quarz bekommen soll)



>> Schreiben würde ich das
>> Programm auch mit der Arduino-Umgebung.
>
>>Jetzt das Problem: Die Boards laufen ja alle mit einem 16MHz Quarz und
>>ich habe jetzt mehrfach gelesen, dass dann im Kontroller die Fuses
>>dementsprechend eingestellt sind und nicht mehr geändert werden können.
>
> Mehr oder weniger. Man müsste auch den Bootloader anpassen, wegen der
> Baudrate.

Von Bootloadern hab ich noch keine Ahnung.

>>In meiner Schaltung würde ich aber lieber einen 4,096 MHz Quarz
>>benutzen.
>
> Warum?
>

Ich möchte eine Uhr damit realisieren. Sie muss nicht hundertprozentig 
genau sein, aber wenn ich mich nicht verrechne, ist der Fehler mit einer 
kleineren Quarzfrequenz besser (z.B. 30ppm bei 4 MHz sind absolut 
gesehen weniger als bei 16 MHz). Somit muss man nicht so häufig 
nachstellen.

Und nein, ich möchte mich noch nicht an DCF77 wagen.

>>Geht das? D.h. sind die µC nur auf externer Quarz eingestellt und es ist
>>im schnuppe, welche Frequenz da hinter hängt.
>
> Im Prinzip ja, aber dann kann man den uC nur noch mittels eines
> ISP-Programmieradapters programmieren oder man muss den Bootloader
> ändern.

Dann finde ich die Idee des Boards etwas komisch. Ich meine, das Board 
eignet sich doch eigentlich super als Test- und Programmierumgebung. 
Wenn man damit fertig ist, nimmt man den Atmega raus und packt ihn auf 
seine Platine. Wäre doch schade, wenn man dann an einen 16 MHz Quarz 
gebunden wäre.


Aber wenn das nicht zu ändern ist, muss ich halt einen 16 MHz Quarz 
nehmen

von Max H. (hartl192)


Lesenswert?

M. W. schrieb:
> z.B. 30ppm bei 4 MHz sind absolut
> gesehen weniger als bei 16 MHz
Rechen mal für beiden den Größtfehler aus wenn das Signal auf 1Hz 
runtergeteilt wurde und vergleich sie.

von Tom E. (Gast)


Lesenswert?

M. W. schrieb:
> (z.B. 30ppm bei 4 MHz sind absolut gesehen weniger als bei 16 MHz).

30ppm sind 30ppm - egal bei welcher Frequenz.

von Ulrich F. (Gast)


Lesenswert?

M. W. schrieb:
> Ich möchte eine Uhr damit realisieren.
Dann vergiss den Uno...

Kauf dir einen USBasp, ca 3€

Und stecke an den ATMega einen Standard Uhrenquarz.
Auch damit ist eine interner Takt von 8MHz möglich.

von Falk B. (falk)


Lesenswert?

@ M. W. (rallini94)

>Ich möchte mir eine Unor R3 kaufen auf dem ein Atmega328 in DIP gehäuse
>drauf ist.

OK.

> Dann kann man in Ruhe basteln/texten/etc., wenn man möchte.
>Später will ich aber eine eigene Platine machen. D.h. Programm in der
>Arduino Umgebung schreiben (aber eigentlich in reinem C, ich bediene
>mich also der ganzen Arduino-Funktionen nicht),

Warum nicht? Ist das zu einfach?

> per Arduino Uno R3 Board
>auf den Atmega328 spielen, diesen aus dem Board nehmen und dann in meine
>eigene Schaltung setzen (welche eine 4,096 MHz Quarz bekommen soll)

Bringt nix.

>Ich möchte eine Uhr damit realisieren. Sie muss nicht hundertprozentig
>genau sein,

AVR - Die genaue Sekunde / RTC

> aber wenn ich mich nicht verrechne, ist der Fehler mit einer
>kleineren Quarzfrequenz besser (z.B. 30ppm bei 4 MHz sind absolut
>gesehen weniger als bei 16 MHz). Somit muss man nicht so häufig
>nachstellen.

Falsch gedacht. 30ppm sind immer 30ppm, der relative Fehler ist gleich. 
Und nach Teilung auf 1s und weniger ist der relative Fehler auch gleich 
groß. Siehe den Artikel oben.

>Dann finde ich die Idee des Boards etwas komisch. Ich meine, das Board
>eignet sich doch eigentlich super als Test- und Programmierumgebung.
>Wenn man damit fertig ist, nimmt man den Atmega raus und packt ihn auf
>seine Platine. Wäre doch schade, wenn man dann an einen 16 MHz Quarz
>gebunden wäre.

Kann man ändern, ist aber etwas für Fortgeschrittene.

>Aber wenn das nicht zu ändern ist, muss ich halt einen 16 MHz Quarz
>nehmen

Nimm ihn, er schadet dir nicht. Ausserdem hat der AVR einen 
einstellbaren Prescaler, da kann man die CPU auch langsamer laufen 
lassen. Wenn man Strom sparen muss, nimmt man so oder so einen 32.768 
kHz Uhrenquarz und den Sleep Mode.

von Wolfgang (Gast)


Lesenswert?

Ulrich F. schrieb:
> Und stecke an den ATMega einen Standard Uhrenquarz.

Der Standard Uhrenquarz nützt nur etwas, wenn der genau abgeglichen ist. 
Sonst kann man genauso gut irgendeinen 8 oder 16 MHz Quarz nutzen und 
den per Software abgleichen.
Beitrag "Die genaue Sekunde / RTC"

von M. W. (rallini94)


Lesenswert?

Falk B. schrieb:

> Falsch gedacht. 30ppm sind immer 30ppm, der relative Fehler ist gleich.
> Und nach Teilung auf 1s und weniger ist der relative Fehler auch gleich
> groß. Siehe den Artikel oben.


Ja, stimmt wohl. Hab ich gestern abend auch noch festgestellt ;)



Ich werde mir dann wohl doch einen 16 MHz Quarz besorgen und das ganze 
so realisieren. Wie gesagt, muss nicht haargenau sein, wäre aber schon 
doof, wenn die Uhr dann pro Tag mehrere Minuten falsch ginge.


Vielen Dank auf jeden Fall für die Bestätigung meiner Annahme bzw. die 
Aufklärung!

von Dietrich L. (dietrichl)


Lesenswert?

M. W. schrieb:
> Ich werde mir dann wohl doch einen 16 MHz Quarz besorgen und das ganze
> so realisieren. Wie gesagt, muss nicht haargenau sein, wäre aber schon
> doof, wenn die Uhr dann pro Tag mehrere Minuten falsch ginge.

Dann rechne doch einfach mal nach:

Ein Tag hat 24 x 60 x 60 = 86.400 Sekunden. 30ppm sind dann 2,592 
Sekunden.

von M. W. (rallini94)


Lesenswert?

Dietrich L. schrieb:
> M. W. schrieb:
>> Ich werde mir dann wohl doch einen 16 MHz Quarz besorgen und das ganze
>> so realisieren. Wie gesagt, muss nicht haargenau sein, wäre aber schon
>> doof, wenn die Uhr dann pro Tag mehrere Minuten falsch ginge.
>
> Dann rechne doch einfach mal nach:
>
> Ein Tag hat 24 x 60 x 60 = 86.400 Sekunden. 30ppm sind dann 2,592
> Sekunden.

Ja, soweit bin ich mittlerweile auch ;)
Hatte halt am anfang den Denkfehler, dass die Frequenz eine Einfluss 
hätte, aber klar 30ppm sgat es ja schon: Pro Million somit ist es was 
realtives und somit Frequenzwertunabhängig.

Vielen Dank nochmal, auch für den Link zum Artikel, damit kann man die 
Genauigkeit wirklich schön nochmal steigern.

von m.n. (Gast)


Lesenswert?

M. W. schrieb:
> Ich werde mir dann wohl doch einen 16 MHz Quarz besorgen und das ganze
> so realisieren.

Solange Du den ATmega auf dem Arduino Board betreibst, kannst Du auch 
den Quarz des ATmega16U2 mit verwenden.
http://www.mino-elektronik.de/fmeter/fm_software.htm#bsp7
Im 2. Abschnitt unter 'automatischer Abgleich' findest Du eine 
Beschreibung nebst Bild, wie es geht.

von Gregor O. (zappes)


Lesenswert?

Man könnte führ die Uhrenfunktion auch sowas benutzen:

http://www.ebay.de/itm/DS1307-I2C-Real-Time-Clock-AT24C32-I2C-EEPROM-Board-Batterie-CR2032-/201278006037?hash=item2edd1aa315

Ist jetzt nur ein Beispiel - die Dinger gibt es für rund 5 Euro in den 
verschiedensten Ausführungen mit und ohne Pufferbatterie.

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.