Cel mai simplu contor de frecvență de pe attiny2313. Frecvențămetru de casă pe ATTINY2313. Principalele caracteristici tehnice

Particularitatea primului circuit contor de frecvență de pe microcontrolerul AVR este că funcționează împreună cu computerul și este conectat la placa de bază prin conectorul IRDA. Structura primește energie de la același conector. Al doilea circuit de frecvență se bazează pe microcontrolerul Attiny2313 și este capabil să măsoare frecvențe de până la 10 MHz. Cel de-al treilea design de frecvențămetru considerat se bazează pe legendara placă Arduino, care se bazează și pe microcontrolerul AVR.

Circuitul contor de frecvență este format dintr-un microprocesor Attiny2313 și un contor binar 74AC161. Semnalul de intrare pentru amplificare merge la tranzistorul VT1, apoi de la ieșirea colectorului său merge la intrarea „C” a contorului binar. Controlul asupra funcționării contorului este atribuit Attiny2313 MK, care resetează, oprește sau pornește contorizarea prin trimiterea unui semnal de control către a zecea ieșire.


Aplicând pe scurt un zero logic la intrarea de resetare a contorului binar, MK îl resetează la zero și, după aceea, trimite un nivel logic la intrarea EP, pornindu-și funcționarea. Apoi, numără impulsurile de la ieșirea cifrei de ordin înalt a contorului timp de o jumătate de secundă.

Frecvențămetru pe microcontrolerul AVR. Semnalele de date către computer provin de la portul PD6 al Attiny2313. Linia portului PB1 este utilizată pentru semnalele de sincronizare care provin de la computer.

În momentul inițial de timp, MK generează un impuls de pornire cu o durată de aproximativ 1,6 μs, după care are loc o pauză. Programul accesează periodic portul 2F8H și, la înregistrarea unui octet, inițiază transmiterea impulsurilor de ceas. Aceste impulsuri de ceas vor fi trimise atunci când numărul zero este trimis la portul infraroșu al computerului. Compoziția impulsului: primul bit este bitul de pornire, iar al optulea bit este numărul zero.

Când este detectat un nivel logic, microcontrolerul începe transmisia prin trimiterea primului impuls de pornire, setând unul logic pe linia de date și așteaptă ca linia ceasului să cadă, astfel încât impulsurile de date să poată fi trimise. Dacă bitul de date este zero, atunci „1” este setat.

Deoarece vitezele de transmisie și recepție sunt aceleași, acest lucru vă permite să obțineți independență față de viteza setată a portului IR al computerului.

Siguranțele pentru programul Ponyprog și firmware-ul în sine sunt disponibile la linkul verde de mai sus.

În acest proiect simplu de contor de frecvență, controlerul Arduino citește tensiunea, apoi calculează frecvența acesteia și trimite datele prin USB UART către computerul pe care trebuie să instalați programul de citire și vizualizare a datelor, aplicația și schița în arhiva descărcabilă.

Placa Arduino generează o bază de timp precisă de o secundă pentru contor prin punerea în cascadă a două temporizatoare, timer0 și timer2. Conexiunea dintre intrările digitale 3 și 4 conectează ieșirea temporizatorului 2 (250 Hz) la intrarea temporizatorului 0. Codul programului așteaptă ca ieșirea temporizatorului 0 să devină pozitivă și începe numărarea frecvenței semnalului de intrare cu temporizatorul 1 Timer1 este un temporizator de 16 biți, se depășește Când se atinge valoarea 2 16, după aceasta, valoarea registrului de depășire overF se modifică. La sfârșitul primei secunde, este scris un registru de 16 biți. Arduino trimite apoi 6 octeți de date către computer. Schema de conectare la Arduino este simplă și o puteți vedea în fotografia de mai jos.

Mai întâi, Arduino trebuie conectat la computer și abia apoi rulează aplicația în Visual Basc 6. Aplicația caută un port Com, trimițând octeți și așteaptă să fie recepționați înapoi. Durează câteva secunde. Aplicația trebuie să fie dezactivată când flashați placa prin Arduino IDE. Frecvența de intrare a plăcii Arduino este nivelurile de semnal TTL, dacă semnalul este slab, trebuie să adăugați un amplificator.

Un frecvențămetru cu performanțe bune, permițându-vă să măsurați frecvențe de la 1 Hz la 10 MHz (9.999.999) cu o rezoluție de 1 Hz pe întreaga gamă. Ideal pentru generatoare de funcții, cântare digitale sau ca dispozitiv independent. Ieftin și ușor de fabricat, asamblat din piesele disponibile, de dimensiuni reduse și poate fi montat pe panourile multor dispozitive.

Circuitul este format din șapte indicatori cu 7 segmente, un AVR ATtiny2313 și mai multe tranzistoare și rezistențe. AVR face toată munca și nu sunt necesare cipuri suplimentare. Microcontrolerul numără numărul de impulsuri care ajung la intrarea sa în 1 secundă și afișează acest număr. Cel mai important lucru este un cronometru foarte precis și este implementat pe un Timer1 de 16 biți în modul CTC. În al doilea rând, contorul de 8 biți funcționează ca Counter0 și numără impulsurile la intrarea T0. La fiecare 256 de impulsuri provoacă o întrerupere în care programul mărește multiplicatorul. Când primim o întrerupere de 1 secundă, conținutul multiplicatorului este înmulțit cu 256 (deplasat la stânga cu 8 biți). Restul impulsurilor pe care le-a numărat contorul este scris în registru și adăugat la rezultatul înmulțirii. Această valoare este apoi împărțită în numere individuale care sunt afișate pe indicatori. După aceasta, înainte de a ieși din întrerupere de 1 secundă, ambele contoare sunt resetate simultan și măsurarea începe din nou. Când nu este întrerupt, controlerul este angajat în afișaj dinamic.

Rezoluție și acuratețe:
Precizia depinde de generatorul de ceas. Cuarțul trebuie să fie de bună calitate și să aibă o ppm (toleranță) cât mai scăzută. Va fi mai bine dacă frecvența este un multiplu de 1024, de exemplu, 16 MHz sau 22,1184 MHz. Pentru a măsura frecvențe de până la 10 MHz, trebuie să utilizați cuarț nu mai puțin de 21 MHz, de exemplu, 22,1184 MHz. Frecvențametrul poate măsura frecvențe de până la 47% din frecvența proprie a cristalului. Dacă aveți un contor de frecvență industrial bun, puteți calibra circuitul adăugând un condensator de tăiere (1pF-10pF) între unul dintre bornele de cuarț și masă și reglați frecvența în conformitate cu citirile contorului de frecvență industrial.

Arhiva sursă conține mai multe opțiuni pentru diferite cuarțuri, dar vă puteți compila propria versiune.

Forma de unda:
În principiu, dispozitivul înțelege orice formă de semnal de la 0 la 5V, nu doar impulsuri dreptunghiulare. Unda sinusoidală și impulsurile unghiulare sunt numărate la marginea de fugă atunci când coboară sub 0,8 V.

Dispozitivul nu are protecție împotriva tensiunii de intrare care depășește 5 volți.

Dispozitivul are o intrare de mare impedanță și nu încarcă circuitul testat - puteți măsura chiar și frecvența curentului alternativ într-o rețea de 220 de volți atingând intrarea cu degetul. Contorul de frecvență poate fi convertit pentru a măsura frecvențe de până la 100 MHz în pași de 10 Hz prin adăugarea unui divizor de mare viteză la intrare.

Afişa:
Au fost utilizați șapte indicatori cu șapte segmente cu un anod comun în modul de indicare dinamică. Dacă luminozitatea este insuficientă, puteți reduce valorile rezistențelor de limitare a curentului, dar trebuie să vă amintiți că curentul maxim de impuls al fiecărui pin al microcontrolerului este de 40 mA. Valoarea implicită a rezistenței este de 100 ohmi. Zerourile nesemnificative sunt anulate programatic. Valorile sunt actualizate în fiecare secundă.

Placă de circuit imprimat:
PCB cu două fețe 109mm x 23mm - din păcate cele 7 LED-uri nu se potriveau în versiunea gratuită a Eagle, așa că au fost desenate manual. Pe placă trebuie să faceți 3 conexiuni cu un fir - prima este conexiunea dintre sursa de alimentare și ieșirea VCC a controlerului - această conexiune este afișată pe stratul de serigrafie. Celelalte două conectează punctele zecimale ale indicatoarelor la rezistențe de 330 Ohm situate pe stratul inferior. În partea de sus a plăcii este un conector Atmel ISP-6. Contactul 1 este primul pe partea de cuarț. Acest conector este opțional și este necesar doar pentru programarea controlerului. Indicatoarele trebuie lipite la o anumită distanță de placă, astfel încât să puteți aduce un fier de lipit la pinii lipiți pe partea de sus a plăcii.

