Forum: Mikrocontroller und Digitale Elektronik Programm zum Auslesen von Duty Cycle (ADXL202)


von Mario K. (mario1989)


Lesenswert?

Hallo!

Könnte mir vielleicht jemand eine grobe Struktur für ein Programm geben, 
mit dem ich den Duty Cycle des ADXL202 (mit einem PIC 16F88) auslesen 
kann? Ich möchte den Sensor an einer Digicam bzw. am Blitzschuh einer 
SLR anbringen und zum Beispiel mit fünf LEDs die Neigung ausgeben! Dabei 
soll die LED in der Mitte leuchten, wenn die Kamera gerade ist. Die 
anderen LEDs jeweils bei einer Auslenkung nach links oder rechts.

Ich freue mich auf eure Hilfe!

Mit freundlichen Grüßen

Mario1989

von mehrfacher STK500-Besitzer (Gast)


Lesenswert?

Hat dein PIC eine InputCapture-Einheit?
Die würde helfen.
Sonst sollte es so gehen:

Timer starten

Interrupt Eingang auf steigende Flanke einstellen
Warten bis Interrupt ausgelöst wurde (ISR)
Aktuellen Timerwert sichern (a)
Interrupt Eingang auf fallende Flanke einstellen
Warten bis Interrupt ausgelöst wurde (ISR)
Aktuellen Timerwert sichern (b)
Interrupt Eingang auf steigende Flanke einstellen
Wiederhole das, bis das Schiff untergeht...

Auswertung:
Der Abstand zwischen (a) und (b) gibt die Pulsdauer (High-Pegel) an.
Die Zeit zwischen (b) und (a) ist die Pausendauer (low-Pegel).
Die Zeit zwischen den beiden (a) gibt dann die Periodendauer an.
Der Rest ist etwas rechnen...

von Frank (Gast)


Lesenswert?

...einfacher für Deine Anwendung ist es wohl, den Analog-Ausgang des 
adxl zu Messen. Hat Dein PIC einen AD-Wandler ?

lg, Frank

von Mario K. (mario1989)


Lesenswert?

Der PIC besitzt sowohl eine Captureeinheit als auch einen AD-Wandler!

Nun, wie könnte ich das Auslesen realisieren?

MfG Mario

von Mario K. (mario1989)


Lesenswert?

Wie könnte ich die Capture-Einheit hier nutzen?

In anderen Beiträgen hab ich gelesen, dass die analoge Auswertung etwas 
ungenau sein soll... Würde sie für diese Anwendung reichen?

(Weiters würde mich interessieren, ob der Sensor im Stande ist, geringe 
Neigungen der Digicam zu erkennen!?)

MfG Mario1989

von Stefan (Gast)


Lesenswert?

>In anderen Beiträgen hab ich gelesen, dass die analoge Auswertung etwas
>ungenau sein soll...
Das kann man so nicht sagen. Die PWM wird ja intern auch vom 
Analogsignal abgeleitet und kann demnach nur so gut sein, wie das 
Analogsignal selbst.
Wenn Du allerdings das Analogsignal selbst per AD-Wandler sampelst, dann 
hängt die Auflösung von Deinem verwendeten ADC ab!

>Würde sie für diese Anwendung reichen?
Du hast nirgends geschrieben, wie 'genau' Deine Anwendung sein muss.
Wie soll man also diese Frage beantworten?

>Weiters würde mich interessieren, ob der Sensor im Stande ist, geringe
>Neigungen der Digicam zu erkennen!?
s.oben!
Welche Auflösung/Genauigkeit willst Du denn erreichen?

von Mario K. (mario1989)


Lesenswert?

Ich habe da an einen Neigungsbereich von etwa +-5° gedacht. Abstufung je 
1°...

MfG Mario

von Mario K. (mario1989)


Lesenswert?

Nochmal zur Capture-Einheit:

Ich hab gelernt, dass sie (bei unserem PIC 16F88 - Timer2) bei einem 
Ereignis (z.B. steigende oder fallende Flanke) am CCP-Input, den Wert im 
Timer-Register ins CCPR1L/H lädt und ein Interrup-Flag setzt.
Tritt ein weiteres Ereignis am CCP-Input auf, bevor der Wert im 
CCPR1L/H-Register ausgelesen wurde, wird der alte Wert vom neuen Wert 
subtrahiert.

Müsste doch soweit stimmen?!

Und diese Funktion kann ich für die Auswertung der erzeugten PWM 
nutzen!?

MfG Mario

von mehrfacher STK500-Besitzer (Gast)


Lesenswert?

>Müsste doch soweit stimmen?!
Sollte wahr sein...

>Und diese Funktion kann ich für die Auswertung der erzeugten PWM
>nutzen!?

ja. Atmel hat zum Thema Duty-Cycle-Messung eine Application Note 
herausgebracht. Ob es die auch von Microchip gibt, kann ich nicht sagen.
Aber das Prinzip ist das, was ich oben beschrieben habe.

von Mario K. (mario1989)


Lesenswert?

@mehrfacher STK500-Besitzer:

Das Prinzip hab ich verstanden. Mit berechnen denk ich, hast du gemeint, 
dass ich die jeweiligen Zeitabstände ermitteln soll, um den Duty Cycle 
auszuwerten, oder?! Wie kann ich dann die erhaltenen Werte am 
einfachsten auf die visuelle Ausgabe (LEDs) umlegen?

MfG Mario

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
Noch kein Account? Hier anmelden.