- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: Loggen einer Lichtschrankenaktivität über die Zeit

  1. #1

    Loggen einer Lichtschrankenaktivität über die Zeit

    Anzeige

    Powerstation Test
    Hallo zusammen!

    ich habe ein Problem und keine Idee dafür und hatte gehofft, ihr könnt mir dabei vielleicht helfen.

    Ich möchte die Aktivität einer IR-Schranke über die Zeit aufzeichnen. Das heißt konkret, dass das Unterbrechen der Schranke / Zählen von einem (batteriebetriebenen) Datenlogger aufgezeichnet werden soll.
    Da das Unterbrechen aber ja nur ein kurzer Impuls ist, müsste ich mit extrem hoher Frequenz abtasten.Eigentlich würde es mir reichen, die Anzahl der Unterbrechungen in 5min- oder auch nur 15min-Segmenten zu erfassen. Dann müsste ich die Unterbrechungen mitzählen, zwischenspeichern, auslesen und zurücksetzen und irgendwie klingt das schon sehr komplex und ich bräuchts eher einfach ;-)

    Ich bekomme das Unterbrechungs-Low auf einem Klinkenkabel und habe alternativ schon überlegt "einfach" eine wav. aufzunehmen und die LOWs dann hinterher auszuwerten, aber komfortabel klingt das auch nicht...

    Hat jemand von euch eine Idee wie ich elegant diskrete Impulse mindestens über 12h, lieber eine Woche mit einem Datenlogger aufzeichnen könnte? [7Tage x 24h x 12 MP(5min) = 2016 << übliche Datenlogger Messpunktkapazität]

    Vielen Dank schon mal im vorraus!

    spyke

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Das eine Zauberwort heist Interrupteingang.
    Da muß man nicht samplen, sondern jedesmal wenn an dem Eingang ein Interuptereignis stattfinden (steigende Flanke, fallende Flank, Pegelwechsel)
    wird eine ISR (Interrupt Service Routine) ausgelöst da kommt einfach ein i=i+1 konstrukt rein.
    Das Zweite Zauberwort heist Timer.
    Den stellst Du dir so ein, das er z.B. alle Minute oder alle 5 Minuten überläuft.
    Wenn das passiert wird der inhalt von i z.B. mit einem Zeitstempel wohin geschrieben (z.B. SD Karte) und i auf null gesetzt.

    Dann hadst Du immer einen Zahlenwert und einen Zeitstempel. so kannst Du alle Werte später wieder zeitlich zuordnen.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo spyke.

    Wie schon geschrieben wurde, musst du dich mit den Interrupts befassen.

    Falls das Ganze auf Batterie laufen soll, haben Interrupts noch einen weiteren Vorteil:
    Normal müssen nur der Interrupt-Controller und der Timer durchgehend laufen, den ganzen Rest, inkl. die CPU, kann man in den Tiefschlaf versetzen.
    Verwendet man noch einen 32kHz Takt für den Timer, kommt der µC mit ein paar µA aus (Da muss man dann z.B. mit Pull-Ups aufpassen, die brauchen dann den meisten Strom).
    Tritt ein Interrupt auf, wird die CPU geweckt und der Strom kann natürlich schnell auf 100mA ansteigen, aber dies nur für ein paar ms.
    So hält dann die Batterie leicht ein halbes Jahr oder länger.

    So funktioniert auch jedes analoge Uhren-Quarzwerk. Für den Sekundenzeiger braucht man auch 10-100mA, aber nur jede Sekunde und nur für ms.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Das aufzeichnen könnte man z.B. mit einer SD Karte machen.
    Wenn Du mit ATMEL Controllern arbeitest kannst Du mal nach FAT für AVR Googeln.
    Allerdings braucht man dazu schon einen relativ großen Controller, weil man 2 komplette Cluster ( 2*512Byte ) zwischenspeichern muss.
    Der Vorteil ist, das man die Karte aus dem Gerät nehmen kann und die Daten dann einfach per Datei in den PC kriegt.
    Man könnte auch in das RAM oder das EEPROM des Controllers zwischenspeichern und dann bei bedarf die SD Karte aktivieren und die Daten dann En Bloc reinschreiben.

    Das Zählen der Lichtschrankenaktivität ( Interrupt ist ne gute Idee ) kann der Controller so nebenbei mitmachen.
    Problematisch sehe ich nur die Uhrzeit, hier müsste man einen RTC Chip verwenden.

    Den meisten Strom wird wohl die Lichtschranke selbst brauchen.
    Mit etwas Überlegung kriegt man die AVR Chips sehr stromsparend.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Zitat Zitat von wkrug Beitrag anzeigen
    Problematisch sehe ich nur die Uhrzeit, hier müsste man einen RTC Chip verwenden.
    Ist gar nicht nötig, es genügt ein Timer welcher durch läuft.

    Unter Unix wurde als Zeit die Sekunden seit dem 1.1.1970 eingeführt. Dies benötigt eine 23-Bit Variable, welche jede Sekunde um 1 erhöht wird. Das reicht dann für etwa 138 Jahre ab dem 1.1.1970. Dafür gibt es in C schon fertige Funktionen, ist aber gar nicht so aufwändig, man muss nur wissen wie man die Schaltjahre richtig berechnet.

    Je nach Anforderung kann das Intervall auch etwas anderes als 1s sein.

    BTW: In den meisten meiner Geräte ist seit Mitte der 80er Jahre so ein Timer versteckt. Meist zeigt er dann nur die Zeit seit dem letzten Einschalten an, kann aber über Service-Funktionen abgerufen werden. Entstanden ist der Timer immer als erster Gehversuch mit den Timern und dem Interrupt-Controller auf einem neuen µC.
    Dieser Timer hat sich dann oft als nützlich bei der Entwicklung erwiesen. Man kann erkennen, wenn irgendwie ein unplanmässiger Reset auftritt und wenn der Timer sehr nach geht, werden die Interrupts irgendwo zu lange blockiert.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  6. #6
    Herzlichen Dank für eure Vorschläge!

    Ich werde mich mal mit dem Aufbau einer solchen Interrupt-Schaltung beschäftigen und versuche das umzusetzen.
    Ggf. und durchaus wahrscheinlich melde ich mich nochmal.

    VG spyke


    PS.: Ich war krank geworden. Daher kam von meiner Seite so lange keine Antwort.

Ähnliche Themen

  1. live loggen - uart
    Von hannes_u im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 03.10.2010, 20:50
  2. [Frage] Zeit einer RS 232 berechnen
    Von nasir im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 02.07.2010, 20:17
  3. setzen einer Variable nach ablauf einer bestimmten Zeit
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 08.12.2008, 00:45
  4. Antworten: 4
    Letzter Beitrag: 25.01.2008, 22:03
  5. Waitms befehl mit einer Variablen als zeit?
    Von strunz im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 13.10.2006, 22:39

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests