复用IO口,ADC采样

因为单片机IO是复用,20ms的采样等待,IO消除本身的输出高电压,电容电压值。
所以存在电池ADC值采样抖动,速度ADC采样抖动加周期干扰。

在这里插入图片描述
调试RP1的值可降低,速度ADC干扰。

从软件上;
1.用消抖滤波法,消除电池的电路的抖动干扰。
2.用一阶互补滤波,消除速度周期性干扰。

unsigned char 	icnt = 0;	//去抖次数
unsigned long	Value = 0;	//上次测量值
unsigned long	New_Value = 0;//当前测试值

void Get_Bat_Value(void)
{
    static unsigned char i = 0;
 
    New_Value = get_Bat_value();
    icnt = 0;//去抖清零
    while(New_Value != Value)//判断当前值与上次测量值是否相等
	{
		icnt++;
		if(icnt >= 12)//不同的值超过去抖上限,退出测量
		{
			Value = New_Value;//将当前值替代为上次测量值
			break;
		}
		New_Value = get_Bat_value();//测量当前值,等待下次与上次测量值进行比较
	}
        sum_vbat = New_Value;
//        sum_vbat += 20;
        sum_vbat = (unsigned long)(sum_vbat*1000);
        sum_vbat = sum_vbat/4096;  
        
        smoothbuf_vbat += sum_vbat  ;
        i++;
       if(i >= 20)
       {
         Vbat_value  = smoothbuf_vbat / 20;
         Bat_Level_Judge();
         smoothbuf_vbat = 0;
         i=0;
       }
 
}
unsigned long sum_speed = 0;	
unsigned long sum_speed_num = 0;

void Get_Speed_Value(void)
{
   static  unsigned char i = 0;
   static  unsigned long temp_data = 0;//上次滤波平均值
   static  unsigned long ad_ave = 0;//平均之后的本次滤波
   static  unsigned long ad_sum = 0;//上次滤波的7倍与本次滤波之和
  
     ad_sum = temp_data * 8;
     ad_sum =  ad_sum - temp_data + get_speed_value() ;
     ad_ave = ad_sum / 8;
     temp_data = ad_ave;
   
     sum_speed =  temp_data; 
     sum_speed = (unsigned long) (sum_speed*7000);	// / 4096; 
     
     sum_speed =sum_speed / 4096;
     //一阶滤波  
      
      smoothbuf_speed += sum_speed;    
      i++;  
      if(i >= 10)
      {
        sum_speed_num = smoothbuf_speed / 10 ;
     
        smoothbuf_speed = 0;
        i=0;
      }

      speed_Calculate();//速度转换
}```

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值