Gokrtl

Gökhan Kartal (TeknoDay)
Staff member
Katılım
27 Şubat 2019
Mesajlar
11,212
Kullandığım Acs712 akım ölçme devresini sağlıklı bir şekilde ayarlayamadım. Anlık akımı tuttursam da pot ile değiştirdiğim de düzgün ölçüm yapamıyor.

Başka bir modül kullanabilir miyim diye bakındığım da fiyatların bir anda 70-80₺ ve daha yukarılarına çıktığını gördüm. Bu devrelerin çoğunda hall effect sensör denilen bir entegre kullanılıyor. Bu entegre normalde manyetik alan ölçüyor. Direk akımı ölçtüğü söylenemez herhalde. Siz devrenin GND ucunu bu sensörün bir bacağından girip, diğer bacağından çıkıyorsunuz. Bu sayede akım entegrenin içinden akarken oluşturduğu manyetik alanı ölçüp, bu manyetik alanın hangi akım değerine denk geldiğini hesaplıyorsunuz. Yani böyle akımı dolaylı yoldan ölçen bir sisteme ne kadar güvenilir bilmiyorum. Belkide acs712 bu Entegreler içinde en vasat olanıdır ve bu yüzden ucuzdur. Belki daha pahalı Entegreler bu işi layıkıyla yapıyordur. Ama benim o kadar para verip test etmeye pek niyetim yok. O yüzden akımı daha ekonomik ölçebileceğim ve dolaylı yoldan ölçmeyen bir sistem arayışındayım.

Nedir bu akım ölçme işinin doğru olanı?
Yani akımı ölçmek istersek nasıl bir devre kurmalıyız?
Bazı yerler de direnç üzerine düşen gerilimi hesaplayarak bulunduğundan bahsetmiş ancak bu direncin yükün voltajından çaldığını anlatmışlar ve devamında şönt direncinden bahsetmişler. Ben konuya hakim olmadığım için ve zor anladığım içim kafam iyice karıştı.
Sanırım en güzeli bir şema yardımı ile inceleme yapsak gayet güzel olacak.
 
Valla bu akim olcme yuzunden bende sogudum kendi projemden...
Bu kadar zor olmasa gerek.
Aslında multimetreler de kullanılan devreleri araştırmak gerek. Sanırım en güvenilir ölçüm sistemi onlarda.
 
dc mi acmi ölçeceksiniz. ac için rms ölçüm gerekir.
 
Acs712 Dc akım ölçüm formülü
Akım = (AcsOffset - (Arduino ölçülen analog okuma)) / Hassasiyet

AcsOffset, devreden akım geçmediğinde Viout pinindeki normal voltaj çıkışıdır.
Arduino ölçülen analog okuma, acs712 çıkışının bağlı olduğu analog kanaldan okunan ve gerçek gerilime dönüştürülen analog sinyal değeridir.
Duyarlılık, 1 Amper'i temsil eden akımdaki Acs712 değişimidir. Tüm acs712 sürümleri için yukarıdaki resimde verilmiştir.
 
Basit bir program yazıp problemi ortaya çıkarabiliyor musun? O program üzerinden gidelim.
 
Acs712 Dc akım ölçüm formülü
Akım = (AcsOffset - (Arduino ölçülen analog okuma)) / Hassasiyet

AcsOffset, devreden akım geçmediğinde Viout pinindeki normal voltaj çıkışıdır.
Arduino ölçülen analog okuma, acs712 çıkışının bağlı olduğu analog kanaldan okunan ve gerçek gerilime dönüştürülen analog sinyal değeridir.
Duyarlılık, 1 Amper'i temsil eden akımdaki Acs712 değişimidir. Tüm acs712 sürümleri için yukarıdaki resimde verilmiştir.
Ben bunları defalarca yaptım. Elimdeki acs712 30A lik versiyon.
AcsOffset her yerde 2.5v olarak verilmiş. Bende öyle kullandım. Eve geçince kendi devremdeki vout pini ölçeceğim eğer 2.5v dan farklı çıkıyor ise burada hata yapıyorum demektir.
Hassasiyet ise 30A versiyonu için 66 olarak verilmiş.

Devreyi 1A çekecek şekilde ayarladım. Multimetremde Akım kademesinde 1A geçtiğini kesinleştirdim. Bu durumda iken acs712 nin ölçtüğü amper değeri 1.40 civarı idi.
Hassasiyet değeri ile sürekli oynayarak acs712 nin 1A ölçtüğü değeri yakaladım. Bu değer 36 idi.
66 verilen değeri 36 ya kadar düşürmek bana hiç mantıklı gelmedi. Hadi 2-3 birim oynasın da 30 birim çok saçma.
Neyse öyle yada böyle hem multimetrede hemde acs712 de 1A yakaladım diye sevinirken voltajı değiştirdim. Bu sefer multimetre 2A ölçerken acs712 başka bir değer gösterdi. Oradan sonra bıraktım kurcalamayı.

Dediğim gibi akşam vout çıkışını ölçeceğim. 2.5v değilse ona göre ayar yapacağım.
 
Basit bir program yazıp problemi ortaya çıkarabiliyor musun? O program üzerinden gidelim.
Soru bana ise arduinoda program hazır. Eve geçince kodları eklerim. Açıklamam ise bir üstteki mesajım ile aynı olacak.

Ben aslında şönt direnci alıp bir devre yapma taraftarıyım. Multimetrelerde böyle kullanılıyor ve bu ölçümlere güveniyorum. Ama eğer acs712 sorununu çözerde kabul edilebilir bir değer ölçersek daha iyi olur. Çünkü şönt direnç ile devre yaptığımda bunu kademe devresine ilave etmek için üçüncü kez pcb basmam gerekecek.
O dert değilde, eski pcb den eleman söküp yenisine takmak işkence gibi geliyor :D
 
Hall effect sensörleri ancak çok yüksek DC akımlarda verimli çalışıyor. Senin 30 A lik versiyonu 20 A civarında akımlarda kullanırsan kabul edilebilir bir sonuç alabilirsin. Keşke 5 A lik versiyon alsaydın, ama onu da alsan gene 3 - 4 A değerlerinde nispeten düşük bir hata ile ölçüm yapardı.

Bir de hall sensör ile ölçüm yaparken ölçüm öncesi mutlaka hall sensörün kalibre edilmesi gerekiyor, ama senin güç kaynağında böyle birşey yapma şansın yok.

Bende Fluke'un profesyonel 376 FC pens ampermetresi var. Bu alet DC akım ölçerken hall sensör kullanıyor. Pens ampermetreyi ON yaptığım zaman, yakında hiçbir kablo yokken bile 200 mA akım ölçüyor! Ölçüm yapmadan önce mutlaka sıfırlama yapman gerekiyor ve her şeyi düzgün yapsan bile ölçüm toleransi %2 :katil2:. Yani yüksek çözünürlük, yüksek doğruluk ve tekrarlanabilir ölçüm için hall sensör hiç uygun değil.

Yani bir güç kaynağında hall sensör ile senin iş olmaz. Hazır şönt var zaten akım sınırlama için, onu akım ölçümü için de kullanabilirsin.
 
Hazır şönt var zaten akım sınırlama için, onu akım ölçümü için de kullanabilirsin.
Onu kullanamam abi. Çünkü benim hesap kitap işlerim kademe devresi üzerinde, şönt direnci ise demonte güç kaynağı devresinde. Ondan ona ancak kablo ile taşırım ki hiç tasvip ettiğim birşey değil.

İlk başlarda iki devreyi tek kart üzerinde bir bütün olarak yapmayı planlamıştım ama düşündüm herkeste kademeli trafo olacak diye bir kaide yok. Bencillik yapıp sadece kendime çizmenin de alemi yok. O yüzden iki parça çizmeye karar verdim.
 
Akım nerede akıyorsa, şönt de orada olacak, senin de o şöntü kullanman lazım. Bunun başka yolu yok.
 
Akım nerede akıyorsa, şönt de orada olacak, senin de o şöntü kullanman lazım. Bunun başka yolu yok.
Sıkıntıya bindi iş.
O zaman şönt zaten hazırda olduğuna göre benim sadece kablo ile analog pine data taşımam lazım. Ama bu datanın da 5v'u geçmemesi lazım. Bunu nasıl ayarlayacağız?
 
Sıkıntıya bindi iş.
O zaman şönt zaten hazırda olduğuna göre benim sadece kablo ile analog pine data taşımam lazım. Ama bu datanın da 5v'u geçmemesi lazım. Bunu nasıl ayarlayacağız?

akımı ölçen devrenin şöntün dibinde olması lazım, arada kablo olmaz, çok parazit kapar. Ölçüm yapan devrenin çıkışındaki maksimum 5 V luk gerilim, kablo ile iletilebilir arduinoya.
 
acs712 yakında akım geçiren her iletkenden etkilenir. yeni modellerinde bu sorun azaltıldı diye duymuştum.
 
Şönt direnci tam olarak nasıl kullanılıyor emin değilim ama sanırım üzerinden geçen volt/bilinen ohm değeridir diye düşünüyorum. Geçenlerde arduino multimetre tarzı şeyleri bayağı araştırmıştım. Hassas bir volt okuması ADS1015 4 Kanal 16 Bit ADC kullanılabilir. Oldukça hassas bir okuma yapabiliyor. Sanırım güç kaynağının çıkışında kullanılacak, çıkış voltu da okunabilir fazladan pinleri var. 5 volt inputu geçmemek için de gerilim bölücü direnç kullanılıyordu. Bunun için de max ölçüm voltajı belirleyip bu değeri hassasiyet için çok yüksek tutmamak gerekiyormuş. electronoob diye bir adam youtubeda @Gokrtl sizdeki modulle ölçüm yapıyor kabul edilebilir değerlerle ama daha düşük akım için modeli var. https://electronoobs.com/eng_arduino_tut10_2.php bir de şönt ile şöyle bir yöntem kullanmış AD623 opamp ile yapmış biraz tuzlu fiyatı ama belki bu yöntem işinize yarayabilir.

Multimetre videoları:
 
Son düzenleme:
Kodlarım aşağıdaki gibi. Resimde de göreceğiniz üzere multimetre 1A gösterirken, ekranda 0.80mA görmektesiniz.
Hiç akım çekmezken sensörün çıkışını ölçtüm 2.484v vardı. Onu da koda ekledim.


acs712:
const int currentSensor = A0;
const int voltageSensor = A2;
float vOUT = 0.0;
float vIN = 0.0;
float R1 = 10000.0;
float R2 = 1500.0;
float Vdata = 0;
float V,I,I1;
float Cdata;
float value;

void setup()
{
/////////////////////////////////////
}

void loop() {
  for(int i = 0; i < 300; i++) // daha kararlı ortalama bir sonuç almak için 300 kez okuma yapma
   {
     Cdata = Cdata + analogRead(currentSensor);
     Vdata = Vdata + analogRead(voltageSensor);
    delay(1);
   }

Cdata=Cdata/300;          
V=(Cdata/1024.0)*5000;                      
I=((V - 2484)/ 66);

Vdata=Vdata/350;
vOUT = (Vdata * 5.0) / 1024.0;
vIN = (vOUT / (R2/(R1+R2)));

  // Watt hesaplama ve ekrana yazdırma
  lcd.setCursor(0,1);
  lcd.print("WATT: ");
  lcd.setCursor(6,1);
  value=(I * vIN);
  if (value<0){lcd.print("0.00");} else {lcd.print(value);}

  // Amper değerini ekrana yazdırma
  lcd.setCursor(0,3);
  lcd.print("AMPER: ");
  lcd.setCursor(6,3);
  if (I<0) {lcd.print("0.00");} else {lcd.print(I);}

  // Voltaj değerini ekrana yazsırma
  lcd.setCursor(0,2);
  lcd.print("VOLT: ");
  lcd.setCursor(6,2);
  lcd.print(vIN);

  if(vIN <= 10.00){
    digitalWrite(yirmialtiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(100);
      digitalWrite(onikiv, HIGH);
      lcd.setCursor(14, 1);
      lcd.print("     ");
      lcd.setCursor(14, 1);
      lcd.print("KDM-");
      lcd.setCursor(18, 1);
      lcd.print("1");
  }else if(vIN >= 10.10){
    digitalWrite(onikiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(100);
      digitalWrite(yirmialtiv, HIGH);
      lcd.setCursor(14, 1);
      lcd.print("     ");
      lcd.setCursor(14, 1);
      lcd.print("KDM-");
      lcd.setCursor(18, 1);
      lcd.print("2");
  }
// Değerleri sıfırlama
  Cdata=0;
  I=0;
  V=0;
  Vdata=0;
  vIN=0;
  value;
  delay(500);
}

20210506_182450.jpg
 
Dün biraz bakındım ama konuya vakıf olmadığımdan doğru arama yaparak kaynak bulamamdım herhalde.

Bu şönt direncin formülü nedir? Mesela 0.22r direncin üzerine düşen akım nasıl hesaplanır?
Devreye nasıl bağlanır?
Referans voltajı direncin girişinden mi, çıkışından mı alınır?
Opamp ile voltajın yükseltilmesi ne için gerekli?

20210507_091104.jpg
 

Forum istatistikleri

Konular
5,828
Mesajlar
99,434
Üyeler
2,476
Son üye
mrmandos

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top