前段时间有人在星球里讨论了USB音量控制器这样的小制作,感觉很有意思。在参考了几个开源项目的案例之后,零妖决定自己也模仿着做一个。

    【创客球】是面向创客开发者的私密社群,愿景:「利他即利己,硬件开源生态惠及每一位开发者」。扫描下方二维码加入星球吧,和零妖老哥一起讨论开源项目。
    ad0cc3ccb4317d2648673db66542b13.jpg

    感谢 www.oshwhub.com 硬件开源平台的用户“msraphael”和“TheLight”,两位作者开源的项目给予零妖极大的帮助。复制下述链接到电脑浏览器,即可访问两位作者的开源项目。

    https://oshwhub.com/msraphael/surface-dial-xiao-pi-liang-ban-ben

    https://oshwhub.com/TheLight/zi-ding-yi-jian-pan



    零妖的目标是做一个USB设备,使用MicroUSB接口,Win10系统识别之后会认为这台设备为多媒体设备。此设备有一个旋钮,通过旋转可以调节电脑的音量。此设备有一个按钮,通过单击按钮实现静音/非静音的操作。当旋钮转动或按钮被按下时,设备通过震动反馈。
    这台设备非常像 Surface Dial ,只是我们自己做的有线链接的,使用功能上可以通过软件去优化。
    image.png
    (图片来自微软官网)



    USB接口是5V供电的,所以在方案选型时尽量使用容忍5V耐压的器件,这样在电源设计上将会简化许多。

    首先要确定的主控芯片,选择带有USB外设的MCU才有可能实现我们想要的功能。纵观国内众多MCU公司,南京沁恒(WCH)供应的USB系列单片机非常合适,一方面是价格便宜,另一方面是因为他们家的CH340X系列USB转串口芯片非常好用,我相信他们在USB领域的技术沉淀非常多,大概率可以避免一些未知的缺陷。

    去立创商城搜索这个品牌的单片机,按照价格排序,最便宜的那几个就是零妖可能会用的。在满足功能的前提下,便宜的就是最好的。
    image.png
    最便宜的两个型号新鲜出炉。仔细阅读规格书,对比之后发现CH554E支持USB Host,所以价格相对于CH551G贵了许多,这次的项目中用不到USB Host。
    但是考虑到芯片的体积,CH554E是MSOP-10的,非常具备吸引力,体积小意味着PCB板子可以更精致,所以零妖选择CH554E作为主控芯片。

    电源,晶振,复位三个板块是MCU类电路的基础板块,有必要翻阅规格书,确认一下如何设计。

    电源支持5V供电,所以可以直接将USB提供的5V电源接到芯片上,可以不用考虑降压电路的设计了。
    image.png

    芯片内部自带24MHZ的时钟,故不用考虑给MCU设计外部晶振电路。
    image.png
    芯片内部自带复位电路,也不用考虑给芯片设计复位电路。
    image.png



    旋钮的手感非常重要。请教了“msraphael”之后,对手感这一部分又有了新的认知。在选型编码器时,其实有几种不同的方案。

    比如使用一颗旋转可调电阻器,通过ADC采集分压之后的数值计算出用户旋转的角度,优点是方案简单,但是一般的旋转可调电阻器都会有限位,无法实现360度随意旋转,故不能使用这种方案。

    或者使用一个旋转编码器,旋转时对应的引脚输出方波信号,MCU采集脉冲的数量计算旋转过去的角度。此类编码器非常适合这个应用场合。但是MCU需要识别用户是在正转还是在反转,程序上稍微复杂一些。

    经过权衡,零妖选择了EC11系列的旋转编码器。这种编码器不仅可以输出A和B两路方波信号,A信号在时间上比B信号提前一点,这也为我们实现正反转检测提供了可行的思路。更主要的一点是EC11系列的编码器网上资料特别多,万一遇到问题也容易找人帮忙解决。image.png
    同时它具备一个按键,可以将旋转轴按下去,实现按键的效果,这不就是我们想要的按钮吗?看到这里突然想到如何通过MCU识别两路方波信号?再次查看MCU的规格书,发现它可以通过定时器2实现两路脉冲捕捉的功能,这个理论上可行,等写代码的时候再研究具体实现的路子吧。
    image.png
    经过“msraphael”的实际上机测试,发现带旋转反馈的编码器本身的手感一般,处理不得当的话很容易有延迟,手感不佳。故接受其建议,选择了一款不带旋转反馈的编码器,搭配线性马达,由程序进行一个点一个点的反馈,目的就是为了让手感上去。
    image.png



    经过上述思考,整个项目的方案就可以确定下来了。特别感谢开源平台用户“Jimchn”帮忙绘制原理图和PCB。这个原理图是初步设计的,还未经过实际上机验证的。关注此开源项目,围观后期如何翻车及补救。
    image.png
    方案大致定下来之后,画原理图和画PCB板子就是水到渠成的事情。后面的软件调试可能会有大坑,零妖没有使用过沁恒的单片机,所以心里也没谱。在这之前,零妖也上南京沁恒的官网查阅了这颗MCU的使用资料,包括参考代码,开发板原理图,烧录方式,烧录软件,开发环境。
    image.png

    扫码关注零妖微信公众号,围观开源硬件项目翻车实况。开源项目总有冗余硬件,各种板子送不停。
    image.png