ich stelle mir die Frage wenn ich mit meinem Arduino Mega meine Eigene Hardware anspreche wie genau kann ich das machen, also Zeitlich.
Sprechen wir hier von Millisekunde oder Mikrosekunden oder doch eher von Sekunden?
Das was eigentlich wichtiger für mich ist, auch wenn es Differenten gibt wie genau kann ich das ganze wiederholen.
also wenn ich Teil 1 Anspreche und dann Teil 2 nach 5 ms noch mal.
welche Abweichungen werde ich nach jedem Start aufs neue bekommen.
die Reproduzierbarkeit halt der Werte
ausgenommen meine eigene Hardware natürlich. für die kann niemand was obwohl vielleicht ich
Was wollst du genau machen. µS sind schon machbar, aber dann muss auch der Sketch dahingehend optimiert werden (Kein delay(), unnötige print Ausgaben, direkte ansprechen der Ports).
Abweichungen sollte keine großen sein, hängt halt von den Punkten oben ab.
Muecke:
ich stelle mir die Frage wenn ich mit meinem Arduino Mega meine Eigene Hardware anspreche wie genau kann ich das machen, also Zeitlich.
Sprechen wir hier von Millisekunde oder Mikrosekunden oder doch eher von Sekunden?
Die modernen Arduino-Boards mit Resonatoren zur Takterzeugung liegen wohl typischerweise in der Größenordnung bei 1000 ppm Gangabweichung, das wären also
1000 Sekunden Abweichung bei 1 Million Sekunden
1 Sekunde Abweichung in 1000 Sekunden
1 ms Abweichung in 1 Sekunde
Die (meist) älteren Boards, die ihre 16 MHz mit einem Schwingquarz erzeugen, laufen 10 mal genauer.
Die Gangabweichung ist bei konstanter Temperatur für ein gegebenes Board relativ konstant, kann sich aber mit der Temperatur auch ändern.
Ok Jungs, das muss ich mir jetzt noch mal mitschreiben, das dauert, ...
was bedeutet "Die (meist) älteren Bords" woran sehe ich das ob ich so was habe oder nicht?
ich habe also eine Abweichung von ca. 1ms pro Sekunde.
wenn ich also was 10 Sekunden lang ausführen lasse und dabei dann immer wider einen Zweiten Befehl ausführen lasse (Hardware Ansteuere) dann kann es sein das ich am ende meines Versuches den Zweiten Befehl um +/-10ms daneben Sätze?
OK damit kann man arbeiten
Die Reproduzierbarkeit liegt also bei Fast 100% oder wie man das auch ausdrücken mag.
bedeutet das der Selbe Fehler nach der Selben zeit wider auftritt?
vorausgesetzt die Temperatur in meiner Elektro "Smoker" Box bleibt Konstant.
Das garantiert dir eben keiner.
Ich habe z.B. die Erfahrung gemacht, dass eine echte Sekunde bei meinem Arduino UNO R3 und ca. Zimmertemperatur immer 998 oder (meist) 999 millis() gedauert hat.
Ausser Temperatur sind evtl. auch Alterungseffekte möglich.
Wenn 999 ... 1001 millis / Sekunde für dich nicht ok ist,
aber 9999 / 10 sec genau genug, bau dir einen mit einem 16 MHz Quarz,
wenn du noch höhere Anforderungen hast, wird es schwieriger.
Oberhalb des ATmega328, links vom "WWW.ARDUINO.CC - MADE IN ITALY" ist ein Widerstand. Das metallische darüber ist der Resonator.
Ein Quarz sieht so aus: Metallteil mit abgerundeten Ecken und Aufschrift SPK16.000G unterhalb des ATmega16U2
Beschreib bitte was Du genau brauchst und wie genau Du es haben mußt. Braucht Du eine gewisse Zeitlich Abfolge der Aktionen nach dem Einschalten oder nach einem Startsignal?
also ich bin mit meiner Stoppuhr und meinem Daumen immer zu langsam
Na, dann drück doch früher
:D, das ist dann wie "von wem ist die Statistik? MIR! Ok dann ist alles klar, ... "
Ok ich Stelle mir das gerade vor, ich habe eine Hardware Uhr mit einem EIN und Ausschalter denn ich über einen PWM z.B. von einem Arduino betätigen kann.
dann kann ich das teil immer ein und ausschalten und schauen welche Zeitspanne vergangen ist und ob die im Programm hinterlegte zeit mit der auf der Uhr Übereinstimmt, ... he he genial, ... jedoch irgend wie Logisch.
Für die meisten Anwendungen muss das gar nicht supergenau sein. Ob ein Relais jetzt ein paar ms vor oder nach 15:12 Uhr schaltet ist völlig egal.
Als Zeitgeber nimmt dann eine DS3231 RTC oder vielleicht NTP wenn das Ding am Internet hängt. Da kann man die Zeit auch lokal zählen und sich z.B. jede Stunde mit dem Zeitgeber synchronisieren.
Und die RTC läuft immer. Da wird nichts ein und ausgeschaltet. Um zu sehen wie viel Zeit zwischen zwei Ereignissen vergangen ist holt man sich einfach zwei Zeitstempel und vergleicht die.
Für ganz, ganz schnelle Messungen gibt es da auch Möglichkeiten mit den Hardware Timern auf dem Prozessor (im Input Capture Modus). Da hat man eine Auflösung bis zur Prozessorfrequenz runter: 62,5ns
Oberhalb des ATmega328, links vom "WWW.ARDUINO.CC - MADE IN ITALY" ist ein Widerstand. Das metallische darüber ist der Resonator.
Ein Quarz sieht so aus: Metallteil mit abgerundeten Ecken und Aufschrift SPK16.000G unterhalb des ATmega16U2
Danke für die Erläuterung. Also ist in der Beziehung mein billiger China-Arduino sogar besser, weil da der Takt mit einem Quartz erzeugt wird.
Theseus:
Danke für die Erläuterung. Also ist in der Beziehung mein billiger China-Arduino sogar besser, weil da der Takt mit einem Quartz erzeugt wird.
Bitte nicht verwechseln, wo der Schwingquarz den Takt liefert.
Das abgebildete UNO-Board hat zwei Atmel-Chips drauf:
den Arduino Controller Atmega328
den USB-Seriell Controller Atmega16U2
Der auf dem Board sichtbare Schwingquarz ist nur für das exakte Timing auf dem USB-Bus zuständig und hängt als Taktgeber am Atmega16U2 Controller und NICHT am Atmega328!
Das hatte mich auch verwirrt, da ich beim Uno eindeutig einen Quarz sah. Den Resonator hatte ich übersehen. Auf dem China-teil sind zwei Quarze verbaut-einer für den RS323-USB-Chip und einer für den 328.
Unter "China-Teile" versteht man halt normalerweise Fälschungen oder 1:1 Klone. Nichts Boards die zwar wie der Arduino programmiert werden können, aber anders aufgebaut sind. z.B. Freeduino, Seeduino, Olimexino oder Iteaduino
Das mit er Reproduzierbarkeit beim Schalten der z.B. PWM`s ist nur eine Frage in meinem Kopf nicht speziell auf etwas bezogen gewesen.
für mich ist die Diskussion bisher sehr interessant auch wenn ich manchmal erst einiges wider nachlesen muss damit ich das eine oder andrer Kommentar verstehe ;-).
warum so eine frage überhaupt in meinen Kopf entstehen kann, liegt glaube ich daran das ich gerade mich mit Tropfenbildern Beschäftige, drei Ventile, Drei Pumpen und einen Blitz an das Arduino nach und nach anbauen möchte um dann die tropfen aufnehmen möchte. Da ich dabei so wenig wie möglich an Variablen haebn möchte spielt natürlich auch eine Reproduzierbarkeit des Ansteuern der Hardware eine Rolle, da ich bisher jedoch noch nicht ein Bild machen konnte mein Blitz kommt erst am WE, kann und weis ich nicht ws ich brauche oder auch nicht.
wobei das was ich bisher gelesen habe wird das nicht die große rolle spielen.
jedoch ist glaube ich so die Frage in meinen Kopf entstanden.
Mach Dir keine Gedanken um die Reproduzierbarkeit der Schaltzeiten des Arduino!
Wenn das Programm die gestellte Aufgabe einmal richtig erfüllt wird es dies auch immer wieder tun. Morgen genauso wie heute.
Drei Ventile, drei Pumpen, einen Blitz und eine Kamera möchtest Du mit dem Arduino steuern.
In diesen Komponenten stecken mehr Timingprobleme als im Arduino.
Deshalb wirst Du auch mit genau den gleichen Einstellungen heute andere Bildergebnisse erhalten als morgen.
Die Schaltzeiten der Ventile, die Reaktionszeiten der Pumpen und die Auslöseverzögerung der Kamera sind die unbekannten Variablen die Probleme machen. Dazu kommt dann noch das Wasser selbst und eventuelle Luftbewegungen im Raum.
Auf Dauer wird auch ein Blitz nicht ausreichen weil er nicht genügend Licht bringt um die Aufnahme gleichmäßig auszuleuchten.
Das kommt daher weil Du die Blitzleistung so weit reduzieren musst um mit der Abbrenndauer in den Bereich < 1/20000s zu kommen. Ist die Abbrenndauer zu Lang bekommst Du Bewegungsunschärfe in die Aufnahmen.