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, Srpanj
Anonim
Mjerač kondenzatora ATTiny85
Mjerač kondenzatora ATTiny85
Mjerač kondenzatora ATTiny85
Mjerač kondenzatora ATTiny85

Ovo uputstvo je za mjerač kondenzatora temeljen na ATTiny85 sa sljedećim značajkama.

  • Na temelju ATTiny85 (DigiStamp)
  • SSD1306 OLED zaslon od 0,96"
  • Mjerenje frekvencije za kondenzatore male vrijednosti 1pF - 1uF pomoću oscilatora 555
  • Mjerenje vremena punjenja za kondenzatore velike vrijednosti 1uF - 50000uF
  • 2 zasebna priključka koji se koriste za metode minimiziranja kapacitivnog kapaciteta
  • Dvije vrijednosti struje korištene za vrijeme punjenja za smanjenje vremena za velike kondenzatore
  • 555 Metode samo nule pri pokretanju, mogu se ponovno promijeniti pritiskom na gumb
  • Brzi test koji se koristi za odabir metode koju treba koristiti za svaki ciklus mjerenja.
  • Točnost metode vremena punjenja može se poboljšati podrškom za podešavanje frekvencije takta OSCVAL

Korak 1: Shema i teorija

Shema i teorija
Shema i teorija

Shema prikazuje ATTiny koji upravlja SSD1306 OLED zaslonom putem I2C sučelja. Izravno se napaja iz LiOn 300mAh baterije, 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. To 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 u razdoblju od oko 1 sekunde može se odrediti učestalost. To se radi pri pokretanju radi određivanja osnovne frekvencije. Kad se paralelno s ispitivanim kondenzatorom doda kondenzator koji se ispituje, frekvencija se smanjuje, a kada se to izmjeri i usporedi s baznom frekvencijom, tada se može izračunati vrijednost dodatnog kapaciteta.

Lijepa značajka ove metode je da izračunata vrijednost ovisi samo o točnosti osnovnog kondenzatora. Razdoblje mjerenja nije važno. Razlučivost ovisi o razlučivosti mjerenja frekvencije koja je prilično visoka pa se mogu 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. Kako bih poboljšao raspon, sinkroniziram razdoblje mjerenja za otkrivanje rubova dolaznih impulsa. To znači da se čak i niskofrekventne oscilacije poput 12Hz (s 1uF kondenzatorom) točno mjere.

Za veće kondenzatore krug je raspoređ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 s 0, a zatim se puni kroz poznati otpor napona napajanja. ADC u ATTiny85 koristi se za nadzor napona kondenzatora i mjeri se vrijeme prelaska od 0% do 50% napunjenosti. To se može koristiti za izračun 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 toč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 koristi se 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 razdoblje mjerenja 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 minimalno razdoblje od 22mSec daje razumnu preciznost.

Budući da ATTiny ima ograničen IO (6 pinova), potrebno je pažljivo raspodjelu ovog resursa. Za prikaz su potrebna 2 pina, 1 za ulaz timera, 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. Kako su signali I2C otvoreni odvod, 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 gumb otpusti.

Korak 2: Izgradnja

Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo

Napravio sam ovo u malu 3D tiskanu kutiju dimenzija 55 mm x 55 mm. Dizajniranu za držanje 4 glavne komponente; ploča ATTiny85 DigiStamp, zaslon SSD1306, baterija LiOn i mali dio prototipa koji drži mjerač vremena 55 i elektroniku za kontrolu punjenja.

Prilog na

Potrebni dijelovi

  • ATTiny85 DigiStamp ploča. Koristio sam verziju s microUSB konektorom koja se koristi za postavljanje firmvera.
  • SSD1306 I2C OLED zaslon
  • LiOn 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 gumb
  • Kućište
  • Priključite žicu

Potrebni alati

  • Lemilica s finim vrhom
  • Pinceta

Najprije sastavite sklop mjerača vremena 555 i komponente punjenja na prototipnoj ploči. Dodajte leteće vodiče za vanjske veze. Umetnite klizni prekidač i točku punjenja te mjerni priključak u kućište. Pričvrstite bateriju i spojite glavno napajanje na mjesto punjenja, klizni prekidač. Spojite masu na gumb. Pričvrstite ATTiny85 na mjesto i dovršite spajanje.

Prije postavljanja ploče ATTiny možete učiniti neke izmjene radi uštede energije, što će malo smanjiti struju i produžiti vijek trajanja baterije.

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

To 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 knjižnice za zaslon i I2C koje se mogu pronaći na

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Oni su optimizirani za ATTiny kako bi zauzeli minimalnu memoriju. Knjižnica I2C je metoda brze reprodukcije bitova velike brzine koja omogućuje korištenje bilo koja 2 pina. To 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 stroja stanja koji vodi mjerenje kroz ciklus stanja. ISR podržava preljev s brojača vremena za proširenje 8 -bitnog hardvera. Drugi ISR podržava ADC koji radi u kontinuiranom načinu rada. To daje najbrži odgovor na krug punjenja koji prelazi prag.

Na početku svakog mjernog ciklusa 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. Isto tako, mjerenje vremena se zaustavlja tek nakon nominalnog mjernog intervala i kada se otkrije rub. Ova sinkronizacija omogućuje točan izračun 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 ugađanje sata. Predlažem da OSCCAL_VAL postavite na 0 na početku pri vrhu skice. To znači da će se tvornička kalibracija koristiti sve dok se ne izvrši ugađanje.

Vrijednost osnovnog kondenzatora 555 koju je potrebno prilagoditi je potrebna. Dodajem i procijenjeni iznos za zalutali kapacitet.

Ako se za načine 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 prijenosa 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 radnju 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 ispitivani kondenzator na jedan od dva mjerna priključka. 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 ispitivanja kondenzator će se napuniti do oko 2V.

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

Napredna kalibracija

Metoda punjenja oslanja se na apsolutnu frekvenciju takta ATTiny85 za mjerenje vremena. Sat koristi unutarnji RC oscilator raspoređen tako da daje nominalni sat od 8 MHz. Iako je stabilnost oscilatora prilično dobra za varijacije napona i temperature, njegova frekvencija može biti izvan za 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 ploči ATTiny85.

Još se nisam uspio uklopiti u automatiziraniji način u firmware pa koristim sljedeći ručni postupak. 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 priključku 555, ili izvor pravokutnog vala poznate frekvencije, npr. 10KHz s razinama 0V/3.3V koje 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 priključak 555.
  3. Ponovno pokrenite ciklus kalibracije pritiskom na gumb.
  4. Na kraju ciklusa kalibracije na zaslonu ć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 vrijednost OSCCAL u OSCCAL_VAL na vrhu firmvera.
  8. Obnovite i prenesite novi firmver. Ponovite korake 1 -5 koji bi trebali prikazati novu OSCCAL vrijednost i novo mjerenje frekvencije.
  9. Po potrebi ponovite korake dok se ne postigne najbolji rezultat.

Napomena: Važno je učiniti mjerni dio ovog ugađanja pri radu na normalnom napajanju, a ne USB -u kako biste smanjili bilo koji pomak frekvencije zbog opskrbnog napona.

Preporučeni: