Picproje Elektronik Sitesi

DERLEYİCİLER => MikroC - PIC => MikroC ARM => Konuyu başlatan: Murat Mert - 19 Ocak 2018, 10:39:33

Başlık: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: Murat Mert - 19 Ocak 2018, 10:39:33
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);
}
}

Başlık: Ynt: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: Emre_Tuncay_ - 19 Ocak 2018, 13:02:12
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.
Başlık: Ynt: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: Murat Mert - 19 Ocak 2018, 15:16:46
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.
Başlık: Ynt: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: Emre_Tuncay_ - 20 Ocak 2018, 17:35:03
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.
Başlık: Ynt: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: Emre_Tuncay_ - 20 Ocak 2018, 17:47:22
Hangi IDE'yi ve kütüphaneleri kullanıyorsunuz.Kodunuzda ilgili port ayarlarını göremedim.
Başlık: Ynt: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: Bertan - 20 Ocak 2018, 18:15:21
@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.
Başlık: Ynt: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: HexfeT - 20 Ocak 2018, 19:34:24
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.
Başlık: Ynt: stm32f407ve ile adc voltaj ölçüm hatası
Gönderen: Murat Mert - 21 Ocak 2018, 16:17:07

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.