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