Sadržaj:

Mjerač kondenzatora ATTiny85: 4 koraka
Mjerač kondenzatora ATTiny85: 4 koraka

Video: Mjerač kondenzatora ATTiny85: 4 koraka

Video: Mjerač kondenzatora ATTiny85: 4 koraka
Video: Использование плат Digispark Attiny85 Mini Arduino: Урок 108 2024, Juli
Anonim
Mjerač kondenzatora ATTiny85
Mjerač kondenzatora ATTiny85
Mjerač kondenzatora ATTiny85
Mjerač kondenzatora ATTiny85

Ovo uputstvo je za mjerač kondenzatora na bazi ATTiny85 sa sljedećim karakteristikama.

  • Zasnovano na ATTiny85 (DigiStamp)
  • SSD1306 OLED ekran od 0,96"
  • Mjerenje frekvencije za kondenzatore male vrijednosti 1pF - 1uF pomoću oscilatora 555
  • Mjerenje vremena punjenja kondenzatora velike vrijednosti 1uF - 50000uF
  • 2 odvojena porta koji se koriste za metode minimiziranja kapacitivnog kapaciteta
  • Dvije vrijednosti struje korištene za vrijeme punjenja za smanjenje vremena za velike kondenzatore
  • Samostalne nule metode 555 pri pokretanju, mogu se ponovo promijeniti pritiskom na dugme
  • Brzi test koji se koristi za odabir metode koju treba koristiti za svaki ciklus mjerenja.
  • Tačnost metode vremena punjenja može se poboljšati podrškom za podešavanje frekvencije takta OSCVAL

Korak 1: Šema i teorija

Shema i teorija
Shema i teorija

Shema prikazuje ATTiny koji upravlja SSD1306 OLED ekranom putem I2C sučelja. Izravno se napaja iz LiOn baterije od 300 mAh, a uključeno je i mjesto za punjenje koje se može koristiti s LiOn kompatibilnim vanjskim punjačem.

Prva metoda mjerenja temelji se na mjerenju frekvencije 555 oscilatora koji slobodno radi. Ovo ima baznu frekvenciju određenu otpornicima i kondenzatorom koja bi trebala biti visoke točnosti jer to određuje točnost mjerenja. Koristio sam kondenzator od 8% pF od polistirena koji sam imao, ali se mogu koristiti i druge vrijednosti oko 1 nF. Vrijednost se mora unijeti u softver zajedno s procjenom bilo kakvog zalutalog kapaciteta (~ 20pF). To je dalo baznu frekvenciju od oko 16KHz. Izlaz 555 napaja se u PB2 ATTiny -a koji je programiran kao hardverski brojač. Mjerenjem brojača u periodu od oko 1 sekunde frekvencija se može odrediti. To se radi pri pokretanju radi određivanja osnovne frekvencije. Kada se kondenzator koji se testira dodaje paralelno s baznim kondenzatorom, tada se frekvencija smanjuje, a kada se to izmjeri i uporedi s baznom frekvencijom, tada se može izračunati vrijednost dodatnog kapaciteta.

Lijepa karakteristika ove metode je da izračunata vrijednost ovisi samo o točnosti osnovnog kondenzatora. Period merenja nije bitan. Rezolucija ovisi o rezoluciji mjerenja frekvencije koja je prilično visoka pa se može mjeriti čak i vrlo mali dodatni kapacitet. Čini se da je ograničavajući faktor 'frekvencijski šum' oscilatora 555 koji je za mene ekvivalentan oko 0,3 pF.

Metoda se može koristiti u pristojnom rasponu. Da bih poboljšao opseg, sinhronizujem period merenja sa detektovanjem ivica dolaznih impulsa. To znači da se čak i niskofrekventne oscilacije poput 12Hz (sa 1uF kondenzatorom) precizno mjere.

Za veće kondenzatore krug je uređen tako da koristi metodu mjerenja vremena punjenja. U ovom slučaju kondenzator koji se ispituje se prazni kako bi se osiguralo da počinje na 0, a zatim se puni kroz poznati otpor napona napajanja. ADC u ATTiny85 koristi se za praćenje napona kondenzatora i mjeri se vrijeme prelaska od 0% do 50% napunjenosti. Ovo se može koristiti za izračunavanje kapaciteta. Kako je referenca za ADC također napon napajanja, to ne utječe na mjerenje. Međutim, apsolutna mjera potrebnog vremena ovisi o frekvenciji takta ATTiny85, a varijacije u tome utječu na rezultat. Postupak se može koristiti za poboljšanje tačnosti ovog sata pomoću registra za ugađanje u ATTiny85, a to će biti opisano kasnije.

Za pražnjenje kondenzatora na 0V koristi se n-kanalni MOSFET zajedno s otpornikom male vrijednosti za ograničavanje struje pražnjenja. To znači da se čak i kondenzatori velike vrijednosti mogu brzo isprazniti.

