Tartalomjegyzék:

ATTiny85 kondenzátor mérő: 4 lépés
ATTiny85 kondenzátor mérő: 4 lépés

Videó: ATTiny85 kondenzátor mérő: 4 lépés

Videó: ATTiny85 kondenzátor mérő: 4 lépés
Videó: ATtiny85 arduino прошивка и подключение 2024, Július
Anonim
ATTiny85 kondenzátor mérő
ATTiny85 kondenzátor mérő
ATTiny85 kondenzátor mérő
ATTiny85 kondenzátor mérő

Ez az utasítás az ATTiny85 alapú kondenzátor mérőhöz készült, a következő funkciókkal.

  • ATTiny85 (DigiStamp) alapján
  • SSD1306 0,96 "OLED kijelző
  • Frekvenciamérés alacsony értékű 1pF - 1uF kondenzátorokhoz 555 oszcillátor segítségével
  • Töltési idő mérés nagy értékű 1uF - 50000uF kondenzátorokhoz
  • 2 külön portot használnak a csillagkapacitás minimalizálására szolgáló módszerekhez
  • A töltési idő két áramértékét használja a nagy kondenzátorok idejének minimalizálása érdekében
  • 555 módszer önálló nullák indításkor, nyomógombbal változtatható
  • Gyors teszt annak kiválasztására, hogy melyik mérési ciklust kell használni.
  • A töltési idő módszerének pontossága javítható az OSCVAL órajel -frekvencia beállításának támogatásával

1. lépés: Vázlat és elmélet

Vázlat és elmélet
Vázlat és elmélet

A vázlat azt mutatja, hogy az ATTiny az SSD1306 OLED kijelzőt I2C interfészen keresztül hajtja. Közvetlenül LiOn 300mAh akkumulátorról táplálkozik, és egy töltési pontot tartalmaz, amely LiOn -kompatibilis külső töltővel használható.

Az első mérési módszer egy 555 szabadon futó oszcillátor frekvenciájának mérésén alapul. Ennek alapfrekvenciáját az ellenállások határozzák meg, és egy kondenzátort, amelynek nagy pontosságúnak kell lennie, mivel ez határozza meg a mérések pontosságát. 820pF 1% -os polisztirol kondenzátort használtam, de más értékek 1nF körül is használhatók. Az értéket be kell írni a szoftverbe az esetleges kóbor kapacitás (~ 20pF) becslésével együtt. Ez 16 kHz körüli alapfrekvenciát adott. Az 555 kimenete az ATTiny PB2 -jébe kerül, amely hardver számlálóként van programozva. A szám mérésével körülbelül 1 másodperc alatt meg lehet határozni a gyakoriságot. Ezt indításkor kell elvégezni az alapfrekvencia meghatározásához. Ha a vizsgált kondenzátort párhuzamosan adják hozzá az alap kondenzátorhoz, akkor a frekvencia csökken, és amikor ezt mérik és összehasonlítják az alapfrekvenciával, akkor kiszámítható a hozzáadott kapacitás értéke.

Ennek a módszernek az a szép tulajdonsága, hogy a számított érték csak az alapkondenzátor pontosságától függ. A mérés időtartama nem számít. A felbontás a frekvenciamérések felbontásától függ, ami meglehetősen magas, így még nagyon kis hozzáadott kapacitás is mérhető. A korlátozó tényező az 555 -ös oszcillátor „frekvenciazaja”, amely számomra körülbelül 0,3 pF -nek felel meg.

A módszer tisztességes tartományban használható. A tartomány javítása érdekében szinkronizálom a mérési időszakot a beérkező impulzusok éleinek észlelésével. Ez azt jelenti, hogy még az alacsony frekvenciájú rezgéseket, például a 12 Hz -et (1uF kondenzátorral) is pontosan mérik.

