Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

28 Haziran 2021 Pazartesi

Rotary Encoder Nasıl Çalışır ve Arduino ile Nasıl Kullanılır?

 

Rotary Encoder Nasıl Çalışır ve Arduino ile Nasıl Kullanılır?


Döner Kodlayıcı ModülüGenel Bakış


Döner kodlayıcı, dönen bir şaftın açısal konumunu belirlemek için kullanılan bir tür konum sensörüdür. Dönme hareketine göre analog veya dijital bir elektrik sinyali üretir.

Çıkış Sinyali veya Algılama Teknolojisine göre sınıflandırılan birçok farklı tipte döner kodlayıcı vardır. Bu eğitimde kullanacağımız belirli döner kodlayıcı, artımlı bir döner kodlayıcıdır ve dönüşü ölçmek için en basit konum sensörüdür.

Rotary Enkoderler Sınıflandırması

Bu döner kodlayıcı, karesel kodlayıcı veya göreceli döner kodlayıcı olarak da bilinir ve çıktısı bir dizi kare dalga darbesidir.


Rotary Encoder Nasıl Çalışır?


Enkodere daha yakından bakalım ve çalışma prensibini görelim. Kare dalga darbeleri şu şekilde üretilir: Kodlayıcı, aşağıda gösterildiği gibi, ortak pim C'ye ve diğer iki ayrı kontak pimine A ve B'ye bağlanan eşit aralıklı temas bölgelerine sahip bir diske sahiptir.

Rotary Encoder Nasıl Çalışır Çalışma Prensibi

Disk adım adım dönmeye başladığında, A ve B pinleri ortak pin ile temas etmeye başlayacak ve iki kare dalga çıkış sinyali buna göre üretilecektir.

Sinyalin darbelerini sayarsak, iki çıktıdan herhangi biri döndürülmüş konumu belirlemek için kullanılabilir. Bununla birlikte, dönüş yönünü de belirlemek istiyorsak, her iki sinyali de aynı anda dikkate almamız gerekir.

İki çıkış sinyalinin birbirinden 90 derece faz dışı kaydırıldığını fark edebiliriz. Kodlayıcı saat yönünde dönüyorsa, A çıkışı B çıkışının önünde olacaktır.

Döner Kodlayıcı Çıkış Sinyali Çalışma Prensibi Fotoğrafı

Dolayısıyla, sinyalin Yüksekten Alçağa veya Alçaktan Yükseğe her değiştiğinde adımları sayarsak, o anda iki çıkış sinyalinin zıt değerlere sahip olduğunu fark edebiliriz. Tersi, kodlayıcı saat yönünün tersine dönüyorsa, çıkış sinyalleri eşit değerlere sahiptir. Bu nedenle, bunu göz önünde bulundurarak, kontrol cihazımızı kodlayıcı konumunu ve dönüş yönünü okuyacak şekilde kolayca programlayabiliriz.


Rotary Encoder Arduino Örneği


Arduino'yu kullanarak bunun pratik bir örneğini yapalım. Bu örnek için kullanacağım belirli modül bir koparma kartında geliyor ve beş pimi var. İlk pin çıkış A, ikinci pin çıkış B, üçüncü pin Button pin ve tabii ki diğer iki pin VCC ve GND pinidir.

Rotary Encoder Arduino Eğitim Örneği

Çıkış pinlerini Arduino Board'un herhangi bir dijital pinine bağlayabiliriz.

Kaynak kodu


İşte Arduino kodu:

