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 taputukša iestatīšana ( ) {
pinMode ( pods, IEEJA ) ; // Iestatīšanas vērtība ņemta no potenciometra kā 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 kā 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 .