INHOUDSOPGAWE:

ATTiny85 kondensatormeter: 4 stappe
ATTiny85 kondensatormeter: 4 stappe

Video: ATTiny85 kondensatormeter: 4 stappe

Video: ATTiny85 kondensatormeter: 4 stappe
Video: Использование плат Digispark Attiny85 Mini Arduino: Урок 108 2024, Julie
Anonim
Kondensatormeter ATTiny85
Kondensatormeter ATTiny85
Kondensatormeter ATTiny85
Kondensatormeter ATTiny85

Hierdie instruksie is vir 'n kondensatormeter gebaseer op die ATTiny85 met die volgende funksies.

  • Gebaseer op ATTiny85 (DigiStamp)
  • SSD1306 0,96 "OLED -skerm
  • Frekwensie meting vir lae waarde kapasitors 1pF - 1uF met behulp van 555 ossillator
  • Laai tydmeting vir hoë waarde kondensators 1uF - 50000uF
  • 2 afsonderlike poorte wat gebruik word vir die metodes om stêre kapasitansie te verminder
  • Twee waardes van die stroom word gebruik vir laaityd om die tyd vir groot kapasitors te verminder
  • 555 selfstandige nulle met die aanvang, kan met 'n drukknop herlaai word
  • 'N Vinnige toets wat gebruik word om te kies watter metode vir elke metingsiklus gebruik moet word.
  • Die akkuraatheid van die laaitydmetode kan verbeter word deur ondersteuning vir OSCVAL -klokfrekwensie -aanpassing

Stap 1: Skematiese en teorie

Skematiese en teorie
Skematiese en teorie

Die skema toon die ATTiny wat die SSD1306 OLED -skerm bestuur via 'n I2C -koppelvlak. Dit word direk gevoed deur 'n LiOn 300mAh -battery en 'n laaipunt is ingesluit wat saam met 'n LiOn -versoenbare eksterne laaier gebruik kan word.

Die eerste meetmetode is gebaseer op die meting van die frekwensie van 'n 555 vrylopende ossillator. Dit het 'n basisfrekwensie wat bepaal word deur die weerstande en 'n kapasitor wat 'n hoë akkuraatheid moet hê, aangesien dit die akkuraatheid van die metings bepaal. Ek gebruik 'n 820pF 1% polistireenkapasitor wat ek gehad het, maar ander waardes rondom 1nF kan gebruik word. Die waarde moet in die sagteware ingevoer word, tesame met 'n skatting van enige verdwaalde kapasitansie (~ 20pF). Dit het 'n basisfrekwensie van ongeveer 16KHz gegee. Die uitset van die 555 word gevoer in PB2 van die ATTiny wat as 'n hardeware -toonbank geprogrammeer is. Deur die telling oor 'n tydperk van ongeveer 1 sekonde te meet, kan die frekwensie bepaal word. Dit word by die aanvang gedoen om die basisfrekwensie te bepaal. As 'n kondensator wat getoets word, in paralle by die basiskondensator gevoeg word, word die frekwensie verlaag en wanneer dit gemeet en vergelyk word met die basisfrekwensie, kan die waarde van die bygevoegde kapasitansie bereken word.

Die goeie kenmerk van hierdie metode is dat die berekende waarde slegs afhanklik is van die akkuraatheid van die basiskapasitor. Die tydperk van die meting maak nie saak nie. Die resolusie hang af van die resolusie van die frekwensiemetings wat redelik hoog is, sodat selfs 'n baie klein ekstra kapasitansie gemeet kan word. Die beperkende faktor blyk die 'frekwensiegeruis' van die 555 ossillator te wees, wat vir my gelykstaande is aan ongeveer 0.3pF.

Die metode kan oor 'n redelike reeks gebruik word. Om die omvang te verbeter, sinchroniseer ek die meetperiode met die opsporing van rande van die inkomende pulse. Dit beteken dat selfs lae frekwensie ossillasie soos 12Hz (met 'n 1uF kapasitor) akkuraat gemeet word.

Vir groter kapasitors is die stroombaan ingerig om 'n laaistydmetode te gebruik. Hierin word die kondensator wat getoets word ontlading om te verseker dat dit by 0 begin en dan gelaai word deur 'n bekende weerstand van die voedingspanning. 'N ADC in die ATTiny85 word gebruik om die kapasitorspanning te monitor en die tydsduur van 0% tot 50% laai word gemeet. Dit kan gebruik word om die kapasitansie te bereken. Aangesien die verwysing vir die ADC ook die voedingspanning is, beïnvloed dit nie die meting nie. Die absolute maatstaf van die tyd wat dit neem, hang egter af van die ATTiny85 -klokfrekwensie en variasies hiervan beïnvloed die resultaat. 'N Prosedure kan gebruik word om die akkuraatheid van hierdie klok te verbeter met behulp van 'n afstemregister in die ATTiny85, en dit word later beskryf.

Om die kapasitor na 0V te ontlaai, word 'n n-kanaal MOSFET saam met 'n lae waarde weerstand gebruik om die ontladingsstroom te beperk. Dit beteken dat selfs groot waarde -kapasitors vinnig ontlaai kan word.

