ich bin was arduino betrifft, ein blutiger Anfänger.
Nun wollte ich mir etwas zusammen stellen mit dem ich die Laufzeit von unseren Geräten testen kann.
Es gibt denke ich verschiedene Wege, wie bei Moment des Spannungsabfalls Zeit stoppen oder, da es um Laser geht mit einem Lichtsensor, bei fehlendem Licht die Zeit stoppen.
Habt ihr Ideen oder Tipps für mich, was für Teile ich benötige und was die beste Herangehensweise wäre.
Bitte setze eine aussagekräftige Überschrift in den Titel, der deine Frage kurz beschreibt.
Dann finden die Helfer auch deinen Beitrag.
Anfänger gibt es hier viele.
Kreuzlinien, Hybrid- und Rotationslaser sollen auf ihre Laufzeit geprüft werden.
Betrieben werden die Geräte entweder mit Li-Ion-Akkus oder Batterien.
Aktuell wird der Laser angemacht und in eine Ecke gestellt. Es wird der Startzeitpunkt aufgeschrieben und man versucht den Moment mitzubekommen an dem der Laser aus geht um eine ungefähre Laufzeit zu bekommen.
Ich möchte nun diesen Prozess verbessern. Sodass man das Gerät einschaltet, auf einem Display läuft dann ein Timer und dieser Timer stoppt sobald das Gerät aus geht.
Jetzt muss man irgendeine Veränderung aufnehmen, damit der Timer weiß wann er stoppen soll.
Dadurch das es sich auch um Rotationslaser, bei denen der Laser rotiert handelt, wird es mit einem Lichtsensor schwierig.
Wäre eine Lösung mit einem Multimeter das die Spannung misst und bei Spannungsabfall stoppt dann der Timer umsetzbar?
Ich hab jetzt wirklich gedacht, ihr wollt die Laufzeit eurer Laserarmatur messen.
Nein, es ist die Betriebszeit
Ich würde da pragmatisch ran gehen und von irgendeiner Laserlichtschranke den Empfänger nehmen.
Die geben meisst ein digitales Signal aus.
Das ist sofort auswertbar.
Die "Laufzeit" zu ermitteln ist dann das geringste Problem.
Viel mehr ist dann die Frage, wie groß muss die Zeitgenauigkeit sein?
Warum? Ein Betriebsstundenzähler, der Millisekundengenau bis zu 49 Tagen erfasst, sollte doch für so ein BatterieGerät mehr als ausreichend sein. Das wäre Standard, alles mögliche andere aber auch ein Klacks.
Dein Rotationslaser kommt alle paar millisekunden wieder vorbei und triggert den Empfänger.
Wenn Du im Code dann eine Hysterese einrechnest, wie lange der laser weg sein darf, dann kommt es zu keiner Unterbrechung.
Da langweilt sich der µC
Die genauigkeit wird durch die Verwenundung der internen interruptroutine des Controllers und weil der Taktgeber nicht temperarturkomüensiert ist usw., vielleicht am Tag irgendwas mit 2 Sekunden Abweichung haben... Vielleicht etwas mehr, vielleicht etwas weniger.
Der gesamte Codeteil wird dann eher sich auf die Ausgabe als auf die Rechnerei beziehen
Wenn ich eine Genauigkeit von 1Sek brauche, dann sind die millis() eher ungeeignet.
Das sollte aber bekannt sein.
Im Übrigen ist die 49-Tage Grenze eine imaginäre, die man ggfls. auch abfängt und selber weiter rechnet.
Ok vielen dank, das wäre dann eine Lösung für unsere Lasergeräte für die es gerade akut benötigt wird. Wenn man das ganze jetzt weiter spinnt und möglichst unversell auch auf nicht mit einem Laser ausgestattete Geräte ausweiten möchte. Was wäre dann die Lösung?
Code müsste ich mir dann mit Tutorials zusammen schustern und arduino ist selbsterklärend oder?
Du kannst da alles mögliche anlegen.
Wenn Du ein Signal EIN/AUS hast, nimmst Du einfach einen digitalen Pin, wenn Du z.B. den Einbruch einer Spannung messen möchtest, dann z.B. mit einem Spannungsteiler und einem Analogpin.
Ausgabe geht entweder auf der seriellen Schnittstelle oder mit einem kleinen Display.
Günstig: 2 oder 4 Zeilen LCD.
Aufwändiger aber schicker irgendwas graphisches bis zur Größe eines Nokia-Display..
Arduino ist grundlegend C++ mit einigen sehr schönen Vereinfachungen und viel Abnahme von sich wiederholenden Abfolgen.
Der Code selbst für die "Laufzeit" ist velleicht ein 10 Zeiler.
Ausgehend von Deinem Laser, braucht es einen Empfänger - Kleines TUT dazu:
Der gibt ein digitales HIGH oder LOW aus, wenn der Laser da auftrifft.
Das wertest Du nur aus.
Mit der ersten Erkennung merkst Du dir die aktuelle Betriebsszeit des Controllers.
Mit der letzten Erkennung + Hysterese bekommst die nächste Zeit. Die EndeZeit - AnfangsZeit => Betriebszeit.
Ausgabe
Fertig.
Beim Analogsignal ist es ähnlich.
Wird ein bestimmter Pegel überschritten, wird angefangen zu zählen, ist der Pegel für eine gewisse Zeit unterschritten, ist Ende.
Im Gegensatz zum digitalen Signal (TTL-Pegel) kannst Du auf den analogen Eingängen selbst die Schwelle bestimmen, wann EIN und wann AUS erkannt sein soll.
Da es nicht mehr "den" Arduino sondern eine ganze Familie an Boards gibt, ist natürlich auch noch mehr möglich... (Einfach mal im Store schauen...)
Sag mal, muss du tatsächlich den Laser auswerten oder gibt's noch andere mögliche Quellen? z.B. eine Betriebs-LED? diese liesse sich leichter (und Geräteunabhängig) detektieren. Mit einem LDR könnte man sogar erkennen, wenn die BetriebsLED dunkler wird...