10.Contoare

Această lecție se concentrează pe funcționalitatea contorului unui dispozitiv DAQ. Începe cu o prezentare generală a contoarelor, inclusiv semnale de contor, părțile unui contor, pinii la care conectați un semnal de contor, terminologia de bază a contorului și diferite tipuri de contoare. Lecția descrie, de asemenea, VI-urile DAQmx utilizate pentru operațiile de contorizare.

Cuprins:

10.1 Prezentare generală a contoarelor

10.2 Numărarea fronturilor

10.3 Generarea impulsurilor

10.4 Măsurarea impulsurilor

10.5 Măsurarea frecvenței

10.6 Măsurarea poziției

10.1 SEMNALE PENTRU CONTOR

Contoare funcționează cu semnale compatibile TTL. Un semnal compatibil TTL are următoarele specificații:

0 V - 0,8 V = LOW logic
2 V - 5 V = HIGH logic
Timp maxim de creștere/cădere = 50 ns

Dispozitivele I/O digitale pot seta sau monitoriza starea unei linii digitale. Totuși, contoarele nu sunt preocupate doar de starea semnalului, ci și de tranziția de la o stare la alta. Un contor poate detecta fronturile ascendente (tranziția de la low logic la high logic) și fronturile descendente (trecerea de la high logic la low logic). Doi parametri importanți legați de detectarea fronturilor crescătoare și descendente sunt timpul de creștere/cădere (rise/fall)și lățimea minimă a impulsului. Timpul de creștere/cădere este o măsură a vitezei de tranziție a semnalului de la low la high sau high la low. Pentru ca un contor să detecteze frontul, tranziția trebuie să aibă loc în decurs de 50 ns sau mai puțin, așa cum este definit de specificațiile pentru un semnal compatibil TTL.

În plus față de această restricție de timp, trebuie să existe o întârziere minimă de la momentul în care un contor detectează un front ascendent sau descendent până când poate detecta un alt front ascendent sau descendent. Această întârziere este cunoscută ca lățimea minimă a impulsului. Lățimea minimă a impulsului depinde de cipul contor utilizat. Dispozitivele din seria E au un cip DAQ-STC, care are o lățime minimă a impulsului de 10 ns atât pentru sursă, cât și pentru poartă (gate). Consultați documentația hardware pentru dispozitivul DAQ specific pentru a determina lățimea minimă a impulsului necesară pentru contoare.

Există cinci tipuri diferite de măsurători cu contorul - numărarea fronturilor, generarea impulsurilor, măsurarea impulsurilor, măsurarea frecvenței și măsurarea poziției.

Părți ale unui contor

Un contor are următoarele componente principale:

Count Register - Stochează numărul curent al contorului. Puteți interoga registrul de numărare cu software.

Source - Un semnal de intrare care poate modifica numărul curent stocat în registrul de numărare. Contorul caută fronturile ascendente sau descendente ale semnalului sursă. Indiferent dacă un front ascendent sau descendent modifică numărul, este selectabil-software. Tipul de front care este selectat se numește frontul activ al semnalului. Când se primește un front activ pe semnalul sursă, numărul se schimbă. Indiferent dacă un front activ crește sau micșorează numărul curent, este, de asemenea, selectabil-software. Semnalul sursă trebuie să fie compatibil TTL.

Gate — Un semnal de intrare care determină dacă un front activ al sursei modifică numărul. Numărarea poate avea loc atunci când poarta este high, low sau între diferite combinații de fronturi ascendente și descendente. Setările de poartă sunt realizate în software. Poarta este similară cu o mască de linie în I/O digitale, deoarece vă permite să recunoașteți sau să ignorați fronturile active de la sursă.

Out - Un semnal de ieșire care generează impulsuri sau o serie de impulsuri, altfel cunoscut sub numele de tren de impulsuri. Semnalul de ieșire este compatibil TTL.

Pinii contorului

Intrarea analogică, ieșirea analogică și I/O digitale au toate pini dedicați pentru operațiuni de intrare sau ieșire. Contoarele folosesc o combinație de pini de intrare cu funcție programabilă (PFI) și pini dedicați pentru operațiunile lor. Pinii de ieșire pentru contoare sunt utilizați exclusiv pentru a genera impulsuri la ieșirea dintr-un contor. Pinii sursă și poartă pentru contoare sunt pini PFI și pot fi utilizați pentru alte aplicații decât sursa sau poarta unui contor. De exemplu, pinul 3 de pe conectorul cu 68 de pini poate fi utilizat ca PFI9, poarta contorului 0 sau ambele. Capacitatea de a utiliza un pin pentru mai multe aplicații oferă o mare flexibilitate. De exemplu, puteți conecta un semnal TTL extern la pinul 3 și îl puteți utiliza pentru a declanșa o operație de intrare analogică și a fi o poartă pentru o operație de contor.

Terminologia contorului

Următorii termeni sunt importanți de înțeles atunci când utilizați contoare.

Număr terminal - Ultimul număr înainte ca un contor să atingă 0. De exemplu, când un contor care mărește numărul atinge numărul maxim, acesta a atins numărul terminal. Următoarea creștere a numărului forțează contorul să se răstoarne și să înceapă să numere la 0.

Rezoluție — Cât de mare poate număra contorul înainte de a atinge numărul terminal, specificat în biți. Următoarea formulă calculează numărul maxim pe baza rezoluției:

număr max. = 2(Rezoluția contorului)-1

Rezoluții comune ale contorului sunt 16-, 24-, sau 32-biți.

Baza de timp - Un semnal de frecvență cunoscut care este furnizat de dispozitivul DAQ. Frecvențele tipice pentru bazele de timp variază de la 100 Hz la 80 MHz. Baza de timp poate fi direcționată intern către sursa unui contor pentru a furniza un semnal de frecvență cunoscută.

10.2 CIPURI DE CONTOR

În funcție de dispozitivul DAQ, ați putea folosi cipul de contor DAQ-STC sau NI-TIO.

DAQ-STC

DAQ-STC este un contor pe 24 de biți dezvoltat de National Instruments cu o gamă largă de funcționalități care este utilizat pe dispozitivele din seria E. DAQ-STC poate crește sau micșora numărul, poate schimba direcția de numărare din mers utilizând un semnal hardware și oferă baze de timp de 100 kHz și 20 MHz.

DAQ-STC este mai disponibil pe scară largă pe dispozitivele NI actuale decât oricare dintre celelalte cipuri. În restul acestei lecții, termenul contor se referă la cipul DAQ-STC.

NI-TIO

NI-TIO este cel mai bun cip contor oferit pe dispozitivele NI. Este un contor pe 32 de biți care este compatibil-software cu DAQ-STC. NI-TIO poate crește și micșora numărul, acceptă encodere (codificatoare) și un semnal de declanșare hardware, are filtre digitale pentru a elimina glitches; poate modifica frecvența unui tren de impulsuri din mers și oferă baze de timp de 100 kHz, 20 MHz și 80 MHz. NI-TIO este utilizat pe familia de dispozitive 660x.

Notă Restul acestei lecții se concentrează pe utilizarea DAQ-STC.