Om die kapasitor te laai word 2 waardes van laaiweerstand gebruik. 'N Basiswaarde gee redelike laai tye vir kapasitors van 1uF tot ongeveer 50uF. 'N P-kanaal MOSFET word gebruik om 'n laer weerstand in parallel te plaas sodat kapasitore met 'n hoër waarde binne 'n redelike interval gemeet kan word. Die gekose waardes gee 'n meettyd van ongeveer 1 sekonde vir kapasitors tot 2200uF en proporsioneel langer vir groter waardes. Aan die onderkant van die waarde moet die meetperiode redelik lank gehou word om die oorgang deur die drempel van 50% met genoegsame akkuraatheid te kan bepaal. Die bemonsteringstempo van die ADC is ongeveer 25uSec, so 'n minimum tydperk van 22mSec gee redelike akkuraatheid.

Aangesien die ATTiny beperkte IO (6 penne) het, moet die toewysing van hierdie bron versigtig gedoen word. 2 penne is nodig vir die skerm, 1 vir die timer -invoer, 1 vir die ADC, 1 vir die ontlading en 1 vir die beheer van die laagsnelheid. Ek wou 'n drukknoppie-beheer hê om op enige stadium weer nul te stel. Dit word gedoen deur die I2C SCL-lyn met 'n hoë aansluiting te plaas. Aangesien die I2C -seine oop dreineer, is daar geen elektriese konflik nie deur die knoppie toe te laat om hierdie lyn laag te trek. Die skerm sal nie meer werk as die knoppie ingedruk is nie, maar dit het geen gevolg nie, aangesien dit hervat word wanneer die knoppie losgemaak word.

Stap 2: Konstruksie

Konstruksie
Konstruksie
Konstruksie
Konstruksie
Konstruksie
Konstruksie

Ek het dit in 'n klein 3D -gedrukte boks van 55 mm x 55 mm gemaak. Ontwerp om die vier hoofkomponente te bevat; die ATTiny85 DigiStamp -bord, die SSD1306 -skerm, die LiOn -battery en 'n klein prototipe wat die 55 timer en laai -beheerelektronika bevat.

Bylae by

Onderdele benodig

  • ATTiny85 DigiStamp -bord. Ek het 'n weergawe met 'n microUSB -aansluiting gebruik wat gebruik word om firmware op te laai.
  • SSD1306 I2C OLED -skerm
  • 300 mAH LiOn battery
  • Klein strook prototipe bord
  • CMOS 555 timer -chip (TLC555)
  • n-kanaal MOSFET AO3400
  • p-kanaal MOSFET AO3401
  • Weerstande 4R7, 470R, 22K, 2x33K
  • Kondensators 4u7, 220u
  • Presisie -kondensator 820pF 1%
  • Miniatuur skuifskakelaar
  • 2 x 3 -pins koppe vir laaipoort en metingspoort
  • Druk knoppie
  • Omhulsel
  • Sluit draad aan

Gereedskap benodig

  • Fynpunt soldeerbout
  • Pincet

Maak eers die 555 timer -stroombaan en laaikomponente op die prototipe -bord op. Voeg vlieënde leidrade by vir die eksterne verbindings. Bevestig die skuifskakelaar en laaipunt en meetpoort in die omhulsel. Bevestig die battery en plaas die hoofkabels op die laaipunt, skuifskakelaar. Koppel die grond aan die drukknoppie. Bevestig die ATTiny85 op sy plek en maak die haak vas.

U kan 'n paar energiebesparings aan die ATTiny -bord doen voordat u dit aanpas, wat die stroom 'n bietjie sal verminder en die batterylewe sal verleng.

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

Dit is nie van kritieke belang nie, aangesien daar 'n kragskakelaar is om die meter af te skakel wanneer dit nie gebruik word nie.

Stap 3: sagteware

Sagteware vir hierdie kondensatormeter kan gevind word by

github.com/roberttidey/CapacitorMeter

Dit is 'n Arduino -gebaseerde skets. Dit benodig biblioteke vir die skerm en I2C, wat u kan vind by

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Dit is geoptimaliseer vir die ATTiny om minimale geheue op te neem. Die I2C -biblioteek is 'n hoëspoed -bit -bang -metode waarmee u 2 penne kan gebruik. Dit is belangrik, aangesien die I2C -metodes wat die seriële poort gebruik, PB2 gebruik, wat in stryd is met die gebruik van die timer/teller -invoer wat nodig is om die 555 -frekwensie te meet.

Die sagteware is gestruktureer rondom 'n staatsmasjien wat die meting deur 'n siklus van toestande neem. 'N ISR ondersteun oorloop van die tydteller om die 8 bis -hardeware uit te brei. 'N Tweede ISR ondersteun die ADC wat in deurlopende modus werk. Dit gee die vinnigste reaksie op die laaikring wat die drempel oorskry.

Aan die begin van elke metingsiklus bepaal 'n getMeasureMode -funksie watter metode die beste geskik is vir elke meting.

