Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: erhanmete - 27 Eylül 2011, 09:45:46

Başlık: double kullanımı
Gönderen: erhanmete - 27 Eylül 2011, 09:45:46
MS5803 için örnek uygulamayı inceliyorum, fakat benim kullandığım derleyici double değişken kullanmıyor.

aşağıdaki örneği nasıl kullanabilirim. matematik de biraz zayıf. bir türlü beceremedim.



unsigned long D1; // ADC value of the pressure conversion
unsigned long D2; // ADC value of the temperature conversion
unsigned int C[8]; // calibration coefficients
double P; // compensated pressure value
double T; // compensated temperature value
double dT; // difference between actual and measured temperature
double off; // offset at actual temperature
double SENS; // sensitivity at actual temperature
int i;
unsigned char n_crc; // crc value of the prom




   
    D1=cmd_adc(CMD_ADC_D1+CMD_ADC_256); // read uncompensated pressure
    D2=cmd_adc(CMD_ADC_D2+CMD_ADC_4096); // read uncompensated temperature
    // calcualte 1st order pressure and temperature (MS5607 1st order algorithm)
    dT=D2-C[5]*pow(2,8);
    off=C[2]*pow(2,17)+dT*C[4]/pow(2,6);
    SENS=C[1]*pow(2,16)+dT*C[3]/pow(2,7);
    T=(2000+(dT*C[6])/pow(2,23))/100;
    P=(((D1*SENS)/pow(2,21)-off)/pow(2,15))/100;
   
   
   
    // place to use P, T, put them on LCD, send them trough RS232 interface...




D1,D2 ve C değişkenlerini sensörden düzgün okuyorum ama çevrim kısmını istediğim hale getiremedim.
Başlık: Ynt: double kullanımı
Gönderen: Tagli - 27 Eylül 2011, 11:27:17
double yerine float kullanmayı dene. Elbette hassasiyet düşük olacaktır.