Construit. Vă permite să măsurați frecvențe de până la 10 MHz în patru intervale de comutare automată. Cel mai mic interval are o rezoluție de 1 Hz.

Specificații frecvențămetru

  • Banda 1: 9,999 kHz, rezoluție 1 Hz.
  • Banda 2: 99,99 kHz, rezoluție de până la 10 Hz.
  • Banda 3: 999,9 kHz, rezoluție de până la 100 Hz.
  • Banda 4: 9999 kHz, rezoluție de până la 1 kHz.

Descrierea frecvențeimetrului de pe microcontroler

Microcontrolerul Attiny2313 funcționează de la un oscilator extern de cuarț cu o frecvență de ceas de 20 MHz (aceasta este frecvența maximă admisă). Precizia de măsurare a frecvențeimetrului este determinată de precizia cuarțului dat. Lungimea minimă de jumătate de ciclu a semnalului măsurat trebuie să fie mai mare decât perioada oscilatorului de cuarț (acest lucru se datorează limitărilor arhitecturii microcontrolerului ATtiny2313). Prin urmare, 50% din frecvența ceasului oscilatorului este de 10 MHz (aceasta este frecvența maximă măsurată).

Instalarea siguranțelor (în PonyProg):

Un dispozitiv foarte util și simplu, care este pur și simplu de neînlocuit în laboratorul de creație al unui radioamator, poate fi realizat pe PIC16F628A MK. Acest contor de frecvență digital de pe cipul de control comun PIC16F628A este proiectat pentru a măsura frecvențe de până la 30 MHz. Schema sa de circuit constă dintr-un modul de bază cu un driver de intrare conectat la intrarea sa de numărare. Diagrama frecvențeimetrului este prezentată în figura de mai jos:

Acest dispozitiv de măsurare poate fi utilizat în două moduri - scară digitală și frecvențămetru. Când alimentarea este pornită, frecvențametrul intră în modul în care funcționa înainte de ultima oprire. Dacă a fost un mod de frecvență, modul de frecvență „F.” va fi afișat în cifra din stânga indicatorului. De asemenea, „0” va fi afișat în cifra de ordin inferioară a indicatorului. Frecvențametrul va comuta automat în modul de măsurare a frecvenței și va fi în modul de așteptare. Când se aplică un semnal la intrare, semnul modului frecvenței este „F”. se stinge și indicatorul afișează valoarea frecvenței măsurate în kiloherți.
Diagrama driverului de intrare al contorului de frecvență - scară digitală este prezentată în figură:


Dacă în momentul pornirii curentului, există un semnal măsurat la intrarea contorului de frecvență, atunci, după pornirea alimentării, semnul de funcționare a contorului de frecvență „F.” se va aprinde timp de 1 secundă și apoi se va stinge. .
Pentru a trece la un timp de măsurare de 0,1 sec. sau 10 sec., trebuie să apăsați fie butonul nr. 1, fie apăsați simultan butonul nr. 1 și respectiv butonul nr. 2 (vezi dispunerea tastaturii pentru modul frecvențămetru), apoi așteptați ca poziția punctului zecimal să se schimbe, apoi eliberați butonul (butoanele). Dacă după aceasta trebuie să reveniți la timpul de măsurare de 1 secundă, atunci trebuie să apăsați butonul nr. 2 și să așteptați ca poziția punctului zecimal să se schimbe, apoi să eliberați butonul. Pentru orice timp de măsurare, punctul zecimal marchează kiloherți.


Dispunerea tastaturii în modul frecvențămetru

Buton nr. 1 0,1 sec. Comutați la timpul de măsurare 0,1 sec.
Butonul nr. 2 1 sec. Comutați la timpul de măsurare 1 sec.
Butonul nr. 1 +
butonul numărul 2 10 sec. Comutați la timpul de măsurare 10 sec.
(butoanele sunt apăsate simultan)

Dacă înainte de a opri alimentarea, lucrați în modul scară digitală, atunci data viitoare când porniți alimentarea, acest mod special va fi setat, iar în modul scară digitală exact submodul ("minus IF" sau "plus IF" ) se va stabili în care a avut loc lucrarea înainte de ultima oprire a alimentării. Semnele submodurilor cântarelor digitale („L.” sau „H.”, respectiv) vor fi afișate constant în cifra din stânga a indicatorului. Dacă nu există semnal la intrarea scalei digitale, indicatorul va arăta valoarea frecvenței intermediare înregistrată în memoria controlerului, iar dacă există, rezultatul scăderii sau adunării frecvenței semnalului prezent la intrare. a scalei digitale şi valoarea frecvenţei intermediare înregistrate în memoria nevolatilă a controlerului PIC.


Modul scară digitală are 4 submoduri.
- Când apăsați butonul nr. 1, are loc trecerea la submodul „minus IF”.
- În acest caz, în cifra din stânga a indicatorului va fi evidențiat semnul submodului „L”.
- Când apăsați butonul nr. 2, treceți la submodul „plus invertor”.
- În acest caz, în cifra din stânga a indicatorului va fi evidențiat semnul submodului „H”.

În timpul procesului de „firmware” al controlerului, valoarea frecvenței intermediare = 5,5 MHz este scrisă în memoria sa nevolatilă, dar apoi poate scrie independent orice valoare în ea și o poate folosi ca una intermediară. Pentru a face acest lucru, trebuie să aplicați un semnal extern cu o frecvență la intrarea DS, care va fi apoi folosit ca unul intermediar. Puteți verifica valoarea acestei frecvențe trecând la modul frecvențămetru.

Dispunerea tastaturii în modul scară digitală:
Butoane Timp de măsurare Explicații
Butonul nr. 1 „minus IF” Se scade din frecvența intermediară
frecventa masurata
Butonul nr. 2 „plus IF” Se însumează frecvența intermediară cu
frecventa masurata
Butonul nr. 1 +
butonul Nr. 2 Setarea invertorului Scrierea valorilor în memoria RAM
frecvența măsurată (IF)
Repeta:
Butonul nr. 1 +
butonul Nr. 2 Înregistrare IF Copierea valorii frecvenței măsurate din RAM în memoria nevolatilă în scopul utilizării ulterioare a acesteia ca intermediar


La schimbarea modului de operare, aspectul tastaturii se modifică. Dacă butonul nr. 1 este apăsat mai puțin de un anumit timp, atunci trecerea la alt mod nu are loc și butonul nr. 1 poate seta timpul de măsurare la 0,1 sec. (în modul frecvențămetru) sau porniți submodul „minus IF” (în modul scară digitală). Dacă acest prag este depășit, se trece la un alt mod. Valoarea acestui prag este de aproximativ 4 secunde, iar acest interval de timp este numărat de la sfârșitul ciclului de numărare, care are loc în momentul apăsării butonului nr. 1.


Puteți reduce consumul de energie al circuitului contorului de frecvență prin creșterea valorilor rezistențelor care conectează pinii portului B la indicator. În designul meu am folosit un indicator LED cu 9 cifre de la un telefon sovietic cu ID apelant, cu un catod comun și o culoare roșie strălucitoare. În frecvența mea, pe lângă alimentarea de la rețea, există și puterea bateriei (baterii). Placa de circuite imprimate a dispozitivului este prezentată în figură:


Firmware-ul pentru microcontrolerul PIC16F84A, precum și textul integral al articolului despre controler, pot fi descărcate aici. Am testat circuitul - ZU77.

Frecvențămetru pe microcontroler ATtiny2313. Circuitul este simplu și fiabil. Frecvențametrul vă permite să măsurați frecvențe de până la 65 kHz. Programul pentru microcontroler este scris în BascomAVR. Afișare frecvență pe afișaj 16*2. Tensiunea de alimentare a dispozitivului este de la 5 la 9 volți.

Impulsurile sunt numărate prin numărarea impulsurilor de-a lungul frontului ascendent de pe piciorul 9 (intrarea temporizatorului PD.5/T1 și Timer1). Pentru a proteja intrarea de supratensiune, sunt incluse două diode 1N4148 și un rezistor de 10kΩ. Afișajul apare pe orice afișaj 16*2, dar trebuie utilizat cu un controler HD44780 sau un KS066 similar.

Programul este scris în BASIC în mediul BascomAVR. Versiunea demo are o limită de dimensiune a codului de 4 KB, ceea ce este suficient. Descărcați BascomAVR de pe site oficial dezvoltator. Programul folosește două cronometre: timer0 pentru numărarea intervalelor de timp fixe, în cazul nostru 1 secundă (puteți experimenta cu această valoare) și timer1 contorizează impulsurile primite în acest timp. Este demn de remarcat faptul că impulsurile vor fi numărate numai dacă nivelul semnalului de la piciorul 9 corespunde nivelului de log. „1” (aproximativ 3-5 volți). Timer0 funcționează la frecvența de ceas al microcontrolerului, adică 8 MHz, divizorul de ceas nu este activat.

mob_info