/**************************************
向IIC总线发送一个字节数据
**************************************/
/*******************************/
void delay(unsigned int k)
{
unsigned int i,j
for(i=0i<ki++)
{
for(j=0j<121j++)
{}}
}
/**************************************
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要基滑调整此函数,注意时钟过快时需要修改
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5us()
{
_nop_()_nop_()_nop_()_nop_()
_nop_()/*_nop_()_nop_()_nop_()
_nop_()_nop_()_nop_()_nop_()*/
}
/**************************************
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5ms()
{
WORD n = 1000
while (n--)
{
_nop_()_nop_()_nop_()_nop_()
}
}
void MMA8452_SendByte(BYTE dat)
{
BYTE i
for (i=0i<8i++) /春中/8位计数器
{
dat <<= 1 //移出数据的最高位
SDA = CY //送数据口
SCL = 1 //拉高时钟线
Delay5us()//延时
SCL = 0 //拉低时钟线
Delay5us()//延时
}
MMA8452_RecvACK()
}
/**************************************
从IIC总线接收一个字节数据
**************************************/
BYTE MMA8452_RecvByte()
{
BYTE i
BYTE dat = 0
SDA = 1 //使能内部上拉,准备读取数据,
for (i=0i<8i++) //8位计数器
{
dat <<= 1
SCL = 1 //拉高时钟线
Delay5us()//延时
dat |= SDA//读数据
SCL = 0 //拉低时钟线
Delay5us()//延时
}
return dat
}
这是我以前读取传感器信息时候用的。正好是iic通信的那部分,你自己学一下iic吧扒锋山,我的程序是没问题的哦。
在选购加速度传感器的时候,需要考虑什么?模拟输出
vs
数字输出:
这个是最先需要考虑的。这个逗漏返取决于你系统中和加速度传感器之间的接口。一般模拟输出的电压和加速度是成比例的,比如2.5V对应0g的加速度,2.6V对应于0.5g的加速度。数字输出一般使用脉宽调制(PWM)信号。
如果你使用的微控制器只有数字输入,比如BASIC
Stamp,那你就只能选择数字输出的加速度传感器了,但是问题是你必须占用额外的一个时钟单元用来处理PWM信号,同时对处理器也是一个不小的负担。
如果你使用的微控制器有模拟输入口,比如PIC/AVR/OOPIC,你可以非常简单的使用模拟接口的加速度传感器,所需要的就是在程序里加入一句类似"acceleration=read_adc()"的指令,而且处理此指令的速度只要几微秒。
测量轴数量:
对于多数项目来说,两轴的加速度传感器已经能满足多数应用了。对于某些特殊的应用,比如UAV,ROV控制,三轴的加速度传感器可能会适合一点。
最大测量值:
如果你只要测量机器人相对于地面的倾角,那一个±1.5g加速度传感器就足够了。但是如果你需要测量机器人的动态性能,±2g也应该足够了。要是你的机器人会有比如突然启动或者停止的情况出现,那你需要一个±5g的传感器。
灵敏度
一般来说,越灵敏山饥越好。越灵敏的传感搜余器对一定范围内的加速度变化更敏感,输出电压的变化也越大,这样就比较容易测量,从而获得更精确的测量值。
带宽
这里的带宽实际上指的是刷新率。也就是说每秒钟,传感器会产生多少次读数。对于一般只要测量倾角的应用,50HZ的带宽应该足够了,但是对于需要进行动态性能,比如振动,你会需要一个具有上百HZ带宽的传感器。
电阻/缓存机制
对于有些微控制器来说,要进行A/D转化,其连接的传感器阻值必须小于10kΩ。比如Analog
Devices's
analog
加速度传感器的阻值为32kΩ,在PIC和AVR控制板上无法正常工作,所以建议在购买传感器前,仔细阅读控制器手册,确保传感器能够正常工作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)