第1步:工具和材料
工具和材料
以下是我用来创建卡片分类器的内容:
工具:
切割垫
标尺
切割机
指南针用铅笔和刀片
含溶剂的粘合剂(UHU HART和tesa)
胶带
钻头+ 5mm木钻头
热胶枪+胶枪棒
路由器
铣罗盘
8mm螺旋刀头,12mm芯盒刀头
砂纸
橡皮筋
螺丝刀
铅笔,标记
刮刀或类似圆角的东西
中心冲头
钻孔工位(不在图片上)
3D打印机(不在图片上)
材料:
3mm纸板(我将它用于盒子和同步带)
9mm桦木胶合板(卡片分拣机的主要材料)
12mm钢球
DIN A3纸
PLA长丝(不在图片上)
木胶
Arduino UNO
Adafruit Motor Shield电源
Adafruit Motor Shield V2
Adafruit Motor Shield V2库
某种计算机,设备,电缆,连接和编程Arduino UNO(不在图片上)
第2步:原型
原型
正如Intro中所提到的,22个盒子应围绕放置在中心的卡片送料器进行轨道运行,但如何去做?经过一些研究,我发现了我在寻找的东西。推力球轴承是成功的关键。由于这是这个项目的挑战,我创造了它的原型。
我用纸板制作了第一个版本,并用工艺胶和热胶将它们组合在一起。它由一个基区,两个不同的大外环和一个中心的小圆组成。选择外圈和内圈之间的距离,使得12mm钢球可沿槽延伸。 12mm,为什么12mm球?首先,我有很多库存,另外12毫米是工具的常见尺寸。有12毫米钻头,12毫米刀头等。原则上,它运作良好。不幸的是,好的还不够好。纸板太软而且产生大量摩擦,使得推力轴承难以移动。一切皆有可能,但在这种情况下,我的努力对我来说太高了。
这就是为什么我在第二个原型中切换到MDF的原因。通过我的路由器,我首先将外半径铣削,然后将30毫米宽的凹槽铣入木块。凹槽用于球笼。之后我使用了一个12毫米的铁芯盒刀头来铣削钢球的凹槽。最后但并非最不重要的是,我切出了内半径。我重复了整个过程两次,因此获得了推力轴承的顶部和底部。
我用3mm MDF制作了一个球笼。我用一个指南针在笼子上均匀分布6x 12mm的孔。然后我在钻床上钻了它们。
为了减少摩擦,我对接触面进行了密封和打磨。
然后是时候进行一些测试了。
测试1 =》 6个钢球与球笼
测试2 =》 6个没有球笼的钢球
我对两种变体都非常满意。由于球通过笼子的均匀分布,测试1更加一致。测试2更顺畅,没有球笼的额外摩擦。
我还想到了将推力轴承保持在一起的机制,但后来我没有追求它。也许是未来的主题。
为了感受尺寸,我将22个盒子所需的空间转移到一块3毫米的纸板上。用指南针和切割刀片切出形状(外半径450mm,内半径300mm)。测量非常合适,并留有足够的空间用于任何更改。
步骤3:设计
设计
(你可以在附件中找到图纸作为pdf!)
我从中传递了想法和见解原型为Fusion360并在那里创建了更精确的模型。
我从推力轴承的底部开始。底部为450mm,内半径为300mm的圆环形成。我将这个2D草图挤压成9mm(我将使用的木材厚度)。
在下一步中,我为12mm钢球创建了一个凹槽。凹槽深度只有2mm。
为了获得推力轴承的顶部,我复制了整个物体并将其水平翻转。
在底部和顶部之间,我创造了6x 12mm球并均匀地分布在凹槽中。
在第二个草图的帮助下,我在上侧的内表面上创建了一个同步带。在以前的项目中,我已经有了同步带的良好经验。这是再次在这个项目中使用它的主要原因。正时皮带直接安装在推力轴承上,可由连接在电机上的驱动轮驱动。
在上面的顶部是22个卡盒。
第4步:方框
方框
(您可以在附件中找到框模板作为pdf!)
框用于存储卡片。我暂时用纸板做的。盒子的大小由卡片本身决定。大多数卡片的尺寸为63 x 88毫米。为了让卡片有足够的空间,我在每侧增加了3毫米。
内部69 x 94mm。
外面75 x 100毫米(我使用3毫米纸板)
高度50毫米(足够约100张卡)
形状我用过在线发电机的盒子。我在A3上打印了盒子图案。用刀具粗切割模板后,我用tesa液胶将它粘在一块3mm纸板上。这次我没有注意背面。通常情况下,在两侧涂上胶水和纸是很重要和必要的,否则纸板会在干燥阶段弯曲。
然后我在切割垫上用切刀和尺子切出形状。我通过几个步骤完成了整个材料。不是一次全部!
由于我不想折叠盒子的侧面,因为它实际上是在模板中指定的,所以我切掉了所有的折叠表面。对于钝器,在我的情况下是一个带圆角的刮刀,我已经在几个通道中描绘了所有的折叠边缘。这使折叠更容易。然后我将它折叠成一个盒子,并用胶带临时固定所有侧面。最后,我用热胶枪将所有东西粘在一起。干燥时间结束后,我取下了胶带。
我重复了这个过程22次。
步骤5:木制推力轴承
木制推力轴承
我项目的完美部分是推力轴承。轴承的底部是固定的,只有顶部是可移动的。基础是两个1000 x 1000 x 9mm的桦木胶合板。
我从推力轴承的底部开始。作为指南,我用木材绘制了所有测量值。
外半径450mm
球形凹槽,半径375mm
内半径300mm
我用钻头和5mm木钻头为铣削罗盘创建了枢轴点。然后我开始使用外半径(450mm),为此我使用了路由器,铣削罗盘和8mm螺旋刀头。为了不损坏桌子,我把胶合板放在一些剩余的木头上。以3毫米的步长,我在木板上工作。
然后我切换到一个12毫米的铁芯盒刀头,并为半径为375毫米,深度为2毫米的12毫米钢球铣了一个凹槽。
然后我换回8mm螺旋刀头并切出300mm的内半径。
经过短暂的测试,钢球运行平稳,我创造了顶部推力轴承采用相同的原理和相同的材料。
最后,我对轴承的表面,角落和凹槽进行了打磨。
我将12mm钢球均匀分布在在底部凹槽然后我把顶部打开。
设置轴承运动需要一定的动力。但之后它的效果非常好。
目前我没有使用球笼,因为我不知道如何实现它。原型中的变体是可能的,但这必须是专门构建的,以便笼子只放在球上,而不是放在底部和顶部。
你有个好主意吗?
步骤6:纸板正时皮带
纸板正时皮带
推力轴承的顶部将由电机驱动。电机的电源通过驱动轮传输到正时皮带。皮带牢固地连接到轴承,这导致旋转运动。为了实现这一点,我创造了一个用纸板制成的正时皮带。
我从一块3毫米厚的纸板上切下3x 9毫米宽的条带。我再次使用了刀具,尺子和切割垫。然后我在纸板的顶层切割。我为所有3个纸板条重复了这个过程。剥掉所有小顶层碎片后留下的是我的纸板正时皮带。
为了达到合适的长度,我使用一些tesa液胶将所有三个胶条粘在一起。
然后我用一些热胶将正时皮带粘在推力轴承上侧的内半径上。轴承和皮带均为9mm宽,因此调整非常容易。我用一个中心冲头将皮带(每个齿)压到轴承上。重要的是,正时皮带和推力轴承之间没有间隙。否则会导致旋转不均匀。多余的热胶很容易从表面擦掉。
结果看起来非常好,工作得很好。但是,它仍然是纸板。牙齿不是最强的。出于这个原因,我决定做一点稳定。与卡片送纸器相比,我只使用木胶填充正时皮带上的孔。回想起来,不要这样做。 :)它是如此激烈和耗时。我不得不用胶水填充每颗牙齿8次。如果您想要稳定纸板,请在卡片送纸器中查看此步骤。
尽管如此,牙齿已硬化且非常坚固。
步骤7:3D打印驱动轮
3D打印驱动轮
(您可以在附件中找到车轮!)
推力轴承的顶部将由步进电机驱动。为此,我需要一个驱动轮,它安装在电机轴上,也适用于纸板正时皮带。由于这个特殊要求,我设计并印刷了驱动轮。
我为我的电机创建了一个轮子,它有一个5mm的轴,在Fusion360中。车轮直径的决定性原因是同步带上的齿的位置。重要的是只用全牙齿工作。否则,车轮将无法完美地装入同步带。这将导致电机不均匀旋转和失步。在我的情况下,这意味着驱动轮的直径必须为63mm。
据说,我创建了带有63mm圆的2D草图并将其挤压到9mm(轴承和皮带的厚度)。
我还添加了一个附件,用于将轮子安装到电机轴上。这种附件是一种口袋,M3六角形适合。 M3螺钉可以垂直于轴拧入。使用这个小系统,它可以安装到电机上。
我将对象导出为STL文件并将其导入Cura WANHAO版。在我做了一些基本调整(旋转,填充%)之后,我创建了g代码并将其发送到我的3D打印机。
完成该过程后,我将驱动轮夹在我的钻台中。使用中速和一些砂纸,我使表面变粗糙,以增强胶合性能。在下一步中,我将一些胶水(UHU HART)放在一块纸板正时皮带上并将其粘在驱动轮上。我用了一些橡皮筋来固定一切。
我使用相同的方法稳定驱动轮上的正时皮带,就像我在推力轴承上做的那样,用木胶填充皮带上的所有孔。
步骤8:电气部件
电气部件
如前所述,推力轴承的顶部是由电机驱动。对于我的观点来说,这项任务的最佳马达是步进电机。
我使用了以下电机,因为我已经有了它们。但我很快意识到这不是最好的工作。关于速度和扭矩是弱的。但是对于第一次测试,电机是可以的。
不,完全错了。我没有意识到。我犯了一个愚蠢的错误。如果你能阅读它会有所帮助。 :)我通过USB使用12V/350mA电机???没门。当然电机没电。我买了一个12V/3A电源并连接到Adafruit Motor Shield。行为完全不同。
Adafruit
每转200步,1.8度
双极步进器
12V额定电压最大电流350mA
28盎司* in,20 N * cm,每相2 Kg * cm保持扭矩
步进电机连接到Adafruit电机护罩V2通过4线。这个盾牌堆叠在Arduino Uno上。 Arduino由计算机上的USB供电。电机应由直流电源供电,但对于我的短期测试,我使用的是USB电源。
不,错误的决定。
一个重要的部分是卡片整理器的归位。箱子没有位置传感器。一切都将通过步骤实现。因此,在任何时候卡片分拣机知道他具有哪个步骤位置以及盒子具有哪个步骤位置是至关重要的。目前,我通过连接到Arduino输入引脚的面包板上的简单开关进行了归位。最后,我必须在轴承上或轴承内部创建一个机构。我认为红外光束传感器将是最佳解决方案。另一个未来任务。
步骤9:编码
编码
(您可以在附件中找到Arduino代码作为ino!)
如果您需要一些Arduino基础=》 Arduino类
让我们说。..
卡片送纸器会在9点钟位置给我们一张卡片。所以步进电机应该在9点钟的位置向我们提供合适的盒子来存放卡片。为此,步进电机可以顺时针和逆时针旋转推力轴承的顶部。
箱号10现在位于9点钟位置。要将盒子带到这个位置,步进器必须走800步。现在我们完全切换卡片分拣机。在下次重启时,我们会遇到问题,因为系统不知道实际状态。这样对吗?这是错的吗?在我们的情况下,这将是错误的,因为我们上次运行的800步现在是新的0.一切都转移了。在例行程序开始时,方框1应始终位于9点位置,步数为0步。
长话短说,
步进电机将右侧盒子旋转到卡片输送器
每次重启后都需要进行归位。
卡片分拣机顶部有22个盒子,均匀分布。这意味着360°/22°每16°就是一个盒子。步进电机的步进角为1.8°(200步/转)。
我做了一个快速测试,以确定达到16°的正确步骤。我创建了两个带有所有角度和位置的纸板模板,并在驱动轮上标记了一个位置。然后步进电机转了一圈(200步)。我在模板上标记了这个位置并用量角器测量了它。
200步=》 40°,意味着达到16°,需要80步。数字是四舍五入的,因此最终的交易卡机器可能会有一些调整。在视频中,我正在使用INTERLEAVE。所以我必须加倍步骤。
现在让我们来看看代码。
它基于Adafruit AccelStepper示例。我删除了两个不需要的电机并添加了一些自己的功能。但首先我必须安装Adafruit Motorshield v2库和AccelStepper库
// Requires the Adafruit_Motorshield v2 library
// https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library
// And AccelStepper with AFMotor support
// https://github.com/adafruit/AccelStepper
// This tutorial is for Adafruit Motorshield v2 only!
// Will not work with v1 shields
#include “wire.h”
#include “accelstepper.h”
#include “adafruit_motorshield.h”
Adafruit_MotorShield AFMStop(0x60); //Default address, no jumpers
Adafruit_StepperMotor *myStepper = AFMStop.getStepper(200, 2); //Connect a steppers with 200 steps per revolution (1.8 degree) to terminal 2
//Wrappers for the motor
void forwardstep() {
myStepper-》onestep(FORWARD, DOUBLE); //DOUBLE or INTERLEAVE or MICROSTEP!
}
void backwardstep() {
myStepper-》onestep(BACKWARD, DOUBLE); //DOUBLE or INTERLEAVE or MICROSTEP!
}
AccelStepper stpCardSorter(forwardstep, backwardstep); //Wrap the stepper in an AccelStepper object
int intStpMoveTo = 0; //Steps/Position for the motor
int pinHome = 11; //Homing switch connected to PIN 11
bool bolHome = false; //Initialvalue = not in the right position =》 false
void setup() //###SETUP###
{
Serial.begin(9600); //Start the serial
Serial.println(“Setup!”);
AFMStop.begin(); //Start the top shield
stpCardSorter.setMaxSpeed(200.0); //Set Speed
stpCardSorter.setAcceleration(100.0); //Set Accereration
stpCardSorter.moveTo(2000); //Steps/Position ~ 1760 Steps = 1 rotation of the bearing
pinMode(pinHome,INPUT); //Homing switch = INPUT
bolHome = _homeCardSorter(); //Start the homing process
}
void loop() //###LOOP###
{
//Serial.println(“Loop!”);
if ((Serial.available() 》 0) && (bolHome == true)) //Serial active and bearing on the 0-Position
{ //YES
int intVal = Serial.parseInt(); //Serial buffer =》 INT
Serial.print(“Move Stepper to position: ”); //Print serial
Serial.println(intVal);
stpCardSorter.moveTo(intVal); //Move Card Sorter Stepper to position
if (stpCardSorter.distanceToGo() == 0) //If Card Sorter Stepper reached the position
{ //YES
stpCardSorter.stop(); //Motor STOP
}
}
stpCardSorter.run(); //Motor RUN
}
bool _homeCardSorter() //###_homeCardSorter###
{
Serial.println(“Homing!”);
bool result;
while ((digitalRead(pinHome)==LOW) && (stpCardSorter.distanceToGo() != 0)) //Motor RUN until =》 Found 0-Position or reached max. distance
{
stpCardSorter.run();
}
stpCardSorter.stop(); //Motor STOP
if (digitalRead(pinHome)==HIGH) //Found 0-Position
{
stpCardSorter.setCurrentPosition(0); //Reset actual position to 0
Serial.println(“0-Position found”);
return result = true; //Return =》 0-Position found =》 everything ok
} else
{
Serial.println(“0-Position NOT found!!”);
return result = false; //Return =》 0-Position NOT found =》 error
}
}
归巢:
每次重启后,必须移动卡片分拣机到原位。我创建了一个新函数并将其包含在安装例程中。电机转动了一个多转,转速为1840步,转速很慢。如果在此期间找到0位置开关,则电机停止并且步进位置设置为0.如果在此旋转期间未找到开关,则会产生错误消息。
串行接口:
在最终的交易卡机中,卡片扫描仪会将所需的位置发送到卡片分拣机。目前我使用串行监视器与分拣机进行通信。我可以看到代码正在做的一些消息,我可以向电机发送一些位置(步骤)。例如,第一个框为80步,第10个框为800,等等。
步骤10:结束
结束
卡片分拣机完成了!
我希望你喜欢它。
我非常喜欢卡片分拣机的外观和尺寸。我对这个功能也非常满意,但正如我已经说过的那样有一些开放的待办事项:
找到一个创建球笼的好方法
创建夹紧系统将推力轴承的底部和顶部固定到位
购买并实施更大的电机=》完成!更改日志V0.1
实施红外断裂光束归位开关
-
分拣机器人
+关注
关注
0文章
15浏览量
3806
发布评论请先 登录
相关推荐
评论