Orodha ya maudhui:
- Hatua ya 1: Kuhesabu Mzunguko wa Shule ya Kale
- Hatua ya 2: Njia ya kurudia
- Hatua ya 3: Vifaa vya ujenzi na Mpangilio wake
- Hatua ya 4: Kanuni
- Hatua ya 5: Usahihi na Usahihi
Video: Kaunta ya Mara kwa Mara ya Azimio: Hatua 5 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:48
Mafundisho haya yanaonyesha kaunta ya kurudia yenye uwezo wa kupima masafa haraka na kwa usahihi wa kuridhisha. Imetengenezwa na vifaa vya kawaida na inaweza kutengenezwa mwishoni mwa wiki (ilinichukua kidogo zaidi:-))
BONYEZA: Nambari hiyo sasa inapatikana kwenye GitLab:
gitlab.com/WilkoL/high-resolution-frequency-counter
Hatua ya 1: Kuhesabu Mzunguko wa Shule ya Kale
Njia ya zamani ya shule ya kupima mzunguko wa ishara ni kutumia mantiki NA-lango, kulisha ishara kupimwa katika bandari moja na ishara iliyo na wakati 1 wa juu kwa bandari nyingine na kuhesabu pato. Hii inafanya kazi vizuri kwa ishara za kHz chache kwenye GHz. Lakini vipi ikiwa unataka kupima ishara ya masafa ya chini na azimio zuri? Sema unataka kupima masafa ya mains (hapa 50 Hz). Kwa njia ya zamani ya shule utaona 50 mara kwa mara kwenye onyesho lako ikiwa una bahati, lakini kuna uwezekano mkubwa utaona swichi ya kuonyesha kutoka 49 hadi 50 au 50 hadi 51. Azimio ni 1 Hz, na ndio hivyo. Kamwe hutaona 50.002 Hz isipokuwa uko tayari kuongeza muda wa lango hadi sekunde 1000. Hiyo ni zaidi ya dakika 16, kwa kipimo kimoja!
Njia bora ya kupima ishara za masafa ya chini ni kupima kipindi chake. Kuchukua njia kuu kama mfano tena, ina kipindi cha millisecond 20. Chukua mantiki sawa NA-lango, lisha na, sema 10 MHz (mapigo 0.1 ya sisi) na ishara yako kwenye bandari nyingine na nje zitoke kunde 200000, kwa hivyo wakati wa kipindi ni 20000.0 uS na hiyo inarudi hadi 50Hz. Unapopima mapigo tu ya 199650 frequency ni 50.087 Hz, hiyo ni bora zaidi, na ni kwa wakati mmoja tu wa kupima. Kwa bahati mbaya hii haifanyi kazi vizuri na masafa ya juu. Chukua kwa mfano, sasa tunataka kupima 40 kHz. Na frequency sawa ya kuingiza 10 MHz kama rejeleo sasa tunapima kunde 250 tu. Tunapohesabu kunde 249 tu hesabu inatoa 40161 Hz na 251 matokeo ni 39840 Hz. Hilo sio azimio linalokubalika. Kwa kweli kuongezeka kwa masafa ya kumbukumbu kunaboresha matokeo lakini kuna kikomo kwa kile unaweza kutumia katika kidhibiti kidogo.
Hatua ya 2: Njia ya kurudia
Suluhisho linalofanya kazi kwa masafa ya chini na ya juu ni kaunta ya kurudia ya kurudia. Nitajaribu kuelezea kanuni yake. Unaanza na wakati wa kupima ambayo ni takriban sekunde 1, haifai kuwa sahihi sana lakini ni wakati mzuri wa kipimo. Lisha ishara hii 1 Hz ndani ya D-flipflop kwenye pembejeo la D. Hakuna kinachotokea bado kwenye pato. Unganisha ishara ambayo unataka kupima kwa uingizaji wa DAMU ya D-flipflop.
Mara tu ishara hii itatoka LOW hadi HIGH, pato la D-flipflop huhamisha hali ya kuingiza D kwa pato (Q). Ishara hii inayoinuka hutumiwa kuanza kuhesabu ishara ya kuingiza na vile vile ishara ya saa ya kumbukumbu.
Kwa hivyo unahesabu ishara MBILI kwa wakati sawa, ishara unayotaka kupima na saa ya kumbukumbu. Saa hii ya kumbukumbu inapaswa kuwa na thamani sahihi na kuwa thabiti, oscillator ya kawaida ya kioo iko sawa. Thamani sio muhimu sana ikiwa ni masafa ya juu na thamani yake inajulikana vizuri.
Baada ya muda, sema millisecond chache, unafanya uingizaji wa D-flipflop chini tena. Kwenye pembejeo ijayo ya PAMOJA pato Q inafuata hali ya uingizaji, lakini hakuna kitu kingine kinachotokea kwa sababu mdhibiti mdogo amewekwa kuguswa na ishara ya KUPANDA tu. Halafu, baada ya muda wa kupimia kumalizika (takriban sekunde 1) unafanya D-pembejeo JUU.
Tena kwenye pembejeo inayofuata ya Pato la Q ifuatavyo na ishara hii ya KUPANDA inasababisha mtawala mdogo, wakati huu kumaliza kuhesabu kwa kaunta zote mbili.
Matokeo yake ni nambari mbili. Nambari ya kwanza ni idadi ya kunde zilizohesabiwa kutoka kwa kumbukumbu. Kama tunavyojua mzunguko wa rejeleo, tunajua pia wakati uliochukua kuhesabu kunde hizo.
Nambari ya pili ni idadi ya kunde kutoka kwa ishara ya kuingiza tunayopima. Tulipoanza haswa kwenye kingo zinazoinuka za ishara hii tuna hakika sana juu ya idadi ya kunde za ishara hii ya kuingiza.
Sasa ni hesabu tu kuamua frequency ya ishara ya kuingiza.
Mfano, hebu tuseme tuna ishara hizi na tunataka kupima uingizaji wa f. Rejea ni 10 MHz, iliyotengenezwa na oscillator ya kioo ya quartz. f_input = 31.416 Hz f_reference = 10000000 Hz (10 MHz), wakati wa kupima ni takriban. Sekunde 1
Kwa wakati huu tulihesabu kunde 32. Sasa, kipindi kimoja cha ishara hii inachukua 1 / 31.416 = 31830.9 uS. Kwa hivyo vipindi 32 vilituchukua sekunde 1.0185892, ambayo ni zaidi ya sekunde 1.
Katika sekunde hii 1.0186 pia tutakuwa tumehesabu kunde 10185892 za ishara ya kumbukumbu.
Hii inatupa habari ifuatayo: input_count = 32 reference_count = 10185892 f_reference = 10000000 Hz
Fomula ya kuhesabu mzunguko unaosababishwa ni hii: freq = (input_count * f_reference) / ref_count
Katika mfano wetu ambayo ni: f-input = (32 * 10000000) / 10185892 = 31.416 Hz
Na hii inafanya kazi vizuri kwa masafa ya chini pamoja na masafa ya juu, tu wakati ishara ya pembejeo inakaribia (au hata zaidi kuliko) kwa masafa ya kumbukumbu ni bora kutumia njia ya kawaida ya "kupigwa". Lakini basi tunaweza pia kuongeza mgawanyiko wa masafa kwenye ishara ya kuingiza kwani njia hii ya kurudia ina azimio sawa kwa masafa yoyote (hadi rejeleo tena). Kwa hivyo ikiwa unapima 100 kHz moja kwa moja ya kugawanywa na msuluhishi wa nje wa 1000x, azimio ni sawa.
Hatua ya 3: Vifaa vya ujenzi na Mpangilio wake
Nimetengeneza kaunta kadhaa za aina hii. Zamani nilitengeneza moja na ATMEGA328 (mtawala sawa na katika Arduino), baadaye na watawala wadogo wa ARM kutoka ST. Ya hivi karibuni ilitengenezwa na STM32F407 iliyofungwa saa 168 MHz. Lakini sasa nilijiuliza ni nini nikifanya vivyo hivyo na moja ndogo zaidi. Nilichagua ATTINY2313, ambayo ina 2kbyte tu ya kumbukumbu ya FLASH na ka 128 za RAM. Onyesho ninalo ni MAX7219 na maonyesho 8 ya sehemu saba juu yake, maonyesho haya yanapatikana kwenye Ebay kwa Euro 2 tu. ATTINY2313 inaweza kununuliwa kwa karibu 1.5 Euro sehemu zingine ambazo nilitumia zinagharimu senti tu kipande. Ghali zaidi labda sanduku la mradi wa plastiki. Baadaye niliamua kuifanya iende kwa betri ya lithiamu-ion kwa hivyo nilihitaji kuongeza (LDO) 3.3V voltage utulivu wa moduli ya kuchaji betri na betri yenyewe. Hii inaongeza bei kwa kiasi fulani, lakini nadhani inaweza kujengwa kwa chini ya Euro 20.
Hatua ya 4: Kanuni
Nambari hiyo iliandikwa katika C na Atmel (Microchip) Studio 7 na kupangiliwa kwenye ATTINY2313 ikitumia OLIMEX AVR_ISP (clone?). Fungua (main.c) kwenye faili ya zip hapa chini ikiwa unataka kufuata maelezo hapa.
UTANGULIZI
Kwanza ATTINY2313 iliwekwa kutumia glasi ya nje kwani RC-oscillator ya ndani haina maana kwa kupima chochote. Ninatumia glasi ya 10 MHz ambayo ninarekebisha mzunguko sahihi wa 10 000 000 Hz na kiboreshaji kidogo cha kutofautisha. Uanzishaji hutunza kuweka bandari kwa pembejeo na matokeo, kuanzisha vipima muda na kuwezesha usumbufu na uanzishaji wa MAX7219. TIMER0 imewekwa kuhesabu saa ya nje, TIMER1 saa ya ndani na pia kukamata thamani ya kaunta kwenye ukingo unaoinuka wa ICP, ikitoka kwa D-flipflop.
Nitaondoa mpango kuu mwisho, kwa hivyo zifuatazo ni njia za kusumbua.
TIMER0_OVF
Kama TIMER0 inavyohesabu hadi 255 (8 bits) na kisha inaendelea hadi 0 tunahitaji usumbufu ili kuhesabu idadi ya mafuriko. Hiyo ndio tu TIMER0_OVF inafanya, hesabu tu idadi ya kufurika. Baadaye nambari hii imejumuishwa na thamani ya kaunta yenyewe.
TIMER1_OVF
TIMER1 inaweza kuhesabu hadi 65536 (bits 16), kwa hivyo usumbufu TIMER1_OVF pia huhesabu idadi ya mafuriko. Lakini inafanya zaidi. Pia hupungua kutoka 152 hadi 0 ambayo inachukua kama sekunde 1 na kisha kuweka pini ya pato, kwenda kwa uingizaji wa D wa flipflop. Na jambo la mwisho linalofanyika katika utaratibu huu wa kukatiza ni kupunguza kaunta ya muda wa kwenda, kutoka 765 hadi 0, ambayo inachukua sekunde 5.
TIMER1_CAPT
Huu ndio usumbufu wa TIMER1_CAPT ambao husababishwa kila wakati D-flipflop inapotuma ishara, kwenye kingo inayoinuka ya ishara ya kuingiza (kama ilivyoelezwa hapo juu). Mantiki ya kukamata hutunza kuokoa thamani ya kaunta ya TIMER1 wakati wa kukamata, imehifadhiwa na kaunta ya kufurika. Kwa bahati mbaya TIMER0 haina kazi ya kukamata pembejeo kwa hivyo hapa thamani yake ya sasa na thamani yake ya sasa ya kaunta ya kufurika inasomwa. Utofautishaji wa ujumbe umewekwa kwa moja kwa mpango wake kuu kuuambia hii ni data mpya.
Ifuatayo ni kazi mbili kudhibiti MAX7219
SPI
Wakati kuna Interface ya Universal Serial (USI) inapatikana kwenye chip nilichagua kutotumia. Onyesho la MAX7219 linahitaji kudhibitiwa kupitia SPI na hiyo inawezekana na USI. Lakini bitbanging SPI ni rahisi sana hivi kwamba sikuchukua muda kuifanya na USI.
MAX7219
Itifaki ya kusanidi MAX7219 pia ni rahisi mara tu utakaposoma mwongozo wake. Inahitaji thamani kidogo ya 16 kwa kila tarakimu ambayo ina bits 8 kwa nambari ya nambari (1 hadi 8) ikifuatiwa na bits 8 kwa nambari inayohitaji kuonyesha.
MAENDELEO KUU
Jambo la mwisho ni kuelezea mpango kuu. Inatembea kwa kitanzi kisicho na mwisho (wakati (1)) lakini kwa kweli hufanya kitu wakati kuna ujumbe (1) kutoka kwa utaratibu wa kukatiza au wakati kaunta ya muda wa kumaliza imeshuka hadi sifuri (hakuna ishara ya kuingiza).
Jambo la kwanza kufanya wakati ujumbe wa kutofautisha umewekwa kuwa moja, ni kuweka upya kaunta ya muda wa kumaliza, baada ya yote tunajua kuwa kuna ishara iliyopo. Flipflop imewekwa upya kuifanya iwe tayari kwa kichocheo kinachofuata ambacho kitakuja baada ya wakati wa kupima (subiri-sekunde).
Nambari zilizosajiliwa katika kukatiza kukamata zinaongezwa ili kutoa hesabu ya rejeleo na hesabu ya pembejeo-frequency. (lazima tuhakikishe kwamba kumbukumbu kamwe haiwezi kuwa sifuri kwani tutagawanya nayo baadaye)
Ifuatayo ni hesabu ya masafa halisi. Sitaki kutumia nambari zinazoelea kwenye microcontroller na 2kbyte tu za flash na ka 128 tu za kondoo dume mimi hutumia nambari kamili. Lakini masafa yanaweza kuwa kama 314.159 Hz, na desimali kadhaa. Kwa hivyo mimi huongeza mzunguko wa pembejeo sio tu na masafa ya kumbukumbu lakini pia na kipinduaji, na kisha ongeza nambari mahali pa desimali inapaswa kwenda. Nambari hizi zitakuwa kubwa sana wakati utafanya hivyo. Mfano. na pembejeo ya 500 kHz, kumbukumbu ya 10 MHz na kiongezaji cha 100, hii inatoa 5 x 10 ^ 14, hiyo ni kubwa sana! Hawatatoshea langer kwa nambari 32 kwa hivyo ninatumia nambari 64 ambazo zitapita hadi 1.8 x 10 ^ 19 (ambayo inafanya kazi vizuri kwenye ATTINY2313)
Na jambo la mwisho kufanya ni kutuma matokeo kwenye onyesho la MAX7219.
Nambari hiyo inakusanywa katika ka 1600, kwa hivyo inafaa kwa baiti 2048 zinazopatikana katika ATTINY2313.
Rejista za fuse zinapaswa kusoma hivi:
Imeongezwa 0xFF
JUU 0xDF
CHINI YA 0xBF
Hatua ya 5: Usahihi na Usahihi
Usahihi na usahihi ni wanyama wawili tofauti. Usahihi hapa ni nambari saba, ni nini usahihi halisi unategemea vifaa na hesabu. Nilipima 10 MHz (5 MHz kwenye hatua ya majaribio) na kaunta nyingine ya masafa ambayo ina oscillator yenye nidhamu ya GPS.
Na inafanya kazi vizuri, masafa ya chini kabisa niliyojaribu ni 0.2 Hz, 2 MHz ya juu zaidi. Ni doa juu. Juu ya 2 MHz mtawala anaanza kutatanisha, haishangazi sana wakati unajua kuwa kwa ishara ya kuingiza ya 2 MHz TIMER0 hutoa zaidi ya vipingamizi 7800 kwa sekunde. Na ATTINY2313 lazima afanye vitu vingine pia, usumbufu kutoka kwa TIMER1, kwa mwingine 150 hukatizwa kwa sekunde na kwa kweli hufanya mahesabu, kudhibiti onyesho na D-flipflop. Unapoangalia kifaa halisi utaona kuwa ninatumia nambari saba tu kati ya nane za onyesho. Ninafanya hivyo kwa sababu kadhaa.
Kwanza ni kwamba hesabu ya masafa ya pembejeo ni mgawanyiko, karibu kila wakati itakuwa na salio, ambayo hauoni kama ni mgawanyiko kamili. Pili ni kwamba oscillator ya glasi ya quartz sio joto imetulia.
Capacitors ambayo huiunganisha kwa 10 MHz sahihi ni ya kauri, nyeti sana kwa mabadiliko ya joto. Halafu kuna ukweli kwamba TIMER0 haina mantiki ya kukamata, na kazi za kusumbua zote huchukua muda kufanya kazi yao. Nadhani tarakimu saba zinatosha hata hivyo.
Ilipendekeza:
Ripoti ya Mara kwa Mara ya Excel: Hatua 6
Ripoti ya Mara kwa Mara ya Excel: Hapa kuna vidokezo vyangu vya ripoti za matumizi ya mara kwa mara katika Excel 2010. Katika video ya mafunzo hapa chini, ripoti hii inatuambia juu ya matumizi maalum ya umeme, maji, oksijeni, nitrojeni kwa tani ya bidhaa zilizomalizika, kulingana na kila wiki, kila mwezi, robo
Cart ya Maumbo ya Upana wa Mara kwa Mara: Hatua 5
Gari la Umbo la Upana wa Mara kwa Mara: Maumbo ya upana wa kila wakati yalinivutia kila wakati na nadhani ni nzuri sana. Unaweza kuzitumia kwa miradi anuwai kama magurudumu ya roboti ndogo nk. Katika hii nitafundishwa nitakuonyesha jinsi ya kuteka maumbo anuwai ya upana wa kila wakati ambao unaweza
Mzigo mdogo - Mzigo wa Sasa wa Mara kwa Mara: Hatua 4 (na Picha)
Mzigo mdogo - Mzigo wa Sasa wa Sasa: Nimekuwa nikitengeneza benchi PSU, na mwishowe nilifikia hatua ambapo ninataka kupakia mzigo kwake kuona jinsi inavyofanya kazi. Baada ya kutazama video bora ya Dave Jones na kuangalia rasilimali zingine kadhaa za mtandao, nilikuja na Mzigo mdogo. Thi
Power LED's - Nuru nyepesi na Mzunguko wa Mara kwa Mara: Hatua 9 (na Picha)
Power LED's - Nuru nyepesi na Mzunguko wa Mara kwa Mara: Hapa kuna mzunguko rahisi na wa gharama nafuu ($ 1) wa dereva wa LED. Mzunguko ni " chanzo cha sasa cha kila wakati ", ambayo inamaanisha kuwa inaweka mwangaza wa LED mara kwa mara bila kujali ni nguvu gani unayotumia au mazingira ya mazingira y
Tengeneza Uingizwaji wako wa Bulb ya LED kwa Taa ya Mwenge Mara kwa Mara: Hatua 4
Tengeneza Uingizwaji wako wa Bulb ya LED kwa Taa ya Mwenge Mara kwa Mara: Mwangaza wa tochi ya LED ni kawaida sana siku hizi, lakini ikiwa unatokea kuwa na balbu ya taa ya taa ya incandescent kulingana na teknolojia ya miaka 100, hapa kuna nafasi yako ya kuisasisha na LED iliyodumu miaka 8000! (ikiwa incandescent ina maisha ya mwanadamu)