自制公制时钟

ChangeCode
转载
发布时间: 2025-06-14 15:02:29 | 阅读数 0收藏数 0评论数 0
封面
我制作了一个公制时钟,因为这种时钟在市场上并不容易买到。公制时间,或法国革命时期的时间制度,将一天分为十进制单位:一天有10小时,一小时有100分钟,一分钟有100秒。

准备工作:

材料:

  1. TI MSP 430 Launchpad - 德州仪器
  2. 28BYJ-48 5V步进电机配ULN2003驱动板 - eBay
  3. 单刀单掷按钮开关
  4. 0.1微法陶瓷电容
  5. USB电源适配器
  6. 齿轮
  7. 黄铜管
1

简介

我被要求制作一个公制时钟,因为这种时钟在市场上并不容易买到。

公制时间,或法国革命时期的时间制度,将一天分为十进制单位:一天有10小时,一小时有100分钟,一分钟有100秒。(如果您搜索一下,会发现市面上有所谓的公制或十进制时钟出售。但请注意,这些时钟虽然看起来像是公制表盘(10小时刻度和编号),实际上使用的是标准12小时机制,每小时60秒,每分钟60秒。这样的时钟根本不是真正的公制时钟。

我没能找到现代的真正公制时钟出售,除了古董。如果您找到了现代的,请告诉我。)我被要求建造一个带有时针、分针和秒针的模拟公制时钟,并且能够在英国主电源下运行。我曾经使用过每分钟转一圈的同步电机,它们与60赫兹120伏电源同步运行。我的第一个想法是使用50赫兹的同步电机。但经过计算后发现这存在问题。在标准时间里,一天有606024即86,400秒,而在公制时间里一天有10100100=100,000秒。因此,公制的一秒等于标准时间的0.864秒。由于秒针每转一圈代表100公制秒,这意味着每转一圈为86.4标准秒,60/86.4=0.694444444 RPM。很难找到这样的同步电机。

什么样的电机可以在不寻常的速度下准确运行?我决定使用步进电机。最初的想法是用一个适合秒针速度的电机,通过齿轮驱动分针和时针。但是,要达到100分频比需要4组轮子和小齿轮才能紧凑。最终我决定每个指针使用单独的步进电机。

2

电机

28BYJ-48 5V步进电机。

这些电机对于爱好者来说非常容易获得,并且配有驱动板,可以与Arduino等微控制器接口使用。它们也非常便宜。

在YouTube上有一个关于这些电机的优秀视频《28BYJ-48步进电机和ULN2003驱动器介绍》:

https://www.youtube.com/watch?v=B86nqDRskVU

从视频中可以看到,电机可以在各种模式下运行。我选择了全步模式,这种模式相对简单并且提供最大扭矩。在这种模式下,四个电机线圈中有两个同时被激活,电机每转一圈有32步。这些电机内部有一套齿轮组,据说比例为1:64,但实际上这只是近似值,而这个近似值不允许我们保持准确的公制时间。更多细节稍后讨论。

虽然这些步进电机可以用连续电流操作——即总是有两个线圈被激活——但通常既不必要也不可取。不必要是因为一旦移除电流后电机轴不会移动,不可取是因为持续供电会消耗更多电流并使电机变热。我不对分针和时针电机进行连续操作,并在软件中做了相应设置以避免秒针电机也连续操作。

3

控制器和电子元件

对于这个项目,我选择了TI MSP430微控制器以及Launchpad开发板,因为我之前在其他几个项目中使用过它们。我使用了带有MSP430G2553微控制器的Launchpad开发板,并配备了一个32.768 kHz的手表晶体作为时间基准。电机驱动板直接连接到Launchpad的端口引脚上。电机需要5V电压,这可以从Launchpad测试点TP1处轻松获得,该测试点连接到了mini USB端口上的5V电源。唯一的其他电气组件是一个按钮开关和一个去抖动电容,后者被直接焊接到按钮的引线上。

通常情况下,我会制作电路板或焊接面包板,但因为这个项目是单件制作且Launchpad价格低廉,所以我直接将它用在最终的时钟里。当开发完成后,USB线从主机PC拔出后,我使用了一个通用USB电源适配器来为时钟供电。该适配器配有可更换插头,适用于美国、英国及其他国家的电源插座。

如果您还需要翻译更多步骤的内容,请告诉我具体步骤编号。

4

