Potenciometri i rotacijski enkoderi na prvi pogled izgledaju gotovo identično, ali rade na različite načine. Otkrijte kako koristiti oboje s Arduinom.

Među elektroničkim korisničkim kontrolnim komponentama, okretni gumbi ističu se kao neki od najzadovoljnijih za korištenje. Mogu nadopuniti zaslone osjetljive na dodir i druge uređaje za unos, a dobro funkcioniraju i s gumbima i prekidačima. Ali kako možete dodati gumb svojim vlastitim DIY Arduino projektima?

Imate dvije glavne mogućnosti: potenciometar ili rotacijski enkoder. Ove komponente mogu izgledati slično, ali metode za njihovu upotrebu s uređajem kao što je ploča mikrokontrolera Arduino vrlo su različite. Pogledajmo kako se međusobno uspoređuju.

Potenciometri vs. Rotacijski enkoderi

Većina potenciometara i rotacijskih kodera s kojima će se susresti DIY entuzijasti dolazi u sličnom obliku. Imaju kockastu ili cilindričnu bazu s pričvršćenim nožicama za spajanje i okruglu osovinu koja se uvija i ima izreze za kapu na koju se može postaviti.

instagram viewer

Neki potenciometri izgledaju drugačije, poput onih koji dolaze u obliku dugih klizača, poput onih na glazbenim mikserima. Međutim, kada je riječ o rotacijskoj vrsti, na prvi pogled izgledaju gotovo identično rotacijskim koderima, tako da će vam biti oprošteno ako mislite da su isti.

Što je potenciometar?

Potenciometar je u biti promjenjivi otpornik. Kako se osovina okreće, otpor unutar potenciometra se mijenja, dopuštajući korisniku da promijeni svojstva strujnog kruga bez potrebe da ga ponovno sastavlja. Potenciometri mogu biti i analogni i digitalni, ali digitalni potenciometri oponašaju analogne i to ih čini vrlo sličnim za upotrebu.

Potenciometri uvijek imaju definiranu početnu i krajnju točku gdje se osovina više ne može okretati. Neki potenciometri imaju neravni osjećaj kada se okreću, ali mnogi su također glatki, poput onih na starim stereo uređajima.

Unatoč tome što su analogni, potenciometri dobro rade s mikrokontrolerima. Možete lako postaviti potenciometar s Raspberry Pi Pico ili Arduino.

Što je rotacijski enkoder?

Rotacijski enkoderi određuju položaj svoje osovine pomoću senzora za davanje analognog ili digitalnog signala uređaju na koji su spojeni. Ovo govori uređaju u kojem se položaju nalazi koder. Uz rotirajuću osovinu, rotacijski enkoderi obično imaju ugrađenu tipku koja se aktivira guranjem osovine prema dolje.

Za razliku od potenciometara, rotacijski enkoderi mogu se okretati bez zaustavljanja i gotovo uvijek imaju taktilne izbočine za svaki položaj osovine. Mnogi moderni automobili koriste rotacijske kodere za kontrolu svojih sustava za zabavu.

Kako koristiti potenciometar s Arduinom

Zahvaljujući njihovom jednostavnom dizajnu, korištenje potenciometra s Arduinom je jednostavno. Vaš potenciometar ima tri konektora: masu, izlaz i vref. Pinovi za uzemljenje i vref spajaju se na GND i 5V konektore na vašem Arduinu, dok se izlazni pin potenciometra spaja na jedan od analognih ulaza na vašoj ploči.

Kod Arduino potenciometra

Kod vašeg Arduino potenciometra počinje s osnovnim postaviti() i petlja() predložak koji ćete vidjeti kada kreirate novu datoteku u Arduino IDE. Prvo dodajte a const int varijablu na početku koda za registraciju analogne pinske veze potpora - u ovom slučaju, A0.

konstint potenciometar = A0;

Nakon toga, postaviti() Funkcija je jednostavna: samo trebate deklarirati pin vašeg potenciometra kao ulaz. Također možete pokrenuti serijsku vezu ako želite poslati podatke na svoje računalo za dijagnostiku.

poništitipostaviti(){
pinMode (potenciometar, INPUT);
Serijski.početi(9600);
}

Zatim, vrijeme je za postavljanje petlja() funkcija. Započnite stvaranjem int varijabla pomoću analogRead() funkciju za pohranjivanje položaja vašeg potenciometra. Nakon toga možete koristiti karta() funkciju za smanjenje veličine vrijednosti s kojom imate posla—u ovom primjeru za usklađivanje sa PWM specifikacijama, na primjer za kontrolu svjetline LED-a. Dodajte kratku odgodu kako biste osigurali stabilnost.

poništitipetlja(){
int potenciometerValue = analogRead (potenciometar);
mapa (Vrijednost potenciometra, 0, 1023, 0, 255);
Serijski.println(potenciometarVrijednost);
kašnjenje (10);
}

Sada kada imate položaj svog potenciometra, možete ga koristiti s drugim dijelovima koda. Na primjer, an ako naredba bi dobro funkcionirala za pokretanje koda kada je potenciometar u određenom položaju.

konstint potenciometar = A0;

