Tworzenie miernika pojemności kondensatorów na platformie ATmega8: od schematu do prototypu
Pojemność C wyznacza się jako C = Q/U, gdzie ładunek gromadzi się wykładniczo. Czas naładowania do 63,2% napięcia Ucc odpowiada stałej czasowej τ = R × C. Algorytm działania:
- Pin rozładowania ustawiony na "WEJŚCIE" — zapobiega rozładowaniu.
- Zapisanie t0 — moment rozpoczęcia naładowania.
- Pin naładowania na "WYJŚCIE" HIGH, monitorowanie ADC do osiągnięcia 63,2% Ucc.
- C = (t - t0) / R.
- Rozładowanie przez rezystor: pin rozładowania na "WEJŚCIE", wyjście LOW.
Obwód RC z przełączanymi rezystorami dostosowuje τ do zakresu pojemności od pF do mF.
Schemat blokowy i zasadniczy schemat elektryczny
Mikrokontroler ATmega8 (DIP-28) z 10-bitowym ADC przetwarza napięcie Uc na kod cyfrowy. ALU oblicza pojemność C na podstawie τ. Rezystory naładowania typu SMD 0603 (1 kΩ–1 MΩ) tworzą układ RC. Rezystor rozładowania ogranicza prąd. Ekran LCD 16×2 z interfejsem I2C (SDA/SCL) minimalizuje liczbę pinów. Zasilanie: 9 V bateria typu "Krona" → LM7805 → 5 V, z kondensatorami ceramicznymi 0603 i elektrolitycznymi 3216 do filtracji.
AREF/AVCC podłączone do 5 V, Vcc/GND standardowo. Automatyczne przełączanie zakresów poprzez wyjścia cyfrowe do rezystorów.
Lista kluczowych elementów:
- ATmega8-16PU
- LM7805
- LCD I2C 0x3F
- Rezystory 0603: 1k, 10k, 100k, 1M
- Kondensatory: 100nF×4, 10μF, 100μF
Projektowanie płytki drukowanej w EasyEDA
Wymiary płytki: 30×38 mm. Minimalna szerokość ścieżek b_min = I_max / (j_dop × t) = 0,254 mm (j_dop=50 A/mm², t=35 μm, I_max<0,1 A). Otworki d=1,2 mm dla wyprowadzeń ≤1 mm. Powierzchnia S = S'/Kz, Kz=0,4.
Metoda subtrakcyjna: wytrawianie folii na podłożu FR4. Kompozycja minimalizuje długość linii ADC, zmniejszając zakłócenia. Masa całkowita, zasilanie płaskie szyny. Wizualizacja 3D potwierdza odpowiednie odstępy.
Obliczenia parametrów płytki:
- Powierzchnia: S' = ∑ powierzchni EKR, Kz=0,3–0,6.
- Ścieżki: b_min według prądu i metody.
- Otworki: d = d_ew + |∆d_n| + r (r=0,1–0,4 mm).
- Odstępy: ≥0,2 mm.
- Płytki przyłączeniowe: średnica 1,5–2×d.
Trasowanie: linie analogowe oddzielone od cyfrowych, masa pod ADC.
Obudowa i konstrukcja mechaniczna
Prototyp został zaprojektowany w Kompass 3D: odcinek na baterię 9 V, zaciski BNC do Cx, wycięcie pod LCD, przycisk zasilania. Ścianki grubości 2 mm, żebra wzmacniające. Wizualizacja potwierdza ergonomię: dostęp do elementów kalibracji.
Realizacja oprogramowania
Kod w języku C++ dla AVR-GCC. Inicjalizacja Wire i LiquidCrystal_I2C. Adres LCD 0x3F. Piny: naładowanie PB0, rozładowanie PB1, zakres 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);
// Piny
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);
// Inicjalizacja ADC
ADMUX = (1<<REFS0); // AVCC ref
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
}
float measureCapacitance(float R) {
// Rozładowanie
digitalWrite(DISCHARGE_PIN, LOW);
delay(100);
// Naładowanie
unsigned long t0 = millis();
digitalWrite(CHARGE_PIN, HIGH);
while (analogRead(ADC_PIN) < 645) {} // 63,2% z 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);
}
Odczyt ADC co 10 ms, ochrona przed przepełnieniem timera. Stałe kalibracyjne zapisane w EEPROM.
Co warto wiedzieć
- Metoda naładowania RC zapewnia dokładność ±5% dla C=1 nF–100 μF.
- Przełączanie rezystora rozszerza zakres bez utraty rozdzielczości ADC.
- LCD z interfejsem I2C oszczędza GPIO, idealne dla systemów wbudowanych.
- Stabilizator liniowy LM7805 jest prosty, ale nagrzewa się — dopuszczalny dla prototypu.
- Płyta dwustronna, DRC w EasyEDA eliminuje błędy trasowania.
— Editorial Team
Brak komentarzy.