Indholdsfortegnelse:

ATTiny85 kondensatormåler: 4 trin
ATTiny85 kondensatormåler: 4 trin

Video: ATTiny85 kondensatormåler: 4 trin

Video: ATTiny85 kondensatormåler: 4 trin
Video: Самая маленькая Ардуина - ATtiny10 + проект 2024, Juli
Anonim
ATTiny85 kondensatormåler
ATTiny85 kondensatormåler
ATTiny85 kondensatormåler
ATTiny85 kondensatormåler

Denne instruktion er til en kondensatormåler baseret på ATTiny85 med følgende funktioner.

  • Baseret på ATTiny85 (DigiStamp)
  • SSD1306 0,96 "OLED -skærm
  • Frekvensmåling for kondensatorer med lav værdi 1pF - 1uF ved hjælp af 555 oscillator
  • Måling af opladningstid for kondensatorer med høj værdi 1uF - 50000uF
  • 2 separate porte, der bruges til metoderne til at minimere stary kapacitans
  • To værdier af strøm bruges til opladningstid for at minimere tiden for store kondensatorer
  • 555 metode selv nuller ved opstart, kan nulstilles med trykknap
  • En hurtig test, der bruges til at vælge, hvilken metode der skal bruges til hver målecyklus.
  • Opladningstidsmetodens nøjagtighed kan forbedres ved hjælp af OSCVAL -urfrekvensjustering

Trin 1: Skematisk og teori

Skematisk og teori
Skematisk og teori

Skematisk viser ATTiny, der driver SSD1306 OLED -skærmen via en I2C -grænseflade. Den drives direkte fra et LiOn 300mAh batteri, og der medfølger et ladepunkt, der kan bruges med en LiOn -kompatibel ekstern oplader.

Den første målemetode er baseret på måling af frekvensen af en 555 frit løbende oscillator. Denne har en basisfrekvens bestemt af modstandene og en kondensator, som skal have høj nøjagtighed, da dette bestemmer målingernes nøjagtighed. Jeg brugte en 820pF 1% polystyrenkondensator, jeg havde, men andre værdier omkring 1nF kan bruges. Værdien skal indtastes i softwaren sammen med et skøn over enhver afledende kapacitans (~ 20pF). Dette gav en basisfrekvens på omkring 16KHz. Outputtet fra 555 føres til PB2 i ATTiny, som er programmeret som en hardwaretæller. Ved at måle tællingen over en periode på ca. 1 sekund kan frekvensen bestemmes. Dette gøres ved opstart for at bestemme basisfrekvensen. Når en kondensator under test tilføjes parallelt til basiskondensatoren, sænkes frekvensen, og når denne måles og sammenlignes med basisfrekvensen, kan værdien af den tilføjede kapacitans beregnes.

Det fine ved denne metode er, at den beregnede værdi kun er afhængig af basiskondensatorens nøjagtighed. Målingsperioden er ligegyldig. Opløsningen afhænger af opløsningen af frekvensmålingerne, som er ret høj, så selv meget lille ekstra kapacitans kan måles. Den begrænsende faktor ser ud til at være 'frekvensstøj' fra 555 -oscillatoren, som for mig svarer til omkring 0.3pF.

Metoden kan bruges over et anstændigt område. For at forbedre området synkroniserer jeg måleperioden med at detektere kanter af de indgående pulser. Dette betyder, at selv lavfrekvent svingning som 12Hz (med en 1uF kondensator) måles nøjagtigt.

For større kondensatorer er kredsløbet indrettet til at bruge en opladningstimingsmetode. I denne er kondensatoren under test afladning for at sikre, at den starter ved 0, derefter oplades gennem en kendt modstand fra forsyningsspændingen. En ADC i ATTiny85 bruges til at overvåge kondensatorspændingen, og tiden til at gå fra 0% til 50% ladning måles. Dette kan bruges til at beregne kapacitansen. Da referencen til ADC også er forsyningsspændingen, påvirker dette ikke målingen. Det absolutte mål for den tid, det tager, afhænger dog af ATTiny85 -urfrekvensen, og variationer i dette påvirker resultatet. En procedure kan bruges til at forbedre nøjagtigheden af dette ur ved hjælp af et tuningsregister i ATTiny85, og dette beskrives senere.

For at aflade kondensatoren til 0V bruges en n-kanal MOSFET sammen med en modstand med lav værdi for at begrænse afladningsstrømmen. Dette betyder, at selv store værdikondensatorer kan aflades hurtigt.

For at oplade kondensatoren bruges 2 værdier af opladningsmodstand. En basisværdi giver rimelige ladetider for kondensatorer fra 1uF op til omkring 50uF. En p-kanal MOSFET bruges til at parallelle i en lavere modstand for at tillade kondensatorer med højere værdi at blive målt i et rimeligt interval. De valgte værdier giver en måltid på ca. 1 sekund for kondensatorer op til 2200uF og proportionelt længere for større værdier. I den nedre ende af værdien skal måleperioden holdes rimelig lang, så bestemmelsen af overgangen gennem 50% tærsklen kan foretages med tilstrækkelig præcision. ADC's prøvetagningshastighed er omkring 25uSec, så en minimumsperiode på 22mSec giver rimelig præcision.

Da ATTiny har begrænset IO (6 ben), skal allokeringen af denne ressource udføres omhyggeligt. Der skal bruges 2 ben til displayet, 1 til timerindgangen, 1 til ADC, 1 til afladningskontrol og 1 til kontrol af ladningshastighed. Jeg ville have en trykknapkontrol for at tillade re-nulstilling på ethvert tidspunkt. Dette gøres ved hi-jacking af I2C SCL-linjen. Da I2C -signalerne er åbne afløb, er der ingen elektrisk konflikt ved at lade knappen trække denne linje lavt. Displayet holder op med at fungere med knappen trykket ned, men det har ingen betydning, da den genoptages, når knappen slippes.

Trin 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Jeg lavede dette til en lille 55 mm x 55 mm 3D -trykt æske. Designet til at rumme de 4 hovedkomponenter; ATTiny85 DigiStamp -kortet, SSD1306 -skærmen, LiOn -batteriet og en lille smule prototypekort, der indeholder 55 timer og opladningskontrolelektronik.

Vedhæftet fil på

Dele nødvendige

  • ATTiny85 DigiStamp bord. Jeg brugte en version med et microUSB -stik, der bruges til at uploade firmware.
  • SSD1306 I2C OLED -skærm
  • 300mAH LiOn batteri
  • Lille stribe prototypebord
  • CMOS 555 timer -chip (TLC555)
  • n-kanal MOSFET AO3400
  • p-kanal MOSFET AO3401
  • Modstande 4R7, 470R, 22K, 2x33K
  • Kondensatorer 4u7, 220u
  • Præcisionskondensator 820pF 1%
  • Miniaturebryderkontakt
  • 2 x 3 -pins headers til opladningsport og måleporte
  • Trykknap
  • Kabinet
  • Tilslut ledningen

Værktøjer nødvendige

  • Fint punkt loddejern
  • Pincet

Først udgør 555 timerkredsløbet og opladningskomponenterne på prototypekortet. Tilføj flyvende elektroder til de eksterne forbindelser. Fastgør skydekontakten og ladepunktet og måleporten i kabinettet. Sæt batteriet på, og foretag hovedstrømledningen til ladepunktet, skub kontakten. Tilslut jorden til trykknappen. Sæt ATTiny85 på plads, og afslut tilslutningen.

Du kan foretage nogle strømbesparende ændringer af ATTiny -kortet, før du monterer dem, hvilket reducerer strømmen en smule og forlænger batteriets levetid.

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

Dette er ikke kritisk, da der er en afbryder til at slukke for måleren, når den ikke er i brug.

Trin 3: Software

Software til denne kondensatormåler findes på

github.com/roberttidey/CapacitorMeter

Dette er en Arduino baseret skitse. Det har brug for biblioteker til displayet og I2C, som kan findes på

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Disse er optimeret til, at ATTiny optager minimal hukommelse. I2C -biblioteket er en højhastigheds -bit bang -metode, der tillader brug af 2 pins. Dette er vigtigt, da I2C -metoderne, der bruger den serielle port, bruger PB2, som er i konflikt med at bruge den timer/tællerindgang, der er nødvendig for at måle 555 -frekvensen.

Softwaren er struktureret omkring en tilstandsmaskine, der tager målingen gennem en cyklus af tilstande. En ISR understøtter overløb fra timertælleren for at forlænge 8 -bit hardware. En anden ISR understøtter ADC, der fungerer i kontinuerlig tilstand. Dette giver den hurtigste reaktion på, at opladningskredsløbet krydser tærsklen.

Ved starten af hver målecyklus bestemmer en getMeasureMode -funktion, hvilken metode der er bedst egnet til hver måling.

Når 555 -metoden bruges, starter timingen af tællingen først, når tælleren er ændret. På samme måde stoppes timingen først efter det nominelle måleinterval, og når en kant detekteres. Denne synkronisering tillader præcis beregning af frekvensen, selv for lave frekvenser.

Når softwaren starter, er de første 7 målinger 'kalibreringscyklusser', der bruges til at bestemme basisfrekvensen for 555 uden tilsat kondensator. De sidste 4 cyklusser er i gennemsnit.

Der er understøttelse af justering af OSCAL -registret til urindstilling. Jeg foreslår, at du indstiller OSCCAL_VAL til 0 i starten øverst på skitsen. Det betyder, at fabrikskalibreringen vil blive brugt, indtil tuning udføres.

Værdien af 555 basiskondensatoren skal justeres er påkrævet. Jeg tilføjer også et anslået beløb for vild kapacitet.

Hvis der bruges forskellige modstande til opladningsmetoderne, skal værdierne CHARGE_RCLOW og CHARGE_RCHIGH i softwaren også ændres.

For at installere softwaren skal du bruge den normale digistamp -metode til at uploade softwaren og tilslutte usb -porten, når du bliver bedt om det. Lad afbryderen stå i slukket position, da USB vil levere strøm til denne handling.

Trin 4: Betjening og avanceret kalibrering

Betjeningen er meget ligetil.

Efter at have tændt enheden og ventet på, at kalibreringsnullen er færdig, skal du forbinde den testede kondensator til en af de to måleporte. Brug de 555 porte til kondensatorer med lav værdi <1uF og ladningsporten til kondensatorer med højere værdi. For elektrolytiske kondensatorer tilsluttes den negative terminal til det fælles jordpunkt. Under test oplades kondensatoren op til ca. 2V.

555 -porten kan nulstilles ved at holde trykknappen inde i ca. 1 sekund og slippe. Sørg for, at der ikke er sluttet noget til 555 -porten til dette.

Avanceret kalibrering

Opladningsmetoden er afhængig af den absolutte urfrekvens for ATTiny85 for at måle tid. Uret bruger den interne RC -oscillator, der er indrettet til at give et nominelt 8MHz -ur. Selvom oscillatorens stabilitet er ganske god til spændings- og temperaturvariationer, kan dens frekvens være udenfor ganske få procent, selvom den er fabrikskalibreret. Denne kalibrering sætter OSCCAL -registret ved opstart. Fabrikskalibreringen kan forbedres ved at kontrollere frekvensen og foretage en mere optimal indstilling af OSCCAL -værdien, så den passer til et bestemt ATTiny85 -kort.

Jeg har endnu ikke formået at passe en mere automatisk metode ind i firmwaren, så jeg bruger følgende manuelle procedure. To variationer er mulige afhængigt af hvilke eksterne målinger der er tilgængelige; enten en frekvensmåler, der er i stand til at måle frekvensen af den trekantede bølgeform på 555 -porten, eller en firkantbølge med kendt frekvens, f.eks. 10KHz med et 0V/3.3V -niveau, som kan tilsluttes 555 -porten og tilsidesætte bølgeformen for at tvinge denne frekvens ind i tælleren. Jeg brugte den anden metode.

  1. Start måleren på normal strøm uden kondensatorer tilsluttet.
  2. Tilslut frekvensmåleren eller firkantbølgegeneratoren til 555 -porten.
  3. Genstart kalibreringscyklussen ved at trykke på knappen.
  4. I slutningen af kalibreringscyklussen viser displayet frekvensen som bestemt af tælleren og den aktuelle OSCCAL -værdi. Bemærk, at gentagen brug af kalibreringscyklussen vil skifte mellem visning af den målte frekvens og normal ingen visning.
  5. Hvis den viste frekvens er mindre end det, man kender, betyder det, at urfrekvensen er for høj og omvendt. Jeg finder, at et OSCCAL -trin justerer uret med cirka 0,05%
  6. Beregn en ny OSCCAL -værdi for at forbedre uret.
  7. Indtast ny OSCCAL -værdi i OSCCAL_VAL øverst på firmwaren.
  8. Genopbyg og upload ny firmware. Gentag trin 1-5, som skal vise den nye OSCCAL -værdi og den nye frekvensmåling.
  9. Gentag om nødvendigt trinene igen, indtil det bedste resultat er opnået.

Bemærk er vigtigt at foretage måledelen af denne tuning, når den kører på normal strøm, ikke USB, for at minimere ethvert frekvensskift på grund af forsyningsspænding.

Anbefalede: