传感器
通俗来讲,传感技术类似于为机器装上眼睛、耳朵以及鼻子等,使得机器具有感知外界环境变化的能力,进而辅助控制系统做出最优的决策,使之更好与人共融。闲暇时光,拟对传感相关的知识进行归纳总结,主要包括有:1、编码器;2、压力传感器;3、陀螺仪;4、激光雷达;5、温度传感器等;
首先,本部分通过简单的实验,了解编码器的信号输出类型,真正弄明白编码器在实际应用过程中的关键点,为后续多源信息融合提供前期基础,
附录:编码器简单调试
编码器在工业控制和自动化领域中具有广泛的应用,能够把角度、位置等物理量转换成电信号加以输出,本部分对编码器进行调试,并对得到的波形进行初步的分析;编码器实验过程中发现采样频率比较小时候,得到的波形会明显失真;
所用的设备主要包括:1、RIGOL DP831A稳压电源;2、RIGOL DS1022C示波器;3、编码器:增量式光电编码器,脉冲100,输入电压为5V;
稳压电源
编码器外观形貌(编码器位数与线数的区别,例如:编码器为12位,相当于4096线,每圈能够采集4096个数据)
2、编码器旋转方向的判断:A前导于B为顺时针旋转,B前导于A为顺时针旋转;
编码器信号输出:黄色为编码器A项输出信号,蓝色为B项输出信号,测试中编码器为逆时针旋转,从上图可知,每个脉冲的周期约为30ms,考虑到编码器的脉冲为100,因此编码器的转速n=60/TP=60/(30*0.001*100)=20 r/min,与输入转速一致,具有较好的准确性,
3、编码器测试电机转速大小:
方法一:周期法(T法),是测量两个脉冲之间的时间,进而转换成转速 RPM,适合测量低速运转的电机( f 为基准时钟频率,M2 为时钟脉冲数,P 为编码器线数);其中,转速n的单位为r/min;时钟脉冲数M2 越大,误差越小;
方法二:测频法(M法),是测量一定时间内的脉冲数,然后转换成转速 RPM适合测试高速运转的电机。(M1 为测量脉冲数,P 为编码器线数,T 为测量时间),测试脉冲数M1 越大,相对误差越小,因此,实际测试中提高测试时间,减小转速的测试误差。
单片机、旋转方向判据程序:
#include <reg52.h>
sbit bA_Key01_IoStatus = P1^0;
sbit bB_Key02_IoStatus = P1^1;
/*************************************************************
1us延时子函数
**************************************************************/
void Delay1us(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
for(i=20; --i;) ;
}
/*
扫描编码器子函数在编码器引脚A为低电平期间:
编码器引脚B从0到1为正转,编码器引脚B从1到0为反转。
*/
void PWM_key(void)
{
uint8 Curr_encoder_b; //定义一个变量来储存当前B信号
uint8 Last_encoder_b; //定义一个变量来储存上次B脚信号
if( bA_Key01_IoStatus && bB_Key02_IoStatus) //编码器无转动退出
{
return;
}
//-----------------------------------
if(!bB_Key02_IoStatus)
{
Last_encoder_b = bA_Key01_IoStatus; //记录B信号
Delay1us(1000); //延时约 1ms
Curr_encoder_b = bA_Key01_IoStatus; //记录等待期间的B信号(指当前B信号)
if( (Last_encoder_b == 0)&&(Curr_encoder_b== 1) ) //B从0到1为正转
{
}
else if( (Last_encoder_b == 1)&&(Curr_encoder_b == 0) ) //B从1到0为反转
{
}
}
}