Cuprins:

Multimetru condensator ATTiny85: 4 pași
Multimetru condensator ATTiny85: 4 pași

Video: Multimetru condensator ATTiny85: 4 pași

Video: Multimetru condensator ATTiny85: 4 pași
Video: Electronic Basics #3: Programming an Attiny+Homemade Arduino Shield 2024, Noiembrie
Anonim
Multimetru condensator ATTiny85
Multimetru condensator ATTiny85
Multimetru condensator ATTiny85
Multimetru condensator ATTiny85

Acest instructable este pentru un contor condensator bazat pe ATTiny85 cu următoarele caracteristici.

  • Bazat pe ATTiny85 (DigiStamp)
  • Afișaj OLED SSD1306 de 0,96"
  • Măsurarea frecvenței pentru condensatori cu valoare redusă 1pF - 1uF folosind oscilatorul 555
  • Măsurarea timpului de încărcare pentru condensatori cu valoare mare 1uF - 50000uF
  • 2 porturi separate utilizate pentru metodele de minimizare a capacității stary
  • Două valori ale curentului utilizate pentru timpul de încărcare pentru a minimiza timpul pentru condensatorii mari
  • Metoda 555 auto zerouri la pornire, poate fi resetată cu butonul
  • Un test rapid utilizat pentru a selecta metoda care trebuie utilizată pentru fiecare ciclu de măsurare.
  • Precizia metodei timpului de încărcare poate fi îmbunătățită prin suport pentru reglarea frecvenței ceasului OSCVAL

Pasul 1: Schematică și teorie

Schematică și teorie
Schematică și teorie

Schema arată ATTiny care conduce afișajul OLED SSD1306 printr-o interfață I2C. Este alimentat direct de la o baterie LiOn 300mAh și este inclus un punct de încărcare care poate fi utilizat cu un încărcător extern compatibil LiOn.

Prima metodă de măsurare se bazează pe măsurarea frecvenței unui oscilator cu funcționare liberă 555. Aceasta are o frecvență de bază determinată de rezistențe și un condensator care ar trebui să aibă o precizie ridicată, deoarece aceasta determină acuratețea măsurătorilor. Am folosit un condensator de polistiren 820pF 1% pe care l-am avut, dar pot fi utilizate și alte valori în jur de 1nF. Valoarea trebuie introdusă în software împreună cu o estimare a oricărei capacități rătăcite (~ 20pF). Aceasta a dat o frecvență de bază de aproximativ 16KHz. Ieșirea 555 este alimentată în PB2 al ATTiny, care este programat ca un contor hardware. Prin măsurarea numărului pe o perioadă de aproximativ 1 secundă se poate determina frecvența. Acest lucru se face la pornire pentru a determina frecvența de bază. Când un condensator testat este adăugat în paralel condensatorului de bază, atunci frecvența este redusă și atunci când aceasta este măsurată și comparată cu frecvența de bază, atunci se poate calcula valoarea capacității adăugate.

Particularitatea acestei metode este că valoarea calculată depinde doar de acuratețea condensatorului de bază. Perioada de măsurare nu contează. Rezoluția depinde de rezoluția măsurătorilor de frecvență, care este destul de mare, astfel încât poate fi măsurată chiar și o capacitate adăugată foarte mică. Factorul limitativ pare a fi „zgomotul de frecvență” al oscilatorului 555, care pentru mine este echivalent cu aproximativ 0,3pF.

Metoda poate fi utilizată într-un interval decent. Pentru a îmbunătăți intervalul, sincronizez perioada de măsurare cu detectarea marginilor impulsurilor de intrare. Aceasta înseamnă că chiar și oscilația cu frecvență joasă, cum ar fi 12Hz (cu un condensator 1uF), este măsurată cu precizie.

Pentru condensatorii mai mari circuitul este aranjat pentru a utiliza o metodă de sincronizare a încărcării. În aceasta, condensatorul testat este descărcat pentru a se asigura că începe de la 0, apoi este încărcat printr-o rezistență cunoscută de la tensiunea de alimentare. Un ADC din ATTiny85 este utilizat pentru a monitoriza tensiunea condensatorului și se măsoară timpul de trecere de la 0% la 50% încărcare. Aceasta poate fi utilizată pentru a calcula capacitatea. Deoarece referința pentru ADC este și tensiunea de alimentare, aceasta nu afectează măsurarea. Cu toate acestea, măsurarea absolută a timpului luat depinde de frecvența ceasului ATTiny85 și variațiile acestuia afectează rezultatul. O procedură poate fi utilizată pentru a îmbunătăți acuratețea acestui ceas folosind un registru de reglare din ATTiny85 și acest lucru este descris mai târziu.

Pentru a descărca condensatorul la 0V, se utilizează un MOSFET cu canal n împreună cu un rezistor de valoare mică pentru a limita curentul de descărcare. Acest lucru înseamnă că și condensatoarele cu valoare mare pot fi descărcate rapid.

