Arduino Optik Pozisyon Dönüştürücü
Şaft veya dönen cisim kodlayıcı olarak da bilinen optik pozisyon kodlayıcılar, elektromekanik cihazlarda algılanan açısal pozisyonu analog veya dijital verilere dönüştürmek için kullanılır.
Bu dönüştürücülerin iki ana tipi vardır: Mutlak ve göreceli.
Mutlak dönüştürücüler, milin mevcut konumunu açısal verilere dönüştürürler.
Göreceli dönüştürücüler ise açısal veri yanında hız ve konum bilgilerini de içerirler.
Optik pozisyon dönüştürücüler, endüstri alanlarında, robot uygulamalarında, fotoğraf lenslerinde, hard disklerde ve optik farelerde dahil olmak üzere birçok yerde kullanılırlar.
Kullanılan Malzemeler
- Bir adet Arduino Uno kartı,
- Bir adet Photo Interrupter sensör,
- Bir adet 220 ohm ve 10 kiloohm direnç.
Tasarım
Dönen cisimlerin açısal konumlarını hesaplamak için bir sensöre ihtiyaç duyulur. Photo Interrupter isimli bu sensör IR led ile kızılötesi verici oluşturarak, algılanacak nesnenin renkleri arasındaki farklılıktan yararlanarak ışın gönderme ve alma prensibine dayanır.
Sensörün 4 bacağı vardır. Bacakların bir İkilisine kızılötesi led diğer ikisine bir transistor bağlıdır, ikili çiftler arasındaki boşluktan ise ışın nesneye gider ve gelir. Gidiş geliş arasındaki renk farklılığını algılayarak mikrodenetleyiciye bilgi verir. Mikrodenetleyicide duruma göre ya motor çalıştırır ya ölçüm ya da kişinin istediği bir başka çıkış işlemini yapar.
Sensörün IR kızılötesi led kısmında 5 volt pozitif beslemesi ile arasında 220 ohm direnç vardır. Aynı ikilinin diğer ucu topraklamadır. Transistor bölümünde ise bir bacak ikiye ayrılır, bir tarafı Arduino dijital 8 pinine, diğer tarafı 10 kiloohm direnç ile 5 volt pozitif beslemeye bağlanmıştır. Diğer bacağı ise topraklamadır.
Sensör ışınında bir kırılma yani nesnenin renk değişikliği algılanırsa, dijital 13 pininde bulunan led yanar. Dijital 12 çıkışı ise dalgaları izlemek içindir. Eğer bu çıkış bir osiloskop ile birleştirilirse cihazda dalga şekilleri görülebilir.
Kodlar
const int donusturucu_giris = 8; // sensörün giriş pini const int led = 13; // led const int dalga_cikisi = 12; // harici kaynak için dalga çıkış pini int isin_durumu=0; // dönüstürme/ışın okuma durumu void setup() { pinMode(donusturucu_giris, INPUT); pinMode(led, OUTPUT); pinMode(dalga_cikisi, OUTPUT); } void loop() { isin_durumu=digitalRead(donusturucu_giris); if (isin_durumu == HIGH) { //dönüştürücü çıkışı HIGH ise digitalWrite(led, HIGH); //led yanar digitalWrite(dalga_cikisi,HIGH); // dalga var olarak çıkış verilir } else { digitalWrite(led, LOW); //değilse led söner digitalWrite(dalga_cikisi,LOW); // dalga yok olarak çıkış verilir } }