Zpět na domů

Měřič kapacity na ATmega8: schéma a kód

Vyvinut měřič kapacity kondenzátorů na ATmega8 s RC-metodou nabíjení. Popsána schémata, návrh PCB v EasyEDA, kód s ADC a I2C LCD, 3D-kryt. Projekt demonstruje celý cyklus embedded-vývoje.

ATmega8 měřič kapacity: kompletní průvodce od schématu po PCB
Advertisement 728x90

Výroba měřiče kapacity kondenzátorů na ATmega8: od schématu po prototyp

Kapacita C se určuje podle vztahu C = Q/U, kde se náboj ukládá exponenciálně. Čas nabití na 63,2 % napětí Ucc odpovídá časové konstantě τ = R × C. Algoritmus:

  • Výstup pro vybíjení nastaven na "VSTUP" pro zabránění výběhu.
  • Zaznamenání t0 začátku nabíjení.
  • Výstup pro nabíjení nastaven na "VÝSTUP" HIGH, monitorování A/D převodníku až do 63,2 % Ucc.
  • C = (t - t0) / R.
  • Vybití přes rezistor: výstup pro vybíjení "VSTUP", výstup "VÝSTUP" LOW.

RC obvod s přepínatelnými rezistory přizpůsobí τ rozsahu C od pF až po mF.

Struktura a principiální schéma

Mikrokontrolér ATmega8 (DIP-28) s 10-bitovým A/D převodníkem převádí napětí Uc na digitální kód. ALU vypočítá kapacitu podle τ. Nabíjecí rezistory SMD 0603 (1kΩ–1MΩ) tvoří RC obvod. Rezistor pro vybíjení omezuje proud. LCD displej 16×2 přes I2C (SDA/SCL) minimalizuje počet výstupů. Napájení: 9 V baterie "Krona" → LM7805 → 5 V, s keramickými kondenzátory 0603 a elektrolytickými 3216 pro filtraci.

Google AdInline article slot

AREF/AVCC na 5 V, Vcc/GND standardně. Automatické přepínání rozsahů prostřednictvím digitálních výstupů na rezistory.

Seznam klíčových součástí:

  • ATmega8-16PU
  • LM7805
  • LCD I2C 0x3F
  • Rezistory 0603: 1k, 10k, 100k, 1M
  • Kondenzátory: 100nF×4, 10μF, 100μF

Návrh tištěné desky v EasyEDA

Velikost desky 30×38 mm. Minimální šířka spojů b_min = I_max / (j_dop × t) = 0,254 mm (j_dop=50 A/mm², t=35 μm, I_max<0,1 A). Otvory d=1,2 mm pro vývody ≤1 mm. Plocha S = S'/Kz, Kz=0,4.

Google AdInline article slot

Subtraktivní metoda: kyselina na folii na FR4. Umístění minimalizuje délku cest A/D převodníku pro snížení rušení. Země jednotná pásma, napájení ploché vedení. 3D prohlídka ověřuje mezery.

Výpočty parametrů desky:

  • Plocha: S' = ∑ plochy ELE, Kz=0,3–0,6.
  • Spoje: b_min podle proudu a metody.
  • Otvory: d = d_e + |∆d_no| + r (r=0,1–0,4 mm).
  • Mezery: ≥0,2 mm.
  • Plošky: průměr 1,5–2×d.

Trasování: analogové obvody odděleny od digitálních, země pod A/D převodníkem.

Google AdInline article slot

Kryt a mechanika

V programu Kompass 3D byl navržen prototyp: oddíl pro 9 V baterii, svorky BNC pro Cx, výřez pro LCD, tlačítko zapnutí. Stěny 2 mm, žebra tuhosti. Vizuální prezentace potvrzuje ergonomii: přístup k kalibračním prvkům.

Programová realizace

Kód v C++ pro AVR-GCC. Inicializace Wire a LiquidCrystal_I2C. Adresa LCD 0x3F. Piny: nabíjení PB0, vybíjení PB1, rozsah PB2–PB4, A/D převod 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);
  // Inicializace A/D převodníku
  ADMUX = (1<<REFS0); // AVCC referenční
  ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
}

float measureCapacitance(float R) {
  // Vybití
  digitalWrite(DISCHARGE_PIN, LOW);
  delay(100);
  // Nabíjení
  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);
}

Dotaz A/D převodníku každých 10 ms, ochrana proti přetečení časovače. Kalibrační konstanty uloženy v EEPROM.

Co je důležité

  • Metoda nabíjení přes RC dává přesnost ±5 % pro C=1 nF–100 μF.
  • Přepínání R rozšiřuje rozsah bez ztráty rozlišení A/D převodníku.
  • LCD přes I2C šetří GPIO, vhodné pro embedded systémy.
  • Lineární stabilizátor LM7805 je jednoduchý, ale hřeje – pro prototyp je přijatelný.
  • Deska dvouvrstvá, DRC v EasyEDA vylučuje chyby trasování.

— Editorial Team

Advertisement 728x90

Číst dál