Inkrementell kodare - Incremental encoder

Image
Roterande inkrementellgivare med axel fäst vid dess genomgående öppning
Introduktion till inkrementalgivare, från VideoWiki script Incremental Encoder

En inkrementell pulsgivare är en linjär eller roterande elektromekanisk anordning som har två utgångssignaler , A och B , som utfärdar pulser när anordningen förflyttas. Tillsammans anger A- och B -signalerna både förekomst av och rörelseriktning. Många inkrementella pulsgivare har en ytterligare utsignal, typiskt betecknad index eller Z , vilket indikerar att kodaren är placerad vid en särskild referensposition. Vissa pulsgivare ger också en statusutgång (vanligtvis betecknat larm ) som indikerar interna felförhållanden, såsom lagerfel eller sensorfel.

Till skillnad från en absolut kodare indikerar en inkrementell kodare inte absolut position; den rapporterar bara förändringar i position och för varje rapporterad positionsändring rörelseriktningen. Följaktligen är det för att bestämma absolut position vid varje särskilt ögonblick nödvändigt att sända givarsignalerna till ett inkrementellt givargränssnitt , som i sin tur kommer att "spåra" och rapportera kodarens absoluta position.

Inkrementella kodare rapporterar positionsändringar nästan omedelbart, vilket gör att de kan övervaka rörelserna för höghastighetsmekanismer i nära realtid . På grund av detta används ofta inkrementella givare i applikationer som kräver exakt mätning och kontroll av position och hastighet .

Kvadraturutgångar

Image
Två kvadratiska vågor i kvadratur. Rörelseriktning anges med tecknet för A - B fasskillnad, som i detta fall är negativ på grund A spår B .

En inkrementell kodare använder en kvadraturkodare för att generera sina A- och B -utsignaler. Pulserna som avges från A och B utgångar är kvadratur-kodat, vilket innebär att när den inkrementella kodaren rör sig med en konstant hastighet, den A och B vågformerna är fyrkantsvågor och det finns en 90 graders fasskillnad mellan A och B .

Vid varje viss tidpunkt kommer fasskillnaden mellan A- och B -signalerna att vara positiva eller negativa beroende på kodarens rörelseriktning. I fallet med en roterande givare är fasskillnaden +90 ° för rotation medurs och −90 ° för rotation moturs, eller vice versa, beroende på enhetens konstruktion.

Pulsernas frekvens på A- eller B -utgången är direkt proportionell mot kodarens hastighet (positionsändringshastighet); högre frekvenser indikerar snabb rörelse, medan lägre frekvenser indikerar långsammare hastigheter. Statiska, oförändrade signaler matas ut på A och B när kodaren är orörlig. I fallet med en roterande kodare indikerar frekvensen hastigheten för kodarens axelrotation, och i linjära kodare anger frekvensen hastigheten för linjär transversal.

Konceptuella ritningar av avkänningsmekanismer för kvadraturkodare

Upplösning

Upplösningen för en inkrementell kodare är ett mått på precisionen för positionsinformationen den producerar. Kodarupplösning specificeras vanligtvis i termer av antalet A (eller B ) pulser per förskjutande enhet eller, motsvarande, antalet A (eller B ) kvadratvågscykler per enhetsförskjutning. När det gäller roterande givare anges upplösning som antalet pulser per varv (PPR) eller cykler per varv (CPR), medan linjär kodarupplösning typiskt anges som antalet pulser som utfärdas för ett visst linjärt traversalavstånd (t.ex. 1000 pulser per mm ).

Detta står i kontrast till mätarens upplösning för kodaren, vilket är den minsta positionsändring som kodaren kan upptäcka. Varje signalkantA eller B indikerar en upptäckt positionsändring. Eftersom varje fyrkantvågscykel på A (eller B ) omfattar fyra signalkanter (stigande A , stigande B , fallande A och fallande B ), motsvarar kodarens mätupplösning en fjärdedel av förskjutningen representerad av en fullständig A- eller B- utgångscykel . Till exempel har en 1000 puls-per-mm linjär pulsgivare en upplösning per cykel på 1 mm / 1000 cykler = 1 μm, så denna pulsgivares upplösning är 1 μm / 4 = 250 nm.

Symmetri och fas

Image
Inkrementella pulsgivare uppvisar symmetri och fasfel på grund av sensorfel

När rör sig med konstant hastighet, en idealisk inkrementalgivare skulle utgångs perfekta fyrkantiga vågor på A och B (dvs pulserna skulle vara exakt 180 ° bred) med en fasskillnad av exakt 90 ° mellan A och B . I riktiga pulsgivare är dock pulsbredderna på grund av sensorbrister aldrig exakt 180 ° och fasskillnaden aldrig exakt 90 °. Vidare varierar A- och B -pulsbredderna från en cykel till en annan (och från varandra) och fasskillnaden varierar vid varje A- och B -signalkant. Följaktligen kommer både pulsbredden och fasskillnaden att variera över ett värdeintervall.

För varje särskild kodare definieras pulsbredd- och fasskillnadsområdena av "symmetri" respektive "fas" (eller "fas") specifikationer. Till exempel, när det gäller en kodare med symmetri specificerad som 180 ° ± 25 °, garanteras bredden på varje utgångspuls vara minst 155 ° och högst 205 °. På samma sätt, med fas specificerad som 90 ° ± 20 °, kommer fasskillnaden vid varje A- eller B -kant att vara minst 70 ° och inte mer än 110 °.

Signaltyper

Inkrementella pulsgivare använder olika typer av elektroniska kretsar för att driva (sända) deras utsignaler, och tillverkare har ofta möjlighet att bygga en särskild kodningsmodell med någon av flera drivrutintyper. Vanligt tillgängliga förartyper inkluderar öppen kollektor, mekanisk, push-pull och differential RS-422.

Öppen samlare

Image
Schematisk diagram över en typisk öppen samlarförare. Utmatningsuppdragningsmotståndet är inbyggt i vissa kodare; om det inte är inbyggt krävs ett externt motstånd.

Öppna kollektordrivrutiner fungerar över ett brett spektrum av signalspänningar och kan ofta sänka betydande utström, vilket gör dem användbara för direktdrivning av strömslingor , opto-isolatorer och fiberoptiska sändare .

Eftersom den inte kan strömkälla måste utgången från en öppen kollektordrivrutin anslutas till en positiv likspänning via ett uppdragningsmotstånd . Vissa pulsgivare tillhandahåller ett internt motstånd för detta ändamål; andra gör det inte och kräver därför ett externt dragmotstånd. I det senare fallet är motståndet typiskt placerat nära kodningsgränssnittet för att förbättra brusimmuniteten.

Kodarens logiska signalspänning på hög nivå bestäms av den spänning som appliceras på uppdragningsmotståndet ( V OH i schemat), medan utgångsströmmen på låg nivå bestäms av både signalspänningen och belastningsmotståndet (inklusive pull-up) motstånd). När föraren växlar från den låga till den höga logiska nivån fungerar belastningsmotståndet och kretsens kapacitans tillsammans för att bilda ett lågpassfilter , som sträcker (ökar) signalens stigningstid och begränsar därmed dess maximala frekvens. Av den anledningen används vanligtvis inte kollektordrivrutiner när kodaren kommer att mata ut höga frekvenser.

Mekanisk

Image
En kretskortsmonterad, roterande mekanisk inkrementell pulsgivare

Mekaniska (eller kontakt ) inkrementella givare använder glidande elektriska kontakter för att direkt generera A- och B -utsignalerna. Typiskt är kontakterna elektriskt anslutna till signaljord när de är stängda så att utgångarna kommer att "drivas" låga, vilket gör dem till mekaniska ekvivalenter för öppna kollektordrivrutiner och därför underkastade samma signalkonditioneringskrav (dvs externt uppdragningsmotstånd).

Den maximala utgångsfrekvensen begränsas av samma faktorer som påverkar uttag med öppen kollektor och begränsas ytterligare av kontaktstopp-som måste filtreras av givargränssnittet-och av de mekaniska kontakternas driftshastighet, vilket gör dessa enheter opraktiska för höga frekvensdrift. Dessutom upplever kontakterna mekaniskt slitage under normal drift, vilket begränsar livslängden för dessa enheter. Å andra sidan är mekaniska givare relativt billiga eftersom de inte har någon intern, aktiv elektronik. Sammantaget gör dessa attribut mekaniska pulsgivare en bra passform för låga, lågfrekventa applikationer.

PCB- och panelmonterade mekaniska inkrementella givare används i stor utsträckning som handmanövrerade kontroller i elektronisk utrustning. Sådana enheter används som volymkontroller i ljudutrustning, som spänningskontroller i strömförsörjningar för bänkar och för en mängd andra funktioner.

Tryck dra

Push-pull-utgångar (t.ex. TTL ) används vanligtvis för direkt gränssnitt till logikkretsar. Dessa är väl lämpade för applikationer där givaren och gränssnittet är placerade nära varandra (t.ex. sammankopplade via kretsledare eller korta, skärmade kabeldragningar) och drivs från en gemensam strömförsörjning, vilket undviker exponering för elektriska fält, jordslingor och överföringslinjeffekter som kan förstöra signalerna och därmed störa positionsspårning, eller ännu värre, skada kodarens gränssnitt.

Differentialpar

Image
Differentialutgångsvågformer från en inkrementell kodare

Differential RS-422- signalering är vanligtvis att föredra när pulsgivaren kommer att mata ut höga frekvenser eller vara placerad långt bort från pulsgivarens gränssnitt, eller när pulsgivarsignalerna kan utsättas för elektriska fält eller common-mode spänningar, eller när gränssnittet måste kunna upptäcka anslutningsproblem mellan kodare och gränssnitt. Exempel på detta inkluderar CMM och CNC -maskiner, industriell robotik , fabriksautomation och rörelseplattformar som används i flygplan och rymdfarkostsimulatorer.

När RS-422-utgångar används ger kodaren ett differentialledarpar för varje logisk utgång; exempelvis "A" och "/A" är vanligt förekommande beteckningar för det aktiva höga och aktiva låga differentialparet som innefattar kodarens A- logiska utgång. Följaktligen måste kodargränssnittet tillhandahålla RS-422-linjemottagare för att konvertera inkommande RS-422-par till logik med en enda ände.

Huvudansökningar

Positionsspårning

Inkrementella kodare används vanligtvis för att övervaka de fysiska positionerna för mekaniska anordningar. Den inkrementella kodaren är mekaniskt ansluten till enheten som ska övervakas så att dess utsignaler kommer att förändras när enheten rör sig. Exempel på enheter inkluderar kulorna i mekaniska datormöss och styrbollar, kontrollknappar i elektronisk utrustning och roterande axlar i radarantenner.

En inkrementell kodare håller inte reda på, och dess utgångar anger inte heller den aktuella kodarens position; den rapporterar bara inkrementella förändringar i position. Följaktligen är det nödvändigt att tillhandahålla extern elektronik som kommer att "spåra" positionen för att bestämma kodarens position vid varje särskilt ögonblick. Denna externa krets, som är känd som ett inkrementellt kodningsgränssnitt, spårar position genom att räkna inkrementella lägesändringar.

När det tar emot varje rapport om inkrementell lägesändring (indikerat med en övergång av A- eller B -signalen) kommer ett kodargränssnitt att ta hänsyn till fasförhållandet mellan A och B och, beroende på tecken på fasskillnaden, räkna upp eller ner. Det kumulativa "räknar" -värdet indikerar den sträcka som har rest sedan spårningen började. Denna mekanism säkerställer noggrann positionsspårning i dubbelriktade applikationer och i enriktad applikation förhindrar de falska räkningar som annars skulle bero på vibrationer eller mekanisk dithering nära en AB -kodövergång.

Förskjutningsenheter

Ofta måste kodarens antal uttryckas i enheter som meter, miles eller varv. I sådana fall konverteras räkningarna till de önskade enheterna genom att multiplicera med förhållandet mellan kodarens förskjutning per räkning :

.

Vanligtvis utförs denna beräkning av en dator som läser räkningarna från det inkrementella kodningsgränssnittet. Till exempel, när det gäller en linjär inkrementell kodare som producerar 8000 räkningar per millimeter resa, beräknas positionen i millimeter enligt följande:

.

Hemvist

För att ett inkrementellt givargränssnitt ska kunna spåra och rapportera absolut position måste kodarens räkningar korreleras till en referensposition i det mekaniska system till vilket givaren är ansluten. Detta görs vanligen genom att lokalisera systemet, som består av att flytta det mekaniska systemet (och kodaren) tills det ligger i linje med en referensposition, och sedan blockera den tillhörande absoluta positionen som räknas in i kodarens gränssnitts räknare.

En närhetssensor är inbyggd i några mekaniska system för att underlätta homing, som matar ut en signal när det mekaniska systemet är i sitt "hem" (referens) läge. I sådana fall homas det mekaniska systemet genom att flytta det tills kodningsgränssnittet tar emot givarsignalen, varefter motsvarande positionsvärde fastnar i positionsräknaren.

I vissa roterande mekaniska system (t.ex. roterande radarantenner) är "positionen" av intresse rotationsvinkeln relativt en referensorientering. Dessa använder vanligtvis en roterande inkrementell kodare som har en index (eller Z ) utsignal. Den index -signalen är satt när axeln är i dess referensorientering, vilket bringar givargränssnitt till jam referensvinkeln in i dess positionsräknaren.

Vissa inkrementella kodarapplikationer saknar referenspositionsdetektorer och måste därför implementera homing på andra sätt. Till exempel kommer en dator, när du använder en mus- eller styrplatta -pekdon, vanligtvis att hemma enheten genom att anta en central, ursprunglig skärmposition vid uppstart och stoppa motsvarande räkningar i X- och Y -positionsräknarna. När det gäller panelkodare som används som handmanövrerade kontroller (t.ex. ljudvolymkontroll) hämtas vanligtvis den ursprungliga positionen från blixt eller annat icke-flyktigt minne vid uppstart och fastnar i positionsräknaren och vid avstängning antalet aktuella positioner sparas i icke-flyktigt minne för att fungera som utgångsläge för nästa uppstart.

Hastighetsmätning

Image
Mekaniska transportörer som denna använder vanligtvis roterande inkrementella givare som återkopplingsanordningar för varvtalsreglering med sluten slinga

Inkrementella givare används vanligen för att mäta hastigheten på mekaniska system. Detta kan göras för övervakning eller för att ge feedback för rörelsekontroll , eller båda. Utbredda tillämpningar av detta inkluderar hastighetskontroll av radarantennrotation och materialtransportörer och rörelsekontroll i robotik , CMM och CNC -maskiner.

Inkrementella givargränssnitt handlar främst om att spåra mekanisk förskjutning och mäter vanligtvis inte direkt hastighet. Följaktligen måste hastigheten indirekt mätas genom att ta derivatan av positionen med avseende på tid. Positionssignalen är inneboende kvantiserad , vilket innebär utmaningar för att ta derivatet på grund av kvantiseringsfel, särskilt vid låga hastigheter.

Kodarhastighet kan bestämmas antingen genom att räkna eller genom att timera kodarens utmatningspulser (eller kanter). Det resulterande värdet indikerar en frekvens respektive period från vilken hastigheten kan beräknas. Hastigheten är proportionell mot frekvens och omvänt proportionell mot period.

Efter frekvens

Om positionssignalen samplas (en diskret tidssignal) detekteras och räknas pulserna (eller pulskanterna) av gränssnittet, och hastigheten beräknas vanligtvis av en dator som har läsåtkomst till gränssnittet. För att göra detta läser datorn positionräkningarna från gränssnittet vid tidpunkten och läser sedan vid något senare tillfälle räkningarna igen för att erhålla . Medelhastigheten under intervallet till beräknas sedan:

.

Det resulterande hastighetsvärdet uttrycks som räkningar per tidsenhet (t.ex. räkningar per sekund). I praktiken är det dock ofta nödvändigt att uttrycka hastigheten i standardiserade enheter som meter per sekund, varv per minut (RPM) eller miles per timme (MPH). I sådana fall kommer programvaran att ta hänsyn till förhållandet mellan räkningar och önskade avståndsenheter, liksom förhållandet mellan provtagningsperioden och önskade tidsenheter. Till exempel, i fallet med en roterande inkrementell kodare som producerar 4096 räkningar per varv, som läses en gång per sekund, skulle programvaran beräkna varvtalet enligt följande:

.

När man mäter hastigheten på detta sätt är mätupplösningen proportionell mot både kodarens upplösning och samplingsperioden (den förflutna tiden mellan de två samplen); mätupplösningen blir högre när provtagningsperioden ökar.

Efter period

Alternativt kan en hastighetsmätning rapporteras vid varje pulsgivarutgångspuls genom att mäta pulsbredden eller perioden. När denna metod används utlöses mätningar vid specifika positioner istället för vid specifika tider. Hastighetsberäkningen är densamma som visas ovan (räkningar / tid), även om mätningens start- och stopptider ( och ) i detta fall tillhandahålls av en tidsreferens.

Denna teknik undviker positionskvantiseringsfel men introducerar fel relaterade till kvantisering av tidsreferensen. Det är också mer känsligt för sensoridealiteter som fasfel, symmetrifel och variationer i övergångslägen från deras nominella värden.

Gränssnitt för inkrementell kodare

PCI Express 6-axlig inkrementell encoder-gränssnitt.Input connectors for encoder signals RS-422 line receivers FPGA PCI Express edge connector
PCI Express 6-axlig inkrementell encoder-gränssnitt. Uppifrån och ner: ingångskontakter (L) och linjemottagare (R); FPGA; bakplanskontakt

Ett inkrementellt kodargränssnitt är en elektronisk krets som tar emot signaler från en inkrementell kodare, bearbetar signalerna för att producera absolut position och annan information och gör den resulterande informationen tillgänglig för externa kretsar.

Inkrementella kodargränssnitt implementeras på en mängd olika sätt, inklusive som ASIC , som IP -block inom FPGA , som dedikerade perifera gränssnitt i mikrokontroller och, när höga räkningar inte krävs, som undersökta (programvaruövervakade) GPIO: er .

Oavsett implementering måste gränssnittet sampla kodarens A- och B -utsignaler tillräckligt ofta för att detektera varje AB -tillståndsförändring innan nästa tillståndsändring inträffar. Vid detektering av en tillståndsförändring, kommer det att öka eller minska positions räknas baserat på om en ledare eller spår B . Detta görs vanligtvis genom att lagra en kopia av det tidigare AB -tillståndet och, vid tillståndsändring, använda nuvarande och tidigare AB -tillstånd för att bestämma rörelseriktning.

Linjemottagare

Inkrementella givargränssnitt använder olika typer av elektroniska kretsar för att ta emot kodningsgenererade signaler. Dessa linjemottagare fungerar som buffertar för att skydda nedströms gränssnittskretsar och tillhandahåller i många fall också signalkonditioneringsfunktioner.

Enstaka

Inkrementella kodargränssnitt använder vanligtvis Schmitt- triggeringångar för att ta emot signaler från kodare som har enkla (t.ex. push-pull, öppna kollektor) utgångar. Denna typ av linjemottagare avvisar inneboende lågnivåbrus (med hjälp av sin ingångshysteres) och skyddar nedströms kretsar från ogiltiga (och möjligen destruktiva) logiska signalnivåer.

Differentiell

RS-422 linjemottagare används vanligtvis för att ta emot signaler från kodare som har differentialutgångar. Denna typ av mottagare avvisar brus i vanligt läge och omvandlar inkommande differentialsignaler till den enda ändform som krävs av nedströms logiska kretsar.

I uppgiftskritiska system kan det krävas ett kodargränssnitt för att upptäcka förlust av insignaler på grund av effektförlust av kodare, signaldrivrutinsfel, kabelfel eller kabelkoppling. Detta uppnås vanligtvis genom att använda förbättrade RS-422-linjemottagare som detekterar frånvaron av giltiga insignaler och rapporterar detta tillstånd via en "signalförlorad" statusutgång. Vid normal drift kan det uppstå fel (korta pulser) på statusutgångarna under ingångstillståndsövergångar; vanligtvis filtrerar kodargränssnittet statussignalerna för att förhindra att dessa felaktigt tolkas som förlorade signaler. Beroende på gränssnittet kan efterföljande behandling innefatta att generera en avbrottsbegäran vid detektering av signalförlust och att skicka meddelande till applikationen för felloggning eller felanalys.

Klocksynkronisering

Image
En 2-FF-synkroniserare. Linjemottagarens utsignal matas till D in ; D -out -signalen sänds till kvadraturavkodaren.
Image
Vid höga klockfrekvenser kan synkronisatorerna använda tre (som detta) eller fler flip-flops för att minska MTBF

Ett inkrementellt kodargränssnitt består till stor del av sekventiell logik som stimuleras av en klocksignal . Emellertid är de inkommande kodarsignalerna asynkrona med avseende på gränssnittsklockan eftersom deras tidpunkt enbart bestäms av kodarens rörelse. Följaktligen måste utsignalerna från A och B (även Z och larm , om de används) linjemottagare synkroniseras med gränssnittsklockan, både för att undvika fel på grund av metastabilitet och för att tvinga signalerna till kvadrataturavkodarens klockdomän.

Vanligtvis utförs denna synkronisering av oberoende enkelsignalsynkroniserare, såsom de två vippsynkroniserare som ses här. Vid mycket höga klockfrekvenser, eller när en mycket låg felfrekvens behövs, kan synkronisatorerna inkludera ytterligare flip-flops för att uppnå en acceptabelt låg bitfelhastighet .

Ingångsfilter

I många fall måste ett kodargränssnitt filtrera de synkroniserade kodarsignalerna innan de behandlas vidare. Detta kan krävas för att avvisa lågnivåbrus och korta, stora amplitudbruspikar som vanligtvis förekommer i motorapplikationer och, för mekaniska kodare, för att avvisa A och B för att undvika räkningsfel på grund av mekanisk kontaktstopp .

Hårdvarubaserade gränssnitt tillhandahåller ofta programmerbara filter för givarsignalerna, som ger ett brett spektrum av filterinställningar och därmed tillåter dem att avbryta kontakter eller undertrycka transienter som härrör från brus eller långsamt svängande signaler, efter behov. I mjukvarubaserade gränssnitt är A och B vanligtvis anslutna till GPIO: er som samplas (via polling eller kantavbrott) och avstängs av programvara.

Kvadraturavkodare

Image
En kvadraturavkodare omvandlar A- och B -signalerna från en inkrementell kodare till riktnings- och räknaraktiveringssignaler , som används för att styra en synkron upp/ned -räknare

Inkrementella givargränssnitt använder vanligtvis en kvadraturavkodare för att konvertera A- och B- signalerna till riktningen och räkna aktiveringssignaler (klockaktivering) som behövs för att styra en dubbelriktad (upp- och nedräkning) synkronräknare .

