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.
double yerine float kullanmayı dene. Elbette hassasiyet düşük olacaktır.