单片机+微信小程序做示波器
硬件设备1、手机带蓝牙功能,2,单片机最小系统+下载器,3、蓝牙模块,4,运算放大器,5、一些辅助件(电阻,实验板,电线等)
理论知识,1、单片机stm32F103c6最小系统(价格便宜、开发工具方便)
adc采样:最小系统外接8M晶振,adc时钟 12M/每个占采样时间1.5+转换时间12.5周期= 888kS/s
800k个点,如果一个周期用8个点描绘,那大约能测得100K的波形
2、蓝牙传输,采用的是MX-01P(价格便宜、使用方便),通过usart与单片机连接,频率采用的是115200Hz,大约每秒能付11K字节,因为每个采样点为12位占16位,也就是理论上说每秒传5K个采样点。不过这问题不大,我采用的是间断采样,
蓝牙与手机之间以蓝牙直连的方式,厂家宣传有40kB/s的速度,实际上测试每秒1K个采点,=16kB/s吧,不知道是哪里没调好,还是就这样
3、测压点电压:外测波形电路,先要将电压用电阻串,控制在-5~+5之间,再用运算放大器转成0~3.3V之间的波形,用模拟器做了一个两个模拟器结果都是一样的,波形是反相,不过只要在微信中运算一个就好。这个电路与网上搜索的有点改动,我觉得将测电路与单片机供电分开更保险一点。
运算放大器用的是LM324(拆机的)。1.2 MHz的带宽,小电压波动可以做到160k ,电压高就要降频率。
换算电压原理,是以R2、R3、R4通过的电流平衡为依据,但实测数据与仿真数据有偏差,找到一篇文章,不过能上传电子书了,截个图
4、微信小程序:功能连接蓝牙,发送收集指令,接收采样数据并画图,实测数据也差不多。
adc值是0·4095 波形显示坐为0·200,计算方法为 y = ((4095 - (val))) * vertScale + vertOffset;
电压转换公式:maxVoltage = (5.287/3.3*4095-3.7*maxVoltage) * 3.3 / 4095;
至此,基本功能已经完成,后续的就优化代码了,