Za punjenje kondenzatora koriste se 2 vrijednosti otpornika za punjenje. Osnovna vrijednost daje razumno vrijeme punjenja kondenzatora od 1uF do oko 50uF. P-kanalni MOSFET se koristi za paralelu na nižem otporniku kako bi se omogućilo mjerenje kondenzatora veće vrijednosti u razumnom intervalu. Odabrane vrijednosti daju vrijeme mjerenja od oko 1 sekunde za kondenzatore do 2200uF i proporcionalno duže za veće vrijednosti. Na donjem kraju vrijednosti mjerni period mora se držati razumno dugo kako bi se omogućilo dovoljno precizno utvrđivanje prijelaza kroz prag od 50%. Brzina uzorkovanja ADC -a je oko 25uSec, pa minimalni period od 22mSec daje razumnu preciznost.

Budući da je ATTiny ograničen IO (6 pinova), potrebno je pažljivo dodijeliti ovaj resurs. Za prikaz su potrebna 2 pina, 1 za ulaz mjerača vremena, 1 za ADC, 1 za kontrolu pražnjenja i 1 za kontrolu brzine punjenja. Htio sam da tipka za upravljanje omogućuje ponovno postavljanje nule u bilo kojem trenutku. To se postiže hi-jackingom I2C SCL linije. Budući da su signali I2C otvoreni, nema električnog sukoba dopuštajući gumbu da povuče ovu liniju nisko. Zaslon će prestati raditi s pritisnutim gumbom, ali to nema nikakve posljedice jer se nastavlja kad se dugme otpusti.

Korak 2: Konstrukcija

Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo

Ovo sam napravio u malu 3D štampanu kutiju dimenzija 55 mm x 55 mm. Dizajniranu da primi 4 glavne komponente; ploča ATTiny85 DigiStamp, SSD1306 ekran, LiOn baterija i mali dio prototipa koji drži mjerač vremena 55 i elektroniku za kontrolu punjenja.

Prilog na

Potrebni delovi

  • ATTiny85 DigiStamp ploča. Koristio sam verziju sa microUSB konektorom koja se koristi za postavljanje firmvera.
  • SSD1306 I2C OLED ekran
  • LiMon baterija od 300mAH
  • Mala traka ploče za izradu prototipa
  • Tajmer sa čipom CMOS 555 (TLC555)
  • n-kanalni MOSFET AO3400
  • p-kanalni MOSFET AO3401
  • Otpornici 4R7, 470R, 22K, 2x33K
  • Kondenzatori 4u7, 220u
  • Precizni kondenzator 820pF 1%
  • Minijaturni klizni prekidač
  • 2 x 3 pinska zaglavlja za priključke za punjenje i mjerne priključke
  • Pritisnite dugme
  • Enclosure
  • Priključite žicu

Potrebni alati

  • Lemilica sa finim vrhom
  • Pinceta

Prvo sastavite tajmerni sklop 555 i komponente punjenja na prototipnoj ploči. Dodajte leteće vodiče za vanjske veze. Postavite klizni prekidač i tačku punjenja i mjerni priključak u kućište. Pričvrstite bateriju i spojite glavno napajanje na mjesto punjenja, klizni prekidač. Spojite masu na dugme. Pričvrstite ATTiny85 na mjesto i dovršite spajanje.

Prije postavljanja ATTiny ploče možete napraviti neke izmjene za uštedu energije koje će malo smanjiti struju i produžiti vijek trajanja baterije.

www.instructables.com/Reducing-Sleep-Curre…

Ovo nije kritično jer postoji prekidač za isključivanje mjerača kada se ne koristi.

Korak 3: Softver

Softver za ovaj mjerač kondenzatora možete pronaći na

github.com/roberttidey/CapacitorMeter

Ovo je skica zasnovana na Arduinu. Potrebne su mu biblioteke za prikaz i I2C koje se mogu pronaći na

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Oni su optimizirani za ATTiny da zauzme minimalnu memoriju. I2C biblioteka je metoda brzih bita koja omogućava korištenje bilo koja 2 pina. Ovo je važno jer I2C metode koje koriste serijski port koriste PB2, što je u sukobu s korištenjem ulaza brojača/brojača potrebnog za mjerenje frekvencije 555.

Softver je strukturiran oko mašine stanja koja vodi mjerenje kroz ciklus stanja. ISR podržava prelivanje sa brojača vremena za proširenje 8 -bitnog hardvera. Drugi ISR podržava ADC koji radi u kontinuiranom načinu rada. Ovo daje najbrži odgovor na krug punjenja koji prelazi prag.

Na početku svakog ciklusa mjerenja funkcija getMeasureMode određuje koja je metoda najprikladnija za svako mjerenje.

