0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用Arduino自制一个只有表针的时钟

STM32嵌入式开发 来源:instructables 2023-03-09 13:33 次阅读

我们来一起看看如何用Arduino自制一个只有表针,没有表盘的“空心时钟”。

看起来还是挺炫酷的,再放几张网友们参照教程做的图欣赏一下:

第0步:材料准备

步进电机28BYJ-48和驱动板包括

用于控制步进电机的微控制器(比如Arduino nano)

2mm x 10mm自攻螺钉 * 8

润滑脂(高粘性)

这个时钟可以用大多数常见的200 x 200mm打印机打印,除了装饰部分(index.stl,203 x 203mm)。

文章最后还有一个缩小小的版本(85%)。

第1步:打印零件

72b7cbd2-be39-11ed-bfe3-dac502259ad0.png

打印零件

有些零件需要支撑

好好去毛刺,特别是几个非常小的齿轮(时钟中心的蜗轮和小齿轮)

第2步:组装蜗杆传动系统

72d3ca94-be39-11ed-bfe3-dac502259ad0.png

用烙铁进行塑料焊接,对于连接gear.stl、axis.stl和worm-gear.stl相互之间是很有用的。

你也可以使用一些安全的胶水,如双组分环氧胶。

在中央齿轮中注入一点油脂。不仅可以减少摩擦,而且可以减少齿隙。

中央齿轮的齿隙对时钟的精确性影响很大。h-gear1.1x.stl比原来的h-gear.stl要大一点,以抑制齿隙。中央齿轮的齿隙对时钟的精确性影响很大。从两个候选中选择更好的小齿轮。h-gear1.1x.stl比原来的h-gear.stl大一点。

第3步:组装电机驱动器

72f7e0fa-be39-11ed-bfe3-dac502259ad0.png

如果2毫米自攻螺钉的头部比步进电机的孔小,请使用垫圈或换更大的螺钉。

第4步:啮合分钟旋转器和时钟的主体

73127a0a-be39-11ed-bfe3-dac502259ad0.png

为了避免齿轮脱落,我们可以翻转机身一侧(上图中的绿色部分),然后把顶部的钩子钩住。

需要使用三颗自攻螺钉安装分钟盖。

第5步:安装时针

733ae2b0-be39-11ed-bfe3-dac502259ad0.png

注意使用自攻螺丝安装时针的时候不要拧太紧了,当你调整时钟时,它应该是会滑动的

固定好其他部分

第6步:准备电路

736a50b8-be39-11ed-bfe3-dac502259ad0.png73dbb0dc-be39-11ed-bfe3-dac502259ad0.png744df94e-be39-11ed-bfe3-dac502259ad0.png749a0690-be39-11ed-bfe3-dac502259ad0.png

将Nano的端口4、5、6和7连接到步进电机驱动器

连接VCC(+5V)和GND

如果你想把整个电路封闭起来放到盒子里,可以打印零件做个盒子(相关文件放在文末)。

然后用两个2毫米的自攻螺钉来组装起来。

第7步:程序

将代码闪到Arduino上。把代码上传到Arduino IDE 上。

如果你的电机跑错了方向,请修改代码中的数字顺序:

int port[4] = {4, 5, 6, 7};

改为:

int port[4] = {7, 6, 5, 4};

这上面的数字和Arduino Nano的针脚有关(D4-D7)。

完整代码如下:

// Please tune the following value if the clock gains or loses.
// Theoretically, standard of this value is 60000.
#define MILLIS_PER_MIN 60000 // milliseconds per a minute


// Motor and clock parameters
// 4096 * 110 / 8 = 56320
#define STEPS_PER_ROTATION 56320 // steps for a full turn of minute rotor


// wait for a single step of stepper
int delaytime = 2;


// ports used to control the stepper motor
// if your motor rotate to the opposite direction, 
// change the order as {4, 5, 6, 7};
int port[4] = {4, 5, 6, 7};


// sequence of stepper motor control
int seq[8][4] = {
  {  LOW, HIGH, HIGH,  LOW},
  {  LOW,  LOW, HIGH,  LOW},
  {  LOW,  LOW, HIGH, HIGH},
  {  LOW,  LOW,  LOW, HIGH},
  { HIGH,  LOW,  LOW, HIGH},
  { HIGH,  LOW,  LOW,  LOW},
  { HIGH, HIGH,  LOW,  LOW},
  {  LOW, HIGH,  LOW,  LOW}
};


void rotate(int step) {
static int phase = 0;
int i, j;
int delta = (step > 0) ? 1 : 7;
int dt = 20;


  step = (step > 0) ? step : -step;
for(j = 0; j < step; j++) {
    phase = (phase + delta) % 8;
for(i = 0; i < 4; i++) {
      digitalWrite(port[i], seq[phase][i]);
    }
    delay(dt);
if(dt > delaytime) dt--;
  }
// power cut
for(i = 0; i < 4; i++) {
    digitalWrite(port[i], LOW);
  }
}
void setup() {
  pinMode(port[0], OUTPUT);
  pinMode(port[1], OUTPUT);
  pinMode(port[2], OUTPUT);
  pinMode(port[3], OUTPUT);
  rotate(-20); // for approach run
  rotate(20); // approach run without heavy load
  rotate(STEPS_PER_ROTATION / 60);
}


void loop() {
static long prev_min = 0, prev_pos = 0;
long min;
static long pos;


  min = millis() / MILLIS_PER_MIN;
if(prev_min == min) {
return;
  }
  prev_min = min;
  pos = (STEPS_PER_ROTATION * min) / 60;
  rotate(-20); // for approach run
  rotate(20); // approach run without heavy load
  rotate(pos - prev_pos);
  prev_pos = pos;
}

第8步:测试和调整

74f15e90-be39-11ed-bfe3-dac502259ad0.png

由于齿轮组有一定的齿隙,因此时针的位置会在左右两边出现偏差。为了解决这个问题,可以在那里插入一些柔软的材料,比如毛毡或海绵,来提供一点摩擦。

在指针上涂上油漆可以提高能见度。颜料型涂料比染料型油墨好,后者会有毛细扩散现象。

第9步:调整时间

用Nano的复位按钮把时间设置提前一分钟

在电机旋转时,再用复位按钮进行精调

时针可以直接用手调整(靠摩擦)

作者: shiura

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7482

    浏览量

    151011
  • 驱动器
    +关注

    关注

    52

    文章

    8149

    浏览量

    145945
  • 步进电机
    +关注

    关注

    150

    文章

    3095

    浏览量

    147325
  • 时钟
    +关注

    关注

    10

    文章

    1720

    浏览量

    131339
  • Arduino
    +关注

    关注

    187

    文章

    6462

    浏览量

    186613

原文标题:用Arduino自制一个只有表针的时钟

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Arduino开发板DIY考勤记录器

    原型是基于Arduino并且只是概念产物,的系统正是长大版的
    的头像 发表于 08-26 10:01 1.6w次阅读

    arduino自制鼠标

    看资料知道 Arduino Leonardo 能当鼠标或键盘,直也没机会试试。正好就用 Arduino 自己制作
    发表于 10-07 21:18

    自制单片机时钟

    自己学了段时间单片机,想用单片机自制时钟,给自己打打气,但是苦于没有人指导,希望大家能够给我
    发表于 03-19 12:07

    请问自制arduino控制板不能直接Arduino IDE烧录程序怎么办?

    因为需要,自制arduino2560,USB这的是CH340G,但是直接
    发表于 12-03 11:19

    自制ARDUINO PRO迷你版

    描述DIY ARDUINO PRO MINI 2.0(升级版)这是 DIY arduinoPROmini,它就像普通的
    发表于 06-21 07:19

    自制Arduino Pcb

    描述Diy Arduino Pcb For 3$这是 ARDUINO UNO 版本(1.2),这里我使用 Dc Jack 供电,Micro USB 为
    发表于 07-21 08:00

    自制arduino项目

    描述你自己的arduino项目这个项目最适合初学者到高级制作自己的 arduino 是每个人都想做的梦想,在这里您只需单击下即可
    发表于 08-15 06:03

    a4纸自制款手势鼠标项目

    神奇arduinoa4纸自制款手势鼠标项目文档请下载附件哦
    发表于 10-10 06:14

    Arduino驱动的数字时钟详解

    本文要介绍的是Arduino驱动的数字时钟,同时也是非常有趣的四冲程发动机模拟器,通过
    的头像 发表于 04-06 16:20 3904次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>由<b class='flag-5'>Arduino</b>驱动的数字<b class='flag-5'>时钟</b>详解

    arduino创建游戏控制器

    电子发烧友网站提供《arduino创建游戏控制器.zip》资料免费下载
    发表于 11-10 11:21 1次下载
    <b class='flag-5'>用</b><b class='flag-5'>arduino</b>创建<b class='flag-5'>一</b><b class='flag-5'>个</b>游戏控制器

    基于arduino自制呼吸机

    电子发烧友网站提供《基于arduino自制呼吸机.zip》资料免费下载
    发表于 11-16 09:28 9次下载
    基于<b class='flag-5'>arduino</b>的<b class='flag-5'>自制</b>呼吸机

    自制Arduino Nano俄罗斯方块游戏

    电子发烧友网站提供《自制Arduino Nano俄罗斯方块游戏.zip》资料免费下载
    发表于 12-07 15:18 3次下载
    <b class='flag-5'>自制</b><b class='flag-5'>Arduino</b> Nano俄罗斯方块游戏

    基于3D打印的Arduino模拟数字时钟

    方案介绍本项目是真正意义上的「机械时钟」,由 3D 打印部件、25 Arduino Nano 和 48
    发表于 12-27 16:00 0次下载

    自制Arduino RFID门锁—第二部分:智能手机解锁

    在上篇文章自制 Arduino RFID门锁中,我们制作了Arduino RFID门锁,并且能够使用RFID标签或键盘来解锁。
    的头像 发表于 02-23 11:10 1922次阅读
    <b class='flag-5'>自制</b><b class='flag-5'>Arduino</b> RFID门锁—第二部分:<b class='flag-5'>用</b>智能手机解锁

    Arduino自制点焊机

    组装18650电池组,要用到点焊机,本文介绍Arduino控制点焊机的点焊时间。
    发表于 07-29 10:14 6次下载