Talaan ng mga Nilalaman:

ATTiny85 Capacitor Meter: 4 na Hakbang
ATTiny85 Capacitor Meter: 4 na Hakbang

Video: ATTiny85 Capacitor Meter: 4 na Hakbang

Video: ATTiny85 Capacitor Meter: 4 na Hakbang
Video: Автомобильный генератор для генератора с самовозбуждением с использованием ДИОДА 2024, Hulyo
Anonim
ATTiny85 Capacitor Meter
ATTiny85 Capacitor Meter
ATTiny85 Capacitor Meter
ATTiny85 Capacitor Meter

Ang itinuturo na ito ay para sa isang metro ng Capacitor batay sa ATTiny85 na may mga sumusunod na tampok.

  • Batay sa ATTiny85 (DigiStamp)
  • SSD1306 0.96 "OLED Display
  • Pagsukat ng dalas para sa mga mababang capacitor na 1pF - 1uF gamit ang 555 oscillator
  • Pagsukat ng oras ng pagsingil para sa mga capacitor na may mataas na halaga na 1uF - 50000uF
  • 2 magkakahiwalay na port na ginamit para sa mga pamamaraan upang mabawasan ang stary capacitance
  • Dalawang halaga ng kasalukuyang ginagamit para sa Oras ng Pagsingil upang mabawasan ang oras para sa mga malalaking capacitor
  • 555 na paraan ng mga zero sa sarili sa pagsisimula, maaaring ma-rezero sa pamamagitan ng pindutan ng push
  • Ginamit ang isang mabilis na pagsubok upang piliin kung aling pamamaraan ang dapat gamitin para sa bawat ikot ng pagsukat.
  • Ang pagiging tumpak ng pamamaraan ng oras ng pagsingil ay maaaring mapabuti sa pamamagitan ng suporta para sa pag-aayos ng dalas ng OSCVAL na orasan

Hakbang 1: Schematic at Theory

Skematika at Teorya
Skematika at Teorya

Ipinapakita ng eskematiko ang ATTiny na nagmamaneho ng display na SSD1306 OLED sa pamamagitan ng isang interface ng I2C. Direktang pinalakas ito mula sa isang baterya ng LiOn 300mAh at kasama ang isang point ng pagsingil na maaaring magamit sa isang katugmang panlabas na charger ng LiOn.

Ang unang pamamaraan ng pagsukat ay batay sa pagsukat ng dalas ng isang 555 libreng running oscillator. Ito ay may isang batayang dalas na natutukoy ng mga resistors at isang capacitor na dapat ay mataas na kawastuhan dahil tinutukoy nito ang kawastuhan ng mga sukat. Gumamit ako ng 820pF 1% polystyrene capacitor na mayroon ako ngunit ang ibang mga halaga sa paligid ng 1nF ay maaaring magamit. Ang halaga ay kailangang ipasok sa software kasama ang isang pagtatantya ng anumang stray capacitance (~ 20pF). Nagbigay ito ng base frequency ng halos 16KHz. Ang output ng 555 ay pinakain sa PB2 ng ATTiny na na-program bilang isang counter ng hardware. Sa pamamagitan ng pagsukat ng bilang sa loob ng isang panahon ng halos 1 segundo matutukoy ang dalas. Ginagawa ito sa pagsisimula upang matukoy ang base frequency. Kapag ang isang kapasitor sa ilalim ng pagsubok ay idinagdag sa paralle sa base capacitor pagkatapos ay ang dalas ay ibinaba at kapag ito ay sinusukat at ihinahambing sa base frequency pagkatapos ang halaga ng idinagdag na capacitance ay maaaring makalkula.

Ang magandang tampok ng pamamaraang ito ay ang kinakalkula na halaga ay nakasalalay lamang sa kawastuhan ng base capacitor. Hindi mahalaga ang panahon ng pagsukat. Ang resolusyon ay nakasalalay sa resolusyon ng mga sukat ng dalas na medyo mataas kaya't ang napakaliit na idinagdag na capacitance ay masusukat. Ang nalilimitahan na kadahilanan ay ang 'ingay ng dalas' ng 555 oscillator na para sa akin ay katumbas ng tungkol sa 0.3pF.

Ang pamamaraan ay maaaring magamit sa isang disenteng saklaw. Upang mapabuti ang saklaw sinasabay ko ang panahon ng pagsukat sa pagtuklas ng mga gilid ng mga papasok na pulso. Nangangahulugan ito na kahit na ang mababang pag-oscillation ng dalas tulad ng 12Hz (na may isang 1uF capacitor) ay nasusukat nang tumpak.

