Wie genau ist der Intere Quarz

Gast #856120
Lesenswert?

Hi,

ich habe mir einen Counter mit Siebensegmentanzeige gebaut. Der Counter 
soll ca. jeder Sek einen Variable herunterzählen. Ich habe folgenden 
Ansatz gewählt:

Hardware:
- Atmega 8
- Spg. Versorgung
   - 230V->9V Trafo
   - Brückenschaltung aus vier Dioden
   - 1000µF zur Glättung

Software:
- Internen Quarz auf 8 Mhz eingestellt
- Timer0 auf 31250 Hz eingestellt
- Timer0 Interrupt aktiviert
- In der Interruptfkt. eine Schleife, die von 122 (=31250/256) bis 0 
zählt und dann eine globale Variable herunterzählt

Irgendwie hat das ganze auf meinem Schreibtisch mit einem Schaltnetzteil 
ohne Probleme funktioniert. Jetzt mit dem Trafo habe ich das Problem, 
dass der Counter manchmal jede Sekunde herunterzählt und manchmal ca. 
die dreifache Geschwindigkeit hat, sprich dreimal pro Sek herunterzählt. 
Kann das an dem Internen Quarz liegen (wäre ganz schön häftig wenn da 
solche unterschiede geben sollte)?
Oder habt Ihr ne Idee, woran es liegen könnte?

Gruß
Olli
Moderator Persönliche Seite #856128
Lesenswert?

Olli wrote:

> - Internen Quarz auf 8 Mhz eingestellt

Sowas gibt es nicht.

Das ist ein RC-Oszillator.  Der lässt sich bei konstanten Umgebungs-
bedingungen (Vcc, Tamb) auf ca. 0,5 % genau kalibrieren.

> Irgendwie hat das ganze auf meinem Schreibtisch mit einem Schaltnetzteil
> ohne Probleme funktioniert. Jetzt mit dem Trafo habe ich das Problem,
> dass der Counter manchmal jede Sekunde herunterzählt und manchmal ca.
> die dreifache Geschwindigkeit hat, sprich dreimal pro Sek herunterzählt.

So ungenau wiederum ist der RC-Oszillator aber auch nicht.  Du
wirst irgendwelche Spikes auf deinem Signal haben.
(Firma: Q3) #856131
Lesenswert?

Im ATMega ist kein Quarz, sondern ein (Temp.-stabilisierter) 
RC-Oszillator. Dessen Genauigleit ist für viele Anwendungen ausreichend, 
mit einem Quarz aber nie und nimmer vergleichbar.

Dein Problem klingt aber eher nach ungenügender Siebung der 
Betriebsspannung, evtl. im Zusammenhang mit schwankendem Verbrauch 
deiner Anzeige. Ein solches Netzeil ohne Regler ist bei dem geringen 
Strombedarf ein Risiko, die Quasi-Lehrlaufspannung kann kritisch hoch 
werden. Ich würde einen 780x-Reglerchip verwenden.

davon abgesehen - Probier mal Folgendes:

- unmittelbar am ATMega eine Parallelschaltung von 1 yF Elko und 10 nF 
Keramik

- den ATMega über 100 Ohm Widerstand versorgen, getrennt vom Rest der 
Schaltung

Frank
#856132
Lesenswert?

Olli wrote:
> Kann das an dem Internen Quarz liegen (wäre ganz schön häftig wenn da
> solche unterschiede geben sollte)?

Ne am internen Quarz liegst garantiert nicht, weil kein AVR nen internen 
Quarz hat.
Die AVRs haben nen internen RC-Generator, nach wenigen Minuten sind 
schon mehrere Sekunden Abweichung zu sehen. Für ne Eieruhr gerade noch 
geeignet.


> Oder habt Ihr ne Idee, woran es liegen könnte?

Naja, 9V ist ganz schön heftig.
Es wundert mich, daß der AVR überhaupt noch lebt.


Peter
Gast #856172
Lesenswert?

Ok ok,

meinte natürlich den interen RC-Oszillator. Und habe auch vergessen zu 
schreiben, dass ich natürlich einen 7805 mit auf der Schaltung habe. 
Anbei habe ich mal die Schaltung gehängt allerdings ohne Trafo, 
Brückengleichrichter und Glättungselko.

Gruß
Olli
Angehängte Dateien:
Gast #856180
Lesenswert?

Ich würde die Kondensatoren auf der VCC-Seite erhöhen. Wenn Du da 
wirklich nur einen 100nF hast, dann dürfte das vermutlich nicht reichen. 
Mach noch einen 10uF parallel. Auch auf der 9V Seite würde ich mehr als 
nur 1uF ansetzen.
Gast #856195
Lesenswert?

Du kannst auch noch einen zusätzlichen 10uF Kondensator nah an die 
Transistoren legen, so dass dieser den kurzfristigen Strombedarf der 
Segmentanzeigen besser abdecken kann.

Es ist schon möglich, dass lokale Spannungsschwankungen durch stark 
unterschiedlichen Strombedarf zu Aussetzern beim Prozessor führen.

Generell solltest Du aber auf jeden Fall eine mögliche Fehlerquelle 
nicht übersehen, Dein Programm. Häufig liegt der Fehler in der Software 
begraben.
Persönliche Seite #856202
Lesenswert?

Ich habe UP, DOWN, START und STOP in Verdacht. Mehr Eingänge hat die 
Schaltung ja nicht.

Vom Schaltbild her sieht es so aus, als ob diese Anschlüsse gegen GND 
schalten und ansonsten floaten (auf dem 16-pol. anschluss ist kein Vcc 
für ein Pullup!). Vielleicht fängst du dir ein Dauer-UP/DOWN ein. 
Versuchsweise würde ich diese Eingänge mit internen Pullups versorgen 
(10k Widerstände brücken).
Gast #856262
Lesenswert?

Ok ich habe das ganze jetzt noch mal überarbeitet.

- 10µ Elko am Atmega zischen VCC und GND
- 10µ Elko bei den Transistoren für die Segmentanzeigen
- 100µ Elko beim Transistor für das Relai
- Pullupwiderstände auf VCC bei STRAT, STOP, UP und DOWN

gibt es sonst noch was? Was sollte man mit nicht genuzten PIN machen? 
Bei mir PB6 und PB7? Was ist mit AGND, AVCC und AREF? Kann man die 
einfach offen lassen?
#856315
Lesenswert?

Ja.

Noch ein paar Kleinigkeiten:

Vor den 7805 einen größeren Kondensator parallel schalten (~ 100µF)

Eine Diode "über" den 7805, damit sich die Kondensatoren auf der 
5V-Seite entladen können, wenn die 12V weg sind, ohne den 7805 zu 
grillen.

der 1µF am Reset-Pin ist vermutlich zu groß, da könnte der ISP Probleme 
kriegen. Eher 100nF.

der 100 Ohm Vorwiderstand für die Power-On-Led ist für meinen Geschmack 
zu klein, hängt aber von der LED-Farbe (Flussspannung) ab. auch mit 330 
oder 470 Ohm wird die Helligkeit nicht wesentlich nachlassen...

von den vielen 10µF Kondensatoren kann man einige einsparen, wenn die 
beim Layout nah beienander liegen. z.B. wenn die drei Segment-Treiber 
nebeneinander auf der Platine sind, reicht einer für alle drei.
Wenn du von denen aber eh eine Tüte voll zum verteilen hast, und Platz 
kein Problem ist, kannst du die auch so lassen.

Wenn du weitere Bauteile sparen willst: die 100Ohm Vorwiderstände vor 
T1-T3 kann man weglassen. Sind aber beim Layouten evtl hilfreich als 
"Drahtbrückenersatz"

Du könntest auch im Layout noch einen Quarz (+Lastkapazitäten) am AVR 
vorsehen, und dann einfach nicht bestücken. Wenns dann zu ungenau ist, 
kann man den einfach nachlöten und die Fuses umstellen, ohne das ein 
neues Layout fällig wird.
Gast #856489
Lesenswert?

Ganz oben las ich "auf Schreibtisch mit einem Schaltnetzteil
ohne Probleme funktioniert. Jetzt mit dem Trafo habe ich das Problem,"..
.....dann sagt meine Glaskugel: Spannungproblem!

Brummen, Störimpulse oder butterweiches Netzteil?

Als Test evtl. Contoller-Logik nochmals aus sauberem Schaltnetzteil 
speisen und nur Anzeige über neues Trafo-Netzteil ?
Später: evtl. Elko hinter 7805 auf 100uF vergößern und Beschaltung des 
7805 mit Schutzdioden (wegen Elko-Entladung nach Ausschalten)?

Eine Ursache könnte auch die räumlche Anordnung des Trafos sein, die 
Störungen im Nahfeld erzeugt.

Gruß Lutz
Gast #856946
Lesenswert?

Hi,

ich habe gestern das Board noch einmal neu gemacht und es funktioniert 
so weit auch allerdings tritt der Fehler immer noch auf. Mir ist jetzt 
aber folgendes aufgefallen, die Sekunde wird genau gezählt, wenn der 
ISP-Programmer (MkII) angeschlossen ist, wenn ich den Porgammer abziehe, 
läuft meine Sekunde mit doppelter bis dreifacher Geschwindigkeit.
Anbei nochmal die aktuelle Schematic.

Gruß
Olli

PS: Der Quarz ist nicht eingbaut.
Angehängte Dateien:
Gast #857025
Lesenswert?

Problem gelöst!!!

Und zwar war es doch ein Softwareproblem ;-). Man kann im AVR Studio 
drei verschiedene Einstellungen für den RC-Oszillator bei 8Mhz trefeen:

1. Int.RC Osc 8Mhz;Start-up time 6CK + 0 ms;(CKSEL: 0100 SUT00)
2. Int.RC Osc 8Mhz;Start-up time 6CK + 4 ms;(CKSEL: 0100 SUT01)
3. Int.RC Osc 8Mhz;Start-up time 6CK + 64 0ms;(CKSEL: 0100 SUT10)

Ich hatte die 1. Einstellung gewählt, leider hat die immer nur im 
zusammenspiel mit dem ISP-Porgammer (MkII) funktioniert. Bei den beiden 
letzten (2. und 3.) Einstellungen funktioniert es jetzt auch ohne das 
der Programmer angeschlossen sein muss. Das muss ja was mit den + 4 ms 
bzw. + 64 ms zutun haben. Aber wieso die Verzögerung dort mit eingebaut 
werden muss weiss ich aber immer noch nicht. Vielleicht habt Ihr ja ne 
Idee.

Gruß
Olli

PS: Danke nochmal für die vielen hilfreichen Hardwaretips

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren