Mis vahe on Arduino potentsiomeetril ja pöörleval kodeerijal

Mis Vahe On Arduino Potentsiomeetril Ja Poorleval Kodeerijal



Pöörlemise või asendi tuvastamiseks kasutatakse nii potentsiomeetreid kui ka pöörlevaid koodereid. Need on elektromehaanilised seadmed, mida kasutatakse elektroonika valdkonnas mitmesuguste rakendustega. Neid saab ka Arduinoga liidestada erinevate projektide tegemiseks. Selle artikli eesmärk on näidata põhimõttelisi erinevusi potentsiomeetri ja pöörleva kodeerija vahel.

Mis on potentsiomeeter

Potentsiomeeter on reostaat või me võime seda nimetada muutuvaks takistiks. Takistuse väärtus varieerub sõltuvalt potentsiomeetri võlli pöörlemisest. Potentsiomeetrid saavad keerata ainult määratud kaugusele. On nii analoog- kui ka digitaalseid potentsiomeetreid, kuid need on peaaegu sarnased. Analoogpotentsiomeetereid saab ühendada Arduino, Raspberry Pi ja muude seadmete mikrokontrolleritega. Potentsiomeetril on kolm tihvti, mis on sisendpinge kontakt Vcc, Ground Pin GND ja sisendsignaali viik. Signaali viik annab sisendi Arduinole.









Mis on Rotary Encoder

Pöördkoodrid tunnevad ära pöördnupu nurgaasendi ja saadavad signaali mikrokontrollerile või muule seadmele, millega need on ühendatud. Sellel on ühtlaselt asetsevate kontaktpindadega ketas, mis on ühendatud ühise tihvtiga. Pöördkooderitel on ka sisseehitatud surunupp või pöördlüliti, mis annab SISSE ja VÄLJA signaale vastavalt konkreetsetele nõuetele.







Pöördkodeerija pinout-skeem ja pin-kirjeldus

Allpool toodud diagrammil on kujutatud pöörleva koodri kontaktid. Neid tihvte kirjeldatakse järgmiselt:

Out B või CLK



See tihvt annab väljundi, mitu korda nupp või pöördkooder on pööranud. Iga kord, kui nuppu keeratakse, lõpetab CLK tsükli HIGH ja LOW. Seda arvestatakse ühe pöördena.

Out A või DT

See on pöörleva kooderi teine ​​väljundtihvt, mis määrab pöörlemissuuna. See jääb CLK signaalist maha 90° võrra. Seega, kui selle olek ei ole võrdne CLK olekuga, on pöörlemissuund päripäeva, vastasel juhul vastupäeva.

Lüliti

Lülititihvti kasutatakse selleks, et kontrollida, kas surunupp on vajutatud või mitte.

Vcc

See kontakt on ühendatud 5 V vooluvõrku

GND

See tihvt on ühendatud maandusega

Erinevus potentsiomeetri ja pöörleva kodeerija vahel

Spetsifikatsioon Potentsiomeeter Pöörlev kodeerija
Pöörlemine Potentsiomeetrit saab pöörata ainult ühes suunas ja seda ka kolm neljandikku ringist. Rotary Encoder on võimeline pöörlema ​​pidevalt 360° nii päri- kui ka vastupäeva.
Analoog- või digitaalseade Potentsiomeeter on enamasti analoogsisendseade, mis mõõdab asendi muutust takisti väärtuse muutumise kaudu Pöördkooder on digitaalne sisendseade, mis tuvastab nurgaasendi ja annab digitaalseid väärtusi.

Sisendpositsioonide arv Potentsiomeetril on lõpmatu arv sisendpositsioone, millelt saab väärtusi võtta, kuna see on analoogseade Pöördkooderitel on piiratud arv sisestuspositsioone.

Potentsiomeetri seadistamine Arduinoga

Potentsiomeetrit on lihtsam seadistada Arduino kui pöörleva kodeerijaga. Potentsiomeetril on ainult kolm kontakti VCC, GND ja SISEND, mis on ühendatud Arduinoga. Potentsiomeetri liidestamine Arduinoga on näidatud allpool:

Arduino potentsiomeetri programmeerimine on lihtsam kui pöörleva kodeerija puhul. Allpool on toodud nende mõlema süntaksikoodide näidised.

Potentsiomeetri näidiskood

const int pot = A0; // Deklareeri sisendpin
tühine seadistus ( ) {
   pinMode ( pott, SISEND ) ; // Seadistusväärtus võetud potentsiomeetrist nagu sisend
Serial.begin ( 9600 ) ;
}
tühi silmus ( ) {
int potValue = analoogRead ( pott ) ; // Potentsiomeetri poolt võetud sisendi väärtuse lugemine
kaart ( potValue, 0 , 1023 , 0 , 255 ) ; // Sisendväärtuse skaleerimine, et see sobiks 8 - natuke
Serial.println ( potValue ) ; // Prindib potentsiomeetrisse sisestatud väärtuse
viivitus ( 100 ) ;
}

Potentsiomeetri kood on väga lihtne ja lihtne. Arduino analoogsisendi viik deklareeritakse lihtsalt nii, et see võtab potentsiomeetrilt sisendi ning seejärel kasutatakse analoogRead() ja map() funktsioone, et lugeda ja anda potentsiomeetri näidu täpne väärtus.

Rotary Encoderi liidestamine Arduinoga

Pöördkooderil on viis kontakti. Pöörleva kodeerija VCC ja GND on ühendatud Arduino omaga. Ülejäänud tihvtid CLK, DT ja SW on ühendatud Arduino digitaalsisendi tihvtidega.

Arduino kood pöörleva kodeerija jaoks

// Rotary kodeerija sisendid
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int loendur = 0 ;
int currentCLKState;
int lastCLKState;
String currentDirection = '' ;
allkirjastamata long lastButtonPressTime = 0 ;
tühine seadistus ( ) {
// Määrake kodeerija kontaktid nagu sisendid
    pinMode ( CLK_PIN, SISEND ) ;
    pinMode ( DT_PIN, SISEND ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Seadistage jadamonitor
Serial.begin ( 9600 ) ;
// Lugege CLK algolekut
lastCLKState = digitaalne lugemine ( CLK_PIN ) ;
}
tühi silmus ( ) {
// Lugege CLK hetkeseisu
currentCLKState = digitalRead ( CLK_PIN ) ;
// Kui viimane ja CLK praegune olek on erinevad, siis tekkis pulss
// Reageerige ainult 1 oleku muutmine topeltloendamise vältimiseks
kui ( praeguneCLKSolek ! = viimaneCLKSolek && praeguseCLKSolek == 1 ) {
// Kui DT olek erineb CLK olekust, siis
// kooder pöörleb vastupäeva, seega vähendage
kui ( digitaalne lugemine ( DT_PIN ) ! = praegune CLKSolek ) {
counter--;
praeguseDirection = 'CCW' ;
} muidu {
// Kodeerija pöörleb päripäeva, seega suurendage
loendur++;
praeguseDirection = 'CW' ;
}
Serial.print ( 'Pöörlemise suund:' ) ;
Serial.print ( praegune suund ) ;
Serial.print ( ' | Vastuväärtus: ' ) ;
Serial.println ( loendur ) ;
}
// Pea meeles viimane CLK olek
lastCLKState = praeguneCLKSolek;
// Lugege nupu olekut
int buttonState = digitaalneRead ( SW_PIN ) ;
// Kui tuvastame LOW signaali, vajutatakse nuppu
kui ( buttonState == LOW ) {
// Kui kuupäevast on möödunud 50 ms viimane MADAL pulss tähendab, et
// nuppu on vajutatud, vabastatud ja uuesti vajutatud
kui ( millis ( ) - lastButtonPressTime > viiskümmend ) {
Serial.println ( 'Nupp vajutatud!' ) ;
}
// Pea meeles viimane nupuvajutuse sündmus aega
lastButtonPressTime = millis ( ) ;
}
// Pane sisse väike viivitus abi tõrjuma näitu
viivitus ( 1 ) ;
}

Ülaltoodud koodis kontrollitakse CLK viigu olekut funktsioonis loop(). Kui see ei ole võrdne eelmise olekuga, näitab see, et pöördnupp on pöörlenud. Nüüd, et kontrollida nupu pöörlemissuunda, võrreldakse CLK praegust olekut DT olekuga. Kui mõlemad olekud on ebavõrdsed, näitab see, et nupp on päripäeva pööratud ja loendur suurendab selle väärtust, et näidata pöördnupu asendit. Vastupidisel juhul vähendatakse vastukaalu.

Rakendused

Potentsiomeetreid kasutatakse peamiselt seal, kus on vaja juhtimisfunktsiooni. Neid kasutatakse helitugevuse reguleerimisel, LED-heleduse reguleerimisel. Teisest küljest pakuvad pöörlevad kodeerijad laia valikut rakendusi. Neid kasutatakse robootikas, meditsiiniseadmetes, automatiseerimises ja mängudes.

Järeldus

Potentsiomeetrid ja pöörlevad andurid on elektroonika valdkonnas eriti kasulikud seadmed. Pöörlevad andurid on potentsiomeetritega võrreldes täiustatud, kuna neid saab pidevalt pöörata kuni 360°. Samuti on neil kaasaegses elektroonikas rohkem rakendusi ja neid on pisut keerulisem kasutada kui potentsiomeetritel .