Nagyobb kondenzátorok esetén az áramkör töltési időzítési módszert alkalmaz. Ebben az esetben a vizsgált kondenzátor kisül, hogy biztosítsa, hogy 0 -nál kezdődik, majd a tápfeszültség ismert ellenállása révén töltődik fel. Az ATTiny85 ADC -je a kondenzátor feszültségének figyelésére szolgál, és a 0% és 50% közötti töltésig eltelt időt mérik. Ez használható a kapacitás kiszámítására. Mivel az ADC referenciája a tápfeszültség is, ez nem befolyásolja a mérést. Az idő abszolút mértéke azonban az ATTiny85 órajel frekvenciájától függ, és ennek eltérései befolyásolják az eredményt. Egy eljárás alkalmazható az óra pontosságának javítására az ATTiny85 hangoló regiszterével, és ezt később ismertetjük.

A kondenzátor 0V-ra való kisütéséhez n-csatornás MOSFET-et használnak alacsony értékű ellenállással együtt a kisülési áram korlátozására. Ez azt jelenti, hogy még a nagy értékű kondenzátorokat is gyorsan le lehet üríteni.

A kondenzátor töltéséhez 2 töltési ellenállás értéket használnak. Az alapérték ésszerű töltési időt biztosít a kondenzátorok számára 1uF és körülbelül 50uF között. A p-csatornás MOSFET-et alacsonyabb ellenállásban párhuzamosan használják, hogy nagyobb értékű kondenzátorokat mérjenek ésszerű időközönként. A kiválasztott értékek körülbelül 1 másodperces mérési időt adnak a 2200uF -ig terjedő kondenzátorok esetén, és arányosan hosszabb mérési időt biztosítanak nagyobb értékek esetén. Az érték alsó végén a mérési időszakot ésszerűen hosszú ideig kell tartani, hogy az 50% -os küszöbön való átmenet kellő pontossággal meghatározható legyen. Az ADC mintavételezési gyakorisága körülbelül 25uSec, így a minimum 22 mSec időtartam ésszerű pontosságot biztosít.

Mivel az ATTiny korlátozott IO -val rendelkezik (6 érintkező), ezt az erőforrást körültekintően kell elosztani. 2 érintkező szükséges a kijelzőhöz, 1 az időzítő bemenethez, 1 az ADC -hez, 1 a kisülésvezérléshez és 1 a töltési sebesség szabályozásához. Azt akartam, hogy nyomógombos vezérléssel bármikor lehessen újra nullázni. Ez az I2C SCL vonal hi-jackelésével történik. Mivel az I2C jelek nyitott lefolyásúak, nincs elektromos konfliktus, ha engedélyezi, hogy a gomb lehúzza ezt a vonalat. A kijelző leáll, és a gomb le van nyomva, de ennek nincs jelentősége, mivel a gomb elengedésekor folytatódik.

2. lépés: Építés

Építkezés
Építkezés
Építkezés
Építkezés
Építkezés
Építkezés

Ezt egy kis 55 mm x 55 mm -es 3D nyomtatott dobozba készítettem. A 4 fő komponens tartására tervezték; az ATTiny85 DigiStamp kártya, az SSD1306 kijelző, a LiOn akkumulátor és egy kis prototípus kártya, amely az 55 időzítőt és a töltésvezérlő elektronikát tartja.

Melléklet a https://www.thingiverse.com/thing:4638901 címen

Alkatrészek szükségesek

  • ATTiny85 DigiStamp tábla. A microUSB csatlakozóval ellátott verziót használtam, amelyet firmware feltöltésére használnak.
  • SSD1306 I2C OLED kijelző
  • 300mAH LiOn akkumulátor
  • Kis csík prototípus -tábla
  • CMOS 555 időzítő chip (TLC555)
  • n-csatorna MOSFET AO3400
  • p-csatorna MOSFET AO3401
  • Ellenállások 4R7, 470R, 22K, 2x33K
  • Kondenzátorok 4u7, 220u
  • Precíziós kondenzátor 820pF 1%
  • Miniatűr tolókapcsoló
  • 2 x 3 tűs fejléc töltő- és mérőportokhoz
  • Nyomógomb
  • Burkolat
  • Csatlakoztassa a vezetéket

