
神奇的MEM传感器初探 STM32F3 DISCOVERY的主芯片是 STM32F303,与F1系列相比,增加了浮点DSP功能; STM32F3 DISCOVERY这块板的最大特色,那就是板载了2颗MEM传感器: 3轴数字输出陀螺仪L3GD20(在板上位于主芯片与8个LED之间)、 3轴数字输出的加速传感器和磁传感器模块LSM303DLHC(在板上位于旁边一个USB口的下侧)。 从出厂时内置的演示程序里便已初步领略了这几个传感器的神奇的魅力。 从官网下载的例程中找到了这个演示程序的原代码。例程压缩包文件名:stm32f3discovery_fw.zip 当拿到板子激动得手足无措时,不妨多看看原代码,相信会有不少收获的—— 1) 节录几个 陀螺仪 ( Gyroscope)的片断: /* Demo Gyroscope */ Demo_GyroConfig(); /* Read Gyro Angular data */ Demo_GyroReadAngRate(Buffer); /* Update autoreload and capture compare registers value*/ Xval = ABS((int8_t)(Buffer[0])); Yval = ABS((int8_t)(Buffer[1])); Zval = ABS((int8_t)(Buffer[2])); // + Z [这是我仿照上面2行增加的Z轴] printf("\n\r X=%i Y=%i Z=%i \n\r",(int8_t)(Buffer[0]),(int8_t)(Buffer[1]),(int8_t)(Buffer[2])); // 从串口输出 2) 从3轴加速度计算出板子的倾斜角度 在演示的第3段的指北针的演示中已经看出,当板子倾斜到一定角度时,8个LED是闪烁的,不再指示方向。从原代码里可以找到这一段看起来有点复杂的计算角度的程序,确实值得好好学习的。 当然 ,现成的算好的角度不用白不用,不妨显示一下: 板子倾斜时 ![]() 板子直立 ![]() 板子平放 ![]() 另外,板子有现成的USB口(用起来有点难度,尤其在PC端需要个类似的“USB助手”才好),没有现成的串口(实在需要自己外搭简单的电平转换)。 LCD驱动问题,已有“枫叶”等先驱者开路在前,并也已运行了GUI的DEMO,值得参考学习,受益很多。 |
RE:【STM32F3探索套件开发】——神奇的MEM传感器初探
在百度盘里放着,32M
https://pan.baidu.com/share/link?shareid=422868&uk=706036143
说明文档在这里找,那个AN4157的就是:
https://www.stmcu.org.cn/download/index.php?act=ziliao&id=149
RE:【STM32F3探索套件开发】——神奇的MEM传感器初探
3轴加速度的实时曲线显示
前面(1楼)已经对开发板的角度进行显示,角度是通过对不同轴向的加速度值计算出来的。
这里再对这3个轴向的加速度值的实时变化已曲线形式显示出来。
按数据手册的定义,XYZ 的3轴方向如下所示:
(图 XYZ.jpg)
对应于开发板:
(图 板XYZ.jpg)
好了,3个轴的加速度方向就是图中红线所标的;下面再说数据的范围:
如果,不加以其它“暴力”,3个轴向的加速度值是+/-1G(1个重力加速度嘛),图中显示数值的范围大约是:-1000~1000,单位是mG。
来点真相吧:
板子倾斜角度,也在屏中不起眼的地方显示,作为参考。
RE:【STM32F3探索套件开发】——神奇的MEM传感器初探(3楼更新了加速度曲线显示)
如果仅用板上的8个LED来指示方向,当然是很粗糙的,也浪费了磁力计传感器的精度。
下面就是在前面的基础上加的“指北”功能。
直接上图: