stm32f407ve ile adc voltaj ölçüm hatası

Başlatan Murat Mert, 19 Ocak 2018, 10:39:33

Murat Mert

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);
}
}
mert07

Emre_Tuncay_

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.

Murat Mert

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.
mert07

Emre_Tuncay_

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.

Emre_Tuncay_

Hangi IDE'yi ve kütüphaneleri kullanıyorsunuz.Kodunuzda ilgili port ayarlarını göremedim.

Bertan

@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.

HexfeT

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.

Murat Mert


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.
mert07