Daha önceki yazılarımızda arduinonun dijital giriş çıkışlarını kullanmıştık fakat arduino’ nun giriş seviyeleri malum TTL +5V seviyesinde olduğu için daha yüksek seviyelerde -örneğin +24V DC gibi- kullanamazsınız. Denerseniz arduinonuz yanabilir. Bu yüzden Arduino ile +24V sinyalini okumak için ve Arduino Mega ile +24V sinyal çıkışı sağlamak için araya bir gerilim bölücü ve yükselteç gibi devre yapmanız gerekmektedir.
Toshiba marka TLP521-1 serisi bir optokuplör arduino’dan gelen +5V sinyalini +24V beslediğimiz bir transistörü tetiklememize ve +24V çıkış almamıza olanak sağlayacaktır.
Yukarıdaki devrede gördüğünüz gibi arduino mega için yapılmış shield devresinin giriş çıkış adetleri aşağıdaki gibidir.
5 adet dijital girişi +5V sinyal için kullanılmıştır.
10 adet girişi gerilim bölücü ile +24V sinyalini okumak için kullanılmıştır
5 adet +24V optokuplorlü transistör çıkışı verilmiştir.
Optokuplör kullanarak +24V çıkışlı shield devresi aşağıdaki gibidir.
Arduino için +24VDC input sinyalini algılamak için aşağıdaki gerilim bölücü devresini kullanabilirsiniz.
Yukarıdaki devre için aşağıdaki arduino kodlarını kullanabilir veya kendi 24V dijital giriş çıkış shield’ ınızı yapıp kendi kodlarınızı yazabilirsiniz.
/* web: www.kaizen40.com prg adı: +24V shield board: arduino mega tarih: 28.02.2016 yazan: Remzi ŞAHİNOĞLU */ //************************** GİRİŞ/ÇIKIŞLAR ************************// const int input_24V = 28; const int btn_1 = 23; const int output_1_24V = 7; // diğer pinleri aynı şekilde burada anımlayıp aşağıda // aynı kodlar ile kontrol edebilirsiniz //***************************** AYARLAR ****************************// void setup() { Serial.begin(19200); //delay(500); pinMode(input_24V, INPUT); pinMode(btn_1, INPUT_PULLUP); pinMode(output_1_24V, OUTPUT); digitalWrite(output_1_24V, LOW); } //**************************** ANA PROGRAM ***************************// void loop() { //******************* +5V SİNYALLERİ *********************// if (digitalRead(btn_1) == 0) { Serial.println("1. +5V sinyali"); // pc ye gönder delay(500); } //******************* +24V SİNYALLERİ *********************// if (digitalRead(input_24V == 1) { Serial.println("1. +24V sinyali"); digitalWrite(output_1_24V, HIGH); delay(500); } else { digitalWrite(output_1_24V, LOW); delay(500); } }
0 yorum