Sensörler Ders 8 Aslı Ergün
LM 393 Kızılötesi Hız Sensörü Sensör kızılötesi iletişim metodunu kullanarak, verici ile alıcı arasına engel girdiğinde çıkış low, engel olmadığında ise high verir. Yani bir buton gibi devreyi açıp kapatır diyebilir. Bu high low durumları bir yorumlayıcı ile işlenerek saydırma işlemi yapılır ve motorun hızı, devri ölçülür.
Interrupt (kesme) özelliği kullanmak uygun olacaktır Interrupt (kesme) özelliği kullanmak uygun olacaktır. Çünkü arduino başka olayları çalıştırırken, kesmeye bağlı olay gerçekleştiğinde otomatik olarak haberi olur. Buradaki sensördeki durum değiştiğinde otomatik olarak tespit eder . Interrupt kütüphanesiniTimerOne.h kullanılır.
Takometre ile hız ölçme Devir sayısı bulunarak hız ölçme şeklidir. Manyetik anahtar,fototransistör ve rotary encoder kullanarak devir sayısı rpm ölçülür.
Manyetik sensör (mıknatıs ile) hız devir ölçme
Rotary Encoder Encoderların absolute(mutlak) encoder ve rotary(incremental,arttırımsal) encoder olmak üzere iki çeşiti bulunmaktadır. Her iki encoder da temelde aynı prensibe göre çalışmaktadır
Encoder Çalışma Prensibi Encoder içerisinde bir adet ışık kaynağı(LED) bulunmaktadır. Bu ışık kaynağını algılaması amacıyla bir adet optik algılayıcı(fototransistör) yerleştirilmiştir. Bu iki optik eleman arasına delikli bir disk yerleştirilmiştir. Işık kaynağından yayılan ışınlar delikli diskin deliklerinden geçebilir iken deliğin olmadığı kısımlardan geçememektedir. Fototransistörün geçirdiği akım bu düşüp düşmeme durumuna göre değişmektedir. Encoderların çalışma prensibi buna dayanmaktadır. Transistörün tetiklenip tetiklenmeme durumuna göre çıkışta bir kare dalga üretilmektedir.
/. Rotary encoder read example /* Rotary encoder read example */ #define ENC_A 14 #define ENC_B 15 #define ENC_PORT PINC void setup() { /* Setup encoder pins as inputs */ pinMode(ENC_A, INPUT); digitalWrite(ENC_A, HIGH); pinMode(ENC_B, INPUT); digitalWrite(ENC_B, HIGH); Serial.begin (115200); Serial.println("Start"); } void loop() { static uint8_t counter = 0; //this variable will be changed by encoder input int8_t tmpdata; /**/ tmpdata = read_encoder(); if( tmpdata ) { Serial.print("Counter value: "); Serial.println(counter, DEC); counter += tmpdata; } /* returns change in encoder state (-1,0,1) */ int8_t read_encoder() static int8_t enc_states[] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0}; static uint8_t old_AB = 0; old_AB <<= 2; //remember previous state old_AB |= ( ENC_PORT & 0x03 ); //add current state return ( enc_states[( old_AB & 0x0f )]);
Titreşim Sensörü Piezo titreşim(basınç) sensörü SW-18020P (sert iletken çevresine yay şeklinde ince iletken sarılmış