一个小总结呀

O(∩_∩)O哈哈~

最近刚刚参加了物电杯,趁热打铁,回顾一下比赛的过程鸭

#include

某天,我和zdr去上电机学的课……
“zfsh,你想不想来打物电杯?你负责写程序”
“彳亍啊。”
于是我就加入了他们,正好五个人。

ZDR与坐凳人

这位名为zdr的好基友,与我18年那时候用的网名坐凳人颇为相似
它们都是以ZDR为缩写,并且在读音上十分相近
真是缘分呐

#define LED_ON 1

我问:“该怎么做呢?”
zdr说:“是这样的:”

我们要做的项目是DCDC电源。
要求是这样的:

题目要求

输入 +48V DC,输出-12~12V DC。

我们的思路是这样的:

实现思路

用 PWM 调制 Buck 电路实现电压调节;通过电位器构建的H桥进行正负极转换;由 ADC 采样调节 PWM 的频率,从而实现稳压输出。
用数码管输出电压值,按键或者是旋转编码器等调节电压。这个后面再定吧。

sbit LED = P0^0;

“感觉可以啊,来分下工吧。(〃’▽’〃)”

经过理论分析,这样做没毛病,zdr也实现了纹波消除电路。在轻松愉快的氛围里,我们分好了工。

  • zdr负责电路绘制
  • sjl负责撰写文案
  • wlh负责铝制外壳制作
  • self负责程序
  • ~当然啦,还有一只tyh,这次他好像没有分配什么任务(手动滑稽)~

void main(){

万恶之源

“电路你来做吧”,我说。
“好”,zdr同意了。
“那引脚怎么定,是你来定还是我来?”
zdr发出了他标志性的反应:“呃……”
“那要不你来,你看着怎么方便怎么定义
“行。”

我们愉快地分好了任务。在催更下——实际上只是调侃地说——他画好了电路板。
我在得到原理图后,根据pdf上的引脚,从驱动到功能,非常愉快地实现了代码。
“你没给我弄个中断啊?”
“呃,觉得引脚不够用了,就没再接。”
“啊,那样一些功能实现起来会比较麻烦啊。
“哦哦,我想到办法了,可以替代补救一下。”
第三天,板子也到了,以zdr的焊接技术,这次稳赢。
感‌​​​‌‌‌‌​​​​​​‌​‌‌​觉好宁静,~WW5Wbg==~上也没有~V1~c1~V2JnJTNEJTNE~的人,一切是多么的~YnVn~啊,要是能一直这样下去就好了。大家都能得奖,~dHlo~也在努力着。

LED = V1c1V2JnJTNEJTNE; // 开灯

怪殇始();

zdr总共设计了四块板子,他先焊好了第一块板子,上面带着52单片机。
“干得漂亮,让我来下载程序吧。”
我接过板子,连好了线,把 usb 转 ttl 查到电脑上,在stc-isp中点击了下载

正在检测单片机……


…………
就没有然后了。
“怎么下不了啊?”
他也不知道为什么。我们两个人试了一晚上,包括直接接上5V VCC、冷启动、热启动、不接VCC(~不启动?~)、反复插拔VCC……但是就是下载不了。

Day_2();

第二天满课,晚上在学长的帮助下,我们意识到了,zdr之前在板子上也焊了个CH340,于是本该由CH340直接连接MCU的电路变成了由CH340到CH340再到MCU,并且有两个晶振同时工作。
肯定下不上去啊!
手头没有单独的MCU了,我们赶紧买了个最小系统板。
“没关系,大不了我可以飞线。”
“啊——”(叹气)“那你先把其它板子焊好吧”
“彳亍。”

Day_3();

第三天,最小系统板还没到,但是我俩的脑洞到了。
我们将CH340的TXD和RXD直接接到MCU的引脚上去。
首先在开发板上实验一下——成功了!
我们俩欣喜若狂,收好开发板,将杜邦线直接怼到52单片机的引脚上去。
下载!

正在检测单片机……


…………
又没有然后了。
“为什么啊……”

while(1); // TODO: Debug here /*

他来飞线

两天后,也就是这个星期六,最小系统板到了。我取了快递,到了实验室,就把程序烧了进去。
“zdr,我去上形势政策课去了,飞线就靠你了。按照之前的结构做就行
“嗯,你去就行。”
“等你的好消息。”

我来代码

我下课回来,四块板子已经连好了。zdr蹲在电源旁测试。
“怎么样,好了吗?”
“没有,它不显示数字,并且没有输出。”
我看着呆呆的工作状态指示灯,镇定地思考着为什么。
“那好,我去修改下代码。”

我修改了代码,调整了一些逻辑。
“烧录吧。”我想,这次肯定能顺利烧录了吧?

正在检测单片机……


依旧没有然后了。
“怎么回事?今天上午还能正常烧录的。”
“我也不知道。”
我满脸疑惑,发到一个群里去问了问大佬。大佬建议我们把飞线一个个拆掉,然后一条一条连上去。显然时间是不够用的。
在这个时候,工作状态指示灯也不亮。
“程序下不进去,灯也不亮。”我戳了戳工作状态指示灯的飞线……WOC它烧进去了!!!这里有裸露的导线,过载灯和工作灯的飞线连到一起了!一定是这里的问题

再试一试!!!

我们把四块电路连好,希望这次可以成功。
“哒,哒”
继电器发出了连接的声音。
“诶这里发热很厉害。”
“指示灯在闪!!!”
“诶呦有输出了!!!”

可是电路板不愿意*/

但是数码管不显示数字。按键也不能修改输出电压。
我又修改了代码。
“怎么还是不行?”
“长按按键有反应了。”
“为什么按键反应这么慢?”
“怎么又没输出了?”
“为什么上电之后MCU不运行?”
…………
下载也愈发艰难,以前戳戳那两根导线就可以了,现在需要轻轻“揉一揉”那团没梳过的黑发。
那晚,我反复修改代码,但这堆问题就是不能解决。
“要不……阉割一点需求?可能是哪里焊得有问题?”
“好吧,那只能这样了。”
“行,我今晚熬夜重构一下。”

}