Szükséges eszközök

  • Finompontú forrasztópáka
  • Csipesz

Először állítsa össze az 555 időzítő áramkört és a töltő alkatrészeket a prototípus táblán. Adjon hozzá repülő vezetékeket a külső kapcsolatokhoz. Rögzítse a csúszó kapcsolót, a töltőpontot és a mérőportot a házba. Rögzítse az akkumulátort, és csatlakoztassa a fő tápvezetéket a töltési ponthoz, csúsztassa el a kapcsolót. Csatlakoztassa a földet a nyomógombhoz. Rögzítse az ATTiny85 -öt a helyére, és fejezze be a csatlakoztatást.

A telepítés előtt elvégezhet néhány energiatakarékos módosítást az ATTiny kártyán, ami egy kicsit csökkenti az áramot és meghosszabbítja az akkumulátor élettartamát.

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

Ez nem kritikus, mivel van egy tápkapcsoló, amely kikapcsolja a mérőt, amikor nem használja.

3. lépés: Szoftver

A kondenzátormérő szoftverét a következő címen találja

github.com/roberttidey/CapacitorMeter

Ez egy Arduino alapú vázlat. Könyvtárakra van szüksége a kijelzőhöz és az I2C -hez, amelyek megtalálhatók a címen

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Ezeket az ATTiny -re optimalizálták, hogy minimális memóriát foglaljanak el. Az I2C könyvtár egy nagy sebességű bitütéses módszer, amely lehetővé teszi bármely 2 tű használatát. Ez azért fontos, mert a soros portot használó I2C módszerek PB2 -t használnak, ami ellentétes az 555 -ös frekvencia méréséhez szükséges időzítő/számláló bemenet használatával.

A szoftver egy állapotgép köré épül, amely az állapotcikluson keresztül végzi a mérést. Az ISR támogatja az időzítő számlálóból származó túlcsordulást a 8 bites hardver kiterjesztéséhez. A második ISR támogatja az ADC folyamatos üzemmódban való működését. Ez adja a leggyorsabb választ a küszöböt átlépő töltőáramkörre.

Minden mérési ciklus elején a getMeasureMode függvény határozza meg, hogy melyik mérési módszer a legmegfelelőbb.

Az 555 módszer alkalmazása esetén a számlálás csak akkor kezdődik, amikor a számláló megváltozott. Hasonlóképpen, az időzítés csak a névleges mérési intervallum után áll le, és amikor egy élt észlel. Ez a szinkronizálás lehetővé teszi a frekvencia pontos kiszámítását még alacsony frekvenciák esetén is.

Amikor a szoftver elindul, az első 7 mérés „kalibrálási ciklus”, amely meghatározza az 555 alapfrekvenciáját hozzáadott kondenzátor nélkül. Az utolsó 4 ciklust átlagoljuk.

Támogatható az OSCAL regiszter beállítása az órahangoláshoz. Javaslom, hogy az OSCCAL_VAL értéket kezdetben 0 -ra állítsa a vázlat tetején. Ez azt jelenti, hogy a hangolás elvégzéséig a gyári kalibrációt kell használni.

Be kell állítani az 555 alap kondenzátor értékét. Hozzáadok egy becsült összeget a kóbor kapacitásért is.

Ha különböző ellenállásokat használnak a töltési módszerekhez, akkor a szoftver CHARGE_RCLOW és CHARGE_RCHIGH értékeit is módosítani kell.

A szoftver telepítéséhez használja a szokásos digistamp módszert: töltse fel a szoftvert és csatlakoztassa az usb portot, amikor a rendszer kéri. Hagyja a bekapcsológombot kikapcsolt helyzetben, mivel az USB ehhez a művelethez biztosítja az áramellátást.

4. lépés: Működés és speciális kalibrálás

A működés nagyon egyszerű.

Miután bekapcsolta a készüléket, és megvárta, amíg a kalibrációs nulla befejeződik, csatlakoztassa a vizsgált kondenzátort a két mérőport egyikéhez. Használja az 555 portot kisebb értékű, kisebb, mint 1uF kondenzátorokhoz, a töltőportot pedig nagyobb értékű kondenzátorokhoz. Elektrolitikus kondenzátorok esetén csatlakoztassa a negatív kivezetést a közös földponthoz. A tesztelés során a kondenzátor körülbelül 2 V -ig töltődik.

Az 555 -ös port megváltoztatható, ha a nyomógombot körülbelül 1 másodpercig lenyomva tartja, majd felengedi. Győződjön meg róla, hogy ehhez semmi nincs csatlakoztatva az 555 -ös porthoz.

Speciális kalibrálás

A töltési módszer az idő mérésére az ATTiny85 abszolút órajel -frekvenciáján alapul. Az óra a belső RC oszcillátort használja, amely névleges 8 MHz -es órát ad. Bár az oszcillátor stabilitása meglehetősen jó feszültség- és hőmérsékletváltozások esetén, frekvenciája jó néhány százalékkal kieshet, annak ellenére, hogy gyárilag kalibrált. Ez a kalibrálás beállítja az OSCCAL regisztert indításkor. A gyári kalibrálás javítható a frekvencia ellenőrzésével és az OSCCAL érték optimálisabb beállításával, hogy megfeleljen egy adott ATTiny85 kártyának.

Még nem sikerült beillesztenem egy automatikusabb módszert a firmware -be, ezért a következő kézi eljárást használom. Két variáció lehetséges, attól függően, hogy milyen külső mérések állnak rendelkezésre; vagy egy olyan frekvenciamérő, amely képes mérni a háromszög hullámforma frekvenciáját az 555 -ös porton, vagy egy ismert frekvenciájú négyzethullám -forrás, pl. 10KHz 0V/3,3V szinteken, amelyek csatlakoztathatók az 555 -ös porthoz, és felülírják a hullámformát, hogy ezt a frekvenciát a számlálóba kényszerítsék. A második módszert használtam.

  1. Indítsa el a mérőt normál teljesítményéről kondenzátorok csatlakoztatása nélkül.
  2. Csatlakoztassa a frekvenciamérőt vagy a négyzethullám -generátort az 555 -ös porthoz.
  3. Indítsa újra a kalibrálási ciklust a gomb megnyomásával.
  4. A kalibrálási ciklus végén a kijelzőn megjelenik a számláló által meghatározott frekvencia és az aktuális OSCCAL érték. Ne feledje, hogy a kalibrálási ciklus ismételt használata váltani fog a mért frekvencia és a normál nincs kijelzés között.
  5. Ha a megjelenített frekvencia kisebb, mint az ismert, az azt jelenti, hogy az óra frekvenciája túl magas, és fordítva. Úgy találom, hogy az OSCCAL növekmény körülbelül 0,05% -kal állítja be az órát
  6. Számítson ki egy új OSCCAL értéket az óra javításához.
  7. Írja be az új OSCCAL értéket a firmware tetején lévő OSCCAL_VAL mezőbe.
  8. Új firmware újratelepítése és feltöltése. Ismételje meg az 1-5 lépéseket, amelyeknek az új OSCCAL értéket és az új frekvenciamérést kell mutatniuk.
  9. Ha szükséges, ismételje meg a lépéseket, amíg el nem éri a legjobb eredményt.

Fontos megjegyezni, hogy ennek a hangolásnak a mérési részét akkor kell elvégezni, ha normál, nem pedig USB -ről működik, hogy minimálisra csökkentse a tápfeszültség miatti frekvenciaeltolódást.

Ajánlott: