Kāda ir atšķirība starp Arduino potenciometru un rotējošo kodētāju

Kada Ir Atskiriba Starp Arduino Potenciometru Un Rotejoso Kodetaju



Potenciometri un rotējošie kodētāji tiek izmantoti, lai noteiktu rotāciju vai uztvertu pozīciju. Tās ir elektromehāniskās ierīces, ko izmanto dažādiem pielietojumiem elektronikas jomā. Tos var arī savienot ar Arduino dažādu projektu veidošanai. Šis raksts ir paredzēts, lai parādītu būtiskās atšķirības starp potenciometru un rotējošo kodētāju.

Kas ir potenciometrs

Potenciometrs ir reostats, vai arī mēs to varam saukt par mainīgu rezistoru. Pretestības vērtība mainās atkarībā no potenciometra vārpstas griešanās. Potenciometri var pagriezties tikai noteiktā attālumā. Ir gan analogie, gan digitālie potenciometri, taču tie ir gandrīz līdzīgi. Analogos potenciometrus var savienot ar Arduino, Raspberry Pi un citu ierīču mikrokontrolleriem. Potenciometram ir trīs tapas, kas ir ieejas sprieguma tapa Vcc, Ground Pin GND un ieejas signāla tapa. Signāla tapa nodrošina ievadi Arduino.









Kas ir rotējošais kodētājs

Rotējošie kodētāji uztver rotējošās pogas leņķisko stāvokli un nosūta signālu uz mikrokontrolleru vai jebkuru citu ierīci, kurai tie ir pievienoti. Tam ir disks ar vienmērīgi izvietotiem kontaktu laukumiem, kas ir savienoti ar kopēju tapu. Rotējošajiem kodētājiem ir arī iebūvēta spiedpoga vai pagriežamais slēdzis, kas dod IESLĒGŠANAS un IZSLĒGŠANAS signālus atbilstoši īpašām prasībām.







Rotējošā kodētāja pinout diagramma un tapu apraksts

Zemāk redzamā diagramma parāda rotējošā devēja tapas. Šīs tapas ir aprakstītas šādi:

Out B vai CLK



Šī tapa parāda, cik reižu poga vai rotējošais kodētājs ir pagriezts. Katru reizi, kad poga tiek pagriezta, CLK pabeidz HIGH un LOW ciklu. Tas tiek uzskatīts par vienu apgriezienu.

Out A vai DT

Šī ir otrā rotējošā kodētāja izejas tapa, kas nosaka griešanās virzienu. Tas atpaliek no CLK signāla par 90°. Tāpēc, ja tā stāvoklis nav vienāds ar CLK stāvokli, tad griešanās virziens ir pulksteņrādītāja virzienā, pretējā gadījumā pretēji pulksteņrādītāja virzienam.

Slēdzis

Slēdža tapu izmanto, lai pārbaudītu, vai spiedpoga ir nospiesta vai nav.

Vcc

Šī tapa ir savienota ar 5 V barošanu

GND

Šī tapa ir savienota ar zemi

Atšķirība starp potenciometru un rotējošo kodētāju

Specifikācija Potenciometrs Rotējošais kodētājs
Rotācija Potenciometru var pagriezt tikai vienā virzienā un arī trīs ceturtdaļas apļa. Rotācijas kodētājs spēj nepārtraukti griezties par 360° gan pulksteņrādītāja virzienā, gan pretēji pulksteņrādītāja virzienam.
Analogā vai digitālā ierīce Potenciometrs galvenokārt ir analogās ievades ierīce, kas mēra pozīcijas izmaiņas, mainot rezistora vērtību Rotējošais kodētājs ir digitālās ievades ierīce, kas uztver leņķisko stāvokli un nodrošina digitālās vērtības.

Ievades pozīciju skaits Potenciometram ir bezgalīgs skaits ievades pozīciju, kurās var ņemt vērtības, jo tā ir analoga ierīce Rotējošajiem kodētājiem ir ierobežots ievades pozīciju skaits.

Potenciometra iestatīšana ar Arduino

Potenciometru ir vieglāk iestatīt ar Arduino, nevis ar rotējošu kodētāju. Potenciometram ir tikai trīs tapas VCC, GND un INPUT tapa, kas ir savienota ar Arduino. Potenciometra saskarne ar Arduino ir parādīta zemāk:

Potenciometra programmēšana Arduino ir vienkāršāka nekā rotējošā kodētāja programmēšana. Tālāk ir sniegti abu sintakses kodu paraugi.

Potenciometra koda paraugs

const int pot = A0; // Deklarēt ievades tapu
tukša iestatīšana ( ) {
   pinMode ( pods, IEEJA ) ; // Iestatīšanas vērtība ņemta no potenciometra ievade
Sērija.sākt ( 9600 ) ;
}
tukša cilpa ( ) {
int potValue = analogRead ( pods ) ; // Nolasīt potenciometra ieejas vērtību
karte ( potValue, 0 , 1023 , 0 , 255 ) ; // Ievades vērtības mērogošana, lai tā atbilstu 8 - mazliet
Serial.println ( potValue ) ; // Drukā vērtību, kas tika ievadīta potenciometrā
kavēšanās ( 100 ) ;
}

