好教程
,感谢大佬分享!
RP2040单片机功能强大,用在发动机推力采集上,人机界面得以简化,新手友好。尝试按以下步骤搭建:
1,让RP2040单片机运行
注意,这一步不需要懂单片机,不需要单片机开发程序,只需要拷个文件。拿到RP2040后,按住单片机板上左边BOOT键,通过USB线插到电脑上,然后把附件的二进制文件拷到新出现的U盘上,单片机就运行起来啦!
附RP2040单片机tb图,这个程序要16M那种
怎么知道它是不是真的在运行呢?两个办法,一是看电脑上会出现一个新的U盘,15MB左右,这是程序创建的单片机板载U盘。另一个办法就是接着完成第二步,接个OLED,来个实时显示。
2,扩展附件1,连OLED显示屏
买一个SH1106的OLED,拔下单片机(断电)焊4根线:VCC接单片机5V、GND接单片机GND、SDA接单片机GP2、SCL接单片机GP3。单片机插回电脑(这时候不按BOOT键了),应该能看到OLED亮了,完成第二步!
附tb OLED图片,这两种都行
3,扩展附件2,连HX711
单片机断电再焊另4根线,VCC接单片机5V、GND接GND、DAT接GP4、CLK接GP5。推力传感器也按线的颜色焊到HX711板上。为了达到80Hz采样率,需要用小刀片断开HX711背后那个RATE中间细细的连接处。这样整个系统软硬件就都完成啦!重新插回电脑,手压传感器能看到OLED显示的推力变化。
附tb HX711及传感器图片,这种紫色板比较好,设置采样率rate也容易些:
完成的系统如图
可以装到一个聚碳酸酯盒子里,装上电池使用(这个照片里单片机还不是RP2040,仅供参考)。电池正极接到OLED的Vcc就行啦,正极线串入一个肖特基二极管(热缩管鼓起那里),以免忘了取出电池就插电脑,以及电池装反(有次黑灯瞎火搞就装反过!),我一般都是抠掉电池再插电脑或手机,勤快的可以给装上个开关。
照片中接的是30MPa压力传感器,用来测试燃烧室压力、测量燃速压力系数都很合适,这个采集盒也是兼容的,直接接上4根线就能用,校准需要找个带表头的空压机。
气压传感器型号见图,4条线的颜色跟HX711接口都是对应上的,直接兼容。
盒子的tb图片,下方10cm大的那种,聚碳酸酯材质的,盖子炸飞了都没坏!
再看看使用说明,是不是也很简单呢:
1,每次上电系统会自动去皮归零,然后进入定时采样,20ms一次。连续3个采样点推力大于50g会启动点火,然后连续采集10s后停止采样,计算并显示推力曲线及总冲量。
2,连接单片机到电脑或手机,会出现一个新U盘,里面有3个数据文件,一是校准文件Clb,二是运行计数Cnt,三是推力数据Run001。以后每次重新上电采集,会生成一个新的数据文件,文件名序号增Run00x。数据文件可以直接拷贝到电脑或手机上。不删除的情况下,这几个文件可以一直掉电保存,存到5000次试车数据后,文件名回到Run001覆盖之前数据。连电脑试车的情况下,也可以通过串口调试软件,实时传输推力数据至电脑。
3,校准,上电后(自动去皮后),拿一个已知重量的物体放推力台上(试车台竖直向下),如果物体重1000g,测得推力数值是210g,就把Clb文本文件里的1000000改成210000。再次重新上电测量,推力值就会变成1000g左右,这个值也会掉电保存,除非手动修改或删除。
系统的工作原理简介(供爱好者研究、并提改进建议,仅关心使用的可忽略)
1 单片机软件,使用Ardunio IDE编程,主要参考RP2040 C/C++ SDK手册及https://github.com/earlephilhower/arduino-pico,代码有点长290行,编译为二进制文件后使用。RP2040支持直接拷贝二进制程序,按住BOOT插USB的情况下,板载flash程序段会在电脑上显示为一个U盘,把arduino等单片机开发软件编译好的二进制文件拷到U盘里,单片机马上就会运行程序。所以不需要使用者懂单片机,不需要开发软件及准备各种库,拷完文件单片机马上就运行起来了。
2单片机内部程序流程
每次重新上电后,会自动运行一次去皮程序,测推力100次,取后50次平均值作去皮值,后续测量值都会减去这个值;
启动每20ms一次的定时中断,指向一个推力采集程序F_Smp;
初始化OLED显示;
生成或读取校准文件Clb.txt;
板载文件系统FATFSUSB程序,自动生成或打开一个电脑能访问的新U盘,对应板载flash的数据段,用于数据存储。
进入主循环loop程序,就是不停刷新OLED,实时显示推力值display.print(F);
每20ms定时中断会打断一下loop的OLED显示,跳转至推力采集程序F_Smp,每次只采集一个数据点;
推力采集程序包含点火启动判断,连续3个采样点推力大于50g为点火开始,数据点依次存入数组F0[500]。记录点达到498也就是接近10s之后,停止中断程序,也就停止了推力采集,还设置了一个循环存储以保存点火前一小段数据点到F0数组。最后一个采集点后,计算总冲,也就是从点火启动到最末大于50g(连续3个)的推力值 x 0.02秒累加。
最后一个采集点内还包含数据文件生成程序,第一次运行会建立计数文件Cnt.txt,从1开始以后每次加1,生成数据文件名从Run001开始,根据Cnt生成新文件名每次累加1。
最后loop主循环中OLED显示推力曲线,程序会自动调整XY显示范围。以及
FatFS.begin();
FatFS.end();
FatFSUSB.begin();
再次允许运行电脑或手机访问程序创建的板载U盘,以拷走数据或修改校准系数等。
源代码以文本文件附上:
另外还测试了低成本版,RP2040 2M flash单片机只要7.5元!OLED也是只要9多块钱
程序需要这个2M flash的
试车台可以参考以前帖子,也是结构简单,就3个零件加几颗螺丝,大L型材底座、小L型材连接、U型槽用于绑发动机。
最后这个是炸机的后果,以警醒大家要千万小心,要躲在掩体后面试车,祝大家玩得安全开心!
[修改于 2个月12天前 - 2025/08/29 16:11:54]
更正了一个小bug:
这里x1.0先转换成浮点数。
感谢!很喜欢楼主的OLED板子,很方便且直观。
我还不懂编程,只是个普通高中生,不过楼主提供了很好的可供实践的方法,过几天暑假时来尝试一下
是啊先买一套连起来看看,能亮起来再说,买上面回复里说那两个便宜的就行。RP2040的好处是可以直接拷执行文件运行,先运行起来再试着去编代码。我有个工程实践课,其中有个6小时单片机教程(动手能力强的3小时就够),教生物专业本科生新手的,或许可以整理一下暑假发到KC上
小白的一个疑问单片机上的GP2、GP3是右边从上往下第三个和第四个排母吗?
还有OLED显示屏上排针有SCK而非SCL,是楼主字打错了吗?

这样,还差那些传感器板子杜邦线之类的,在等快递
对了,还有一个问题
楼主用的传感器是20千克的应变压力模块,如果觉得量程小,换成其他量程的模块,能够适配现有的程序吗
小刀操作起来有点不顺手,效果不够美观。成品是指这样吗?


科创上有到处找过,似乎作者是唯一一个使用紫色板HX711的
RP2040好像说是能直接连个小屏装专用定制系统的,有试过的吗,有什么好的用处
小刀操作起来有点不顺手,效果不够美观。成品是指这样吗?😶💦科创上有到处找过,似乎作者是唯一一个使
这样也是能用的,不过只需要竖着刻两小道,把中间那一点点0.2mm的连线抠掉就行
RP2040好像说是能直接连个小屏装专用定制系统的,有试过的吗,有什么好的用处
没试过,看上去应该就是硬件集成了一下,软件应该还是独立的,可能有例程以及一段预装的显示代码。用起来估计跟自己买个屏接线差不多,就是屏幕贴得更紧
哭笑不得,白天接电路的时候,给RP2040
不小心电源装反了一会儿,晚上再插电脑的,已经没有反应了
又要来买,还得再等两三天
最近试用了楼主设计的采集装置,用起来非常方便。个人觉得美中不足的一个问题是,采集数据中没有时间,711输出速率又不够稳定,导致还需要根据视频校准发动机工作时间。即使如此处理,最后得到的总冲也是精度一般的,如果数据文件加一列时间就解决了
最近试用了楼主设计的采集装置,用起来非常方便。个人觉得美中不足的一个问题是,采集数据中没有时间,71
不对哦,这个方案用的叫定时中断,它采集的时间是准准的20ms间隔,你别看它那个串口时间,那个不准的。你就按均匀的20ms采样时间点来用就好了。实在想看看时间的话,加一列时间输出肯定也是可以的啦,有空我看看代码再说哈
测试了,就是不用加时间戳,加了也是齐刷刷的20ms间隔
这里问一下用的电池型号,是18650吗
有大佬可以帮助我一下吗?
按照作者的步骤思路,将文件拖拽至单片机中,并按下boot键。之后再打开是有一个文件里面显示10000。
但是当我用面包板连接OLED事儿,并没有成功点亮
求帮助
当我好不容易仿老帖搓出试车台,灌入程序后。看到你的预制菜程序有多绝望吗?
200字以内,仅用于支线交流,主线讨论请采用回复功能。