Hallo,
sicher schon 100x im Forum besprochen... Ich habe bei einem kleinen
Projekt eine Serie von 4 Geräten mit ATTiny 85 gebaut, überall die
gleiche Software drauf und festgestellt, dass die Toleranzen in den
Zykluszeiten schon deutlich zu erkennen sind. Sämtliche Bedingungen sind
an den Geräten identisch (Versorgung 3,3V Festspannungsregler,
Temperatur, ...) Werde es mal genauer ausmessen müssen.
Hat jemand Erfahrungen, wie groß die Bandbreite bei den internen
Taktgebern eines ATTiny ausfallen kann?
Mit einem externen Quarz wird das wohl genauer hinzubekommen sein. Nur
wie sieht die Energiebilanz zwischen internem Taktgeber und externen
aus? Braucht eine Lösung mit externem Taktgeber mehr Energie (Gerät mit
Akkus 4xAAA betrieben)?
Über Tipps und Infos wäre ich sehr dankbar.
Gruß Markus
Der interne Takt hat etwa 1% Toleranz, ggf. auch etwas mehr bei den
neueren AVRs.
Beim Quarz hat man eher so 200 ppm = 0.02% Toleranz oder weniger.
Der Energieverbrauch ist mit Quarz sogar eher niedriger - es hängt aber
ggf. von der Frequenz ab, und welche der Stromsparmodi genutzt werden.
Als Sparsame Variante gibt es noch einen 128 kHz RC Takt, allerdings mit
noch mehr Toleranz.
Nicht verwechseln, wenn Du die Fuses setzt:
Ein Quartz am AVR ist NICHT ein externer Oszillator.
Der Interne Oszillator kann wahlweise mit externem Quartz oder mit
intermer R/C Kombination betrieben werden.
Unter externem Oszillator versteht AVR ein Ding, dass einen sauberen
Takt mit Logik-Pegeln abgibt uns selbst schwingt. z.B. sowas:
http://www.reichelt.de/?ARTICLE=13706
Deren Stromaufnahme ist bedeutend höher, als die des internen
Oszillators. Wenn man sie auf konstante Temperatur hält (was wegen dem
Metallgehäuse recht einfach ist), liefern sie eine sehr stabile
Frequenz.
stefan us schrieb:> Nicht verwechseln, wenn Du die Fuses setzt:> Ein Quartz am AVR ist NICHT ein externer Oszillator.>> Der Interne Oszillator kann wahlweise mit externem Quartz oder mit> intermer R/C Kombination betrieben werden.>> Unter externem Oszillator versteht AVR ein Ding, dass einen sauberen> Takt mit Logik-Pegeln abgibt uns selbst schwingt. z.B. sowas:> http://www.reichelt.de/?ARTICLE=13706>> Deren Stromaufnahme ist bedeutend höher, als die des internen> Oszillators. Wenn man sie auf konstante Temperatur hält (was wegen dem> Metallgehäuse recht einfach ist), liefern sie eine sehr stabile> Frequenz.
Klasse. Jetzt hast du bei jemandem, der sich unsicher ist, mit absoluter
Sicherheit sämtliche Klarheiten beseitigt. Nirgendwo steht geschrieben,
daß Atmel unter einem externen Oszillator irgendein Ding versteht.
Zum Betrieb mit Quarz wird per Fuse "Ext.Crystal Osc." eingestellt!
Der Betrieb mit einem externen Takt nennt sich "Ext. Clock"!
Dabei kann es sich auch um das oben genannte Ding handeln. Aber im
Grunde ist es hierbei völlig egal, wo der Takt herkommt. Und wenn den
jemand trommelt.
mfg.
kopfkratz
Ja nun welche Genauigkeit wird denn benötigt bzw. was ist das
eigentliche Problem ?
Gehe mal ohne interne Kalibrierung von max. 5% Toleranz aus.
Wenn der Tiny85 intern kalibriert wird kann auch unter 1% Toleranz
herauskommen.
Externer Quarz reicht in jedem Falle für eine genaue Sekunde.
Externer Quarzoszillator gibt's auch mit 1ppm oder weniger (wenn der
Preis egal ist).
Also was genau ist das eigentliche Problem ?
@ mgolbs (Gast)
>Projekt eine Serie von 4 Geräten mit ATTiny 85 gebaut, überall die>gleiche Software drauf und festgestellt, dass die Toleranzen in den>Zykluszeiten schon deutlich zu erkennen sind.
Wie groß denn?
>Temperatur, ...) Werde es mal genauer ausmessen müssen.
Tu das.
>Hat jemand Erfahrungen, wie groß die Bandbreite bei den internen>Taktgebern eines ATTiny ausfallen kann?
Man spricht hier von Toleranz. Ohne Kalibrierung hat man locker mal 10%
und mehr!
>Mit einem externen Quarz wird das wohl genauer hinzubekommen sein.
Deutlich. Die Frage ist aber, ob das nötig ist.
> Nur>wie sieht die Energiebilanz zwischen internem Taktgeber und externen>aus? Braucht eine Lösung mit externem Taktgeber mehr Energie
Bei Betrieb mit Quarz ist der Energieverbrauch höher, je nach Modell und
Frequenz vielleich 10-30uA. Siehe Sleep Mode.
Ulrich schrieb:> Beim Quarz hat man eher so 200 ppm = 0.02% Toleranz oder weniger.
Normalerweise viel weniger.
> Der Energieverbrauch ist mit Quarz sogar eher niedriger
Das stimmt nun gerade nicht. Nichtmal so, rein für den Oszillator,
erst recht nicht, wenn man häufig schlafen gehen will und dann beim
Aufwachen erstmal den Quarzoszillator anleiern muss. Aufgrund der
hohen Güte eines Quarzes braucht ein Quarzoszillator nämlich endlos
lange, bis er stabil läuft. In dieser Zeit zieht er „unproduktiv“
(da die CPU mit dem Takt noch nicht arbeiten kann) Strom. Der
RC-Oszillator dagegen ist nach 6 Takten stabil und kann die CPU
antreiben.
Jörg Wunsch schrieb:> Ulrich schrieb:>>> Beim Quarz hat man eher so 200 ppm = 0.02% Toleranz oder weniger.>> Normalerweise viel weniger.
Na so viel weniger nun auch wieder nicht. Typisch sind 35..50 ppm für
den Quarz selber. Bei Normbedingungen!!! Mit Temperaturdrift,
insbesondere auch von Bürdekapazitäten und Oszillator muß man einfach
mit 200ppm rechnen. Alles andere wäre unseriös.
Mit sowas kann man höchstens BWLer/Werbeblättchen-Leser verarschen, aber
keine Techniker/Datenblatt-Leser.
> Zum Betrieb mit Quarz wird per Fuse "Ext.Crystal Osc." eingestellt!
Tatsächlich. Ist aber technisch gesehen nicht ganz richtig, finde ich.
Denn der Quartz ist kein Oszillator. Der Oszillator befindet sich im
AVR.
Ich würde diese Option "Ext. Crystal" nennen.
Stefan us schrieb:>> Zum Betrieb mit Quarz wird per Fuse "Ext.Crystal Osc." eingestellt!>> Tatsächlich. Ist aber technisch gesehen nicht ganz richtig, finde ich.> Denn der Quartz ist kein Oszillator. Der Oszillator befindet sich im> AVR.>> Ich würde diese Option "Ext. Crystal" nennen.
Technisch gesehen ist das vollkommen richtig. Der Oszillator ist auf dem
Controller. Da er keinen Quarz eingebaut hat, ist dieser extern. Im
übrigen gibt es auch nicht DEN Oszillator, sondern, bei einem Atmega48
beispielsweise, insgesamt 5.
- Timer/Counter Oscillator
- Crystal Oscillator
- Low-frequency Crystal Oscillator
- Calibrated RC Oscillator
- Watchdog Oscillator
Es wird daher auch nicht zwischen RC und Quarz am Oszillator
umgeschaltet, wie du oben erzählt hast, sondern es werden verschiedene
Oszillatoren benutzt.
Zum Betrieb mit einem Quarz benutzt man den "Crystal Oscillator". Da der
Quarz extern ist, ist das dann "Ext. Crystal Osc.". Das "Ext." bezieht
sich dabei auf die Lage des Quarzes.
Entweder versteht man das oder man nimmt es einfach so hin. Aber man
denkt sich keine eigenen Bezeichnungen aus oder interpretiert das so,
wie man es gerne hätte und verwirrt andere damit.
mfg.
Hallo,
vielen Dank für die vielen Informationen und Tipps. Im Kern nehme ich
mit:
# externer "Taktgeber" min. um ca. Faktor 50 genauer
# externer Taktgeber benötigt "mehr" Energie
# Das Thema interne Kalibrierung unter 1% ist das die Geschichte mit
"21.4.1 Calibrated Internal RC Oscillator Accuracy". Leider habe ich das
noch nicht von der Funktion her verstanden. Auch nicht in Verbindung zu
234 Seiten Datenblatt der ATTiny85. Ist das nur der Schritt von "8MHz"
auf "6.4MHz" per Fuses, wohl eher nicht? Die Kennlinie sind zu finden,
nur wo soll ich die Kalibrierungswerte eintragen? In die eigene Software
mit zwei Sensoren verknüpft? Wohl eher nicht....
# 1% wären auf eine Tag gesehen immer noch ca. 15 Minuten....
# ext. Taktgeber mit 10-30uA sind im Vergleich zu Internal RC
Oscillator, 128 kHz eine Nummer, in Bezug zu Internal RC oscillator, 8
MHz schon recht unbedeutend. Leider sind die 128kHz noch mit größeren
Toleranzen belegt.
Genauere externe Taktgeber mit niedrigen Frequenzen gibt es schon
(ähnlich 128kHz..)?
Die Toleranz kommt primär vom ATTiny selbst, oder in bedeutendem Maß
auch von der Genauigkeit der Versorgungsspannung (Betrachtung bei
gleicher Temperatur)? Ich arbeite mit 3,3V am ATTiny85.
# Sleep Mode geht bei Anwendung nicht. Diese läuft recht kontinuierlich
durch mit dem Ziel min. 30Tage.
# Einsatztemperaturbereich real von etwa -10°C...50°C.
Da das ganze per Seriennummer laufen wird, habe ich schon an eine
Kalibrierung in der Software gedacht. Jedes Gerät eine Seriennummern
*.hex
Gruß und Dank
Markus
kopfkratz
Jetzt wissen wir immer noch nicht was Dein eigentliches Problem ist.
Wenn Du sekundengenaue Zeit brauchst nimm einen externen Quarz der
Deinen Anforderungen entspricht.
Uhrenquarze gibt es auch noch ...
Mit einem Uhrenquarz (32,... kHz) am µC bekommt man einen genauen und
sparsamen Takt, nur halt recht langsam. Für 30 Tage sollte es damit
reichen.
Einige der AVRs haben auch die Möglichkeit 2 Takte zu nutzen: den 32 kHz
Quarz für einen Timer und die genaue Zeit, und den internen RC Takt für
Rechenaufgaben - wenn gerade nichts zu tun ist befindet sich der µC in
einem Sleep mode.
Attraktiv wäre ggf. noch ein ca. 450 kHz keramischer Resonator statt
eines Quarz. Der ist nicht ganz so genau wie ein Quarz, aber immer noch
besser als ein RC Takt und wegen der geringen Frequenz auch nicht so
Stromhungrig. Über den Teiler für den CPU-Takt kann man die
Geschwindigkeit und damit den Stromverbrauch der CPU reduzieren - wenn
man sich die Sleep Modes nicht zutraut.
Hallo,
danke für die Antworten. Mein Problem ist im Grunde, dass zwischen den
einzelnen "Messgeräten" nach ca. 30 Tagen kein Gangunterschied im
"mehreren Stunden" Bereich liegen darf, bis 1h wäre i.O..
Die Aussage "...Uhrenquarz (32,... kHz)" kingt interessant, lässt sich
bei mir leider nicht umsetzen, da ich 3 ADC's benötige. An XTAL1 und
XTAL2 hängen bei mir zwei Sensoren. Einen könnte ich ersetzen aber eben
nicht beide.
Die 128kHz sind mit noch größerer Toleranz in der Frequenz behaftet als
die 8MHz/ 6.4MHz.
Zwei Fragen noch:
# 21.4.1 Calibrated Internal RC Oscillator Accuracy >> wie funktioniert
das eigentlich?
# Wenn ich z.B. 1% Abweichung in Vcc habe, sind dann dadurch auch schon
bedeutende Abweichungen in der 128kHz Frequenz zu erwarten? Figure
22-43. Calibrated 1.6 MHz RC Oscillator Frequency vs. VCC würde dies
grundsätzlich erwarten lassen, aber nicht in gleichem Maß (1%Vcc >>
"0,1% f".
Ich werde wohl mit 128kHz intern weiter arbeiten, und jedes Gerät
kalibrieren sowie dann im Code die Toleranzen gegenrechnen.
Gruß und Dank Markus
Hi,
Ich habe irgendwo mal gelesen, dass du einen der uC als Master nehmen
kannst, der den Takt ausgibt und die anderen mitsteuert. Die absolute
Genauigkeit ist definitiv nicht hoeher, aber relativ koennte es besser
werden. Ggf. kannst Du auch durch ein clock Signal synchronisieren (uart
zeitsignal verteilen). Theoretisch kannst Du die SW gleich halten und
ueber ein Flag im EEPROM Master - Slave auswaehlen.
//hufnala
Der 128 kHz Takt ist nicht besonders stabil. Der interne RC Takt ist da
schon deutlich besser. Eine 1% Änderung bei VCC ist da noch nicht so
kritisch. Auf weniger als 1 h nach 30 Tagen zu kommen wird aber schwer
bis unmöglich.
Wenn der ADC gebraucht wird, wird es mit einem 32 kHz Takt für die CPU
ohnehin nicht gut gehen, das ist zu langsam für den ADC (zumindest
außerhalb der Spezifikation).
Wenn die Pins so knapp sind, dass ein externer Quarz (XTAL1 und XTAL2)
nicht geht - wird es sowieso schwer. Da muss man dann schon überlegen
einen etwas größeren µC (etwa Mega88) zu nutzen so dass man einen
externen Quarz oder Resonator nutzen kann.
Ich sehe da 2 Möglichkeiten:
Ein 450 kHz Resonator als Takt, ggf. mit Berücksichtigung der
individuellen Frequenz. Das sollte von Stromverbrauch noch gehen, wenn
der µC einen Teil der Zeit in Sleep Modes ist, oder ggf. der Takt noch
intern durch 4 geteilt wird.
Ein Uhrenquarz um Timer2 Asynchron laufen zu lassen. Die CPU kann dann
mit 128 kHz oder dem internen RC.
mgolbs schrieb:> Die Aussage "...Uhrenquarz (32,... kHz)" kingt interessant, lässt sich> bei mir leider nicht umsetzen, da ich 3 ADC's benötige. An XTAL1 und> XTAL2 hängen bei mir zwei Sensoren. Einen könnte ich ersetzen aber eben> nicht beide.
Wäre es möglich, den Tiny85 durch einen Tiny44/84 im 14-pol. SO-Gehäuse
per Adapterplatine zu ersetzen? Dann wären die Probleme mit ADC + ext.
Quarz schnell erledigt.
OK,
letzter Versuch wenn nur ein Pin für externen Takt vorhanden ist geht
NUR ein Quarzoszillator, ob dann die restlichen Parameter eingehalten
werden können kann niemand sagen weil halt keine Informationen vorhanden
sind.
Bau also einen Prototypen mit einem 8MHz Oszillator auf und teste ob das
paßt.
Wenn nicht anderen µC nehmen ...
Hallo,
vielen Dank für die Informationen.
# Tiny44/84 im 14-pol. SO-Gehäuse wird definitiv ein weiteres Layout
geben. Dann wäre grundsätzlich auch ein solcher Tiny möglich. Die DIL 14
sind vom Energieverbrauch wohl fast ebenbürtig einzuschätzen? Werde ich
mal im Hinterkopf behalten und Datenblatt der Tiny44/84 studieren....
# " lese das kalibrierungs byte aus und verfahre des weiteren laut
Datenblatt als Bsp. ATiny15 :" Das werde ich mir mal genauer anschauen -
Danke!
Gruß & Dank Markus