Para sa mas malaking capacitor ang circuit ay nakaayos upang magamit ang isang paraan ng pag-charge ng tiyempo. Sa ito ang capacitor sa ilalim ng pagsubok ay naglalabas upang matiyak na nagsisimula ito sa 0, pagkatapos ay sisingilin sa pamamagitan ng isang kilalang paglaban mula sa boltahe ng suplay. Ang isang ADC sa ATTiny85 ay ginagamit upang subaybayan ang boltahe ng capacitor at ang oras upang pumunta mula 0% hanggang 50% na pagsingil ay sinusukat. Maaari itong magamit upang makalkula ang capacitance. Tulad ng sanggunian para sa ADC din ang supply boltahe kung gayon hindi ito nakakaapekto sa pagsukat. Gayunpaman, ang ganap na sukat ng oras na kinuha ay nakasalalay sa dalas ng ATTiny85 na orasan at mga pagkakaiba-iba dito ay nakakaapekto sa resulta. Ang isang pamamaraan ay maaaring magamit upang mapabuti ang kawastuhan ng orasan na ito gamit ang isang pagrehistro sa pag-tune sa ATTiny85 at ito ay inilarawan sa paglaon.

Upang mapalabas ang kapasitor sa 0V isang n-channel na MOSFET ay ginagamit kasama ang isang mababang halaga na risistor upang limitahan ang kasalukuyang paglabas. Nangangahulugan ito na kahit na ang malalaking halaga ng capacitor ay maaaring mabilis na matanggal.

Upang singilin ang capacitor 2 halaga ng pagsingil ng risistor ay ginagamit. Ang isang pangunahing halaga ay nagbibigay ng makatwirang mga oras ng pagsingil para sa mga capacitor mula 1uF hanggang sa halos 50uF. Ang isang p-channel MOSFET ay ginagamit upang parallel sa isang mas mababang resistor upang payagan ang mas mataas na mga capacitor na masusukat sa isang makatuwirang agwat. Ang mga napiling halagang nagbibigay ng isang oras ng pagsukat ng tungkol sa 1 segundo para sa mga capacitor hanggang sa 2200uF at proporsyonal na mas mahaba para sa mas malaking mga halaga. Sa ibabang dulo ng halaga, ang panahon ng pagsukat ay dapat mapanatili nang makatwirang mahaba upang payagan ang pagtukoy ng paglipat sa pamamagitan ng 50% na threshold na magagawa na may sapat na katumpakan. Ang sampling rate ng ADC ay tungkol sa 25uSec kaya ang isang minimum na tagal ng 22mSec ay nagbibigay ng makatuwirang katumpakan.

Dahil ang ATTiny ay may limitadong IO (6 na mga pin) pagkatapos ang paglalaan ng mapagkukunang ito ay kailangang gawin nang maingat. Kailangan ng 2 pin para sa display, 1 para sa timer input, 1 para sa ADC, 1 para sa control control at 1 para sa control rate ng singil. Nais ko ang isang pindutan ng control button upang payagan ang muling pag-zero sa anumang punto. Ginagawa ito sa pamamagitan ng hi-jacking ng linya ng I2C SCL. Tulad ng mga signal ng I2C ay bukas na alisan ng tubig pagkatapos ay walang pagkakasalungat sa elektrisidad sa pamamagitan ng pagpapahintulot sa pindutan na hilahin ang linyang ito nang mababa. Ang display ay hihinto sa pagtatrabaho sa button na nalulumbay ngunit wala itong kahihinatnan habang nagpapatuloy ito kapag ang pindutan ay pinakawalan.

Hakbang 2: Konstruksiyon

Konstruksyon
Konstruksyon
Konstruksyon
Konstruksyon
Konstruksyon
Konstruksyon

Ginawa ko ito sa isang maliit na 55mm x 55mm 3D naka-print na kahon. Dinisenyo upang hawakan ang 4 pangunahing mga bahagi; ang board ng ATTiny85 DigiStamp, ang display ng SSD1306, ang baterya ng LiOn, at isang maliit na piraso ng prototype board na humahawak sa 55 timer at singilin ang control electronics.

Enclosure sa

Kailangan ng mga piyesa

  • ATTiny85 DigiStamp board. Gumamit ako ng isang bersyon na may isang microUSB konektor na ginagamit para sa pag-upload ng firmware.
  • Display ng SSD1306 I2C OLED
  • 300mAH LiOn na baterya
  • Maliit na strip ng prototyping board
  • CMOS 555 timer chip (TLC555)
  • n-Channel MOSFET AO3400
  • p-Channel MOSFET AO3401
  • Ang mga resistors 4R7, 470R, 22K, 2x33K
  • Mga Capacitor 4u7, 220u
  • Precision Capacitor 820pF 1%
  • Pinaliit na slide switch
  • 2 x 3 pin na mga header para sa port ng pagsingil at mga pagsukat ng port
  • Push Button
  • Enclosure
  • I-hook up ang kawad

Kailangan ng mga tool

  • Pinong point iron na panghinang
  • Mga Tweezer

Gawin muna ang 555 timer circuit at singilin ang mga bahagi sa prototype board. Magdagdag ng mga lumilipad na lead para sa mga panlabas na koneksyon. Ilakip ang slide switch at singil ng point at pagsukat ng port sa enclosure. Ikabit ang baterya at gawin ang pangunahing mga kable ng kuryente sa singil ng singil, slide switch. Ikonekta ang ground upang itulak ang pindutan. Ilakip ang ATTiny85 sa lugar at kumpletuhin ang hook up.

Maaari kang gumawa ng mga pagbabago sa pag-save ng kuryente sa board ng ATTiny bago iangkop na magbabawas nang kaunti sa kasalukuyang at magpapalawak ng buhay ng baterya.

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

Hindi ito kritikal dahil mayroong isang switch ng kuryente upang patayin ang metro kapag hindi ginagamit.

Hakbang 3: Software

Ang software para sa Capacitor Meter na ito ay matatagpuan sa

github.com/roberttidey/CapacitorMeter

Ito ay isang sketch na batay sa Arduino. Kailangan nito ng mga aklatan para sa display at I2C na maaaring matagpuan sa

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Ang mga ito ay na-optimize para sa ATTiny na kukuha ng kaunting memorya. Ang I2C library ay isang mataas na bilis ng pamamaraang bit bang na nagbibigay-daan sa paggamit ng anumang 2 mga pin. Ito ay mahalaga habang ang mga pamamaraan ng I2C na gumagamit ng serial port ay gumagamit ng PB2 na sumasalungat sa paggamit ng timer / counter input na kinakailangan upang masukat ang 555 dalas.

Ang software ay nakabalangkas sa paligid ng isang machine ng estado na kumukuha ng pagsukat sa pamamagitan ng isang ikot ng mga estado. Sinusuportahan ng isang ISR ang overflow mula sa timer counter upang mapalawak ang 8 bit na hardware. Sinusuportahan ng pangalawang ISR ang pagpapatakbo ng ADC sa tuluy-tuloy na mode. Nagbibigay ito ng pinakamabilis na tugon sa pag-charge ng circuit na tumatawid sa threshold.

Sa pagsisimula ng bawat siklo ng pagsukat ng isang getMeasureMode function na tumutukoy kung alin ang pinakaangkop na pamamaraan na gagamitin para sa bawat pagsukat.

Kapag ginamit ang 555 na pamamaraan ang oras ng pagbibilang ay nagsisimula lamang kapag ang counter ay nagbago. Gayundin ang tiyempo ay hihinto lamang pagkatapos ng nominal na agwat ng pagsukat at kapag nakita ang isang gilid. Pinapayagan ng pagsabay na ito ang tumpak na pagkalkula ng dalas kahit para sa mababang mga frequency.

Kapag nagsimula ang software ang unang 7 mga sukat ay 'mga calibration cycle' na ginamit upang matukoy ang base frequency ng 555 na walang idinagdag na capacitor. Ang huling 4 na cycle ay na-average.

Mayroong suporta para sa pag-aayos ng rehistro ng OSCAL para sa pag-tune ng orasan. Iminumungkahi kong itakda ang OSCCAL_VAL sa 0 una sa tuktok ng sketch. Nangangahulugan ito na gagamitin ang pagkakalibrate ng pabrika hanggang maisagawa ang pag-tune.

Ang halaga ng 555 base capacitor na kailangang ayusin ay kinakailangan. Nagdagdag din ako sa isang tinatayang halaga para sa stray capacitance.

Kung ang iba't ibang mga resistors ay ginagamit para sa mga pamamaraan ng pagsingil pagkatapos ang mga halaga ng CHARGE_RCLOW at CHARGE_RCHIGH sa software ay kailangan ding mabago.

Upang mai-install ang software gamitin ang normal na pamamaraan ng digistamp ng pag-upload ng software at pagkonekta sa usb port kapag sinenyasan. Iwanan ang switch ng kuryente sa posisyon na off dahil ang kuryente ay ibibigay ng USB para sa operasyong ito.

Hakbang 4: Pagpapatakbo at Advanced na Pagkakalibrate

Napaka-prangka ng operasyon.

Matapos buksan ang yunit at maghintay para sa calibration zero upang matapos pagkatapos ay ikonekta ang capacitor sa ilalim ng pagsubok sa isa sa dalawang mga pagsukat na port. Gamitin ang 555 port para sa mga low capacitor <1uF at ang charge port para sa mas mataas na mga capacitor na halaga. Para sa mga electrolytic capacitor ikonekta ang negatibong terminal sa karaniwang point ng lupa. Sa panahon ng pagsubok ang capacitor ay sisingilin ng hanggang sa 2V.

Ang port ng 555 ay maaaring ma-rezero sa pamamagitan ng pagpindot sa pindutan ng push para sa halos 1 segundo at ilalabas. Tiyaking walang konektado sa 555 port para dito.

Advanced na pagkakalibrate

Ang pamamaraan ng pagsingil ay umaasa sa ganap na dalas ng orasan ng ATTiny85 upang sukatin ang oras. Ang orasan ay gumagamit ng panloob na RC oscillator na nakaayos upang magbigay ng isang nominal na 8MHz na orasan. Kahit na ang katatagan ng oscillator ay medyo mabuti para sa mga pagkakaiba-iba ng boltahe at temperatura ang dalas nito ay maaaring lumabas ng ilang porsyento kahit na naka-calibrate ito ng pabrika. Ang pagkakalibrate na ito ay nagtatakda ng rehistro ng OSCCAL sa pagsisimula. Ang pagkakalibrate ng pabrika ay maaaring mapabuti sa pamamagitan ng pag-check ng dalas at paggawa ng mas pinakamainam na setting ng halaga ng OSCCAL upang umangkop sa isang partikular na board ng ATTiny85.

Hindi ko pa nagawang magkasya sa isang mas awtomatikong pamamaraan sa firmware pa kaya ginagamit ko ang sumusunod na manu-manong pamamaraan. Posible ang dalawang pagkakaiba-iba depende sa kung anong mga panlabas na sukat ang magagamit; alinman sa isang meter ng dalas na may kakayahang sukatin ang dalas ng tatsulok na porma ng alon sa 555 port, o isang parisukat na mapagkukunan ng alon na kilalang dalas hal. 10KHz na may mga antas ng 0V / 3.3V na maaaring maiugnay sa 555 port at i-override ang waveform upang pilitin ang dalas na iyon sa counter. Ginamit ko ang pangalawang pamamaraan.

  1. Magsimula ng metro sa normal na lakas nito nang walang konektadong mga capacitor.
  2. Ikonekta ang frequency meter o square wave generator sa 555 port.
  3. I-restart ang ikot ng calibration sa pamamagitan ng pindutan ng pagtulak.
  4. Sa pagtatapos ng ikot ng calibration ang display ay magpapakita ng dalas na tinutukoy ng counter at ng kasalukuyang halaga ng OSCCAL. Tandaan na ang paulit-ulit na paggamit ng ikot ng calibration ay magpapalipat-lipat sa pagitan ng pagpapakita ng sinusukat na dalas at normal na walang pagpapakita.
  5. Kung ang ipinapakitang dalas ay mas mababa kaysa sa alam pagkatapos ay nangangahulugan ito na ang dalas ng orasan ay masyadong mataas at kabaliktaran. Nakakita ako ng isang pagtaas ng OSCCAL na inaayos ang orasan ng tungkol sa 0.05%
  6. Kalkulahin ang isang bagong halaga ng OSCCAL upang mapabuti ang orasan.
  7. Ipasok ang bagong halaga ng OSCCAL sa OSCCAL_VAL sa tuktok ng firmware.
  8. Muling itayo at mag-upload ng bagong firmware. Ulitin ang mga hakbang 1 -5 kung saan dapat ipakita ang bagong halaga ng OSCCAL at ang bagong pagsukat ng dalas.
  9. Kung kinakailangan ulitin muli ang mga hakbang hanggang sa makamit ang pinakamahusay na resulta.

Mahalagang tandaan na gawin ang bahagi ng pagsukat ng pag-aayos na ito kapag tumatakbo sa normal na lakas hindi USB upang mabawasan ang anumang paglilipat ng dalas dahil sa boltahe ng suplay.

Inirerekumendang: