void Calibration_AD(char value)
{
// long temp_value;
switch (value)
{
case 1:
channelswitch( 0 );
CH1_zero=read_single_data(0);
CH1_zero=read_single_data(0);
break;
case 2:
channelswitch( 0 );
CH1_full=read_single_data(0);
CH1_full=read_single_data(0);
CH1_A=(CH_FULL-CH_ZERO)*32768/(CH1_full-CH1_zero);
CH1_B=(CH_ZERO*CH1_full-CH_FULL*CH1_zero)/(CH1_full-CH1_zero);
程序如上所示: 其中CH_FULL=58982。。。CH_ZERO=32768。。。CH1_full为测得AD输入为4.5V时的值,返回的是一个字。。。CH1_zero为测得AD输入为2.5V时的值,同样返回的是一个字。。。。。
我的问题是,这里的58962和32768是干什么的???为什么要这样计算???
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Upo = (CH1_A*(Upo)/32768+CH1_B-32768)*2.5/32768*RESGAIN;
Unp = (32768-(Unp*CH2_A/32768+CH2_B))*2.5/32768*RESGAIN;
然后又代到这里计算的
其中:公式里的Upo是采到的0通道实时数据,Up1是1通道实时数据。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
我好想懂一点了 (4.5 / 2.5) * 32768 = 58982.4
现在的问题是,假如CH1_zero输入的不是2.5V,若是0V,那就要把32768换为1吗?????
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
直接在ST MCU里搬过来的,在那里放了几天没人解答!!!!!!!!!!!!!! |