如何构建一个用于3D扫描的电动转台

news/2025/3/22 11:20:35/文章来源:https://www.cnblogs.com/linkstu/p/18786363

在这个项目中,我将向您展示如何构建一个用于3D扫描的电动转台。这个DIY项目由三个主要部分组成:顶板、中央齿轮驱动板和底座。顶板保持静止,作为放置待扫描物体的平台。

在设计的核心,中间板的特点是一个内部齿轮机构,隐藏在视线之外,这是由一个步进电机驱动。这个齿轮板旋转360度,包括一个安装点,用于附加一个外部3d打印的手机支架。这使得智能手机可以在保持固定距离的情况下围绕物体平滑旋转。

底板提供结构支撑,容纳所有必要的部件。顶、底板固定在一起,中间齿轮盘独立旋转。为了确保运动平稳,系统用四个滚珠轴承加固。

扫描时,我使用了一款基于ios的应用程序,但用户可以选择任何适合自己需求的软件。这个项目的主要目标是演示逐步建立一个电动转台的3D扫描过程。我们开始吧!

这个项目由三个主要的3d打印部分组成。第一部分为底座,包括三个轴承槽、一个步进电机座、三个侧面安装支腿槽和一个电源开关槽。

第二部分是齿轮盘。它在中心有一个轴承槽,是唯一负责旋转的运动部件。在它的一侧,有一个安装点,用于连接手机座。

第三部分为顶板,放置待扫描物体。这块是直接从它的中心固定到底板,确保两者保持完全静止。

此外,该项目还包括一个连接到步进电机的小齿轮,三个固定轴承的引脚和三个安装腿。此外,手机还配有加长臂和固定板。

如果你没有3D打印机,你可以使用PCBWay的3D打印服务来获得这些零件。STL文件是免费的。

在硬件方面,需要四个608 ZZ轴承来确保更平稳的旋转。需要一些螺栓和螺母来固定步进电机和手机支架。最后,将使用流行的28BYJ-48爱好步进电机。

我们将在接下来的步骤中介绍电子元件。现在,让我们开始建立固定轴承的基础。

•将引脚插入底座的引脚槽中,但不要完全插入。

•然后将轴承插入轴承壳,并将销完全压入槽中。

•然后将3英尺的碎片插入基座的脚槽中。它足够紧,但如果你愿意,你可以用M3螺栓固定它。

•取齿轮部件,将一个轴承压入齿轮部件中心的轴承槽内。

•将齿轮部分放在基座部分的顶部。

•放置顶板,使顶板部分的母槽与底座中心的公槽相匹配。

•最后,插入手机支架臂和支架,用M5螺栓和螺母固定。

完成了所有3D部件的装配。手动将中间层齿轮部分转动几圈,若转动平稳,拆下顶板和齿轮部分,将步进电机放入槽内,用M3螺栓固定。然后插入步进电机齿轮。这是所有!现在让我们进入电子步骤。

在电子方面,该项目使用ESP8266开发板,允许在需要时无线控制转台。对于步进电机驱动器,使用流行的ULN2003。需要一个面包板和几根跳线来建立电路。

为了给系统供电,将使用一个9伏的适配器,以及一些电容器和一个电压调节器,为开发板提供5伏的电压。一个电路图已经分享,以帮助您建立面包板设置。但是,将面包板放置在底座内可能会干扰旋转齿轮,并且松动的电线可能导致断开或短路。

出于这个原因,将使用自定义PCB代替。先前设计的PCB非常适合这个项目。PCB上的电源连接器已经更新,最新的版本现在可以在PCBWay项目页面上找到。

现在,收集必要的组件和焊接工具——让我们开始焊接吧!

如果PCB的焊接过程完成,将步进电机驱动芯片插入板中。确保正确对齐-芯片上的缺口应该与PCB上的缺口匹配。

接下来,将PCB放在基板上并连接步进电机。现在,是时候设置电源连接了。一个2针的开关用于接通和关闭电路,但这是可选的——你也可以直接连接电源适配器。

由于该项目使用较旧的PCB版本,因此将使用桶顶连接。然而,更新的PCB版本包括一个2针端子块,更容易布线。将电源线剪成合适的长度,连接到开关上,并焊接固定。为了防止短路,我使用了电工胶带,但为了更安全的连接,建议使用热缩管。

一旦电路设置好,我们就可以开始编程了。打开提供的源代码,并根据您的电机连接更新引脚号码。这是一个简单的代码,使步进电机在一个方向上旋转。将代码上传到电路板后,将其插入PCB板并上电。

在第一次测试中,马达熄火并发出一些噪音。如果发生这种情况,请尝试反转电机连接。您可以更改代码中的引脚序列或简单地翻转电机连接器。

现在它工作了!马达运转平稳。接下来,把齿轮板在中心。如果旋转仍然是平稳的,附加顶板以及。

正如你所看到的,转盘现在功能齐全,旋转起来毫不费力。在下一步中,我们将探索应用程序端。

在研究iPhone的3D扫描应用程序时,我在YouTube频道Through Iris上看到了一个很棒的视频。这个视频回顾了多个应用程序,对于这个项目,我选择了Polycam。由于这个项目的主要焦点是电动转盘,我将只介绍应用程序的基本使用。如果你也想使用Polycam,我建议你在YouTube上观看Andrew Sink的一步一步的指南。

下载应用程序后,您可以关闭订阅页面,继续免费测试。在扫描界面中,您将发现两种捕获模式。在手动模式下,每次拍摄你都需要按下快门按钮,而在自动模式下,你只需要在扫描开始和结束时按下录制按钮。

现在,把你想要扫描的对象放在旋转工作台的正中央。然后,把你的手机安装在支架上,按下录制按钮,然后启动转盘。该应用程序将自动捕获和保存图像在定期间隔的桌子旋转。如果需要,还可以降低电机步进速度,这可以提高扫描质量。基于源代码中当前的步进速度,一个完整的旋转捕获大约60个图像。

扫描完成后,停止录制并按应用程序中的上传和过程完成扫描。现在,你的3D网格已经准备好了!看看结果,我对它的效果感到惊讶,即使是快速的测试扫描。有了更精确的设置,我相信细节会更好。

代码

// wait for a single step of stepperint 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] = {15, 13, 12, 14};// sequence of stepper motor controlint 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;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(delaytime);}// power cutfor(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);}void loop() {rotate(100);}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/903412.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】20250322

【每日一题】 1.(18分) \(\hspace{0.7cm}\)I.(5分)根据单摆周期公式 \(\displaystyle T=2\pi\sqrt{\frac{l}{g}}\),可以通过实验测量当地的重力加速度.如图 \(1\) 所示,将细线的上端固定在铁架台上,下端系一小钢球,就做成了单摆.\(\hspace{0.7cm}\)(1)用游标卡尺测…

Git 和 GitHub 笔记

笔记说明 该笔记记录所有我使用 Git 和 GitHub 过程中遇到的、觉得需要记录的事情。复杂的问题按需抽出来单独称为一篇笔记,换成博客链接。 修改远程仓库名字后,本地仓库做什么处理? git remote -v git remote set-url origin https://github.com/用户名/新仓库名.git or gi…

外设驱动库开发笔记55:MAX31865热电阻变送器驱动

外设驱动库开发笔记55:MAX31865热电阻变送器驱动热敏电阻(RTD)作为一种高精度的温度传感器,在工业控制、医疗设备和实验室测量等领域有着广泛的应用。MAX31865是Maxim Integrated推出的一款专为RTD设计的信号调理器,能够简化RTD的温度测量过程。本文将详细介绍如何设计一个…

【20250322】热烈庆祝《青猪》系列第二季定档7月

www七年终于等来了 初中的时候还经常在班上跟同学聊这番好耶!考个好成绩,暑假一边学CSAPP一边看!

异常--java进阶day08

1.异常 java中,所有的异常都是类2.异常的体系结构3.编译时异常与运行时异常 1.编译时异常 语法完全正确,但是代码就是会报错,如下图上图中,写的是时间格式化类的使用,parse方法将给的字符串变为时间类对象 明明语法正确,但是系统就是会报错,这就是编译时异常 原因很简单…

leetcode每日一题:监控二叉树

引言 ​ 今天的每日一题原题是2643. 一最多的行,直接模拟,切除和最大的一行即可。更换成前几天遇到的更有意思的一题来写这个每日一题。 题目 968. 监控二叉树 给定一个二叉树,我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计…

Ubuntu安装GPU驱动+CUDA+cuDNN的安装方法

一台有GPU的虚拟机如果没有安装CUDA的驱动,是需要我们手动去进行安装的,介绍Ubuntu操作系统的安装教程。 1. 下载安装文件 NVIDIA CUDA Toolkit Archive 点击上面链接,进入CUDA Toolkit Archive,下载需要的CUDA工具包,本文章以CUDA Toolkit 12.3.2版本举例(可能需要代理加…

[多项式学习笔记] 拉格朗日插值

[多项式学习笔记] 拉格朗日插值[多项式学习笔记] 拉格朗日插值 多项式插值 给定 \(x\) 坐标两两不同的 \(n + 1\) 个点,能够唯一确定一个 \(n\) 次多项式。从给定点求出多项式的过程称为插值。 具体而言,给定 \(n + 1\) 个点 \((x_0, y_0), (x_1, y_1), \cdots, (x_n, y_n)\)…

flutter:bottomNavigationBar+PageView切换页面,使页面可以滑动切换

一,代码: tabbar: import package:flutter/material.dart; import ../tabpages/MyHomePage.dart; import ../tabpages/ProfilePage.dart;class MyTabBar extends StatefulWidget {const MyTabBar({super.key});@overrideState<MyTabBar> createState() => _MyTabBar…

flutter:用底部导航栏切换页面

一,代码: tabbar页面: import package:flutter/material.dart; import ../tabpages/MyHomePage.dart; import ../tabpages/ProfilePage.dart;class MyTabBar extends StatefulWidget {const MyTabBar({super.key});@overrideState<MyTabBar> createState() => _MyTa…

ASE13N45-ASEMI照明驱动专用ASE13N45

ASE13N45-ASEMI照明驱动专用ASE13N45编辑:LL ASE13N45-ASEMI照明驱动专用ASE13N45 型号:ASE13N45 品牌:ASEMI 封装:TO-220F 最大漏源电流:13A 漏源击穿电压:450V 批号:最新 RDS(ON)Max:0.45Ω 引脚数量:3 沟道类型:N沟道MOS管 封装尺寸:如图 特性:MOS管、N沟道M…

CORIDIC算法学习记录

目录问题问题分析CORDIC算法原理逼近方法及步骤逼近过程中的符号确定根据角度计算正切值举个例子逼近\(\theta=50^{\degree}\)并求其正切值 CORDIC算法叫坐标旋转数字计算法,由J.Volder在1959年提出,可以快速且简单的计算角度的数值。 问题已知\(y,x\),如何快速计算角度\(\t…