Potenciometra kods ir ļoti vienkāršs un vienkāršs. Tiek vienkārši deklarēts, ka Arduino analogās ievades tapa ņem ievadi no potenciometra, un pēc tam funkcijas analogRead () un map () tiek izmantotas, lai nolasītu un sniegtu precīzu nolasījuma vērtību no potenciometra.

Rotācijas kodētāja saskarne ar Arduino

Rotējošajam kodētājam ir piecas tapas. Rotējošā kodētāja VCC un GND ir savienoti ar Arduino. Atlikušās tapas CLK, DT un SW ir savienotas ar Arduino digitālās ievades tapām.

Arduino kods rotējošajam kodētājam

// Rotācijas kodētāja ieejas
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int skaitītājs = 0 ;
int currentCLKState;
int lastCLKState;
String currentDirection = '' ;
neparakstīts long lastButtonPressTime = 0 ;
tukša iestatīšana ( ) {
// Iestatiet kodētāja tapas ievades
    pinMode ( CLK_PIN, IEVADE ) ;
    pinMode ( DT_PIN, IEVADE ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Iestatīt seriālo monitoru
Sērija.sākt ( 9600 ) ;
// Izlasiet CLK sākotnējo stāvokli
lastCLKState = digitalRead ( CLK_PIN ) ;
}
tukša cilpa ( ) {
// Izlasiet pašreizējo CLK stāvokli
currentCLKState = digitalRead ( CLK_PIN ) ;
// Ja Pēdējais un pašreizējais CLK stāvoklis ir atšķirīgs, tad notika pulss
// Reaģēt tikai uz 1 stāvokļa maiņa, lai izvairītos no dubultas uzskaites
ja ( pašreizējaisCLKState ! = pēdējaisCLKState && pašreizējaisCLKState == 1 ) {
// Ja DT stāvoklis atšķiras no CLK stāvokļa, tad
// kodētājs griežas pretēji pulksteņrādītāja virzienam, tāpēc samaziniet
ja ( digitalRead ( DT_PIN ) ! = pašreizējaisCLKState ) {
counter--;
pašreizējaisDirection = 'CCW' ;
} cits {
// Kodētājs griežas pulksteņrādītāja virzienā, tāpēc palieliniet
counter++;
pašreizējaisDirection = 'CW' ;
}
Serial.print ( 'Rotācijas virziens:' ) ;
Serial.print ( pašreizējaisDirection ) ;
Serial.print ( ' | Skaitītāja vērtība: ' ) ;
Serial.println ( skaitītājs ) ;
}
// Atcerieties, Pēdējais CLK stāvoklis
lastCLKState = pašreizējaisCLKState;
// Izlasiet pogas stāvokli
int buttonState = digitalRead ( SW_PIN ) ;
// Ja mēs atklājam LOW signālu, tiek nospiesta poga
ja ( buttonState == LOW ) {
// Ja ir pagājuši 50 ms kopš Pēdējais ZEMS pulss, tas nozīmē, ka
// poga ir nospiesta, atlaista un nospiesta vēlreiz
ja ( millis ( ) - LastButtonPressTime > piecdesmit ) {
Serial.println ( 'Poga nospiesta!' ) ;
}
// Atcerieties, Pēdējais pogas nospiešanas pasākums laiks
lastButtonPressTime = milič ( ) ;
}
// Put iekšā neliela kavēšanās palīdzēt atgrūž lasījumu
kavēšanās ( 1 ) ;
}

Iepriekš dotajā kodā CLK tapas stāvoklis tiek pārbaudīts funkcijā loop (). Ja tas nav vienāds ar iepriekšējo stāvokli, tas parāda, ka pagriežamā poga ir pagriezta. Tagad, lai pārbaudītu pogas griešanās virzienu, pašreizējais CLK stāvoklis tiek salīdzināts ar DT stāvokli. Ja abi stāvokļi nav vienādi, tas parāda, ka poga ir pagriezta pulksteņrādītāja virzienā, un pretstats palielina tās vērtību, lai parādītu pagriežamās pogas pozīciju. Pretējā gadījumā skaitiet samazinājumus.

Lietojumprogrammas

Potenciometrus galvenokārt izmanto tur, kur nepieciešama vadības funkcija. Tos izmanto skaļuma regulēšanā, LED spilgtuma kontrolē. No otras puses, rotējošie kodētāji piedāvā plašu pielietojumu klāstu. Tos izmanto robotikā, medicīnas iekārtās, automatizācijā un spēlēs.

Secinājums

Potenciometri un rotējošie kodētāji ir īpaši noderīgas ierīces elektronikas jomā. Rotācijas kodētāji ir uzlaboti salīdzinājumā ar potenciometriem, jo ​​tie var nepārtraukti griezties līdz 360°. Tāpat tiem ir vairāk pielietojumu mūsdienu elektronikā, un tos ir nedaudz grūtāk izmantot nekā potenciometrus .