基于STM32的倾斜仪设计(三)—— 软件设计

该博客详细介绍了基于STM32的倾斜仪的软件设计,包括加速度读取和倾角计算。首先,通过STM32的ADC通道读取加速度芯片的电压信号,转换为数字信号并计算加速度。然后,讨论了单轴和三轴倾斜角的计算方法,利用三轴加速度计提高测量精度。最后,阐述了通信程序设计,包括通信协议、数据帧格式和通信流程,确保角度数据的准确传输和处理。
摘要由CSDN通过智能技术生成

3.1 加速度读取

在计算具体倾斜角之前,首先要得到各个轴的加速度信息,即需要对加速度芯片传来的电压信号的处理。

在ADC处理方面,通过单片机的ADC通道将电压信号转换为数字信号。STM32单片机的ADC通道是12位分辨率的逐次比较型ADC。单片机有18个ADC通道,可以对16个外部信号源以及2个内部信号源进行测量,其结果可以以左对齐或者右对齐的方式储存在16位数据寄存器中。[10]

在进行ADC转换时,我们可以利用u16 Get_ADC_Value(u8 ch,u8 times)函数对指定通道的电压值进行读取。在此函数中,ch代表所指定的采样通道,在本设计中,选用的是PC1,PC2和PC3三个通道来分别对三个轴的加速度值进行读取。times代表采样次数,一般来说采样次数越多,所得结果越精确,但所用时间也会越长,影响系统性能,因此需要权衡两者的关系,本次设计中选用的是20次采样,再对其取平均值。

由于ADC通道为12位,因此,满量程3.3V对应的数字信号为212=4096,故采样出的数字信号与原先的电压值之间的关系为:

U=ADC4096*3.3                          (3-1)

其中,U为调理电路对传感器输出电压处理之后的电压值,ADC为采样通道对电压进行模数转换之后的数字量。通过式(3-1),就可以将采样所得的数字信号准确的还原成为电压值。于是,传感器的输出电压值为:

Ua=U2                              (3-2)

其中,Ua为传感器输出电压值,U为调理电路输出电压值。

得到电压值之后,根据表1所示的加速度与电压关系,就可以很容易的得到三个轴的加速度值,如式(3-3)所示:

a=Ua-0.7720.229*g                          (3-3)

其中,a为各个轴的加速度,Ua为传感器输出电压值,g为当地重力加速度,通常取9.8m/s2

另外,需要注意的是,此加速度可正可负,取决于芯片各轴正方向与重力加速度方向的关系。所以在计算最终夹角的时候,不仅可以得到被测平面的倾斜角,还可以根据各轴加速度的正负对被测平面的具体形态加以分析。

 

3.2 倾角计算

3.2.1 单轴倾斜角的计算

本设计中,我们选用的是加速度计作为测量倾斜角的传感器,故理所当然的涉及到如何将各个轴的加速度转换为倾斜角的问题。关于这种转换方式,首先有较为简单的单轴加速度测量方法。[2]其原理图如图3-1所示:

                                                       

                                                                   图3-1 单轴倾斜角测量示意图

在图19的单轴倾斜角测量示意图中,我们可以很容易的得出Z轴的倾斜角θ与Z轴加速度之间的关系为:

cosθ=AZg                             (3-4)

即:

θ=arccosAZg                            (3-5)

在(3-4)式和(3-5)式中,θ为Z轴与重力加速度方向的夹角,即被测平面与水平面之间的夹角;AZ为Z轴的加速度;g为当地的重力加速度,通常取9.8m/s2

此测量方式看起来简单明了,只需要Z轴一个轴的加速度即可得出平面的倾斜角。但实际上,根据现有的研究经验和实验结果来看,由于单片机ADC的进度限制,此种测量方式只有在平面倾斜角度较小时才能具有较高的精准度。当平面的倾斜角度增大时,用这种方式测量得出的倾斜角度会失去精准度,同时其灵敏度和分辨率都会有显著的下降。当倾斜角接近90度时,此方法测出的倾斜角完全偏离正确值。

基于上述考虑,单轴倾斜角测量的方式并不能胜任本设计的倾角测量方法,我们在本设计中需要抛弃这种看上去较为简单的测量方式,另寻它法。

 

3.2.2 三轴倾斜角的计算

由于3.1.1中单轴倾斜角测量方式存在明显的缺陷,我们在本设计中对其进行了改善:充分利用此次选用的三轴加速度计,结合三个轴的加速度,综合分析,得出被测平面的加速度。其原理图如图3-2所示:

                                          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值