手搓一个翻页钟

banner: https://www.pixiv.net/artworks/96947927

小时候我就喜欢拆东西。从小一点的闹钟、遥控器到大一点的音响、CD机都遭过我的毒手。毫无意外的,这些东西往往都装不回去,最后只能沦为废品。我妈为此没少打我,我却屡教不改,乐于其中。渐渐长大发后才发现这些行为很多都是小孩好奇顽皮的天性使然,我对事物运作原理并没有展现什么兴趣,更别提去学习和了解更复杂的机械原理和电子电路了。然而高中的技术选课又给了我一个重新接触电子的机会。当时高中的技术课是个新鲜玩意(估计现在也是),连老师都是从物理转过来的,每次学习和考试都有一种说不清的痛苦,唯有自己进行diy才有一点乐趣。高中毕业后好友孙工选了电子信息专业,在大一暑假一起散步时,我突发奇想说要做一个翻页时钟。现在忘了当时做翻页时钟的初心是什么了,可能单纯觉得酷吧。虽然孙工觉得这个项目太复杂,但我还是决定试试看。

痛苦的过程

坦率地讲,刚高中毕业的我对电子依旧一无所知。我发现高中学的三极管和555芯片对我的项目并没有什么帮助。我不得不从头开始学习mos管、画电路图、读datasheet。由于时间跨度太大,我已经记不清在嘉立创打过几次板了。要解决的除了硬件问题,还有软件问题、机械问题和工程问题。主要的测试、想法验证大约在20年-21年,而主要的整合、拼装则在22年-23年。下面是项目的简单介绍。

机械

如果说电子部分我还会一点,那么机械部分就是我的苦手了。好在我找到了这个项目splitflap,这里面开源了所用的全部方案。于是我决定遵循拿来主义,复刻外观结构,而原来项目臃肿的电路和程序全部重写。

splitflap

原项目的电机线和霍尔检测线是直接拖到后面去的,不太美观。我把电机线和霍尔检测线连到图示绿色的副板上,在两侧面板上打上孔,用fpc排线连接各个副板,这样就不用拖着一堆线了。

demo

电路

在经过好多次尝试后,我把电路板分为了电源板、主板、副板三部分。

电机

我使用的是和splitflap中相同的电机,28BYJ-48-5V。

motor

28BYJ-48是一种常见的单极性五线四相步进电机,步进电机是一种通过步进(即以固定的角度移动)方式使轴旋转的电机。步进电机的优点是旋转精准,缺点是会产生累计误差。同时,步进电机为了维持自身位置也会消耗电能。经过测量,该电机以500hz空载运行时电流约为200-300mA,更低频率下功耗会略微增加。静止时约消耗100多mA。由于电机是感性负载,如果四个电机同时启动,电流还是比较大的。因此电源的设计也比较重要。

电源板

power

支持电池供电、华为口供电充电、华为口连接电脑调试、下载。

  • DC-DC:HX3608,最大3.5A,提供5V电机供电。
  • LDO:ME6217C33M5G,最大800mA,提供3V3供电。在电流较小(<300mA)时,这颗芯片的Dropout Voltage可以保持在100mA的数量级,因此我这里直接接5V供电以及电池了。
  • 线性锂离子电池充电器:TP4056X,1A,当充电电流设置为1A时,发热会很高,所以我设置为200-300mA,毕竟电池容量也不会太大。
  • 使用基础的mos管来进行电源路径管理。当然很多ic能把开关式锂离子电池充电、电源路径管理以及其它功能做在一起,但价格也贵得多了。

主板

mother

mcu选择的是esp32,方便远程控制。考虑到开发的方便程度,使用Arduino作为编程语言。电机驱动方面,我第一个版本是每一个显示单元使用一个单片机+ULN2003作为驱动,单片机和mcu之间用I2C连接。但后来一想,在电流允许的情况下,可以仅使用一个同样是达林顿管的ULN2803A作为驱动芯片,其有八路输出,单路500mA,两路并联作为一相,刚好有四相,每相1A,勉强可以满足4个电机同时驱动的相电流要求。驱动电机时由mcu通过I2C发出信号,再由副板上的单片机通过GPIO控制四相上的4个mos管,可以实现任意数量电机同时驱动。另外主板上的温湿度计、LED之类的我就不多说了。

副板

2

副板上的单片机我原来使用的是air001,下图就是合宙10块钱的开发套装。

air001

未完…