Bu dersimizde 24 voltluk bir aküdeki gerilim dalgalanmasını dijital veriye dönüştürüp şarz seviyesini ledlerle gözlemleyeceğiz. Aynı zamanda akünün şarz durumuna göre değişen 23,4 Volt ile 25,2volt arasındaki gerilim değeri 0 - 10 volt arasında orantılı olarak değişkene dönüştürülüp plcnin 0-10 volt aralığında çalışan analog girişine uygulanacak.
Aslında bu çalışmayı konrolkalemi.com (http://www.kontrolkalemi.com/forum/konu/ak%C3%BC-%C5%9Farj-devresi.78820/) sitesinde sorulan bir soru üzerine hem probleme yardımcı olma hem de mevcut bilgilerimi pekiştirme amacıyla yaptım.
Söz konusu sitede (http://www.kontrolkalemi.com/forum/konu/ak%C3%BC-%C5%9Farj-devresi.78820/) sorulan probleme ait açılan konunun içeriği şöyle:
Arkadaşlar merhaba,
Benim şöyle bir problemim var.
12 voltluk 2 adet seri bağlı akümüz var. Yani 24 volt'luk bir enerji. Benim yapmak istediğim şey ise akünün doluluk oranını bir PLC yardımıyla ölçmek. Bunu da PLC'nin 0-10 volt analog girişinden yapıyorum.
Akü tam dolu iken 25,20 Volt veriyor. Ben bu voltajı potans yardımı ile 10 volta düşürebiliyorum.
Akü tam dolu iken 25,20 Volt - potansta 10,00 Volt
Akü tam boş iken 23,40 Volt - potansta 9,28 Volt okuyorum.
10 volt ile 9,28 volt arasında bir skala yapmam gerekiyor. yani % yüzdelik dilimde bu da çok hassas olmuyor.
10 volt'ta % 100
9,28 volt'ta %1
İhtiyacım olan şey ise şu; mesela 25,20 voltta 10 volt, 9,28 voltta ise 0 volta yakın bir voltaj elde edebileceğimiz bir devre var mı veya yapılabilir mi? Opamp devrelerinin tam ters mantıkla çalıştığını düşünüyorum. Bu konuda bilgisi olan arkadaşlardan yardım bekliyorum.
http://www.youtube.com/watch?v=uORA4ABH1CQ
(http://temrinlerim.org/images/arduino115.jpg)
(http://temrinlerim.org/images/arduino116.jpg)
(http://temrinlerim.org/images/arduino117.jpg)
(http://temrinlerim.org/images/arduino118.bmp)
Devre şemasına ait isis çizimi ve hex dosyası konu ekinde mevcuttur.
Elimde optokuplör olmadığından demo devreye optokuplörleri eklemedim.
Devre isis simülasyonunda çalışmıştır.
Arduino kodlarımız:
int akumulator = 0;
void setup()
{
for (int i=0; i<11; i++)
{
pinMode (i, OUTPUT);
}
}
void loop()
{
for (int i=3; i<14; i++){
digitalWrite(i, LOW);
}
int akumulatorRead = map(analogRead(akumulator), 949, 1023, 0, 10);
int cikis_voltaji = constrain(akumulatorRead, 0, 10);
digitalWrite(cikis_voltaji, HIGH);
delay(200);
digitalWrite(cikis_voltaji, LOW);
}