
adxl335振动传感器-基于stm32G0+ThreadX
简介
板子很小,基于stm32G031G8,捡垃圾捡到的mcu,还蛮便宜的,拿来做课设绰绰有余(fft没法在上面搞。共打板2次,体积很小,可通过RS485通讯,预留了RS485模块的排针。欢迎批评和指正。
简介:板子很小,基于stm32G031G8,捡垃圾捡到的mcu,还蛮便宜的,拿来做课设绰绰有余(fft没法在上面搞。共打板2次,体积很小,可通过RS485通讯,预留了RS485模块的排针。欢迎批评和指正。开源协议
:GPL 3.0
描述
题目要求
本次实习要求在μC/OS-III或FreeRTOS、RT-Thread嵌入式操作系统下用C语言进行开发(但我用了微软那个ThreadX。采用模拟输出加速度传感器,采集设备振动状态。通过 RS485接口和PC双向通信,在PC端显示振动幅值、加速度、速度、振动频率同时可以设置采集端的工作参数。
题目分析
这个实习内容很牵强,这么简单的东西要求使用实时操作系统,但是正因为简单,所以可以省一点钱(指用之前捡垃圾屯的G0(笑。传感器要使用模拟量输出的传感器,这下成本激增,网上也没有很便宜的模拟量输出传感器。经过查阅,发现淘宝有一家店卖adxl330,只要16一片,但是下单后卖家说没货,无奈只能下单20块钱的adxl335模块拆下来用。(可能有同学会问:为啥不直接用模块?哪样不是更方便吗?———我PCB都下单了店家才和我说没货😒)
总体硬件方案设计框图
如图所示:硬件整体由四大部分组成:电源部分、传感器、MCU和串口转RS485。其中电源部分为一个LDO供电。ADXL330/335输出XYZ三轴的加速度模拟量,连接到STM32G0,STM32G0通过内置的12位ADC,将三个模拟量转换成0-4095的数字信号,再由UART2通过MAX3485模块转换成485电平发送到PC端。
原理图设计说明
ADXL_ST用于进行SelfTest,对应MCU的GPIO默认设置低电平下拉。
三个电容C1、C2、C3用于选择带宽,电容的选型可参照规格书:
这里使用了模块,省点时间右边那四个电阻是瞎串的,当时想方便调试,放在两面板子焊接一面就行,,建议直接短接。
PCB设计说明
整体外设极为简单,焊个十来分钟就可以了,不用太多时间。图方便的话晶振部分可以不焊,一般用不到。
P2用于供电。引出部分引脚用于调试和输出
软件说明
MCU部分:代码主要就这一条
这里写了一个简单的协议,在x轴数据空出来的前四位标记为十六进制的1,以方便上位机识别。
int TempX=ADCs_Value[0],TempY=ADCs_Value[1],TempZ=ADCs_Value[2];
printf("%c%c%c%c%c%c",(TempX +4096) >> 8, TempX & 0xFF,(TempY )>> 8, TempY & 0xFF,(TempZ )>> 8, TempZ & 0xFF);
上位机部分:学了两天C#肝出来的WPF项目,使用LiveCharts控件,没有使用MVVM
实物展示说明
设计图
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | 0.1u | C1,C2,C3,C8 | C0603 | 4 |
2 | 10uF | C4,C7 | C0805 | 2 |
3 | 100nF | C9,C12,C13,C14 | C0603 | 4 |
4 | 1uF | C10 | C0603 | 1 |
5 | 4.7uF | C11 | C0603 | 1 |

评论