|
本帖最后由 micespring 于 2020-5-16 17:39 编辑
老早的时候做过一个硬盘电磨,用的是XXD的电调和一个廉价的电调测试仪来控制速度。
就是这样的
虽说用起来没啥问题,但是总感觉差点啥,最近正好立创EDA的开源平台在做活动,可以免费打样,于是干脆趁活动自己DIY了一个。
先看看成品图
下面说说制作过程中的一些考量
首先,我并不想做一个特别复杂且成本高昂的测试仪,因为它最终要实现的功能其实是很简单的,就是控制电调或者测试舵机而已。所以最终的成品一定要尽可能的在便宜,至少不能高于旧款太多,否则太贵就划不来了。旧款价格是7.5元,所以我的目标成本就是10元。
然后开始进行方案的确定。既然要廉价,那显示方式自然是数码管最好了。而且最好是直驱,不用专用的LED驱动。鉴于速度值在0~99之间就可以,太精细的速度控制也没意义。所以选择的2位的数码管。
接下来是MCU的选择,要廉价,首先想到的就是STC的51单片机,但是搜索了价格后,我最终还是选择了STM32的F0系列单片机,具体型号是STM32F030F4P6。这款单片机最便宜只要1.5元就可以购买一片,可谓十分廉价。虽然价格便宜,但是功能上可一点都不廉价:16K的Flash,4KB的SRAM,最高48MHz的主频,12位ADC,以及5个定时器。相对一般的51可谓是奢华配置了。配置丰富了,自然写起代码来就轻松一些,不用扣扣索索的。
不过接下来也有个问题,STM32F030F4P6是20脚的IC,共有15个GPIO口,但是这15个GPIO中,PA13和PA14是要分配给SWD调试器来进行代码下载和调试的,虽然可以复用,但是这样就太麻烦了。这样,我们就只剩余13个IO口可用。
这13个GPIO,要实现如下功能:4个按钮,一个信号输出,一个输出状态指示灯,以及数码管驱动。
数码管是2位的,所以需要8+2共10个GPIO驱动,如果不用控制小数点,则需要9个IO。但是我想做多组油门切换的功能,需要小数点作为指示器,所以不能省。这样就只剩下3个IO。这三个IO中,信号输出肯定不能省的,所以只剩下两个来作为信号输出指示和按键输入。指示灯再占一个,就只剩一个来作为按键输入了。
一个IO如何接受4个按键的输入?这时候就需要终极节约IO的方法了:ADC按键扫描。简单来说就是按键都接入一个分压网络,然后连接至单片机的ADC接口。通过采集到的电压来判断是哪个按键按下。ADC键扫最大的优点就是节省IO,缺点是按键之间容易相互干扰,并且占用CPU时间较多,还没法使用中断。不过这点缺点在当前的应用环境下可以不算缺点了。
方案确定,就是设计电路了,最终成品电路如下,MCU的接口用的一干二净,一点都不浪费:
然后设计PCB,这种低速电路随便布线就好了,好看第一:
设计好PCB后,拿去嘉立创打样,然后等待的过程中可以先写写代码。这个没啥好说的,很简单,用STM32的TIM1高级定时器可以很容易的做到输出频率50Hz,高电平时间在1~2ms间的标准PWM控制信号。然后板子回来,焊接,调试,改掉一些小BUG,然后连接到电调,上电,成功!
最后算算成本:单片机1.8元,数码管0.5元,PCB5元5片评价1块钱一片,其他阻容原价和接插件不好算,合计算3块钱好了。总造价6.3元,嗯,不错不错~
项目目前在https://oshwhub.com/开源,包含原理图、PCB、和固件。
工程的主页是:https://oshwhub.com/micespring/servotester 欢迎各位前往下载,觉得好的话记得点个赞。
祝大家生活愉快
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|