ACS711
İLE ADC VE DMA KULLANARAK AKIM OKUMA
ACS711 ile
akım değeri okurken tek kanal ADC ve DMA kullanıldı. Yazdığımız kodda önemli
olan birkaç nokta ve değerin okunabilmesi için çözünürlük hesabından
bahsetmeden önce kodumuzu anlatalım.
Öncelikle
konfigürasyonları yaparken ADC den tek kanalın benim için yeterli olduğu için
tek kanal aktif ettim. Daha sonra ADC’nin yukarıda gördüğünüz özelliklerini
enable ettim.
DMA ile
okuyacağım için DMA Channel 1 i aktif ettim ve özelliklerini yukarıdaki gibi
ayarladım.
Kodda ilk
başta tanımlarımızı yaptık. ADC değerlerini toplamak için Uint16_t tipinde bir
dizi tanımladık. Bu dizinin boyutunu 2 olarak belirledik normalde tek kanal
okuduğumuz için 1 boyutlu dizi yetmekte ama bu şekilde olmadığında kodda
sıkıntı çıkmakta. ADC den aldığımız veriyi belli hesaplamalardan geçerek ampere
çevirdiğimizde eşitlemek içinde float tipinde bir amp_value isimli değişken
tanımladık. Hesaplamalarda kullandığımız sabit sayıları define olarak
tanımladık.
Bu
fonksiyonla ADC yi DMA ile başlattık. İnt mainin içine while döngüsünün dışına
yazılır.
Burada ADC
den değeri aldıktan sonra bu değeri ampere çevirmek için yapacağımız
hesaplamaları hal kütüphanesinin bu fonksiyonunu çağırarak içinde yapmalıyız
aksi takdirde işlemler yapılmaktadır. Bu fonksiyonu ise int mainden çıktıktan
sonra tanımlamalısınız.
OKUNAN DEĞERİ AMPERE ÇEVİRMEK İÇİN YAPILMASI GEREKEN
HESAPLAMALAR(Resolution Calculation)
Yorumlar
Yorum Gönder