Pentru încărcarea condensatorului se utilizează 2 valori ale rezistorului de încărcare. O valoare de bază oferă timpi de încărcare rezonabili pentru condensatori de la 1uF până la aproximativ 50uF. Un MOSFET cu canal p este utilizat pentru a face paralel într-un rezistor inferior pentru a permite măsurarea condensatoarelor cu valoare mai mare într-un interval rezonabil. Valorile alese oferă un timp de măsurare de aproximativ 1 secundă pentru condensatoarele de până la 2200uF și proporțional mai lung pentru valorile mai mari. La capătul inferior al valorii, perioada de măsurare trebuie menținută în mod rezonabil de lungă pentru a permite determinarea tranziției prin pragul de 50% cu suficientă precizie. Rata de eșantionare a ADC este de aproximativ 25uSec, astfel încât o perioadă minimă de 22mSec oferă o precizie rezonabilă.

Deoarece ATTiny are IO limitat (6 pini), atunci alocarea acestei resurse trebuie făcută cu atenție. Sunt necesari 2 pini pentru afișaj, 1 pentru intrarea temporizatorului, 1 pentru ADC, 1 pentru controlul descărcării și 1 pentru controlul ratei de încărcare. Am vrut un buton de comandă pentru a permite resetarea la zero în orice moment. Acest lucru se face prin conectarea liniei I2C SCL. Deoarece semnalele I2C sunt deschise, atunci nu există niciun conflict electric, permițând butonului să tragă această linie jos. Afișajul nu va mai funcționa cu butonul apăsat, dar acest lucru nu are nicio consecință, deoarece se reia când butonul este eliberat.

Pasul 2: Construcție

Constructie
Constructie
Constructie
Constructie
Constructie
Constructie

Am făcut-o într-o cutie mică imprimată 3D de 55 mm x 55 mm. Concepută pentru a conține cele 4 componente majore; placa DigiStamp ATTiny85, afișajul SSD1306, bateria LiOn și o bucată mică de placă prototip care conține temporizatorul 55 și electronica de control a încărcării.

Carcasă la

Piese necesare

  • Placă DigiStamp ATTiny85. Am folosit o versiune cu un conector microUSB care este folosit pentru încărcarea firmware-ului.
  • Afișaj OLED SSD1306 I2C
  • Baterie LiOn de 300mAH
  • Fâșie mică de placă de prototipare
  • Cip temporizator CMOS 555 (TLC555)
  • n-Channel MOSFET AO3400
  • p-Channel MOSFET AO3401
  • Rezistoare 4R7, 470R, 22K, 2x33K
  • Condensatoare 4u7, 220u
  • Condensator de precizie 820pF 1%
  • Comutator glisant miniatural
  • 2 x 3 pini antet pentru portul de încărcare și porturile de măsurare
  • Apasa butonul
  • Incintă
  • Conectați sârmă

Instrumente necesare

  • Fier de lipit cu punct fin
  • Pensetă

Mai întâi alcătuiește circuitul de temporizare 555 și componentele de încărcare de pe placa prototip. Adăugați cabluri de zbor pentru conexiunile externe. Introduceți comutatorul glisant și punctul de încărcare și portul de măsurare în carcasă. Atașați bateria și faceți cablul principal de alimentare la punctul de încărcare, glisați comutatorul. Conectați solul la buton. Aplicați ATTiny85 în poziție și completați conexiunea.

Puteți face unele modificări de economisire a energiei la placa ATTiny înainte de montare, ceea ce va reduce curentul puțin și va prelungi durata de viață a bateriei.

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

Acest lucru nu este critic, deoarece există un comutator de alimentare pentru a opri contorul atunci când nu este utilizat.

Pasul 3: Software

Software-ul pentru acest condensator poate fi găsit la

github.com/roberttidey/CapacitorMeter

Aceasta este o schiță bazată pe Arduino. Are nevoie de biblioteci pentru afișaj și I2C care pot fi găsite la

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Acestea sunt optimizate pentru ca ATTiny să ocupe o memorie minimă. Biblioteca I2C este o metodă de bang de mare viteză care permite utilizarea oricăror 2 pini. Acest lucru este important deoarece metodele I2C care utilizează portul serial folosesc PB2, care este în conflict cu utilizarea temporizatorului / contorului de intrare necesar pentru măsurarea frecvenței 555.

Software-ul este structurat în jurul unei mașini de stări care efectuează măsurarea printr-un ciclu de stări. Un ISR acceptă depășirea de la contorul de temporizare pentru a extinde hardware-ul de 8 biți. Un al doilea ISR acceptă ADC care funcționează în modul continuu. Acest lucru oferă cel mai rapid răspuns la circuitul de încărcare care trece pragul.

La începutul fiecărui ciclu de măsurare, o funcție getMeasureMode determină care este cea mai potrivită metodă de utilizat pentru fiecare măsurare.

Când se folosește metoda 555, temporizarea numărării începe numai atunci când contorul s-a schimbat. De asemenea, sincronizarea este oprită numai după intervalul nominal de măsurare și când este detectată o margine. Această sincronizare permite calculul precis al frecvenței chiar și pentru frecvențele joase.

Când software-ul începe primele 7 măsurători sunt „cicluri de calibrare” utilizate pentru a determina frecvența de bază a 555 fără condensator adăugat. Sunt mediate ultimele 4 cicluri.

Există suport pentru reglarea registrului OSCAL pentru reglarea ceasului. Vă sugerez să setați OSCCAL_VAL la 0 inițial în partea de sus a schiței. Aceasta înseamnă că calibrarea din fabrică va fi utilizată până la efectuarea reglării.

Este necesară ajustarea valorii condensatorului de bază 555. Am adăugat, de asemenea, o sumă estimată pentru capacitatea rătăcită.

Dacă sunt folosite diferite rezistențe pentru metodele de încărcare, atunci valorile CHARGE_RCLOW și CHARGE_RCHIGH din software vor trebui, de asemenea, schimbate.

Pentru a instala software-ul, utilizați metoda digistamp normală de încărcare a software-ului și conectarea portului USB atunci când vi se solicită. Lăsați comutatorul de alimentare în poziția oprit, deoarece alimentarea va fi furnizată de USB pentru această operație.

Pasul 4: Funcționare și calibrare avansată

Funcționarea este foarte simplă.

După ce porniți unitatea și așteptați terminarea calibrării zero, conectați condensatorul testat la unul dintre cele două porturi de măsurare. Utilizați porturile 555 pentru condensatori cu valoare mică <1uF și portul de încărcare pentru condensatori cu valoare mai mare. Pentru condensatorii electrolitici conectați terminalul negativ la punctul comun de împământare. În timpul testării condensatorul va fi încărcat până la aproximativ 2V.

Portul 555 poate fi modificat ținând apăsat butonul timp de aproximativ 1 secundă și eliberând. Asigurați-vă că nimic nu este conectat la portul 555 pentru aceasta.

Calibrare avansată

Metoda de încărcare se bazează pe frecvența absolută a ceasului ATTiny85 pentru a măsura timpul. Ceasul utilizează oscilatorul RC intern aranjat pentru a da un ceas nominal de 8 MHz. Deși stabilitatea oscilatorului este destul de bună pentru variațiile de tensiune și temperatură, frecvența sa poate fi redusă cu destul de multe procente, chiar dacă este calibrată din fabrică. Această calibrare setează registrul OSCCAL la pornire. Calibrarea din fabrică poate fi îmbunătățită prin verificarea frecvenței și efectuarea unei setări mai optime a valorii OSCCAL pentru a se potrivi unei anumite plăci ATTiny85.

Nu am reușit să mă încadrez într-o metodă mai automată în firmware, așa că folosesc următoarea procedură manuală. Sunt posibile două variante în funcție de măsurătorile externe disponibile; fie un contor de frecvență capabil să măsoare frecvența formei de undă triunghiulară pe portul 555, fie o sursă de undă pătrată cu frecvență cunoscută de ex. 10KHz cu un nivel de 0V / 3.3V care poate fi conectat la portul 555 și suprascrie forma de undă pentru a forța acea frecvență în contor. Am folosit a doua metodă.

  1. Porniți contorul la puterea normală fără condensatori conectați.
  2. Conectați contorul de frecvență sau generatorul de unde pătrate la portul 555.
  3. Reporniți ciclul de calibrare apăsând butonul.
  4. La sfârșitul ciclului de calibrare, afișajul va afișa frecvența determinată de contor și valoarea curentă OSCCAL. Rețineți că utilizarea repetată a ciclului de calibrare va comuta între afișarea frecvenței măsurate și afișarea normală fără afișare.
  5. Dacă frecvența afișată este mai mică decât cea cunoscută, înseamnă că frecvența ceasului este prea mare și invers. Am găsit o creștere OSCCAL reglează ceasul cu aproximativ 0,05%
  6. Calculați o nouă valoare OSCCAL pentru a îmbunătăți ceasul.
  7. Introduceți o nouă valoare OSCCAL în OSCCAL_VAL în partea de sus a firmware-ului.
  8. Reconstruiți și încărcați un firmware nou. Repetați pașii 1 -5, care ar trebui să arate noua valoare OSCCAL și noua măsurare a frecvenței.
  9. Dacă este necesar, repetați pașii din nou până când se obține cel mai bun rezultat.

Notă este importantă pentru a face partea de măsurare a acestei reglări atunci când funcționează cu energie normală, nu USB, pentru a minimiza orice schimbare de frecvență din cauza tensiunii de alimentare.

Recomandat: