ComputerClub 2
Sitemap Kontakt
  Wolfgang Back & Wolfgang Rudolph
Suche:   Wolfgang Back & Wolfgang Rudolph

ATM18::Projekt::Kapazitätsmessgerät

Aus ComputerClub2 WIKI

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

ATM18::Projekt::Kapazitätsmessgerät

Beschreibung

Eine echte Applikation: Messung von Kapazitäten mit dem ATM18-Modul.

Benötigte Hardware

  • ATM18 Modul und ATM18 Testboard oder
  • ATM0815 Platine (Alternativprojekt)
  • 100 Ohm Widerstand
  • 10k Ohm Widerstand
  • Drähte
  • und natürlich der Prüfling: ein Kondensator (' Capacitor Under Test ', z.B. 100nF)

Benötigte Software

  • CodeVisionAVR C Compiler (Gratis-ATM18-Version - siehe auf der CC2 Downloadseite) oder
  • BASCOM-AVR Basic Compiler (Gratis-Version auf der Bascom Homepage, s.u.) oder
  • Compiler eigener Wahl (GNU-C, Forth, Pascal, ...)
  • Source Code (CodeVision Version, eine Bascom Version)

Verdrahtung / Schema

ATM18 Cap 01.jpg

Anleitung

  • nach obigem Schema verdrahten.
  • Sourcecode für gewählten Compiler kompilieren und in das ATM18-Modul laden.
  • zu messenden Kondensator anschließen, im LCD erscheint der Messwert
  • zum Messverfahren findet sich im Sourcecode eine Erklärung: Verwendet werden der Analog Comparator und der 16bit Timer1 (mit 16Mhz getaktet). Pin PD5 ist als Ausgang geschaltet und dient dazu, den Kondensator aufzuladen. Pin PD7 ist der eigentliche Mess-Eingang. Gleichzeitig kann mit seiner Hilfe der Kondensator entladen werden. Der Messzyklus läuft nun wie folgt ab:
    • Timer1 Counter und Overflow Counter werden gelöscht. Der Prüfkondensator ist gelöscht.
    • PD5 wird gesetzt, der Kondensator damit aufgeladen. Gleichzeitig wird der Timer1 gestartet. Wenn die Spannung am Kondensator die interne Referenzspannung von 1,1V überschreitet wird ein Interrupt ausgelöst und der Timer gestoppt.
    • All diese Prozesse laufen im Hintergrund ab. Wenn die Messung beendet ist, wird dies dem Vordergrundprozess mitgeteilt. PD5 wird rückgesetzt (das Aufladen des Kondensators beendet), PD7 wird jetzt als Ausgang geschaltet und ebenfalls auf "low" geschaltet (der Kondensator entlädt sich).
    • jetzt muß durch den Vordergrundprozess nur noch aus dem ermittelten Zählerstand von Timer1 die Kapazität des Kondensators errechnet werden (das geschieht in 'main.c' ab Zeile 124). Zunächst wird der Zählerstand in Nanosekunden umgerechnet. Dieser Wert ('tau_us') wird in folgende Gleichung eingesetzt:
cut_capacity = tau_us * AC_TAU_COEFF / (float)AC_TEST_RESISTANCE;
    • und ein Offset abgezogen:
cut_capacity -= AC_CAP_OFS;
    • anschließend wird der Wert tiefpassgefiltert und damit geglättet und dann auf dem LCD angezeigt.

Tipps & Tricks

  • Die beiden oben gezeigten Programmzeilen stellen ja eine Geradengleichung dar. Wenn man eine eigene Eichung machen möchte, muß man die Konstanten 'AC_TAU_COEFF' und 'AC_CAP_OFS', also 'm' und 'b' in der Geradengleichung entsprechend anpassen. Um sich das Eichen zu ermöglichen kann man sich die Rohdaten anzeigen lassen. Dazu kann in 'main.c' hinter die Zeile
     tau_us = ac_time.dword * 62.5;

in der der 'tau_us' Wert errechnet wird eingefügt werden:

// this here for testing purposes: give raw data
// *******************************************************************
     iir_raw = iir_raw * AC_IIR_COEFF + tau_us * AC_IIR_DIFF_COEFF;
     sc_float_to_str(iir_raw,0);       
     len = strlen(sc_buffer);       // Get length of result string 
     lcd_goto_xy(6,1);              // Write result string to LCD
     lcd_write_str(sc_buffer);
     my_counter = ++my_counter;
     while (my_counter > 1000); 
// *******************************************************************

Damit wird der Rohdatenwert in der 2. Zeile des LCD ausgegeben (1000 Messungen gemittelt, das Programm stoppt dann). Die Definition für die beiden Eich-Konstanten findet man übrigens -wie so oft- in 'application.h'. Beim Ändern des 'AC_TAU_COEFF' daran denken, daß der ermittelte Wert mit dem eingesetzen Widerstand Rc zu multiplizieren ist!


CapEichung.jpg

So sieht z.B. eine Eichkurve aus (Labview). Für die Widerstände sollten Werte mit geringer Toleranz verwendet werden. Zur Eichung sollten natürlich auch die dazu verwendeten Kondensatoren möglichst genaue Werte haben.

  • wenn man den Messbereich der Anwendung ändern möchte, kann man andere Werte für die beiden Widerstände versuchen. Z.B. könnte man für größere Kondensatoren einen niedrigeren Ohm-Wert für Rc ('Charge Resistor' mit 10k) verwenden. Dann muß aber zwingend neu geeicht werden!

Links


zurück zu den ATM18 Bastel-Projekten