poništitipostaviti(){
pinMode (potenciometar, INPUT);
Serijski.početi(9600);
}

poništitipetlja(){
int potenciometerValue = analogRead (potenciometar);
mapa (Vrijednost potenciometra, 0, 1023, 0, 255);
Serijski.println(potenciometarVrijednost);
kašnjenje (10);
}

Kako koristiti rotacijski enkoder s Arduinom

Rotacijski koderi zahtijevaju zamršeniji kod od potenciometara, ali s njima je još uvijek prilično lako raditi. Vaš rotacijski koder ima pet pinova: uzemljenje, VCC, pin gumba (SW), izlaz A (CLK) i izlaz B (DT). Pinovi za uzemljenje i VCC spajaju se na konektore za uzemljenje i 5V na vašem Arduinu, dok se pinovi SW, CLK i BT spajaju na pojedinačne digitalne konektore na Arduinu.

Kod Arduino rotacijskog kodera

Kako bismo naš kod učinili jednostavnijim i lakšim za rad, koristit ćemo biblioteku SimpleRotary Arduino koju je stvorio MPrograms na GitHub. Provjerite imate li ovu biblioteku instaliranu prije nego počnete raditi na svom kodu.

Slično kao kod vašeg potenciometra, možete pokrenuti skriptu za rotacijski koder s osnovnim Arduinom postaviti() i petlja() predložak funkcije. Započnite deklariranjem SimpleRotary biblioteke i dodjeljivanjem pinova kodera ovim redoslijedom; CLK, DT i SW.

#uključi 
SimpleRotary rotacijski(1,2,3);

Ne trebate ništa dodavati svome postaviti() osim ako ne želite koristiti serijski monitor za dijagnosticiranje vašeg rotacijskog kodera.

poništitipostaviti(){
Serijski.početi(9600);
}

The petlja() funkcija je druga priča. Određivanje rotacije osovine kodera počinje s a rotary.rotate() poziv funkcije koja je dodijeljena int varijabla. Ako je rezultat 1, koder se okreće u smjeru kazaljke na satu. Ako je rezultat 2, koder se okreće suprotno od kazaljke na satu. Rezultat će uvijek biti 0 ako se koder nije okrenuo od zadnje provjere.

Možeš koristiti ako naredbe za pokretanje drugog koda ovisno o smjeru rotacije kodera.

poništitipetlja(){
int EncoderRotation;
encoderRotation = rotary.rotate();

if (encoderRotation == 1) {
Serial.println("u smjeru kazaljke na satu");
}

if (encoderRotation == 2) {
Serial.println("suprotno od kazaljke na satu");
}
}

Također morate dodati neki kod za gumb vašeg kodera na petlja() funkcija. Ovaj je postupak vrlo sličan, osim što ćete koristiti rotacijski.push() funkciju, a ne rotary.rotate().

poništitipetlja(){
int encoderButton;
EncoderButton = rotary.push();

if (encoderButton == 1) {
Serial.println("gumb pritisnut");
}
}

Ova skripta je prilično jednostavna i možete učiniti mnogo da je napravite svojom. Isplati se provjeriti dokumentaciju projekta SimpleRotary kako biste bili sigurni da koristite sve njegove ključne značajke. Nakon što ga sastavite, kod kodera bi trebao izgledati ovako.

#uključi 
SimpleRotary rotacijski(1,2,3);

poništitipostaviti(){
Serijski.početi(9600);
}

poništitipetlja(){
int EncoderRotation;
encoderRotation = rotary.rotate();

if (encoderRotation == 1) {
Serial.println("u smjeru kazaljke na satu");
}

if (encoderRotation == 2) {
Serial.println("suprotno od kazaljke na satu");
}

int encoderButton;
EncoderButton = rotary.push();

if (encoderButton == 1) {
Serial.println("gumb pritisnut");
}
}

Kako odabrati između potenciometara i rotacijskih kodera za projekte

Kao što vidite, rotacijski enkoderi i potenciometri rade sasvim drugačije. Obje ove komponente daju vam nove načine za kontrolu vaših elektroničkih projekata, ali koju odabrati?

Potenciometri su pristupačni i jednostavni za korištenje, ali dopuštaju samo ograničeni ulazni raspon. To ih čini izvrsnima kada želite kontrolirati svjetlinu LED-a ili povećati ili smanjiti snagu koja ide na određene komponente i druge slične zadatke.

Rotacijski enkoderi pružaju mnogo veći opseg od potenciometara. Uključivanje tipke znači da su izvrsni za sustave upravljanja izbornikom, kao što se može vidjeti u mnogim modernim automobilima. Ova vrsta komponente postala je vrlo popularna u prostoru za izradu mehaničkih tipkovnica. Možete čak izgraditi mali makropad s ugrađenim enkoderom.

Sličan izgled, različite komponente

Sa svim ovim informacijama iza sebe, trebali biste biti spremni započeti s projektom elektronike s potenciometrom ili rotacijskim koderom. Ove vam komponente mogu dati mnogo kontrole nad sklopovima koje gradite, ali morate biti sigurni da ste odabrali ispravnu opciju za svoj projekt.