Typiskt implementeras en kvadraturavkodare som en finite-state-maskin (FSM) som samtidigt samplar A- och B- signalerna och sålunda producerar amalgamat "AB" -prover. När varje nytt AB -prov förvärvas kommer FSM att lagra det tidigare AB -provet för senare analys. FSM utvärderar skillnaderna mellan de nya och tidigare AB -tillstånden och genererar riktningar och räknaraktiveringssignaler som är lämpliga för den detekterade AB -tillståndssekvensen.

Tabell för kvadrataturavkodare
Beskrivning AB -tillstånd Utgångar
Tidigare Nuvarande CE DIR FELA
x1 x2 x4
Flyttade ett steg i "framåt" -riktning
( A leder B )
00 10 1 1 1 1 0
10 11 0 0
11 01 1
01 00 0
Flyttade ett steg i "omvänd" riktning
( B leder A )
00 01 0 0
01 11 1
11 10 0
10 00 1 1
Ingen upptäckt rörelse 00 00 0 X
01 01
10 10
11 11
Flyttade ett obestämt antal steg 00 11 1
01 10
10 01
11 00

Statliga övergångar

I två på varandra följande AB -prover kan logiknivån för A eller B ändras eller så kan båda nivåerna förbli oförändrade, men vid normal drift kommer A och B aldrig att båda ändras. I detta avseende är varje AB-prov effektivt en tvåbitars grå kod .

Normala övergångar

När endast A eller B ändrar tillstånd antas det att kodaren har flyttat ett steg av sin mätupplösning och följaktligen kommer kvadraturavkodaren att hävda sin räknaraktiveringsutgång för att tillåta att räkningarna ändras. Beroende på pulsgivarens färdriktning (framåt eller bakåt), kommer avkodaren att hävda eller förneka dess riktningsutgång för att få räkningarna att öka eller minska (eller vice versa).

När varken A eller B ändras, antas det att givaren inte har flyttats och så kvadratur dekoder förnekar sin räkning aktivera utgång, varigenom de räknas vara oförändrad.

Fel

Om både A- och B -logiklägena ändras i på varandra följande AB -sampel har kvadraturavkodaren inget sätt att bestämma hur många steg eller i vilken riktning kodaren har rört sig. Detta kan hända om kodarhastigheten är för snabb för avkodaren att bearbeta (dvs. hastigheten för AB -tillståndsförändringar överstiger kvadraturavkodarens samplingshastighet; se Nyquist -hastigheten ) eller om A- eller B -signalen är bullrig .

I många kodarapplikationer är detta en katastrofal händelse eftersom räknaren inte längre ger en exakt indikation på kodarens position. Följaktligen kommer kvadraturavkodare ofta att mata ut en ytterligare felsignal som hävdas när A- och B -tillstånden ändras samtidigt. På grund av svårighetsgraden och den tidskänsliga karaktären hos detta tillstånd är felsignalen ofta ansluten till en avbrottsbegäran .

Klockmultiplikator

En kvadraturavkodare tillåter inte nödvändigtvis att räkningarna ändras för varje inkrementell positionsändring. När en avkodare detekterar en inkrementell lägesändring (på grund av en övergång av A eller B , men inte båda), kan den tillåta räkningarna att ändras eller så kan den hämma räkningen, beroende på AB -tillståndsövergången och avkodarens klockmultiplikator .

Klockmultiplikatorn för en kvadraturavkodare heter så eftersom den resulterar i en räknehastighet som är en multipel av A- eller B -pulsfrekvensen. Beroende på avkodarens design kan klockmultiplikatorn kopplas in i konstruktionen eller kan konfigureras i driftstid via insignaler.

Klockmultiplikatorns värde kan vara ett, två eller fyra (vanligtvis betecknade "x1", "x2" och "x4" eller "1x", "2x" och "4x"). I fallet med en x4 -multiplikator kommer räkningarna att förändras för varje förändring av AB -tillståndet, vilket resulterar i en räknehastighet som är lika med fyra gånger A- eller B -frekvensen. X2- och x1 -multiplikatorerna gör att räkningarna kan ändras på vissa, men inte alla AB -tillståndsändringar, som visas i kvadraturavkodarens tillståndstabell ovan (notera: denna tabell visar en av flera möjliga implementeringar för x2- och x1 -multiplikatorer; andra implementeringar kan möjliggöra räknar vid olika AB -övergångar).

Lägesrapportering

Ur en applikations perspektiv är det grundläggande syftet med ett inkrementellt kodningsgränssnitt att rapportera positionsinformation på begäran. Beroende på applikationen kan det vara så enkelt som att låta datorn läsa lägesräknaren när som helst under programstyrning. I mer komplexa system kan positionsräknaren samplas och bearbetas av mellanliggande tillståndsmaskiner, som i sin tur gör proverna tillgängliga för datorn.

Provregister

Ett kodargränssnitt använder vanligtvis ett provregister för att underlätta positionsrapportering. I det enkla fallet där datorn kräver positionsinformation under programkontroll, kommer gränssnittet att sampla positionsräknaren (dvs kopiera de aktuella positionsräkningarna till provregistret) och sedan kommer datorn att läsa räkningarna från provregistret. Denna mekanism resulterar i atomdrift och säkerställer därmed integriteten hos provdata, som annars kan vara i fara (t.ex. om provets ordstorlek överstiger datorns ordstorlek).

Utlöst provtagning

I vissa fall kanske datorn inte kan programmera (via programmerad I/O ) att skaffa positionsinformation med tillräcklig timingprecision. Exempelvis kan datorn vara oförmögen att kräva prover vid ett tidigt periodiskt schema (t.ex. för hastighetsmätning) på grund av variationer i programvarutiming. I vissa applikationer är det också nödvändigt att kräva prover vid förekomst av externa händelser, och datorn kanske inte kan göra det i tid. Vid högre kodarhastigheter och upplösningar kan positionsmätningsfel uppstå även när avbrott används för att kräva prover, eftersom kodaren kan röra sig mellan den tid IRQ signaleras och provbehovet utfärdas av avbrottshanteraren.

För att övervinna denna begränsning är det vanligt att ett inkrementellt encoder-gränssnitt implementerar hårdvarutriggerad sampling, vilket gör det möjligt att sampla positionsräknaren vid exakt kontrollerade tider som dikteras av en triggersignal. Detta är viktigt när positionen måste samplas vid särskilda tidpunkter eller som svar på fysiska händelser, och väsentligt i applikationer som rörelseövervakning med flera axlar och CMM, där positionsräknare för flera kodargränssnitt (en per axel) måste vara samtidigt urval.

I många applikationer måste datorn veta exakt när varje sampel förvärvades och, om gränssnittet har flera triggeringångar, vilken signal utlöste samplingsinsamlingen. För att uppfylla dessa krav kommer gränssnittet vanligtvis att innehålla en tidsstämpel och utlösarinformation i varje prov.

Händelsemeddelande

Samplingsutlösare är ofta asynkrona med avseende på programkörning. Följaktligen, när positionsräknaren samplas som svar på en triggersignal, måste datorn meddelas (vanligtvis via avbrott ) att ett prov är tillgängligt. Detta gör att programvaran kan vara händelsestyrd (jämfört med pollad ), vilket underlättar responsivt systembeteende och eliminerar polling-omkostnader.

Exempel på FIFO

På varandra följande samplingsutlösare kan ske snabbare än datorn kan bearbeta de resulterande proverna. När detta händer kommer informationen i provregistret att skrivas över innan den kan läsas av datorn, vilket resulterar i dataförlust. För att undvika detta problem tillhandahåller vissa inkrementella kodargränssnitt en FIFO -buffert för prover. När varje prov förvärvas lagras det i FIFO. När datorn kräver ett prov är det tillåtet att läsa det äldsta exemplet i FIFO.

Anteckningar

Referenser

externa länkar