大约今天上午九点,雨初歇,我来到了实验室。
“我自己来试试吧。”
我下载了编译后的.hex文件——无意中发现,像拍拍老电视那样去轻轻拍拍这堆电路,就能下载了。
测试!
失败。
测试!
失败。
阉割,测试!
失败。
…………
zdr也来了,地线被我拍掉了,他重新焊了上去。
继续阉割!现在工作指示灯常亮。
……然而,电路的输出电压也没有了。不知道为什么,单片机供电不稳定,工作指示灯一闪一闪,此时数码管也没有任何显示。我试着按了一下前面的按钮,结果MCU通上电了,工作指示灯亮了,数码管显示了。
“诶诶诶!可以试试。”
zdr按了按调压按钮,但是MCU不鸟他。
我按下了Output按钮,但是MCU也不鸟我。
完了,现在连输出都没有了。
它,是如此冷酷无情——却又怪我俩,或者说只怪我吧。
“等等,我发现,你在设计的时候把Output接到EA上去了,换句话说,时钟同中断或电压输出,你只能二选一!”
“啊这呃……”
午饭时间到。午饭结束。
我作出了终极阉割,彻底放弃PWM调制,只输出高电平,并且让数码管显示一个定死的目标输出电压。
可这时,MCU说什么也不肯下载新的程序。
“还好,至少这不是最坏的结果。”

File/20221127.log

在这次的物电杯里,暴露了这些问题:

电路设计没有设计好中断引脚。如EA、INT0等的失误

程序设计没有跑仿真(并没有去设计仿真)

程序设计和电路设计没给debug留出足够的机会

对程序下载的方式不够熟悉

没有抓住飞线的机会及时更正错误

考虑不周:唯独没有准备备用的MCU元件

程序设计与电路设计沟通不畅,必要信息未能及时交流

后续补充

File/Readme.md

今天下午,经历了无数次尝试之后,最小系统板终于乖乖地收下了我们的程序,并且仍然没能像预期那样运行。不过此时我已经习惯了,这已经是最棒的结果了。
我们“踉踉跄跄”地拍好了视频,然后发到了评委邮箱。
回顾这次走过的路,虽说结果不尽人意,却也差强人意。我们并非一无所成,也从未一无所获。在这些方面,比起大佬,我们如毫末之芥,但我们已在不凡的道路上行稳渐远。我们之间的差距,仅剩我们的第一次胜利。
这只是物电杯而已。设想一下,如果不是物电杯,我愿意这样试错吗?
继续前进吧,我们将舟适三山,羽化而登仙!

作者

勇敢梧桐树

发布于

2022-11-27

更新于

2023-01-04

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×