ortalama alma

hkn_blt

Üye
Katılım
31 Ağu 2009
Mesajlar
1,163
Puanları
31
arkadaş ben dc voltmetre yapıcam fakat şu işlemi yapamadım adc yi 20 kere okuyup ortalamasını alıp sonucu göstermek istiyorum.Çünkü direk göstermek istediğimde voltmetre sürekli değişiyor sabit kalmıyor.yardımcı olabilcek varmı acaba
 
arkadaş ben dc voltmetre yapıcam fakat şu işlemi yapamadım adc yi 20 kere okuyup ortalamasını alıp sonucu göstermek istiyorum.Çünkü direk göstermek istediğimde voltmetre sürekli değişiyor sabit kalmıyor.yardımcı olabilcek varmı acaba



Kod:
int a;
int16 ortalama = 0;

for(a=0;a<20:a++) ortalama += read_adc(); 
ortalama /= 20;


Adc tanımlamalarını, kurulumunu vs. de sen eklersin.
 
Kod:
int a;
int16 ortalama = 0;

for(a=0;a<20:a++) ortalama += read_adc(); 
ortalama /= 20;


Adc tanımlamalarını, kurulumunu vs. de sen eklersin.

dediğiniz gibi yaptım ama olmuyor ekranda hiçbir değeri göstermiyor kodları ekliyorum belki daha iyi yardımcı olursunuz

Kod:
unsigned char volt;

unsigned int i;
char *text;
long tlong,sonuc;
float volt_oku=0;
 
void main() {
  INTCON = 0;                              // Tüm kesmeler iptal edildi
  Lcd_Init(&PORTB);                        // Lcd_Init PORTB LCD için hazırlandı
  LCD_Cmd(LCD_CURSOR_OFF);                 // LCD kursör kapatıldı
  LCD_Cmd(LCD_CLEAR);                      // LCD de radtgele karekter oluşmaması için silindi

    delay_ms(500);
Lcd_Out(1,6,"ASLAN");
                                           // 1.satır6. karaktere bilgi yazıldı

  ADCON1     = 0x82;                       // ADC ayarları
  TRISA      = 0xFF;                       // PORT A  giriş yapıldı
  Delay_ms(100);
  text  = "VOLT : ";                      // BLİLGİLENDİRME TEXTleri
  while (1) {
    int a;

    for(i=0;i=15;i++){
    volt_oku+=ADC_read(2);                // ADC 2 kanal okundu

         }
    volt_oku/=16;
    LCD_Out(2,1,text);                       //     TEXT i ekrana bas

    tlong = (long)volt_oku*3000;      // okunan volt mili volta çevriliyor
    tlong = tlong / 1022;                  // Mili volt Volta çevriliyor

    volt     = tlong / 1000;                 // X.,.. değeri atanıyor
    LCD_Chr(2,8,48+volt);                    // X değeri satır 2 8. karaktarden itibaren basılıyor

    volt = (tlong / 100)%10;             // .X,.. değeri atanıyor
    LCD_Chr_CP(48+volt);                     // X değeri satır 2 de kursörün bulunduğu yerden itibaren basılıyor



    volt = (tlong / 10) % 10;             // 0.1 volts d
    LCD_Chr_CP(48+volt);                     // satır 2 de kursörün bulunduğu yerden itibaren basılıyor
     LCD_Chr_CP('.');
    volt = tlong % 10;                    // 0.01 volt
    LCD_Chr_CP(48+volt);                     // satır 2 de kursörün bulunduğu yerden itibaren basılıyor

    LCD_Chr_CP('V');                       // elde edilen sonuca V birimi ekleniyor.

    Delay_ms(100);
    }                   // döngü kararsızlıkları için 1ms bekliyor

}
 
derleyi microc ile derliyorum .Tmm saol hocam dediğinizi yapınca düzeldi çok saolun gözümden kaçmış orası :D
 
ya şimdi isisde dediğinizi yapınca oluyor ama devre üzerinde yine aynı sürekli voltaj değişiyor ekranda sabit kalmıyor ayrıca birde voltaj okuma uçlarına birşey baglamayıncada sürekli voltaj değişiyor normalde sıfır göstermesi gerek değilmi nasıl düzeltcem bu sorunu
 
Bunun için ekranı daha aralıklı tazelemelisin.
Adc girişi ile gnd arasına 1 nf gibi küçük bir kapasite eklersen boşta değer gösterme sorununun da çözülmesi lazım.
 
olmadı heralde osilatör ile ilgili sorun var yardımlarınız için saolun çözemicem galiba sorunu :)
 
tmmdır halletim süper çalışıyor 0 hata ile ölçüm yapıyor :)
 

Forum istatistikleri

Konular
130,133
Mesajlar
933,438
Kullanıcılar
453,209
Son üye
felonika

Yeni konular

Geri
Üst