As die 555 -metode gebruik word, begin die tydsberekening van die tel eers wanneer die teller verander het. Net so word die tydsberekening eers gestop na die nominale meetinterval en wanneer 'n rand opgespoor word. Hierdie sinchronisasie laat die frekwensie akkuraat toe, selfs vir lae frekwensies.

As die sagteware begin, word die eerste sewe metings 'kalibrasiesiklusse' gebruik om die basisfrekwensie van die 555 sonder bygevoegde kondensator te bepaal. Die laaste 4 siklusse is gemiddeld.

Daar is ondersteuning vir die aanpassing van die OSCAL -register vir klokafstemming. Ek stel voor dat u die OSCCAL_VAL aanvanklik bo -aan die skets op 0 stel. Dit beteken dat die fabriekskalibrasie gebruik sal word totdat die stemming uitgevoer is.

Die waarde van die 555 basiskondensator moet aangepas word. Ek voeg ook 'n geskatte hoeveelheid by vir verdwaalde kapasitansie.

As verskillende weerstande vir die laaimetodes gebruik word, moet die CHARGE_RCLOW en CHARGE_RCHIGH waardes in die sagteware ook verander word.

Om die sagteware te installeer, gebruik die normale digistamp -metode om die sagteware op te laai en die usb -poort aan te sluit wanneer dit gevra word. Laat die aan / uit -skakelaar in die af -posisie, aangesien die USB vir hierdie operasie krag sal verskaf.

Stap 4: Bediening en gevorderde kalibrasie

Die werking is baie eenvoudig.

Nadat u die eenheid aangeskakel het en gewag het totdat die kalibrasie -nul klaar is, koppel die kondensator aan die toets aan een van die twee metingspoort. Gebruik die 555 poorte vir lae waarde kapasitors <1uF en die laai poort vir kapasitors met 'n hoër waarde. Vir elektrolitiese kondensators verbind die negatiewe terminaal met die gemeenskaplike aardpunt. Tydens die toets word die kapasitor tot ongeveer 2V gelaai.

U kan die 555 -poort herlaai deur die drukknop vir ongeveer 1 sekonde ingedruk te hou. Maak seker dat daar niks aan die 555 -poort gekoppel is nie.

Gevorderde kalibrasie

Die hefmetode berus op die absolute klokfrekwensie van die ATTiny85 om tyd te meet. Die klok gebruik die interne RC -ossillator wat ingerig is om 'n nominale 8MHz -klok te gee. Alhoewel die stabiliteit van die ossillator redelik goed is vir spanning- en temperatuurvariasies, kan die frekwensie daarvan 'n hele paar persent wees, selfs al is dit in die fabriek gekalibreer. Hierdie kalibrasie stel die OSCCAL -register by die aanvang. Die fabriekskalibrasie kan verbeter word deur die frekwensie te kontroleer en die OSCCAL -waarde meer optimaal te stel volgens 'n spesifieke ATTiny85 -bord.

Ek het nog nie daarin geslaag om 'n meer outomatiese metode in die firmware in te pas nie, dus gebruik ek die volgende handleiding. Twee variasies is moontlik, afhangende van watter eksterne metings beskikbaar is; óf 'n frekwensiemeter wat die frekwensie van die driehoekige golfvorm op die 555 -poort kan meet, óf 'n vierkantgolfbron met 'n bekende frekwensie, bv. 10KHz met 'n 0V/3.3V -vlakke wat aan die 555 -poort gekoppel kan word en die golfvorm kan oorskry om die frekwensie in die toonbank te dwing. Ek het die tweede metode gebruik.

  1. Begin die meter op sy normale krag sonder dat kondensators aangeskakel is.
  2. Koppel die frekwensiemeter of vierkantsgolfopwekker aan die 555 -poort.
  3. Herbegin die kalibrasiesiklus deur op die knoppie te druk.
  4. Aan die einde van die kalibrasiesiklus sal die skerm die frekwensie toon soos bepaal deur die teller en die huidige OSCCAL -waarde. Let daarop dat herhaalde gebruik van die kalibrasiesiklus sal wissel tussen die wys van die gemete frekwensie en normale geen vertoning.
  5. As die getoonde frekwensie minder is as wat bekend is, beteken dit dat die klokfrekwensie te hoog is en omgekeerd. Ek vind 'n OSCCAL -verhoging pas die klok met ongeveer 0,05% aan
  6. Bereken 'n nuwe OSCCAL -waarde om die klok te verbeter.
  7. Voer die nuwe OSCCAL -waarde in OSCCAL_VAL bo -op die firmware.
  8. Herbou en laai nuwe firmware op. Herhaal stap 1-5, wat die nuwe OSCCAL -waarde en die nuwe frekwensiemeting moet toon.
  9. Indien nodig, herhaal stappe weer totdat die beste resultaat bereik is.

Let op: dit is belangrik om die meting van hierdie stemming te doen wanneer u op normale krag werk, nie USB nie, om enige frekwensieverskuiwing as gevolg van voedingsspanning te verminder.

Aanbeveel: