Hallo zusammen, ich bin grade dabei eine Zeitmessung aufzubauen. Hier im Forum habe ich dazu die folgenden Beiträge gefunden, die mir schon etwas weitergeholfen haben: Beitrag "Zeitmessung für Sportveranstaltungen" Beitrag "reziproker Frequenzzähler, GPS-stabilisiert, ATmega162" Dennoch habe ich einige Fragen, die hoffentlich hier geklärt werden können. Ersteinmal zum grundsätzlichen Konzept: Ziel ist es die Zeit zwischen den Unterbrechungen zweier Lichtschranken (SICK WL273P) mit einem Mikrocontroller (bevorzugt etwas aus der ATMega Reihe, 8er habe ich noch einen ganzen Haufen rumliegen) zu messen - Lichtschranke eins soll die Zeitmessung starten und Lichtschranke zwei wieder stoppen. Sobald Lichtschranke eins einmal unterbrochen wurde, sollen weitere Unterbrechungen ignoriert werden. Das Stoppen der Zeitmessung soll durch die vorherige Unterbrechung einer weiteren Lichtschranke freigeschaltet werden, aber das sollte in der Software einfach zu lösen sein, so dass ich darauf nicht weiter eigehen würde. Die Zeitmessung sollte eine Genauikeit von etwa 1 ppm - 1,5 ppm haben. Sofern ich mich nicht verrechnet habe - falls doch dann korrigiert mich bitte - sollten damit dann: Zeiten im Bereich bis etwa 5 Minuten mit einer maximalen Abweichung von 0,5/1000 s messbar sein. Zeiten im Bereich bis etwa 30 Miunten mit einer maximalen Abweichung von 0,5/100 s messbar sein. Zeiten im Bereich bis etwa 10 Stunden mit einer maximalen Abweichung von 0,5/10 s messbar sein. Für die angestrebte Genauikeit wird sicherlich ein TCXO notwendig sein und die initiale Korrektur einer ggf. vorhandener Grundabweichung. Darüberhinaus wäre es sicher notwendig, das System hin und wieder neu zu Korrigieren, um z.B. die Alterung des TCXO zu kompensieren. Eine dauerhafte Anbindung z.B. an ein GPS Signal würde ich nicht bevorzugen, sondern lieber einen gezielten Abgleich vor der Inbetriebnahme oder eben bei Bedarf. Allerdings habe ich noch so meine Probleme bei der konkreten Umsetztung. Bei Unklarheiten bezüglich des Konzeptes einfach nachfragen. Ersteinmal zum TCXO: Hat da vielleicht jemand eine konkrete Empfehlung für mich? Anforderungen: für ATMega geeignet, etwa 16 MHz, Genauigkeit 1 ppm - 1,5 ppm, von Hand lötbar (viele haben die Anschlüsse unter dem Gehäuse, das könnte dann ohne Reflow etwas schwer werden, oder geht das ohne Probleme?) Im Beitrag "Zeitmessung für Sportveranstaltungen" ist ja eine ganz ähnliche Anwendung beschrieben und es werden auch einige TCXOs genannt, allerdings bräuchte ich die dort geforderte Genauigkeit nicht und ich bin unsicher, welcher jetzt für die Verwedung mit einem ATMega geeignet ist. Dann zum zweiten Problem, der Korrektur einer ggf. vorhandener Grundabweichung und der Alterung: Im Beitrag "reziproker Frequenzzähler, GPS-stabilisiert, ATmega162" wird ja ein GPS stabilisierter Frequenzzähler vorgestellt - ein per Software aufrufbarer Abgleich der TXCO Frequenz mit dem GPS signal wäre das, wa sich mir auch für die Zeitmessung vorstellen würde. Meine Vorstellung wäre also folgende: Normalbetrieb nur mittels TCXO und zusätzlich ein per Software aufrufbarer Abgleich. Sofern dann ein 1pps Signal anliegt wird die Frequenz des TXCO abgeglichen und ggf. ein Korrekturwert in der Software gespeichert - also im wesentlichen das, was die vorgestellte Software des GPS stabilisierten Frequenzzählers macht. Ehrlichgesagt traue ich mir aber nicht zu, die Software so anzupassen, dass sie nur noch den Frequenzabgleich zwischen TXCO und ggf. anliegendem 1pps Signal macht. Vielleicht kann mir dabei jemand behilflich sein. Das 1pps Signal liegt ja bei der vorgestellten Lösung am INT1 Eingein ein - damit ist nur noch ein weiterer Interrupt Eingang frei - für den Anschluss der beiden Lichtschranken bräuchte ich jedoch eigentlich zwei Interrupteingänge. Oder gibt es da eine andere Lösung, wie das elegant zu machen wäre, auf die ich grade nicht komme? Gruß Herbert
Für Deine Messung gibt es schon eine Grundschaltung mit ATmega88/168/328: http://www.mino-elektronik.de/fmeter/fm_software.htm#bsp6 Das Programm sollte nach Anpassung auch testweise auf einen Arduino Uno laufen. Die genaue Bezeichnung des 20 MHz TCXOs, den ich immer verwende, kann ich Dir bei Gelegenheit heraussuchen. Er hat eine typ. Grundgenauigkeit von < 1ppm und driftet mit <= 0,5 ppm über den gesamten Temperaturbereich. Wenn Du Probleme mit dem Löten hast, ist es geschickt, die Pads auf der Leiterplatte nach außen etwas größer auszuführen, sodaß sich das Zinn (am besten Lötpaste) zischen die Kontakte ziehen kann. Alternativ legt man die Kontakte nach oben, was ein spiegelverkehrtes Layout erfordert. Soweit erst einmal.
Ich benutze für schon ziemlich gute Genauigkeit einen DS3231 bzw. sein 32768Hz Signal am Atmega Interrupt Eingang. das bedeutet der läuft in 30 Sekunden 1/32768 Sekunde falsch.. bzw 0.17 Sekunden am Tag oder 1 Minute im Jahr. Mein DS3231 habe ich vor 2 Jahren gestellt und der ist heute noch bei 90 Sekunden, also 1,5 PPM.
@m.n.: Vielen Dank für den Link, dass hilft mir auf jeden Fall noch einmal ein gutes Stück weiter. In das vorhandene Programm für die Zeitmessung müsste ich noch irgendwie die Funktion zum Abgleiche der TXCO Frequenz mittels 1pps Signal einbinden... dass muss ich mir dann noch einmal genauer anschauen. Wäre wirklich super nett, wenn du mir die genaue Bezeichnung des TCXO raussuchen könntest, den du verwendest. Es ist aber gut zu wissen, dass man auch die SMD Variante mit den "Reflow-Pads" von Hand gelötet bekommt, da sollte bei den üblichen Händlern ja etwas aufzutreiben sein. Die Pads auf der Platine kann ich im Lauyout auf jeden Fall etwas größer vorsehen. Bisher habe ich die Timer immer so verwendet, dass ich im CTC Interrupt die Zeitvariablen hochgezählt habe. Das hat den Vorteil, dass ich zu jeder Zeit in verschiedenen Variable die Minuten/Sekunden/Millisekunden/... des aktuellen Timings drin stehen habe und das ganze auch zur Laufzeit hinund wieder mal ganz simpel auf einer Anzeige ausgeben kann. Bei der von dir verwendeten Timingvariante müsste man für eine Ausgabe immer den aktuellen Wert berechnen. Ist das zur Laufzeit des Timers unkritisch machbar? @Philipp: Laut Datenblatt hat der DS3231 aber keine Gneauigkeit von 1,5 ppm, oder habe ich da etwas anderes gefunden, als das was du verwendest? Und für die Lösung bräuchte ich die ganze Zeit einen Interupt Eingang für die Zeitmessung? Gruß Herbert
Der Link war an anderer Stelle schon vorhanden: https://de.rs-online.com/web/p/tcxo-oszillatoren/7099379/ Das ist ein TCXO, der laut Datenblatt einen initialen Fehler von <= 2 ppm aufweist. Bei den Teilen, die ich verbaut habe, lag er unter 1 ppm, sodaß diese ohne weiteren Abgleich für 6-stellige Frequenzzähler verwendbar waren. Der TCXO ist so "klobig", daß man ihn auch über 10 - 20 mm Litze verdrahten kann; lediglich der Abblockkondensator sollte direkt an die Pads angeschlossen werden. Der Ausgangspegel reicht, um einen AVR direkt an XTAL1 anzusteuern. Ansonsten reicht ein AC-gekoppelter Inverter zur Pegelanpassung auf Vcc-Pegel. Im Grunde reicht der frei durchlaufende Timer1, um alle Zeitsignale zu erzeugen/verarbeiten. Mit OCR1x läßt sich ein hochaufgelöster Basistakt von 10 kHz erzeugen. Damit könnte man sogar die Start-Stop-Signale per Software auswerten und ggf. noch entprellen. Mit dem Capture-Signal kann man ein ext. angelegtes 1 pps-Signal zur Korrektur auswerten. Da es ein TCXO ist, muß die Korrektur digital erfolgen. Persönlich würde ich eine 32 Bit Variable hochzählen, die nur bei Bedarf korrigiert und auf die aktuelle Zeit umgerechnet wird. Da solltest Du Dir vorab Gedanken machen, wie es Dir am besten passt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.