/* Arduino Rotary Encoder Tutorial
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
#define outputA 6
#define outputB 7
int counter = 0;
int aState;
int aLastState;
void setup() {
pinMode (outputA,INPUT);
pinMode (outputB,INPUT);
Serial.begin (9600);
// Reads the initial state of the outputA
aLastState = digitalRead(outputA);
}
void loop() {
aState = digitalRead(outputA); // Reads the "current" state of the outputA
// If the previous and the current state of the outputA are different, that means a Pulse has occured
if (aState != aLastState){
// If the outputB state is different to the outputA state, that means the encoder is rotating clockwise
if (digitalRead(outputB) != aState) {
counter ++;
} else {
counter --;
}
Serial.print("Position: ");
Serial.println(counter);
}
aLastState = aState; // Updates the previous state of the outputA with the current state
}

Kodun açıklaması:  Bu yüzden önce kodlayıcımızın bağlı olduğu pinleri tanımlamamız ve program için gerekli bazı değişkenleri tanımlamamız gerekir. Kurulum bölümünde, iki pini giriş olarak tanımlamamız, sonuçları seri monitörde yazdırmak için seri iletişimi başlatmamız, ayrıca çıkış A'nın başlangıç ​​değerini okuyup değeri aLastState değişkenine koymamız gerekir.

Sonra döngü bölümünde tekrar A çıkışını okuyoruz ama şimdi değeri aState değişkenine koyuyoruz. Dolayısıyla, kodlayıcıyı döndürürsek ve bir darbe üretilirse, bu iki değer farklı olacak ve ilk "if" ifadesi doğru olacaktır. Hemen ardından ikinci "if" ifadesini kullanarak dönüş yönünü belirleriz. Çıkış B durumu, çıkış A durumundan farklıysa, sayaç bir artar, aksi takdirde azalır. Sonunda, sonuçları seri monitöre yazdırdıktan sonra, aLastState değişkenini aState değişkeniyle güncellememiz gerekiyor.

Bu örnek için ihtiyacımız olan tek şey bu. Kodu yüklerseniz, Seri Monitörü başlatın ve kodlayıcıyı döndürmeye başlayın, değerleri seri monitörde almaya başlayacağız. Sahip olduğum belirli modül, her tam döngüde 30 sayıyor.

Örnek 2 - Döner Kodlayıcı Kullanarak Kademeli Motorun Kontrol Edilmesi



Döner Kodlayıcı kullanarak bir step motorun kontrol edilmesi

İşte bu örneğin kaynak kodu:

/* Stepper Motor using a Rotary Encoder
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
// defines pins numbers
#define stepPin 8
#define dirPin 9
#define outputA 10
#define outputB 11
int counter = 0;
int angle = 0;
int aState;
int aLastState;
void setup() {
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode (outputA,INPUT);
pinMode (outputB,INPUT);
aLastState = digitalRead(outputA);
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
aState = digitalRead(outputA);
if (aState != aLastState){
if (digitalRead(outputB) != aState) {
counter ++;
angle ++;
rotateCW();
}
else {
counter--;
angle --;
rotateCCW();
}
if (counter >=30 ) {
counter =0;
}
lcd.clear();
lcd.print("Position: ");
lcd.print(int(angle*(-1.8)));
lcd.print("deg");
lcd.setCursor(0,0);
}
aLastState = aState;
}
void rotateCW() {
digitalWrite(dirPin,LOW);
digitalWrite(stepPin,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin,LOW);
delayMicroseconds(2000);
}
void rotateCCW() {
digitalWrite(dirPin,HIGH);
digitalWrite(stepPin,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin,LOW);
delayMicroseconds(2000);
}

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

PIR Sensörü Nasıl Çalışır ve Arduino ile Nasıl Kullanılır?

PIR Sensörü Nasıl Çalışır ve Arduino ile Nasıl Kullanılır ?


PIR-Hareket Sensörü-HC-SR501-ModülüNasıl çalışır


Öncelikle çalışma prensibini açıklayalım. Modül aslında ısıya maruz kaldığında enerji üreten bir Pyroelektrik sensörden oluşur.

Bu, bir insan veya hayvan vücudu sensörün menziline girdiğinde, bir hareketi algılayacağı anlamına gelir çünkü insan veya hayvan vücudu, kızılötesi radyasyon şeklinde ısı enerjisi yayar. Sensörün adının geldiği yer, Pasif Kızılötesi sensördür. Ve "pasif" terimi, sensörün algılama amacıyla herhangi bir enerji kullanmadığı, sadece diğer nesnelerin verdiği enerjiyi algılayarak çalıştığı anlamına gelir.

PIR-Sensör04

Modül ayrıca kızılötesi sinyalleri piroelektrik sensöre odaklayan, Fresnel lens adı verilen özel olarak tasarlanmış bir kapaktan oluşur.

PIR-Hareket Sensörü Nasıl Çalışır


HC-SR501 PIR Sensör Modülü


Modülün sadece üç pimi, modüle güç sağlamak için bir Toprak ve bir VCC ve bir nesne algılandığında yüksek mantık seviyesi sağlayan bir çıkış pimi vardır. Ayrıca iki potansiyometreye sahiptir. Biri sensörün hassasiyetini ayarlamak için, diğeri ise nesne algılandığında çıkış sinyalinin yüksek kaldığı süreyi ayarlamak için. Bu süre 0,3 saniyeden 5 dakikaya kadar ayarlanabilir.

PIR Sensörü Pin Çıkışı

Modül, ikisi arasında bir jumper bulunan üç pime daha sahiptir. Bu pimler tetikleme modlarını seçmek içindir. İlki “tekrarlanamayan tetik” olarak adlandırılır ve şu şekilde çalışır: sensör çıkışı yüksek olduğunda ve gecikme süresi bittiğinde, çıkış otomatik olarak yüksekten alçak seviyeye değişecektir. "Tekrarlanabilir tetikleme" olarak adlandırılan diğer mod, algılanan nesne sensörün menzilinde bulunana kadar çıkışı her zaman yüksek tutacaktır.


Devre Şeması


Bu eğitici yazıya örnek olarak, sensör bir nesneyi algıladığında yüksek voltajlı bir lambayı açacak bir devre yapacağım. İşte devre şemaları. Sensörün çıkış pini Arduino Board üzerindeki 8 numaralı pime bağlanacak ve bir nesne tespit edildiğinde 7 numaralı pin röle modülünü aktif hale getirecek ve yüksek gerilim lambası yanacaktır.

/* Arduini PIR Motion Sensor Tutorial
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
int pirSensor = 8;
int relayInput = 7;
void setup() {
pinMode(pirSensor, INPUT);
pinMode(relayInput, OUTPUT);
}
void loop() {
int sensorValue = digitalRead(pirSensor);
if (sensorValue == 1) {
digitalWrite(relayInput, LOW); // The Relay Input works Inversly
}
}

Örneğin gösterimi, yukarıda ekli videonun sonunda görülebilir. Sensör modülünü çalıştırdıktan sonra, düzgün çalışması için “ısınması” için yaklaşık 20 - 60 saniye gerektiğine dikkat edin. Şimdi elinizi sensörün önüne koyduğunuzda röle lambayı etkinleştirecektir. Ancak, elinizi sürekli hareket ettirseniz bile, PIR sensörü “tekrarlanamayan tetikleme” modunda olduğundan ayarlanan gecikme süresi bittikten sonra lambanın söneceğini unutmayın. Sensörü atlama teli ile "tekrarlanabilir tetik" moduna değiştirirseniz ve elinizi sürekli hareket ettirirseniz, lamba da sürekli yanar ve hareket bittikten ve ayarlanan gecikme süresi sona erdikten sonra söner.

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Arduino ile PIR sensörü

 Arduino ile PIR sensörü

Arduino ile arayüz oluşturan PIR sensörü, bu makalede Arduino ile PIR sensör arayüzünün nasıl arayüzleneceğini tartışacağım. PIR sensörü nedir? PIR sensörünün uygulamaları nelerdir? PIR sensörü ile Arduino UNO R3 arasında arayüz oluştururken dikkate alınması gereken donanım özellikleri. Arduino ile PIR sensörlerinin değer okuması için kullanılan programlama.

Arduino ile arayüz oluşturan PIR sensörü

Arduino UNO R3 hakkında hiçbir şey bilmiyorsanız, bu makaleyi daha fazla okumadan önce aşağıdaki makaleyi incelemenizi tavsiye ederim.

“ Arduino UNO R3 ile başlarken. "

PIR sensörü nedir?

PIR sensörü temelde, bir şey etrafında hareket ederken kişinin hareketini algılamak için kullanılan pasif bir kızılötesi sensördür. Piyasada birçok türde PIR sensörü bulunmaktadır. Google'da farklı türde PIR sensörleri için arama yapabilirsiniz. PIR sensör sensörü, çevresindeki ısı değişimi prensibine göre çalışır. Herhangi bir kişi veya hayvanın yaptığı ısı değişimine göre çıkışını değiştirir. Piyasada duyarlılığa, şekle ve diğer birçok şeye göre farklılık gösteren farklı türde PIR sensörleri bulunmaktadır.

PIR sensörünün uygulamaları:

Aşağıda pasif kızılötesi (PIR) sensörünün birkaç uygulamasından bahsetmiştim. Ancak bu sensörü proje ihtiyacınıza göre kullanabilirsiniz.

  • Herhangi bir kişinin hareket algılama
  • Pahalı şeylerin korunması
  • Güvenlik sistemi vb.

PIR sensörü nasıl çalışır?

PIR sensörünün temelleri hakkında bilmeniz gereken her şeyi zaten tartıştım. Şimdi PIR sensörünün nasıl çalıştığı sorusu aklınıza gelmeli? PIR sensörünün çıkışı nedir? PIR sensörü, dijital yüksek veya düşük şeklinde çıktı verir. Bu yüzden PIR sensörünü Arduino ile arayüzlemek çok kolaydır. Paralaks PIR sensörü, projeniz için kullanmak için daha iyi bir seçenektir. PIR sensörü ısı değişikliğini tespit ettiğinde, çıktı yüksek olur, aksi takdirde çıktısı kalır. Elektronikte yüksek ve düşük anlamının ne olduğunu bildiğinizi varsayıyorum. Daha ileri gitmeden önce Arduino UNO R3 ile yüksek ve düşük dijital seviyeyi nasıl tespit edeceğinizi bilmelisiniz. Bu konuda bilginiz yoksa, önce aşağıdaki makaleyi okuyun.

“ Arduino ile anahtar nasıl algılanır? "

Arduino ile arayüz oluşturan PIR sensörü:

Pasif kızılötesi (PIR) sensörünü Arduino ile arayüzlemek için bilmeniz gereken her şeyi daha önce tartıştım. Aşağıdaki devre şeması bağlantı şemasını göstermektedir. Bu devre şemasında paralaks PIR sensörü kullandım. Paralleks sensörün üç pimi vardır.

  • Zemin pimi
  • 5 voltluk güç kaynağı piminin bu sensörü çalıştırması gerekir
  • Sensör çıkışını kontrol etmek için kullanılan ve Arduino'ya bağlanan çıkış pini

Aşağıdaki şema, Arduino'nun paralaks sensörü ile arayüzünü göstermektedir. Devre şemasını anlamak için ihtiyacınız olan her şeyi açıkladım.

PIR sensörünün devre şeması
                                                               Arduino ile arayüz oluşturan PIR sensörünün devre şeması

Yukarıdaki devrede pasif kızılötesi sensör çıkışını Arduino UNO R3'ün 0 numaralı pinine bağladım. Pasif kızılötesi sensörün çıkışını kontrol etmek için zil kullandım. Herhangi bir kişi pasif kızılötesi sensörün belli bir mesafesine yaklaştığında, zil beş saniye boyunca ses verir. 5 saniye sonra, hareket yoksa sesli uyarıcı ses vermeyi kesecektir.🙂


Bahadır ÖZGEN

Electronic Robotic Coding Research and Development 1975 - ∞

Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com