S.A.
Sn. Arkadaşlar kolay gelsin.
Direnc.net teki stm32 kartından elimde mevcut bu kart ile denemeler yapıyorum. Aynı karttan beslediğim sensör voltajını çeşitli ölçü aletleri ilede ölçtüm voltajı 1.8 küsür ama stm ile ölçümlerimde 1.5 küsur oluyor. Adc ile çeşitli şekillerde ölçtüm ama sonuç aynı. Kodlar aşağıda sıkıntı ne olabilir. kolay gelsin.
#include "LCD5110_Basic.h"
#include "DefaultFonts.c"
float volt=0;
unsigned int adc_oku = 0;
char ADC1_say=0;
unsigned long ADC1 = 0, ADC_top = 0;
int ADC_Olcum(char kanal)
{
unsigned long adc_toplam=0;
char k=0;
ADC1_say++;
for(k=0;k<128;k++)
{
adc_toplam+=ADC1_Get_Sample(kanal); //Delay_us(100);
}
//ADC_top+=adc_toplam>>7;
ADC_top+=adc_toplam/k;
if(ADC1_say>10){ADC1=ADC_top/ADC1_say; ADC_top=0; ADC1_say=0; return ADC1;}
else {return ADC1;}
}
void main()
{
InitLCD(90);
ADC_Set_Input_Channel(_ADC_CHANNEL_2);
ADC1_Init();
setFont(SmallFont);
while(1)
{
adc_oku = ADC_Olcum(2);
//adc_oku = ADC1_Read(2);
//adc_oku = ADC1_Get_Sample(2);
volt=(adc_oku*3.30)/4095;
print("adc:",0,0); printNumI(adc_oku,24,0,2," ");
print("volt:",0,0); printNumF(volt,2,0,20,'.',3,' ');
delay_ms(20);
}
}
STM32 lerde adc besleme voltajından 0.2 volt kadar az ölçüyor yani 3.3v besleme için max 3v ölçüyor.bu değer ölçülen değer küçükken az ölçülen değer max değere yaklaşınca artıyor.Referance manuelinde ilgili sayfayı bulunca ekleyeceğim buraya.
O zaman sıkıntı bir durum. Alışıncaya kadar sıkıntılar çekeceğiz. Ölçümlerde voltajı stabil ölçtüğü alanlarda tutmak lazım.
Yukarıda yaptığım yorumda yanılmışım.Ben bu durumu adc için değil dac için yaşamıştım.Kullandığım kart stm32f100rb discovery idi.Yanlış hatırlamışım.Yanlış bilgilendirme için özür diliyorum.STM32'ler için adc'de dediğiniz gibi bir sorun yaşamadım.Kodlarınıza bakıp hataya değer birşey görecekmiyim bakacağım.
Hangi IDE'yi ve kütüphaneleri kullanıyorsunuz.Kodunuzda ilgili port ayarlarını göremedim.
@Murat Mert ADC'nin referans voltajından emin misiniz? Kodlarınızda 3.3V olarak almışsınız.
Kitin şemasından yada multimetre ile ADC'nin referans voltajını öğrenin.
Büyük ihtimalle referans voltajı direkt beslemeye bağlıdır, bu durumda besleme gerilimini de ölçebilirsiniz.
Bazı kitlerde 3.3v reg. ile mcu arasında diyot oluyor. Eğer öyle ise referans gerilimi için diyotun sebep olduğu gerilim düşümünü hesaba katmanız gerek.
S.A.
@Emre_Tuncay_ IDE MikroC Kod ile ilgili port ayarları ekdeki kod da var.
@Bertan Ref 3.3 besleme.
@HexfeT Diyot olsa ölçüm değerini düşük mü gösterir. Diyota bakayım varmıdır.