时钟主体和指针

我使用Carvewright的Designer软件设计了时钟表盘和主体,并通过Carvewright CNC机器进行了加工。这些部件采用的是3/4英寸中密度纤维板(MDF)。指针同样也是设计后用枫木加工而成的。爱好的黄铜管被用来作为轴。这种黄铜管的尺寸设计使得较大直径的管可以很好地套在较小直径的管上。秒针采用了较小直径的管,而分针与时针则逐渐采用更大直径的管。我还得到了一些适合步进电机公制轴的爱好齿轮。齿轮的直径与标准英制管尺寸相近,因此也能够适配到指针轴上。我在较小直径的管上焊接了较大直径的管以配合齿轮。利用Carvewright设计并加工了电机安装座。为了防止由于步进电机及附加齿轮中的反向间隙导致指针不希望的移动,我在齿轮上添加了一些弹簧加载的鞋。

5

软件

软件的基本功能是以公制时钟的正确速率来驱动秒针(以及分针和时针)电机。使用微控制器的一个定时器来触发下一步操作。如前所述,我使用了32.768 kHz的手表晶体作为MSP的ACLOCK时间基准。设置为这个时钟的定时器每1/32,768秒计数一次。那么,每次步进之间需要多少个定时器计数呢?考虑到电机每转32步、电机内部齿轮组大约1/64的比例、每公制秒0.864标准秒、秒针每转一圈100公制秒,这些计算是通过电子表格完成的——红色数字是输入值,黑色数字是计算得出的结果。

当然,我们只能将定时器设置为整数个计数值,但简单地四舍五入无法保持精度。因此,软件最初设置为下一个最低整数计数值,然后在每次定时器触发时跟踪理想与实际计数之间的误差,采用浮点算术。当误差等于或超过绝对值1.0时,定时器计数增加(或减少负误差)1。

这一切都是通过中断处理程序完成的。

虽然电机大约每隔42毫秒被步进一次,但实际上并不需要如此长时间地激活线圈。我发现即使只激活12毫秒,甚至更少的时间,电机也能可靠工作。因此,我设置了另一个定时器比较寄存器,在大约12毫秒后中断并关闭电机线圈,远早于下一次步进。然而,在这个时钟离开我的手之前,为了安全起见,最终我还是让所有电机的线圈在整个42毫秒内都保持激活状态。我使用了TI的Code Composer Studio图形界面Grace配置微控制器,因此只需更改定时器CCR(捕获比较寄存器)值即可启用或禁用较短的线圈激活时间。在我提供的配置中,我将CCR设置为2000个计数值,超出了基本“滴答”率的值,因此不会触发比较,也不会调用中断服务程序来关闭线圈。要启用较短的激活时间,只需将CCR值(或Grace中的周期)设置为约12毫秒左右。我计划进一步实验这一点。

分针每过秒针电机100步就步进一次,而时针每过分针电机10步就步进一次,以保持准确的时间。

(为了开发和调试软件,我使用了标准的12小时一圈和60分钟一圈,并且使用了纸板表盘。我发现这样做更容易理解,因为标准时间对我来说更加熟悉。一旦一切正常运行,我就只是将常量改为公制时间。)

由于微控制器在启动时不知道指针的位置,因此必须首先对齐指针。一个按钮开关用于依次对齐每个指针并设置时间。当第一次按下按钮时,时针开始缓慢移动,然后逐渐加快。释放开关会停止指针,但如果在3秒内再次按下,同一指针会重新开始移动,起初缓慢,然后逐渐加速。这允许快速扫动到大致位置,然后精确调整到所需位置。如果释放按钮超过3秒,则动作将转移到分针,随后是秒针。一旦指针对齐,就可以协调移动分针和时针来设定时间,最后使三个指针一起运转。

第二个定时器用于更快地移动指针进行对齐和设定时间。该定时器初始设置有较长的上升计数值,但每次计数溢出时此值都会按一定百分比减少以加快指针速度。

按钮开关连接到了一个端口引脚上,并配置了内部上拉电阻。开关两端的电容构成简单的RC去抖电路。端口引脚配置为在按钮按下和释放时中断。一个状态机控制着对齐每个指针、设置时间和启动时钟的动作。看门狗定时器被配置成1秒间隔定时器,以确定开关释放的时间长度。

C
FJXXMRVL8U7R52B.c
11.40KB
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载