STM32 ADC eksik değer okuyor.

Başlatan sedronjames, 09 Mayıs 2022, 17:19:35

sedronjames

Arkadaşlar selamlar.


STM32G serisi bir mikrodenetleyici kullanıyorum.

En temel sorundan başlamak için yalnızca DC bus gerilimini ölçüp debug ekranından kontrol ediyorum.

Başlangıçta tek kanal okuma yaptığım için regular grup single modda çalışıyorum.
 
0.25 saniyede kesme üreten bir timerım var. Bu kesme fonksiyonunun içerisinde ADCyi başlatıyorum.

Bir çevrim okuduktan sonra otomatik olarak kendisini sonlandırıyor. Tekrar okuma yapmak için tekrar ADCyi başlatıyorum.

ADCnin sampling timeı 2.5 cycle seçtim. 12.5 cycle da default olarak ekleniyor. Etti 15 cycle.

Gerilim bölücü kullanarak da DC bus gerilimini ölçüyorum.

Kullandığım dirençler 100k ve 5.1k.

ADC bu ayarlar ile ölçümü 865 gibi bir dijital değer (12 bit) olarak ölçüyor.

Ancak hesaplamaya göre 1165 gibi bir dijital değer olması gerekiyor.

Sampling timeı artırdığımda 1135 gibi daha yakın bir değer elde ediyorum.

Burada sampling timeın etkisi nedir?

2 gündür forumda dolaşıyorum ancak istediğim gibi bir yanıt bulamadım.

Yardımlarınızı bekliyorum.

İyi forumlar :)

Erol YILMAZ



z

Kalibrasyon islemini yapmiyorsan bu hatalarla karsilasman normal.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ex_machina

Muhtemelen empedans uyumsuzluğu var. ADC girişine bir tane voltaj buffer ekleyin bir de öyle deneyin.

sedronjames

@Erol YILMAZ hayır bağlı değil.

@noravel VREFINT referans voltajını 3.41 volt gibi elde ediyorum. VDDA gerilimim yaklaşık 3.3 volt. Ancak datasheette verilen adresteki kalibrasyon değeriyle hesaplama yapınca 3.41 gibi bir değer elde ediyorum.

@ex_machina voltaj buffer deneyeceğim.


Ancak benim burada dikkat çekmek istediğim nokta ADC sampling time değişince ölçümün de değişmesi. Buna anlam getiremedim.

Yanıtlarınız için çok teşekkür ederim. İyi forumlar.

e-zeki

ADC girişlerinde "holding capacitor"ler var ADC örnekleme yapabilmek için belli bir dolum süresine ihtiyaç duyar sampling time bu işe yarar adc girişindeki kapasitörün dolumu ve dolduktan sonraki çevirim için gerekli süreye tekabül eder.
sizin adc giriş empedansınız ne kadar yüksek olursa bu kapasitörün dolum süresi o kadar uzun olur. bu yüzden giriş empedansıyla sampling time ayarı doğru orantılı olmalıdır. sorununuz büyük ihtimalle buradan kaynaklanıyor ölçüm değişikliği kapasitörün doluluk seviyesinden kaynaklı.

sedronjames

yanıtınız için teşekkür ederim. dediğiniz gibi sampling time süresini artırınca doğruya daha yakın bir değer elde edebiliyorum.

Şu an birden fazla kanal okumak için DMA'yı aktif ettim.

Stabil bir okuma yapıyor dalgalanma yok. Ancak olması gerektiğinden yaklaşık 300-400 dijital değer yüksek okuyor. sanki offset varmış gibi.

scan conversion modu enable
cont. conv. modu enable
sampling time'ı da artırdım sonuçlar böyle.

sedronjames

Okuma yaptığım diğer kanal pull-up direnci ile 5V'a bağlıymış.

Bu yüzden okuduğum diğer kanallarda offset etkisi yapıyormuş.