基于STM32的自动量程转换数字电压表设计

一、选题

经过仔细评估,我选定电压表设计这个题目,并确定了下列指标与功能:

1.量程:测量范围为直流电压0~200V,分为200mV,2V,20V,200V(实际实现32V)共4挡。
2.位数:3位半。
3.精确度:这里用相对误差表示,指标为±2%。
4.分辨率:0.05%,分辨力为0.1mV。
5.测量速度:2次/s。
6.功能:自动量程转换,超量程报警,复位功能,OLED 屏幕显示,指示灯。

在填写指标时尽量将指标写大些,例如这里我把误差设定成2%,实际做出的作品误差是1%左右,比预定指标还要好得多,一定要给自己留有余地,否则最后实现不了的话只会扣分。

二、方案设计
初步的具体方案为:

以STM32F103C8T6为主控芯片,基于标准库函数开发程序,用芯片内置12位A/D配合外围量程转换电路实现多量程电压测量功能,OLED模块(I2C通信)显示电压值,蜂鸣器报警,LED指示灯,按键复位等。

这里设计方案时画出大致的系统框图,如图2-1所示。

图2-1 系统总体方案框图

总体方案确定之后就可以着手进行相关知识的学习了。

注意:如果所选题目有太多人选择的话,这时就需要查看他们的指标和实现方式与自己的方案是否雷同。如果雷同,建议重新设计方案或者及时换题! 
三、自学过程及经验
1、首先,STM32是个啥?
不知道怎么办?当然是学习了。于是我在学校图书馆开始找相关的书籍,最终找到了野火的《 STM32库(标准库)开发实战指南–基于STM32F103》(书名大致是这个,不必过于纠结)。

前面几章就是介绍STM32的,这下对STM32有了基本的认识。在看到编程开发那块,我觉得只看书太枯燥了,于是到B站找了一下视频,直接找到了野火官方出的教学视频,然后跟着视频学了大概半个月。

并不是所有视频都要看一遍,而是针对性学习自己感觉项目开发过程中可能会用到的知识。如果后面发现要用到其他知识还可以回来继续补充。

如果是初学者,个人建议跟着野火的教程学习,这里讲的比较详细并且逻辑性也很好。

在学习视频的过程中我也知道了一些资源的获取途径,野火、正点原子官方网站都有相关技术文档,他们都是是免费公开的,包括我上面提到的《 STM32库(标准库)开发实战指南–基于STM32F103》这本书的PDF版。

经过以上部分的学习,我们需要用到的STM32标准库开发相关知识就基本掌握了。再结合网络搜索和一些官方开发板的原理图(如战舰、指南者之类),可以用Altium Designer(简称AD)软件画出适合自己的STM32最小系统原理图。

AD软件不会用的可以看B站Altium Designer 20 (AD20)详细教程视频,个人觉得老师讲的还不错,挺基础适合入门。之后大家也可以搜一下其他视频做补充、提高使用。

 

-----------↑↑STM32最小系统原理图完成↑↑----------------

1、此时,我们已经熟悉了STM32最小系统以及标准库开发。

2、接下来,怎么构建外围电路,实现相关功能呢?
这里我们最好选择经过验证的电路(就是别人做过的),毕竟电路设计不是一时半会能学成的。

但是在采取别人电路时一定要弄懂每个器件的作用,这是最基本且重要的一点,否则在答辩时很容易露馅,很可能直接导致挂科。

如电容一般用来电源去耦、滤除噪声,电阻一般用来限流。

这里的辅助电路像蜂鸣器、USB供电、复位开关、LED灯等这些在一些用于学习的开发板上已经比较成熟了,可以参考它们的原理图设计电路,其对应的pcb封装库也可以通过官方资料找到。

-------↑↑辅助外围电路完成↑↑-----------

3、那么实现主要功能的量程电路该怎么办呢?
经过前面的STM32标准库开发学习,我发现可以将量程转换控制完全由软件编程实现,于是这里我只需要找到能实现4个量程档的电路即可。

在知网检索相关论文,经过多番查找,终于发现了一篇用不同主控芯片实现量程转换的论文,文章里提供了量程转换电路。为进一步确定其功能,这里我们用Multism软件对其量程电路进行仿真,最终确认其能够实现我们的功能。

但是在实际设计时,最好考虑到噪声影响,一般是加去耦电容。

--------↑↑量程电路完成↑↑-----------

经过上述过程,我们已经完成了所有电路部分的设计,接着进行4↓↓↓

4、完善原理图,设计PCB板。
不会用AD软件的童鞋可以自学一下,可以看上面提到的视频,也可以自己找相关书籍或视频自学。

PCB完成之后就可以打板了,这里推荐嘉立创打板,10cm*10cm的5块板只要5块钱而且还有顺丰包邮(如果涨价了当我没说)。

--------↑↑打板完成↑↑-----------

打板完成之后,开始5

5、焊接元器件
零基础硬件小白该怎么焊接?
1.建议向周围看下,有没有会硬件的大佬,向他们请教硬件焊接的一些小技巧;

2.找视频,学习经验,先用一块板子练习焊接经验。例如,拿个板子专门焊接贴片电阻(是本人没错了)。练习几天之后感觉差不多了就可以正式焊接器件了。焊接贴片器件时建议新生使用刀头电烙铁,可以秀很多操作。贴出一个我自学时用到的视频:一分钟教你贴片阻容类器件焊接。

---------↑↑焊接完成↑↑-----------

元器件焊接完成之后就可下载程序,测试自己所写STM32程序是否正确了,这里一般需要很多次调试才能实现自己想要的功能。

----------↑↑测试完成↑↑---------------

到此为止,整个项目基本就完成了。

整个项目大概历时2个月。经过这次项目,我对硬件设计流程有了清晰的了解,收获颇丰。一通百通,相信之后用STM32开发其他项目也会比较轻松。

写出这篇博客,一方面可以记录一下学习心得,另一方面也为拿到一个嵌入式类项目无从下手的小伙伴提供一些经验吧,愿诸君共勉!

由于本人水平有限,文章难免有遗漏错误,如果大家有什么好的意见或者建议欢迎评论、私信指正,感谢!
————————————————
 

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值