Kapazitätsmesser mit ATmega8 bauen: Von der Schaltung zum Prototyp
Der ATmega8-Mikrocontroller ermöglicht ein präzises Kapazitätsmessgerät mithilfe der RC-Ladungsmethode. Das Gerät verfügt über einen I2C-LCD-Display, einen LM7805-Spannungsregler und schaltbare Widerstände für verschiedene Kapazitätsskalen. Die Entwicklung erfolgte in EasyEDA für die Leiterplattenplanung, Compass 3D für das Gehäuse und Proteus für die Simulation.
Die Kapazität C ist definiert als C = Q/U, wobei die Ladung exponentiell anwächst. Die Zeit, um 63,2 % von Ucc aufzuladen, entspricht der Zeitkonstante τ = R × C. Der Algorithmus:
- Setze den Entlade-Pin auf "INPUT", um eine Entladung zu verhindern.
- Notiere t0, den Beginn der Aufladung.
- Setze den Lade-Pin auf "OUTPUT" HIGH und überwache den ADC, bis 63,2 % von Ucc erreicht sind.
- Berechne C = (t - t0) / R.
- Entlade über einen Widerstand: Setze den Entlade-Pin auf "INPUT", Ausgang auf LOW.
Ein RC-Schaltkreis mit schaltbaren Widerständen passt die Zeitkonstante τ über Kapazitätsbereiche von Pikofarad bis Millifarad an.
Schaltungsdesign und Schaltarchitektur
Der ATmega8 (DIP-28) mit einem 10-Bit-ADC wandelt Uc in digitale Werte um. Die ALU berechnet C basierend auf τ. SMD-Widerstände 0603 (1kΩ–1MΩ) bilden das RC-Netzwerk. Ein Entlade-Widerstand begrenzt den Strom. Ein 16×2-I2C-LCD (SDA/SCL) minimiert den GPIO-Aufwand. Versorgung: 9-V-Batterie → LM7805 → 5 V, gefiltert mit 0603-Keramik- und 3216-Elektrolytkondensatoren.
AREF/AVCC auf 5 V angebunden, Vcc/GND standard. Auto-Rangwechsel über digitale Ausgänge, die die Widerstände steuern.
Wichtige Bauteile:
- ATmega8-16PU
- LM7805
- I2C-LCD 0x3F
- 0603-Widerstände: 1k, 10k, 100k, 1M
- Kondensatoren: 100nF×4, 10μF, 100μF
Leiterplattendesign in EasyEDA
Plattengröße: 30×38 mm. Mindestspurbreite b_min = I_max / (j_dop × t) = 0,254 mm (j_dop=50 A/mm², t=35 μm, I_max<0,1 A). Bohrungsdurchmesser d=1,2 mm für Leiterbahnen ≤1 mm. Fläche S = S'/Kz, Kz=0,4.
Subtraktives Verfahren: Ätzen von Kupfer auf FR4. Layout minimiert die Länge der ADC-Signalleitung zur Rauschreduzierung. Erdung ist eine flächige Ebene; Stromversorgung nutzt breite Spuren. 3D-Ansicht überprüft Abstände.
Berechnungen für Leiterplattenparameter:
- Fläche: S' = ∑ Bauteilfläche, Kz=0,3–0,6.
- Spuren: b_min basierend auf Strom und Fertigungsmethode.
- Bohrungen: d = d_element + |Δd| + r (r=0,1–0,4 mm).
- Abstände: ≥0,2 mm.
- Pads: Durchmesser 1,5–2×d.
Verdrahtung: Analog- und Digitalkreise getrennt; Erdung unter dem ADC.
Gehäuse und mechanisches Design
Entwickelt in Compass 3D: Batteriefach für 9 V, BNC-Anschlüsse für Cx, Ausschnitt für LCD, Netzschalter. Wanddicke: 2 mm, mit Stützrippen. Die Visualisierung bestätigt Ergonomie – einfacher Zugriff auf Kalibrierbauteile.
Software-Implementierung
C++-Code für AVR-GCC. Initialisiere Wire und LiquidCrystal_I2C. LCD-Adresse: 0x3F. Pins: Lade PB0, Entlade PB1, Bereich PB2–PB4, ADC PC0.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define LCD_ADDRESS 0x3F
#define LCD_COLS 16
#define LCD_ROWS 2
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLS, LCD_ROWS);
// Pins
const int CHARGE_PIN = 9; // PB1
const int DISCHARGE_PIN = 10; // PB2
const int ADC_PIN = A0; // PC0
void setup() {
lcd.init();
lcd.backlight();
pinMode(CHARGE_PIN, OUTPUT);
pinMode(DISCHARGE_PIN, OUTPUT);
digitalWrite(CHARGE_PIN, LOW);
digitalWrite(DISCHARGE_PIN, LOW);
// ADC-Initialisierung
ADMUX = (1<<REFS0); // AVCC-Referenz
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
}
float measureCapacitance(float R) {
// Entladen
digitalWrite(DISCHARGE_PIN, LOW);
delay(100);
// Laden
unsigned long t0 = millis();
digitalWrite(CHARGE_PIN, HIGH);
while (analogRead(ADC_PIN) < 645) {} // 63,2 % von 1023
unsigned long t1 = millis();
digitalWrite(CHARGE_PIN, LOW);
return (t1 - t0) / 1000.0 / R;
}
void loop() {
float C = measureCapacitance(10000.0); // R=10k
lcd.clear();
lcd.print("C = ");
lcd.print(C * 1e6, 1);
lcd.print(" uF");
delay(2000);
}
ADC-Abfrage alle 10 ms, Timer-Überlaufschutz. Kalibrierkonstanten werden im EEPROM gespeichert.
Wichtige Erkenntnisse
- Die RC-Ladungsmethode erreicht ±5 % Genauigkeit für C = 1 nF–100 μF.
- Schaltbare Widerstände erweitern den Messbereich ohne Verlust der ADC-Auflösung.
- Der I2C-LCD spart GPIO-Pins – ideal für eingebettete Systeme.
- Der LM7805-Linearesteller ist einfach, aber erwärmt sich – akzeptabel für Prototypen.
- Doppelschicht-Leiterplatte mit DRC-Prüfung in EasyEDA vermeidet Routing-Fehler.
— Editorial Team
Noch keine Kommentare.