10.3 I/O DE CONTOR

La fel ca intrarea analogică, ieșirea analogică și I/O digitală, operațiile de contor utilizează DAQmx Read VI. Pentru operații de contor, selectați un model de contor al lui DAQmx Read VI. DAQmx Write VI nu este utilizat cu contoare, așa cum veți vedea în exercițiile ulterioare din această lecție. DAQmx Create Virtual Channel VI, DAQmx Timing VI și DAQmx Triggering VI sunt, de asemenea, utilizate pentru a configura măsurătorile sau generările contorului.

VI-ul DAQmx Create Virtual Channel

Pentru a crea programatic un canal de intrare sau ieșire a contorului, selectați cazul Counter Input sau Counter Output din DAQmx Create Virtual Channel VI.

Un canal Counter Input vă permite să măsurați fie frecvența, perioada, fronturile de numărare, lățimea impulsului, fie semiperioada.

Opțiunile de configurare pentru un canal Counter Output vă permit să generați un impuls în termeni de frecvență, timp sau ticks.

VI-ul DAQmx Read

Pentru a citi un eșantion sau eșantioane de la o sarcină de contor, selectați un model de contor din meniul derulant DAQmx Read VI. Pentru contoare, puteți citi doar un singur canal odată, astfel încât fereastra de selecție a canalului singur sau multiplu nu mai este disponibilă.

Selectați pentru a citi fie un singur eșantion sau mai multe eșantioane simultan. Când citiți eșantioane individuale, selectați pentru a returna datele fie numeric cu precizie dublă, în virgulă mobilă, fie întreg pe 32 de biți (U32) fără semn. Eșantioanele multiple sunt returnate ca un șir 1D de numerice în virgulă mobilă, cu dublă precizie, sau un șir 1D de întregi pe 32 de biți fără semn.

VI-ul DAQmx Timing

Pentru operații de contor, selectați cazurile Sample Clock sau Implicit ale DAQmx Timing VI. Cazul Sample Clock vă permite să configurați ratele reale de sincronizare. Cazul Implicit setează doar numărul de eșantioane de achiziționat sau generat fără a specifica timing-ul. Veți utiliza cazul Implicit a lui DAQmx Timing VI mai târziu în această lecție, atunci când generați trenuri de impulsuri.

VI-ul DAQmx Trigger

Utilizați DAQmx Trigger VI pentru a configura declanșarea sarcinii. Modelele acestui VI polimorf corespund declanșatorului și tipului de declanșare pentru configurat. Configurați setările declanșatoarelor contorului în același mod în care configurați declanșatoarele de intrare analogică și ieșire analogică. În plus, utilizați DAQmx Trigger Property Node pentru a configura setările pentru un declanșator de pauză. Consultați Lecția Intrare analogică, a acestui manual, pentru mai multe informații despre configurarea declanșatoarelor.

10.4 NUMĂRAREA FRONTURILOR

Numărarea fronturilor este cea mai simplă operație de contorizare. În numărarea fronturilor, accentul se pune pe măsurarea semnalului sursă. Această secțiune descrie numărarea simplă a fronturilor și măsurarea timpului.

Numărare simplă a fronturilor

Numărarea simplă a fronturilor se încadrează în definiția de bază a unui contor. Fronturile active ale semnalului sursă incrementează valoarea registrului de numărare. Un front activ poate fi selectat-software pentru a fi un front descendent sau ascendent. Poarta și ieșirea nu sunt utilizate pentru contorizarea simplă a fronturilor.

Măsurarea timpului este o variație a numărării simple a fronturilor. Când efectuați numărarea simplă a fronturilor, sursa este necunoscută. Folosiți contorul pentru a vă ajuta să măsurați sursa. Când efectuați măsurarea timpului, sursa este o bază de timp cu frecvență cunoscută. Vă puteți folosi cunoștințele despre frecvența bazei de timp pentru a vă ajuta să măsurați timpul scurs. Măsurarea timpului utilizează o bază de timp pentru sursă în loc să utilizeze semnalul pe care încercați să îl măsurați.

Următoarea formulă calculează timpul scurs:

timpul scurs = (valoarea count register) × (perioada bazei de timp)

unde perioada bazei de timp = 1 / frecvența bazei de timp.

Singura diferență între măsurarea timpului și numărarea simplă a fronturilor este semnalul utilizat pentru sursă.

Măsurarea timpului

Atunci când un contor este configurat pentru numărarea simplă a fronturilor sau măsurarea timpului, numărul crește atunci când se primește un front activ pe sursă. Puteți utiliza LabVIEW pentru a specifica dacă frontul activ crește sau scade.

În exemplul următor, frontul ascendent a fost selectat ca front activ. Numărul crește cu unu de fiecare dată când se atinge un front ascendent.

Observați că numărarea nu poate crește până când contorul nu a fost armat (pornit). Un contor are un număr fix până la care poate fi numărat, determinat de rezoluția contorului. De exemplu, un contor de 24 de biți poate număra până la:

2(Rezoluția contorului)-1 = 224-1= 16.777.215

Când un contor de 24 de biți atinge valoarea de 16.777.215, acesta a atins numărul terminal. Următorul front activ va forța contorul să revină și să înceapă de la 0.

Exercițiul 10-1 Numărare simplă a fronturilor

Obiectiv: Construirea unui VI care efectuează numărarea simplă a fronturilor.

În acest exercițiu, veți construi un VI care înregistrează numărul de câte ori apare un front.

Panoul frontal

1. Deschideți un VI gol. Următorul panou frontal rezultă din construirea diagramei bloc.

Diagrama bloc

2. Construiți următoarea diagramă bloc.

a. Plasați DAQmx Create Virtual Channel VI, situat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI creează un nou canal virtual. Selectați cazul Counter Input»Count Edges din meniul derulant.

Faceți clic dreapta pe intrările count direction, initial count, și counter și selectați Create »Control din meniul de comenzi rapide.

b. Plasați DAQmx Start Task VI, situat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI pornește o sarcină.

c. Plasați DAQmx Read VI, situat pe Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Selectați cazul Counter»Single Sample» DBL din meniul derulant pentru a citi o singură valoare cu virgulă-mobilă și dublă de precizie de la contor.

Faceți clic dreapta pe ieșirea data și selectați Create »Indicator din meniul de comenzi rapide.

d. Plasați DAQmx Stop Task VI, aflat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI oprește sarcina.

e. Plasați funcția Wait Until Next ms Multiple, aflată în paleta Functions»All Functions»Time & Dialog, pe diagrama bloc.

f. Plasați funcția Unbundle by Name, situată în paleta Functions» All Functions»Cluster, pe diagrama bloc.

g. Plasați funcția Or, aflată în paleta Functions»Arithmetic & Comparison»Express Boolean, pe diagrama bloc.

h. Plasați Simple Error Handler VI, situat în paleta Functions»All Functions»Time & Dialog, pe diagrama bloc.

3. Salvați VI-ul ca Simple Edge Counting.vi în directorul C:\Exercises\ LabVIEW DAQ.

4. Conectați canalul A de la encoderul în cuadratură de pe DAQ Signal Accessory la Counter 0 Source pentru dispozitivele din seria E.

5. Pe panoul frontal, setați comenzile cu următoarele valori:

Counter: DevX/ctr0, unde X corespunde numărului de dispozitiv al dispozitivului DAQ
Initial Count: 0
Count Direction: Count Up

6. Rulați VI-ul. Rotiți encoderul în cuadratură de pe DAQ Signal Accessory. Indicatorul Count ar trebui să crească în valoare. Encoderul în cuadratură generează un impuls care se trimite la sursa contorului 0.

7. Opriți și închideți VI-ul.

Sfârșitul exercițiului 10-1

10.5 Numărare avansată a fronturilor

Pe lângă efectuarea numărării simple a fronturilor, NI-DAQmx poate fi configurat cu ușurință pentru a efectua metode mai avansate de numărare a fronturilor. Aceste metode includ numărarea declanșatorului de pauză (gated) și numărarea bufferată continuă și finită.

Numărarea declanșatorului de pauză (gated)

În declanșarea pauzei, cunoscută și sub numele de declanșare gated, un semnal TTL suplimentar activează/dezactivează registrul de numărare. Valoarea contorului va crește atunci când nivelul porții este fie high, fie low, în funcție de setările de configurare pe care le alegeți cu DAQmx Trigger property node.

Numărare continuă a fronturilor bafferată

În numărarea continuă a fronturilor bufferată, un semnal TTL suplimentar „blochează” valoarea registrului de numărare curentă într-un buffer. Astfel, valoarea din buffer este actualizată doar pe frontul activ al porții. Următoarea ilustrație demonstrează acest transfer al registrului de numărare în buffer.

Numărarea fronturilor bufferată este utilă pentru a măsura timpul scurs între fronturile secvențiale care apar pe poarta contorului. Fronturile active pe poartă blochează valorile actuale ale registrului contorului în memoria computerului. Folosind fie întreruperi, fie DMA (software configurabil cu DAQmx Channel Property node), valorile registrului de numărare sunt transferate individual într-un buffer software pe magistrala PCI.

Numărarea bufferată a fronturilor finite

Numărarea bufferată a fronturilor finite urmează aceeași metodă pentru transferul de date ca și numărarea bufferată a fronturilor continue, cu excepția faptului că se achiziționează doar un număr finit de numărări. După cum veți vedea în exercițiul următor, utilizați DAQmx Timing VI pentru a seta numărul de eșantioane de achiziționat.

Exercițiul 10-2 Numărare avansată a fronturilor

Obiectiv: Utilizarea metodelor de declanșare pauză, bufferate continuu și bufferate finit pentru a efectua numărarea fronturilor.

Numărarea declanșatorului de pauză (gated)

În numărarea declanșatorului de pauză, sau gated, folosim o linie suplimentară pentru a controla poarta contorului. Poarta va întrerupe creșterea sau scăderea contorului atunci când poarta este fie într-o stare high, fie low (în funcție de setările pe care le alegeți).

1. Deschideți VI-ul Simple Edge Counting situat în directorul C:\Exercises\LabVIEW DAQ.

2. Selectați File»Save As și salvați VI-ul ca Simple Edge Counting -Gated.vi în directorul C: \ Exercises \ LabVIEW DAQ.

3. Modificați schema bloc așa cum se arată în figura următoare.

a. Plasați nodul de proprietăți DAQmx Trigger, situat în paleta Functions»All Functions»NI Measurements» DAQmx - Data Acquisition, pe diagrama bloc. Utilizați acest Property Node pentru a efectua o configurație suplimentară a declanșatorului de activități. Redimensionați Property Node pentru a conține trei proprietăți. Faceți clic dreapta pe fiecare terminal și selectați următoarele proprietăți din meniul de comenzi rapide:
– Properties»More»Pause»Trigger Type
– Properties»More»Pause»Digital Level»Source
– Properties»More»Pause»Digital Level»Pause When

b. Pentru fiecare proprietate, faceți clic dreapta pe terminal și selectați Create »Control din meniul de comenzi rapide.

4. Comutați la panoul frontal și selectați următoarele valori pentru noile controale.

Trigger Type: Digital
Source: /DevX/PFI0, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ. PFI0 corespunde butonului Digital Trigger de pe DAQ Signal Accessory.
Pause When: Low

5. Rulați VI-ul. Rotiți butonul encoderului în cuadratură. Pentru a întrerupe numărarea, țineți apăsat butonul Digital Trigger. În timp ce apăsați butonul Digital Trigger, rotiți butonul encoderului în cuadratură și observați că valoarea contorului rămâne neschimbată.

6. Opriți VI-ul și schimbați valoarea Pause When la High.

7. Rulați VI-ul și observați comportamentul cu această setare de declanșare.

8. Salvați și închideți VI-ul.

Numărare bufferată continuă

În contorizarea bufferată continuă, sursa porții determină când se transferă valoarea numărului curent în registrul de contorizare din memoria de la bord. Pentru a efectua acest tip de numărare, adăugați și configurați un DAQmx Timing VI în VI-ul Simple Edge Counting.

1. Deschideți Simple Edge Counting VI situat în directorul C:\Exercises\ LabVIEW DAQ.

2. Selectați File»Save As și salvați VI-ul ca Simple Edge Counting -Cont Buffered.vi în directorul C:\Exercises\LabVIEW DAQ.

3. Modificați diagrama bloc pentru a include DAQmx Timing VI așa cum se arată în figura următoare.

4. Comutați la panoul frontal și selectați următoarele valori pentru noile controale:

Source: /DevX/PFI0, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Active Edge: Rising
Rate: 10000

5. Rulați VI-ul. Când apăsați butonul Digital Trigger, valoarea curentă a numărului devine blocată în registrul de numărare. Rotiți butonul de pe encoderul în cuadratură și observați că indicatorul data nu se schimbă. Apăsați butonul Digital Trigger pentru a bloca și citi contorul.

6. Salvați și închideți VI-ul.

Numărare bufferată finită

În numărarea bufferată finită, specificați numărul total de fronturi de numărat. Numărarea se oprește la atingerea acestui număr.

1. Deschideți Simple Edge Counting VI situat în directorul C:\Exercises\ LabVIEW DAQ.

2. Selectați File»Save As și salvați VI-ul ca Simple Edge Counting - Finite Buffered.vi în directorul C:\Exercises\LabVIEW DAQ.

3. Modificați schema bloc așa cum se arată în figura următoare.

a. Faceți clic dreapta pe Bucla While și selectați Remove While Loop din meniul de comenzi rapide.

b. Plasați DAQmx Channel Property Node, situat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Utilizați acest Property Node pentru a configura setări suplimentare despre un canal. Faceți clic dreapta pe terminal și selectați proprietatea Properties»Counter Input»Count Edges» Input Terminal din meniul de comenzi rapide. Faceți clic dreapta pe terminal, selectați CreatConstant din meniul de comenzi rapide și selectați 20 MHz Timebase pentru dispozitivul dvs. DAQ. În loc să numărați clicurile pe encoderul în cuadratură, veți număra fronturile bazei de timp interne.

c. Plasați DAQmx Clear Task VI, aflat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI șterge toate resursele alocate sarcinii.

4. Comutați la panoul frontal și selectați următoarele valori pentru noile controale:

Samples per Channel: 1000
Rate: 1000
Source: /DevX/PFI9, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ. PFI9 este pinul implicit pentru Counter 0 Gate.

5. Conectați unda pătrată a generatorului de funcții la poarta Counter 0.

6. Rulați VI-ul. Veți vedea valoarea blocată a registrului la fiecare front ascendent al semnalului de poartă.

7. Salvați și închideți VI-ul.

Sfârșitul exercițiului 10-2

10.6 GENERAREA IMPULSURILOR

Un contor nu numai că măsoară semnale TTL, dar și generează semnale TTL. Utilizarea unui contor pentru a genera un semnal TTL este cunoscută sub numele de generare de impulsuri. Semnalul de ieșire prezentat în următoarea ilustrație este generat pe ieșirea din contor. Semnalul generat poate fi un singur impuls sau un set continuu de impulsuri cunoscut sub numele de tren de impulsuri. Contorul folosește o bază de timp ca sursă pentru a ajuta la generarea impulsului. Deocamdată trebuie să înțelegeți că o bază de timp ajută la generarea pulsului. Cunoașterea modului cum baza de timp generează un impuls nu este necesară pentru a programa contorul pentru generarea impulsurilor și este dincolo de sfera acestui curs.

Caracteristicile impulsului

Pentru a genera un impuls, trebuie să înțelegeți anumite caracteristici ale unui impuls. Un impuls are două părți: întârzierea și lățimea. Întârzierea este prima fază a impulsului, iar lățimea este a doua fază a impulsului. Întârzierea și lățimea sunt întotdeauna la nivele logice opuse.

De exemplu, dacă întârzierea este low logic, lățimea trebuie să fie high logic. Un impuls poate fi caracterizat ca polaritate high sau low. Un impuls cu polaritate high are o întârziere care este low logic și o lățime care este high logic. Un impuls de polaritate low are o întârziere care este high logic și o lățime care este low logic Convenția de denumire a polarității impulsului corespunde nivelului logic al lățimii sale. Perioada unui impuls este timpul necesar impulsului pentru a finaliza un ciclu, astfel încât prin adăugarea timpului de întârziere la timpul de lățime, puteți obține perioada de impuls. După ce ați stabilit perioada pulsului, luați inversul pentru a obține frecvența impulsului.

Întârzierea și lățimea unui impuls nu sunt întotdeauna egale, deci aveți nevoie de o proprietate a unui impuls care să vă ajute să determinați dacă întârzierea este mai mare decât lățimea sau invers. Parametrul pe care îl utilizați se numește ciclu de funcționare. Următoarea ilustrație arată formula. Ciclul de funcționare vă oferă un număr între 0 și 1. Acest număr este adesea convertit într-un procentaj. Un impuls în care întârzierea este egală cu lățimea va avea un ciclu de funcționare de 0,5 sau 50%.

Un ciclu de funcționare mai mare de 50% înseamnă că lățimea este mai mare decât întârzierea și un ciclu de funcționare mai mic de 50% înseamnă că întârzierea este mai mare decât lățimea.

Exercițiul 10-3 Generarea impulsurilor

Obiectiv: Construirea unui VI care generează un singur impuls folosind un contor.

Acest VI demonstrează cum se generează o valoare la un contor. Deși generați o frecvență în acest exercițiu, puteți, de asemenea, să scoateți ticks and time cu același concept prezentat în acest exercițiu.

Diagramă bloc

1. Deschideți un VI gol și construiți următoarea diagramă bloc.

a. Plasați DAQmx Create Virtual Channel VI, situat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI creează un nou canal virtual. Selectați cazul Counter Input»Count Edges din meniul derulant.

Faceți clic dreapta pe intrările count direction, initial count, și counter și selectați Create »Control din meniul de comenzi rapide.

b. Plasați DAQmx Start Task VI, situat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI pornește o sarcină.

c. Plasați DAQmx Wait Until Done VI, aflat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI așteaptă finalizarea generării. Utilizați acest VI pentru a vă asigura că ieșirea contorului se finalizează înainte ca sarcina să se oprească.

Faceți clic dreapta pe intrarea timeout și selectați CreatConstant din meniul de comenzi rapide. Valoarea implicită este de 10 secunde.

d. Plasați DAQmx Stop Task VI, aflat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI oprește sarcina.

2. Salvați VI-ul ca Single Pulse Generation.vi în directorul C:\Exercises\LabVIEW DAQ.

3. Pe panoul frontal al VI-ului, modificați următoarele comenzi:

Counter: /DevX/ctr1, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Duty Cycle: 0.5
Frequency: 0.5
Idle State: Low
Initial Delay: 0.25

4. Conectați counter 1 out la counter 0 source și analog in 1 pe DAQ Signal Accessory.

5. Deschideți Continuous Acquire with MIO VI aflat în directorul C:\Exercises\LabVIEW DAQ.

6. Setați comenzile de pe panoul frontal al Continuous Acquire with MIO VI cu următoarele valori:

Physical Channels: DevX/ai1, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Samples per Channel: 1000
• Rate: 10000

7. Rulați Continuous Acquire with MIO VI.

8. Rulați Single Pulse Generation VI. Ar trebui să vedeți apariția impulsului pe Continuous Acquire with MIO VI. Observați că semnalul începe low, devine high și revine low.

Notă Este mai ușor să vedeți impulsul dacă dezactivați Autoscale Y, făcând clic dreapta pe grafic în timp ce VI-ul rulează și selectând AutoScale Y din meniul de comenzi rapide pentru a elimina bifa de la element. O scală-Y bună pentru a vedea pulsul este de la –2 la 6.

9. Opriți Continuous Acquire with MIO VI.

10. Deschideți Simple Edge Counting VI situat în directorul C:\Exercises \LabVIEW DAQ.

11. Setați Contorul la /DevX/ctr0, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ.

12. Rulați VI-ul Simple Edge Counting.

13. Rulați Single Pulse Generation VI și observați că numărul crește pe Simple Edge Counting VI.

14. Închideți toate VI-urile când terminați. Nu salvați modificările.

Sfârșitul exercițiului 10-3

Exercițiul 10-4 Generarea trenului de impulsuri

Obiectiv : Construirea unui VI care generează un tren de impulsuri.

În acest exercițiu, veți modifica Single Pulse Generation VI pentru a genera un tren de impulsuri sau o serie de impulsuri.

1. Deschideți Single Pulse Generation VI situat în directorul C:\Exercises\LabVIEW DAQ.

Diagrama bloc

2. Modificați diagrama bloc așa cum se arată în figura următoare.

a. Plasați DAQmx Timing VI, situat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Selectați cazul Implicit din meniul derulant pentru a configura timing, astfel încât sarcina să genereze eșantioane fără a specifica timing. O generare de tren de impulsuri este ideală pentru timing Implicit, deoarece trenul de impulsuri în sine conține toți parametrii de sincronizare.

b. Plasați DAQmx Is Task Done VI, aflat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition» DAQmx Advanced Task Options, pe diagrama bloc. Acest VI așteaptă finalizarea generării. Utilizați acest VI pentru a vă asigura că ieșirea contorului se finalizează înainte ca sarcina să se oprească.

3. Setați comenzile panoului frontal cu următoarele valori.

Counter: /DevX/ctr1, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Duty Cycle: 0.5
Frequency: 0.5
Idle State: Low
Initial Delay: 0.25

4. Conectați counter 1 out de pe DAQ Signal Accessory la analog in 1.

5. Selectați File»Save As și salvați VI-ul ca Pulse Train Generator.vi în directorul C:\Exercises\LabVIEW DAQ.

6. Deschideți Continuous Acquire with MIO VI aflat în directorul C:\ Exercises\LabVIEW DAQ.

7. Setați comenzile de pe panoul frontal al Continuous Acquire with MIO VI cu următoarele valori:

Physical Channels: DevX/ai1, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Samples per Channel: 1000
Rate: 10000

8. Rulați Continuous Acquire with MIO VI.

9. Rulați Pulse Train Generator VI. Ar trebui să vedeți apariția trenului de impulsuri pe graficul Continuous Acquire with MIO VI.

10. Opriți și închideți Pulse Train Generator VI.

Sfârșitul exercițiului 10-4

Exercițiul 10-5 Generarea trenului de impulsuri redeclanșabil

Obiectiv : Construirea unui VI care generează un tren de impulsuri redeclanșabil.

Puteți configura generarea de impuls singur și generarea de trenuri de impulsuri finite pentru a fi redeclanșabile. Contorul rămâne armat după generarea primului impuls și poate răspunde la declanșatoarele de pe poartă generând un impuls pe linia de ieșire a contorului. În acest exercițiu, modificați Pulse Train Generator VI pentru a genera un tren de impulsuri redeclanșabil.

1. Deschideți Pulse Train Generator VI situat în directorul C:\Exercises\ LabVIEW DAQ.

2. Selectați File»Save As și salvați VI-ul ca Retriggerable Pulse Train.vi în directorul C:\Exercises\LabVIEW DAQ.

Diagrama bloc

3. Modificați diagrama bloc așa cum se arată în figura următoare.

a. Plasați DAQmx Timing VI, situat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Lăsați sincronizarea sarcinii setată la Implicit. Setați sample mode la Finite Samples. Faceți clic dreapta pe intrarea samples per channel și selectați Create»Control din meniul de comenzi rapide.

b. Plasați DAQmx Trigger VI, situat în Paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI configurează sarcina pentru a declanșa un front digital. Faceți clic dreapta pe intrarea source și selectați Create »Constant din meniul de comenzi rapide. Selectați DevX / PFI0, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ.

c. Plasați DAQmx Trigger Property Node, situat în paleta Functions»All Functions»NI Measurements» DAQmx - Data Acquisition, pe diagrama bloc. Utilizați acest Property Node pentru a configura setări suplimentare pentru declanșarea activității. Faceți clic dreapta pe terminal și selectați Properties»Start»More»Retriggerable din meniul de comenzi rapide. Faceți clic dreapta pe Property Node și selectați CreatConstant din meniul de comenzi rapide. Setați această Boolean constant la True pentru a permite trenului de impulsuri să fie redeclanșabil.

4. Comutați la panoul frontal și setați comenzile cu următoarele valori:

Counter: DevX/ctr0, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Duty Cycle: 0.5
Frequency: 5
Idle State: Low
Initial Delay: 0
Samples per channel: 5

5. Conectați counter 0 out la analog in 1 pe DAQ Signal Accessory.

6. Lansați MAX și deschideți un panou de testare pentru dispozitivul dvs. NI-DAQmx. Faceți clic pe tab-ul Analog Input și selectați numele canalului corespunzător. Setați Acquisition Mode la Continuous, Rate la 50.00 și # Points to Read la 50. Faceți clic pe butonul Start.

7. Rulați VI-ul. Apăsați butonul Digital Trigger de pe DAQ Signal Accessory pentru a declanșa generarea de impulsuri. Urmăriți panoul de testare și numărați impulsurile. Numărul de impulsuri ar trebui să fie echivalent cu valoare controlului samples per channel.

8. Apăsați din nou butonul Digital Trigger. Trenul de impulsuri este produs de fiecare dată când declanșatorul este activat, făcându-l un tren de impulsuri redeclanșabil.

9. Opriți VI-ul și panoul de testare. Ieșiți din MAX.

10. Salvați și închideți VI-ul.

Sfârșitul exercițiului 10-5

10.7 MĂSURAREA IMPULSULUI

Când măsurați un impuls, semnalul pe care îl măsurați este utilizat ca poartă, iar sursa este o bază de timp de frecvență cunoscută, așa cum se arată în ilustrația următoare. Puteți utiliza frecvența cunoscută a bazei de timp și valoarea registrului de numărare pentru a determina caracteristicile impulsului de poartă, cum ar fi perioada impulsului și lățimea impulsului.

Măsurarea perioadei

Măsurarea perioadei este un tip de măsurare a impulsului. Cu măsurarea perioadei, contorizați în continuare fronturile active pe semnalul sursă. Dar, spre deosebire de numărătoarea simplă a fronturilor, creșteți numărătoarea doar în perioada semnalului porții. Următoarea ilustrație arată măsurarea perioadei care este pornită și oprită de un front ascendent pe semnalul porții.

De asemenea, puteți începe și opri numărarea între fronturile de cădere. Numărul reflectă numărul de fronturi ascendente de pe sursă între cele două fronturi ascendente de pe poartă. Prin urmare, pentru a efectua măsurarea perioadei, aveți nevoie de un semnal cu două fronturi ascendente sau două fronturi descendente. Un singur impuls are un singur front ascendent și un front descendent, deci nu ați putea să-i măsurați perioada.

În exemplul anterior, o perioadă a semnalului de poartă are patru numere. Amintiți-vă că sursa este o bază de timp cu frecvență cunoscută. Să presupunem că utilizați o bază de timp de 100 kHz. Formula pentru calcularea perioadei porții este următoarea:

perioada impulsului = număr × (1 / frecvența sursei)

Pentru exemplul anterior, cu baza de timp de 100 kHz, formula produce:

perioada impulsului = 4 × (1 / 100.000) = 0,04 milisecunde

Măsurarea semi-perioadei

Măsurarea semi-perioadei este foarte asemănătoare cu măsurarea perioadei, dar măsurăm doar timpul între fronturi consecutive. Formula pentru calcularea semi-perioadei este următoarea:

perioada impulsului = număr × (1 / (2 × frecvența sursei))

Pentru exemplul anterior, cu baza de timp de 100 kHz, formula produce:

perioada impulsului = 4 × (1 / 200.000) = 0,02 milisecunde

Măsurarea lățimii impulsului

Măsurarea lățimii pulsului este foarte similară cu măsurarea perioadei. Diferența este unde opriți numărarea. Cu măsurarea perioadei, ați pornit și ați oprit să numărați cu două fronturi ascendente pe semnalul porții. Cu măsurarea lățimii pulsului, numărați numai pe durata lățimii pulsului, astfel încât începeți să numărați pe un front și terminați pe frontul opus. Valoarea numărului se mărește numai între două fronturi opuse, așa cum se arată în ilustrația următoare.

Formula pentru calcularea lățimii impulsului este aceeași cu formula pentru perioadă:

lățimea impulsului = număr × (1 / frecvența sursei)

Pentru exemplul anterior, o sursă de 100 kHz produce:

lățimea impulsului = 2 × (1 / 100.000) = 0,02 milisecunde

0,02 milisecunde este jumătate din valoarea pe care ați primit-o pentru măsurarea perioadei, deci trebuie să aveți un semnal de poartă cu un ciclu de funcționare de 50%.

Exercițiul 10-6 Măsurarea perioadei, semi-perioadei și lățimii impulsului

Obiectiv: Construirea unui VI pentru a măsura un impuls, o perioadă și o semi-perioadă.

1. Deschideți un VI gol și treceți la diagrama bloc.

Măsurarea lățimii impulsului

2. Creați următoarea diagramă bloc.

3. Salvați VI-ul ca Signal Measurements.vi în directorul C:\Exercises\LabVIEW DAQ.

4. Conectați Counter 0 Out la Counter 1 Gate pe DAQ Signal Accessory.

5. Deschideți Single Pulse Generation VI situat în directorul C:\Exercises\LabVIEW DAQ.

6. Setați comenzile de pe panoul frontal al Single Pulse Generation VI cu următoarele valori:

Counter: DevX/ctr0, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Duty Cycle: 0.5
Frequency: 1
Idle State: Low
Delay: 0.5

7. Setați comenzile de pe panoul frontal al Signal Measurements VI cu următoarele valori:

Counter: DevX/ctr1, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Starting edge: Rising
Maximum value: 0.001000
Minimum value: 0.000001

Notă Semnalul pe care îl măsurați trebuie să pornească low atunci când măsurați un impuls high.

În mod similar, semnalul trebuie să pornească high atunci când măsurați un impuls low. Dacă semnalul pornește high când măsurați un impuls high sau invers, apare o eroare.

8. Rulați Signal Measurements VI.

9. Rulați Single Pulse Generation VI. Ar trebui să vedeți că Signal Measurements VI a măsurat impulsul de 0,5 secunde generat de Single Pulse Generation VI.

Măsurarea perioadei

1. Închideți Single Pulse Generation VI și Pulse Train Generator VI pe care l-ați finalizat în exercițiul 10-4.

2. Modificați Signal Measurements VI pentru a citi perioada în loc de lățimea impulsului. Creați un control pentru Measurement Time și setați-l la 0.05.

3. Setați comenzile de pe panoul frontal al Pulse Train Generator VI cu următoarele valori:

Counter: /DevX/ctr0, unde X corespunde numărului de dispozitiv al dispozitivului dvs. DAQ
Duty Cycle: 0.5
Frequency: 2
Idle State: Low
Initial Delay: 0.25

4. Rulați Pulse Train Generator VI.

5. Rulați Signal Measurements VI. Observați că măsurați o perioadă de 0,5 secunde.

6. Opriți Pulse Train Generator VI.

Măsurarea semi-perioadei

1. Modificați Signal Measurements VI pentru a citi semiperioada în loc de perioadă.

2. Rulați Pulse Train Generator VI, lăsând valorile de control la fel ca pentru măsurarea perioadei.

3. Rulați Signal Measurements VI. Semiperioada este de 0,25 secunde.

4. Opriți Pulse Train Generator VI.

5. Salvați Signal Measurements VI.

6. Închideți toate VI-urile.

Sfârșitul exercițiului 10-6

H. Măsurători de frecvență

Această secțiune descrie trei moduri de a măsura frecvența unui tren de impulsuri TTL folosind unul sau mai multe contoare. Frecvența unei forme de undă este pur și simplu inversa perioadei sale la un moment dat. Astfel, cel mai ușor tip de măsurare a frecvenței este doar inversul măsurării perioadei. Celelalte două tipuri de măsurători ale frecvenței devin necesare deoarece primul tip de măsurare a frecvenței devine din ce în ce mai inexact pe măsură ce frecvența porții se apropie de frecvența bazei de timp a contorului.

Perioadă

Prima măsurare a frecvenței este într-adevăr o măsurare a perioadei. Odată ce perioada este achiziționată, luați inversul pentru a calcula frecvența. Avantajul acestei metode este că folosește un singur contor și este ușor de realizat. Dar, această metodă se bazează pe un semnal de poartă relativ lent, deoarece acuratețea unei măsurători de perioadă depinde de numărul de fronturi ale sursei care apar într-o perioadă de poartă.

Eroare de sincronizare

Pe măsură ce frecvența porții se apropie de frecvența sursă, măsurătorile de perioadă suferă de erori de sincronizare. De exemplu, considerați o măsurare a perioadei care utilizează o bază de timp internă de 20 MHz pe sursă.
Acum, să presupunem că semnalul porții este de aproximativ 5 MHz sau 1/4 din frecvența sursei. Următoarea ilustrație prezintă trei scenarii posibile în care primul și ultimul front ale sursei pot fi sau nu pot fi incluse în măsurarea perioadei.

În primul scenariu, măsurarea ratează primul și ultimul front ale sursei, numărând în total doar trei fronturi. Al doilea scenariu prinde primele patru fronturi și ratează ultimul front. Al treilea scenariu arată toate cele cinci fronturi sursă fiind numărate. Al doilea scenariu este evident mai exact, dar deoarece fronturile sursei sunt atât de strâns sincronizate cu fronturile porții, contorul este la fel de probabil să aleagă oricare dintre cele trei scenarii arătate.

Măsurătorile impulsurilor au întotdeauna o eroare de ± 1 ciclu sursă, care este în general neglijabilă atunci când un ciclu sursă reprezintă doar 1% (sau mai puțin) din măsurarea impulsului. Dara, un ciclu sursă reprezintă între 33% și 20% din măsurare. Aceasta este cunoscută sub numele de eroare de sincronizare și poate fi evitată prin alegerea unei scheme de măsurare diferite.

Tabelul următor arată modul în care două frecvențe, 50 kHz și 5 MHz, afectează măsurarea perioadei.

În NI-DAQmx, această metodă se numește Low Frequency with 1 Counter.

Mediere

A doua metodă de măsurare a frecvenței folosește două contoare - unul pentru a genera un tren de impulsuri cu o frecvență cunoscută și unul pentru a efectua o măsurare a perioadei. Contorul 1 efectuează o măsurare a perioadei, utilizând semnalul extern ca sursă în locul bazei de timp interne. Semnalul porții contorului 1 provine de la ieșirea contorului 0, care generează un tren de impulsuri. Deoarece cunoașteți frecvența ieșirii contorului 0, știți exact lungimea ciclului de poartă pe contorul 1. Pe baza numărului de fronturi ale sursei care ajung pe sursa contorului 1, puteți deduce frecvența, împărțind măsurarea perioadei a contorului 1 prin perioada porții.

De exemplu, dacă contorul 0 produce un tren de impulsuri de 10 Hz, perioada porții este de 0,1 s. Dacă în acest timp, numărați 100 de fronturi ale sursei, știți că frecvența sursei de pe contorul 1 este (100 ± 1) / 0,1 sau 1000 ± 10 Hz. În NI-DAQmx, această metodă se numește High Frequency with 2 Counters.

Metoda Divide Down

A treia metodă de măsurare a frecvenței folosește, de asemenea, două contoare, cu excepția contorului care generează trenul de impulsuri (contorul 0) utilizează semnalul extern ca sursă, iar contorul care efectuează măsurarea perioadei (contorul 1) folosește baza de timp internă ca sursă. La fel ca metoda de mediere, metoda divide down utilizează trenul de impulsuri de la ieșirea contorului 0 pentru a porni măsurarea perioadei pe contorul 1

Avantajul metodei divide down este că introduce mai puține erori decât măsurătorile de perioadă sau mediere.

De exemplu, să presupunem că programați contorul 0 pentru generarea trenului de impulsuri cu specificațiile de impuls 5 și 5. Aceasta înseamnă că întârzierea și lățimea sunt formate fiecare din 5 perioade ale semnalului sursă și că perioada trenului de impuls rezultat constă din 10 perioade ale semnalului sursă (sursa este împărțită la un factor de 10). În acest exemplu, contorul 1 este configurat pentru o măsurare a perioadei, utilizând baza de timp internă de 20 MHz ca sursă. Dacă contorul 1 înregistrează 100 de fronturi sursă în timpul unei perioade de poartă, puteți deduce că perioada de poartă a durat 5 μs (50 ns × 100 de fronturi). Prin urmare, puteți concluziona că semnalul extern conectat la sursa contorului 0 avea o perioadă de 0,5 μs sau o frecvență de 2 MHz.

Exprimată ca o ecuație,

F = (spec.1 impuls + spec2 impuls) × bază de timp / (# de fronturi sursă ± 1)

În acest exemplu,

F = (5 + 5) × 20.000.000 / (100 ± 1)

F = 200.000.000 / 101 până la 200.000.000 / 99

F = 1.980.198 la 2.020.202 Hz

În NI-DAQmx, această metodă se numește Large Range with 2 Counters.

Exercițiul 10-7 Măsurarea frecvenței

Obiectiv : Construirea unui VI care măsoară frecvența folosind un contor.

Acest exercițiu explorează trei metode diferite de măsurare a frecvenței - perioada inversă, medierea și împărțirea.

1. Pe DAQ Signal Accessory, conectați unda pătrată de la generatorul de funcții la poarta contorului 1.

2. Deschideți un VI gol și treceți la diagrama bloc.

Metoda perioadei inverse

3. Creați următoarea diagramă bloc.

a. Pe DAQmx Create Virtual Channel VI, faceți clic dreapta pe intrările measurement method, minimum value, maximum value, counter, starting edge, measurement time, și divisor și selectați Create»Control din meniul de comenzi rapide.

b. Pe DAQmx Read VI, selectați cazul Counter»Single Sample»Double din meniul derulant. Faceți clic dreapta pe ieșirea data și selectați Create»Indicator din meniul de comenzi rapide.

4. Salvați VI-ul ca Frequency Measurements.vi în directorul C:\Exercises \LabVIEW DAQ.

5. Setați comenzile de pe panoul frontal cu următoarele valori:

Counter: DevX/ctr1, undee X corespunde numărului de dispozitiv DAQ
Minimum value: 2
Maximum value: 10,000
Divisor: 4
Starting edge: Rising
Measurement time: 1

6. Pe DAQ Signal Accessory, setați Frequency Range la 100 Hz - 10 kHz. Rotiți butonul Frequency Adjust cât mai jos posibil. Generatorul de funcții ar trebui să producă acum un semnal de 100 Hz.

7. Rulați VI-ul. Indicatorul data ar trebui să afișeze aproximativ 100 Hz.

8. Experimentați cu VI-ul reglând butonul Frequency Adjust și rulând VI-ul din nou.

Metoda de mediere

9. Pe DAQ Signal Accessory, conectați unda pătrată de la generatorul de funcții la sursa contorului 1.

10. Schimbați metoda de măsurare la High Frequency with 2 Counters. Reduceți timpul de măsurare la 0.001. Măriți valoarea maximă la 1000000.

11. Pe DAQ Signal Accessory, setați Frequency Range la 13 kHz - 1 MHz. Rotiți butonul Frequency Adjust cât mai sus posibil.

12. Rulați VI-ul. Indicatorul data ar trebui să afișeze aproximativ 1 MHz.

13. Experimentați cu VI-ul reglând butonul Frequency Adjust și rulând VI-ul din nou.

Metoda Divide Down

14. Schimbați metoda de măsurare la Large Range with 2 Counters. Setați valoarea minimă la 5.

15. Pe DAQ Signal Accessory, setați Frequency Range la 13 kHz - 1 MHz. Rotiți butonul Frequency Adjust cât mai sus posibil.

16. Rulați VI-ul. Indicatorul data ar trebui să afișeze aproximativ 1 MHz.

17. Experimentați cu VI-ul reglând butonul Frequency Adjust și rulând VI-ul din nou.

Sfârșitul exercițiului 10-7

I. Măsurarea poziției

Un encoder în cuadratură este un traductor popular utilizat în aplicații de contor. Un encoder în cuadratură vă permite să măsurați poziția și convertește mișcarea rotativă într-un semnal măsurabil. DAQ Signal Accessory are un encoder în cuadratură. Dintre cele patru cipuri de contor, NI-TIO este singurul care acceptă direct encoderele în cuadratură. Encoderele în cuadratură pot fi măsurate atât cu Am9513, cât și cu DAQ-STC, dar niciun cip nu a fost conceput pentru măsurători ale encoderului. Dacă măsurați semnalele encoderului în cuadratură, cea mai bună opțiune este să utilizați cipul NI-TIO.

Cum funcționează encoderele

Un encoder este un traductor care vă permite să măsurați poziția sau distanța. Pentru a înțelege modul în care funcționează un encoder, examinați encoderul în cuadratură prezentat în ilustrația următoare.

1 Senzor de lumină, 2 Sursă de lumină, 3 arbore, 4 Disc rotativ, 5 Pista codului

Un encoder în cuadratură vă ajută să convertiți mișcarea rotativă într-un semnal măsurabil. Mișcarea de rotație care vă interesează este rotirea arborelui. S-ar putea să vă intereseze direcția în care arborele se rotește, viteza cu care arborele se rotește sau ambele. Un disc este atașat la arbore astfel încât să se rotească în aceeași direcție și la aceeași viteză ca arborele. Discul rotativ este plasat între o sursă de lumină și un senzor de lumină. Discul are un model de secțiuni opace și transparente alternante numit pistă de cod. O secțiune opacă blochează lumina de la sursă la senzor, iar o secțiune transparentă permite luminii să treacă de la sursă la senzor. Pista de cod este formată din două inele de secțiuni opace și transparente alternante. Fiecare inel produce un tren de impulsuri. Cele două inele sunt decalate astfel încât, în funcție de direcția rotirii discului, un tren de impulsuri îl conduce pe celălalt. Numărul de secțiuni opace și transparente determină câte impulsuri sunt produse pe rotație. Aceasta este o specificație importantă pentru a ști dacă urmăriți câte rotații a realizat arborele. Encoderul în cuadratură de pe DAQ Signal Accessory produce 24 de impulsuri pe rotație.

Encoder în cuadratură

Majoritatea encoderelor produc un semnal compatibil TTL care poate fi utilizat cu un contor. După cum ați văzut mai devreme, un encoder în cuadratură produce două trenuri de impulsuri. Cele două trenuri de impulsuri sunt denumite Canal A și Canal B. Canalul A și Canalul B vor fi întotdeauna defazate cu 90 de grade, așa cum se arată în ilustrația următoare. Canalul conducător este determinat de direcția de rotație. Dacă encoderul este rotit în sensul acelor de ceasornic, Canalul A va conduce Canalul B. Dacă encoderul este rotit în sens invers acelor de ceasornic Canalul B va conduce Canalul A.

Notă Este posibil ca unele encodere să nu producă un semnal adecvat pentru un contor. De exemplu, unele encodere produc un semnal diferențial și niciunul dintre cele patru cipuri contor NI nu acceptă intrări diferențiale. Dacă semnalul produs de encoder nu este compatibil cu cipul contor pe care îl utilizați, trebuie să utilizați condiționarea semnalului înainte de a trimite semnalul la contor.

Linie Up/Down

Pentru a măsura encoderele cu DAQ-STC, trebuie să utilizați o intrare specială la contor numită linie Up/Down. Linia Up/Down pentru contorul 0 este același pin ca DIO6 pe pinout (schema de conexiuni) și DIO7 pentru contorul 1. Linia Up/Down determină dacă un front activ al sursei mărește sau scade numărul. Dacă semnalul trimis către linia Up/Down este TTL high, un front activ al sursei mărește numărul. Dacă semnalul trimis către linia Up/Down este TTL low, un front activ al sursei scade numărul.

DAQ-STC și encodere

Pentru a măsura un encoder cu DAQ-STC, veți utiliza atât sursa, cât și linia Up/Down. Conectați canalul A la sursă și canalul B la linia Up/Down. Când conectați semnale de la DAQ Signal Accessory, observați Canalul B care este conectat la DIO6, deci singura conexiune pe care trebuie să o faceți este de la Canalul A la sursa contorului pe care îl utilizați. Configurați contorul pentru numărarea simplă a fronturilor și setați frontul activ la cădere. Numărul se schimbă atunci când se primește un front descendent pe Canalul A, iar Canalul B determină dacă numărul crește sau scade. Când encoderul este rotit în sensul acelor de ceasornic, canalul A conduce canalul B. Când canalul A conduce canalul B, frontul descendent al canalului A apare atunci când canalul B este high, deci numărul crește. Prin aceeași logică, când encoderul este rotit în sens invers acelor de ceasornic, numărul scade. Este standard pentru mișcarea în sensul acelor de ceasornic ca să crească numărul și mișcarea în sens invers acelor de ceasornic ca să diminueze numărul. Dacă doriți să comutați cele două, puteți seta frontul activ la creștere în loc de cădere.

Consultați Using Quadrature Encoders with E Series DAQ Boards Application Note pentru mai multe informații despre utilizarea contoarelor / cronometrelor DAQ-STC pentru interfața cu encoderele în cuadratură.

Exercițiul 10-8 Encoder în cuadratură

Obiectiv: Pentru a măsura rotația encoderului în cuadratură de pe DAQ Signal Accessory utilizând VI-uri Advanced Counter.

1. Pe DAQ Signal Accessory, conectați canalul A de la encoderul în cuadratură la sursa contorului 0.

Notă Intrarea Up/Down pentru contorul 0 este DIO6. Canalul B de pe DAQ Signal Accessory este conectat la DIO6. Prin urmare, nu este necesară nicio conexiune la intrarea Up/Down pentru contorul 0.

2. Deschideți Quadrature Encoder VI situat în folderul C:\Exercises\LabVIEW DAQ.

3. Modificați schema bloc așa cum se arată în figura următoare.

Terminalul count direction este specificat ca Externally Controlled. Pentru dispozitivele bazate pe STC, port0/line6 controlează direcția de numărare pentru contorul 0.

Panoul frontal

4. Reveniți la panoul frontal și setați contorul la DevX/ctr0, unde X corespunde numărului de dispozitiv al plăcii DAQ.

5. Rulați VI-ul. Rotiți lent butonul encoderului în cuadratură de pe DAQ Signal Accessory înainte și înapoi pentru a vedea cum afectează citirea de la contor.

Când rotiți butonul encoderului în cuadratură în sensul acelor de ceasornic, valoarea poziției crește, începând de la zero. Când rotiți butonul în sens invers acelor de ceasornic, valoarea poziției începe la zero și se numără înapoi de la 16 777 215 (= 224-1). Pentru a translata această valoare la un număr mai lizibil, cum ar fi –1, –2, ..., aveți două opțiuni.

• Puteți citi starea port0/line6 pentru a determina dacă contorul numără în sus sau în jos. Dacă port0/line6 este într-o stare de numărătoare în jos, aplicați o conversie a complementului lui 1 la citirea poziției.

• Puteți impune o limită definită de utilizator pentru numărul maxim. În această metodă, ignorați starea port0/line6. Când valoarea returnată de la contor este mai mare decât numărul maxim definit de utilizator, aplicați o conversie a complementului lui 1 la citirea poziției.

Modificați diagrama bloc pentru a implementa a doua opțiune, așa cum se arată în figura următoare.

În structura Case, setați numărul maxim definit de utilizator la zece. Când citirea poziției returnată de la contor este mai mare de zece, convertiți numărul la valoarea complement a lui 1. Când citirea poziției este mai mică de zece, lăsați valoarea neschimbată. Valoarea zece este un număr mic, dar este suficientă pentru a demonstra cum se folosește această opțiune.

6. Rulați VI-ul și rotiți encoderul în cuadratură în sens invers acelor de ceasornic. În loc să vedem cifrele foarte mari (în intervalul 16.777.215), vedem acum poziția în raport cu zero.

7. Salvați și închideți VI-ul.

Sfârșitul exercițiului 10-8

Rezumat

• Contoare acceptă și generează semnale TTL.

• Principalele componente ale unui contor sunt sursa, poarta, ieșirea și registrul de numărare.

• Dispozitivele NI pot avea unul dintre cele două cipuri diferite:

- DAQ-STC (24 biți) - Dispozitive din seria E
- NI-TIO (32 biți) — Dispozitive 660x

• Puteți utiliza VI-urile Easy Counter pentru a efectua numărarea fronturilor, generarea impulsurilor, măsurarea impulsului și măsurarea frecvenței.

• Un encoder în cuadratură este un traductor care convertește mișcarea rotativă în două trenuri de impulsuri care sunt defazate cu 90 de grade.