第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瀏覽量
3860
發布評論請先 登錄
相關推薦
評論