Kada se koristi metoda 555, mjerenje vremena počinje tek kada se brojač promijeni. Slično, mjerenje vremena se zaustavlja tek nakon nominalnog intervala mjerenja i kada se otkrije ivica. Ova sinhronizacija omogućava precizno izračunavanje frekvencije čak i za niske frekvencije.

Kada se softver pokrene, prvih 7 mjerenja su 'kalibracijski ciklusi' koji se koriste za određivanje osnovne frekvencije 555 bez dodanog kondenzatora. Posljednja 4 ciklusa su prosječna.

Postoji podrška za podešavanje OSCAL registra za podešavanje takta. Predlažem da OSCCAL_VAL postavite na 0 u početku na vrhu skice. To znači da će se tvornička kalibracija koristiti dok se ne izvrši ugađanje.

Potrebno je podesiti vrijednost osnovnog kondenzatora 555. Dodajem i procijenjeni iznos za zalutali kapacitet.

Ako se za metode punjenja koriste različiti otpornici, tada će se vrijednosti CHARGE_RCLOW i CHARGE_RCHIGH u softveru također morati promijeniti.

Za instalaciju softvera upotrijebite uobičajenu metodu digistamp otpremanja softvera i povezivanje USB porta kada se to od vas zatraži. Ostavite prekidač za napajanje u isključenom položaju jer će USB za ovu operaciju napajati napajanje.

Korak 4: Rad i napredna kalibracija

Rad je vrlo jednostavan.

Nakon uključivanja jedinice i čekanja da se kalibracijska nula završi, priključite testirani kondenzator na jedan od dva mjerna porta. Upotrijebite priključke 555 za kondenzatore male vrijednosti <1uF i priključak za punjenje za kondenzatore veće vrijednosti. Za elektrolitičke kondenzatore spojite negativni terminal na zajedničku točku uzemljenja. Tijekom testiranja kondenzator će se napuniti do oko 2V.

Priključak 555 može se ponovo promijeniti držanjem pritisnutog dugmeta oko 1 sekundu i otpuštanjem. Uvjerite se da za to ništa nije spojeno na port 555.

Napredna kalibracija

Metoda punjenja se oslanja na apsolutnu frekvenciju takta ATTiny85 za mjerenje vremena. Sat koristi unutrašnji RC oscilator raspoređen tako da daje nominalni takt od 8 MHz. Iako je stabilnost oscilatora prilično dobra za varijacije napona i temperature, njegova frekvencija može biti i do nekoliko posto, iako je tvornički kalibrirana. Ova kalibracija postavlja OSCCAL registar pri pokretanju. Tvornička kalibracija može se poboljšati provjerom frekvencije i optimalnijim postavljanjem OSCCAL vrijednosti tako da odgovara određenoj ATTiny85 ploči.

Još se nisam uspio uklopiti u automatizovaniji način u firmver pa koristim sljedeću ručnu proceduru. Moguće su dvije varijacije ovisno o tome koja su vanjska mjerenja dostupna; ili mjerač frekvencije koji može mjeriti frekvenciju trokutastog valnog oblika na portu 555, ili izvor kvadratnog vala poznate frekvencije, npr. 10KHz sa nivoima 0V/3.3V koji se mogu spojiti na port 555 i nadjačati valni oblik kako bi se ta frekvencija natjerala u brojač. Koristio sam drugu metodu.

  1. Uključite mjerač na normalnoj snazi bez priključenih kondenzatora.
  2. Spojite mjerač frekvencije ili generator kvadratnih valova na port 555.
  3. Ponovo pokrenite ciklus kalibracije pritiskom na dugme.
  4. Na kraju ciklusa kalibracije na ekranu će se prikazati frekvencija određena brojačem i trenutna vrijednost OSCCAL. Imajte na umu da će se ponovljena upotreba ciklusa kalibracije prebacivati između prikaza izmjerene frekvencije i normalnog prikaza bez prikaza.
  5. Ako je prikazana frekvencija manja od poznate, to znači da je frekvencija takta previsoka i obrnuto. Smatram da OSCCAL inkrement podešava sat za oko 0,05%
  6. Izračunajte novu OSCCAL vrijednost za poboljšanje sata.
  7. Unesite novu OSCCAL vrijednost u OSCCAL_VAL na vrhu firmvera.
  8. Obnovite i učitajte novi firmver. Ponovite korake 1 -5 koji bi trebali prikazati novu OSCCAL vrijednost i novo mjerenje frekvencije.
  9. Ako je potrebno, ponovite korake ponovo dok se ne postigne najbolji rezultat.

Napomena: Važno je da dio mjerenja u ovom podešavanju radite pri radu na normalnom napajanju, a ne USB -u kako biste smanjili bilo koji pomak frekvencije zbog napona napajanja.

Preporučuje se: