Cititorii atenți au observat că în articolele autorului Instructables sub porecla WilkoL despre generatorul furcii de reglare și un ceas cu utilizarea acestuia, este afișat doar un contor de frecvență, iar în articolul despre generator cu un geam ca element de reglare a frecvenței, i s-a adăugat un al doilea și chiar a ajuns pe KDPV acolo. Această poveste este despre el.
Mă bucur să lucrez homebrew crenguță masterul începe cu studiul părții teoretice și anume cu alegerea metodei de măsurare a frecvenței. În multe contoare de frecvență, numărul de perioade ale semnalului de intrare pentru o anumită perioadă de timp, să zicem, o secundă, este calculat pentru aceasta:
Această metodă este bună pentru frecvențele suficient de înalte, dar dacă frecvența este scăzută, nu permite obținerea unui număr suficient de mare de zecimale. De exemplu, dacă ciclul de măsurare durează o secundă, atunci pentru o frecvență de ordinul de 50 Hz, vor exista zero zecimale. Vrei, de exemplu, trei semne - există o cale de ieșire, extindem ciclul de măsurare la 1000 de secunde. Dar este un lucru atunci când un PC sau un smartphone încetinește, la care toată lumea este cel puțin obișnuit și este cu totul altceva - dacă un contor de frecvență se alătură și acestei companii amuzante, acest lucru va elimina complet utilizatorul. În general, este nevoie de un alt mod. Dar dacă măsurăm perioada oscilațiilor, așa?
La fel și tu. Aceștia iau un semnal cu frecvența de referință, care este de câteva ordine mai mare decât cea măsurată și consideră câte perioade ale semnalului de referință vor trece într-o perioadă a celei măsurate. Deci, de exemplu, cu o frecvență de referință de 10 MHz și măsurată la 50 Hz, aceasta va fi de 200.000. Aceasta înseamnă că perioada este de 20.000,0 ms și un microcontroler modern (și, apropo, nu foarte), dacă programatorul „îl învață”, cu recalculează cu ușurință perioada la o frecvență egală cu 50.000 Hz. Dacă frecvența crește până la 50,087 Hz, atunci într-o perioadă a semnalului de intrare, 199650 perioadele exemplarului se potrivesc și o astfel de modificare se va observa în timp real contorul.
Dar, cu această metodă de măsurare, numărul de zecimale, dimpotrivă, scade odată cu creșterea frecvenței semnalului de intrare. De exemplu, dacă este 40 kHz, iar referința este încă 10 MHz, atunci la 40-161 Hz obținem 249 de perioade ale frecvenței de referință, iar la 39840 Hz - 251 perioade. Cel puțin doi contoare de frecvență sunt în ordine: unul pentru frecvențe înalte, care funcționează în primul mod, celălalt pentru frecvențe joase, în al doilea. Deși - așteaptă! Nu este posibil să combinăm ambele metode într-un contor de frecvență? Poți, iar stăpânul spune cum. Trebuie să luați un declanșator D obișnuit, apoi simbolul său și tabelul adevărului sunt date:
Expertul arată patru semnale pe grafic, dintre care al patrulea produce un declanșator:
Primul dintre aceste semnale este frecvența măsurată, este alimentat la intrarea de ceas a declanșatorului D. A doua este o frecvență de referință, de exemplu, din nou de 10 MHz, care necesită o stabilitate ridicată. Al treilea este un semnal cu o frecvență de ordinul de 1 Hz, stabilitate de la care nu este necesară deloc, este aplicat la același declanșator la intrarea D. Ei bine, al patrulea este generat de declanșatorul din primul și al treilea după cum urmează. Când al treilea semnal trece de la zero la unu, declanșatorul nu răspunde imediat la acest lucru, ci doar atunci când un astfel de comutator are loc cu primul semnal după aceea. Astfel, partea din față a unuia dintre impulsurile celui de-al patrulea semnal coincide exact cu fața unuia dintre impulsurile primului. Apoi cel de-al treilea semnal, urmat de al patrulea, trece la zero, la care microcontrolerul nu reacționează în niciun fel, apoi cel de-al treilea semnal trece înapoi la unul, dar declanșatorul nu reacționează din nou imediat, ci doar după aceeași comutare a primului semnal. Și din nou, fronturile primului și al patrulea semnal coincid complet. Și în perioada completă a celui de-al patrulea semnal se potrivește unui număr întreg de perioade ale primului. În plus - o chestiune tehnică: nu uitați că avem și un al doilea semnal. Microcontrolerul calculează câte perioade complete ale primului și celui de-al doilea semnal au căzut în perioada completă a celui de-al patrulea.
Deci, avem două numere. De exemplu, 32 și 10185892. Înmulțiți 32 cu 10.000.000 (frecvența de referință) și împărțiți cu 10185892. Obținem 31.416 Hz. Trei zecimale. Iar măsurarea rămâne precisă atât la frecvențe joase, cât și la înaltă, care se apropie de model. Și dacă trebuie să măsurați frecvențe și mai mari, puteți adăuga un divizor.
Acum trebuie să decidem care este microcontrolerul care va rula contorul de frecvență. Maestrul a încercat deja să le facă pe ATmega328, și chiar pe STM32F407, rulând la o frecvență de ceas de 168 MHz. Dar de data aceasta este imbufnat de minimalism și decide să verifice dacă poate obține un rezultat similar pe ATtiny2313.
El are concluzii mai mult decât suficiente, mai ales dacă utilizați un afișaj LED cu un cip de driver încorporat precum MAX7219:
O diagrama completă a dispozitivului arată astfel:
Un driver destul de complex pentru componente discrete, care conține circuite RC, un limitator de diode, etape de amplificare, este utilizat pentru a obține impulsuri dreptunghiulare de la un semnal de aproape orice formă. Declanșatorul D este localizat în exterior, semnalul de frecvență măsurat (primul) îi este furnizat de la șofer, semnalele cu frecvențe de 10 MHz și 1 Hz (respectiv al doilea și al treilea) sunt primite de la microcontroler, semnalul de ieșire (al patrulea) revine la microcontroler. Al doilea astfel de declanșator servește la generarea unui semnal la un punct de control. Aceeași schemă PDF în arhiva ZIP este disponibilă. aici.
După ce a compilat o diagramă, maestrul colectează un contor de frecvență pe ea, se dovedește astfel:
În fotografie, spre deosebire de circuit, este afișată bateria și regulatorul de încărcare, stabilizatorul pulsului este menționat și de către maestru, dar unde este, nu este vizibil. Toate aceste componente au fost adăugate ulterior, ceea ce a făcut lucrul cu contorul de frecvență mai convenabil. O baterie 18650 trebuie luată cu protecție, firele de lipit sunt inacceptabile. Fie compartimentul, fie sudarea la fața locului.
Firmware (minciuni) aici de asemenea, în arhiva ZIP), maestrul scrie luând în considerare necesitatea de a transfera microcontrolerul de la ceas la generatorul RC pentru a lucra din cuarț extern, precum și posibilitatea de a atribui diferite funcții fiecăreia dintre ieșirile microcircuitului:
Pentru a încărca firmware-ul, expertul ia un programator în circuit de la Olimex. Aceasta este o companie bulgară cu un profil apropiat de Adafruit.
Maestrul sigilează descărcarea minoră pe afișaj, apoi taie o gaură în capacul carcasei, astfel încât această descărcare să fie închisă, deoarece citirile sale erau inexacte, în ciuda tuturor măsurilor luate.Aceasta este afectată de caracteristicile algoritmului și de stabilitatea temperaturii nu prea ridicată a oscilatorului de cristal. Pentru a-l configura, masterul conectează un contor de frecvență extern la punctul de control cu stabilizarea frecvenței generatorului de ceas de la receptorul GPS, după care setează exact 5 MHz prin întoarcerea condensatorului de reglare (declanșatorul împarte frecvența ceasului cu două). Un contor de frecvențe reglat corect oferă precizia necesară în domeniul frecvențelor măsurate de la 0,2 Hz la 2 MHz. Următoarele două fotografii arată modul în care maestrul a aplicat același semnal simultan la contoarele de referință și frecvența verificată: