資料介紹
描述
背景
這個(gè)項(xiàng)目從一個(gè)簡(jiǎn)單的請(qǐng)求開始,我希望能夠在我的 Atlas Craftsman 車床上切割公制螺紋,并消除手動(dòng)更換絲杠驅(qū)動(dòng)齒輪的麻煩。在網(wǎng)上搜索后,我找不到有關(guān)制造或購(gòu)買電子絲杠的好信息,所以我決定開始制造一個(gè)。此外,我決定添加一個(gè) VFD 來控制電機(jī)主軸的速度。
由于 VFD 驅(qū)動(dòng)主軸是獨(dú)立于電子絲杠的系統(tǒng),因此我將其分為兩部分:主軸驅(qū)動(dòng)系統(tǒng)和絲杠驅(qū)動(dòng)系統(tǒng)。
主軸驅(qū)動(dòng)系統(tǒng)非常簡(jiǎn)單。用三相代替單相驅(qū)動(dòng)電機(jī),用VFD驅(qū)動(dòng)。
絲杠驅(qū)動(dòng)系統(tǒng)使用 Arduino 來創(chuàng)建一種電子變速箱。Arduino 讀取主軸速度并根據(jù)用戶輸入調(diào)整伺服 RPM 以匹配正確的比率,以創(chuàng)建公制或英制螺紋。LCD 顯示屏與兩個(gè)用于用戶界面的瞬時(shí)按鈕一起使用。這允許用戶選擇公制或英制單位和螺紋尺寸。一旦選擇了所需的螺紋或螺距,就可以使用 3 向開關(guān)以 CW 或 CCW 方向轉(zhuǎn)動(dòng)電機(jī)。電機(jī)運(yùn)行后,LCD 不會(huì)更新,并且在電機(jī)停止之前您無法更改螺距。
主軸驅(qū)動(dòng)系統(tǒng) (VFD)
我決定從 eBay 購(gòu)買 1/3hp 3ph 電機(jī)和 VFD 套件,電機(jī)框架尺寸與現(xiàn)有的 1/2hp 1ph 電機(jī)相似,因此可以直接安裝。
對(duì)于驅(qū)動(dòng)系統(tǒng),我還購(gòu)買了一個(gè)內(nèi)聯(lián) EMI 濾波器(這個(gè) TECO VFD 會(huì)發(fā)出很多噪音并干擾 Arduino)。EMI 濾波器放置在 VFD 的電源側(cè)。
鐵氧體環(huán)用于降低從 VFD 到電機(jī)的噪音。
開/關(guān)開關(guān)用于為主軸和絲杠驅(qū)動(dòng)系統(tǒng)供電。它安裝在面板門上。
VFD 也可以與外部電位器一起使用,在操作車床時(shí)控制電機(jī)速度。10k 的底池效果很好。它安裝在 Arduino 外殼上。
這些物品被組裝成一個(gè) nema 4 外殼并連接在一起(我是一個(gè)機(jī)械人,不注意電線的鳥巢)。
絲杠驅(qū)動(dòng)系統(tǒng)
使用 24v 20 a 電源為步進(jìn)電機(jī)供電(您可能使用較小的安培數(shù) P/S)。電源安裝在 VFD 外殼中。
我決定使用扭矩為 3Nm 的 NEMA 23 步進(jìn)電機(jī),如果我能再做一次,我會(huì)升級(jí)到 NEMA 24,這個(gè)電機(jī)有足夠的功率來切割螺紋而不會(huì)失速。
使用鋼制安裝支架將電機(jī)安裝在車床工作臺(tái)上
14t 3/8in L 正時(shí)皮帶輪用于步進(jìn)器上的小齒輪驅(qū)動(dòng)
對(duì)于絲杠上的正時(shí)皮帶輪,我使用了 22t 3/8in L 正時(shí)皮帶輪和錐形鎖適配器。該適配器有一個(gè) 0.75 英寸的孔,其鍵槽與現(xiàn)有的絲杠相匹配。無需對(duì)車床進(jìn)行任何修改。
下面是帶有同步帶系統(tǒng)的步進(jìn)電機(jī)的圖片。我切掉了安全門的底部以安裝在步進(jìn)電機(jī)上,這樣它就可以關(guān)閉了。
我使用微步進(jìn)驅(qū)動(dòng)器來連接 Arduino 和步進(jìn)電機(jī)。驅(qū)動(dòng)器使用 24v 電源根據(jù)來自 Arduino 的信號(hào)為步進(jìn)器提供脈沖。我只是將它安裝在靠近步進(jìn)器的長(zhǎng)凳底部。我沒有把它放在 VFD 面板中,因?yàn)?EMI 太多。
為了測(cè)量主軸的轉(zhuǎn)速,我使用了這個(gè)感應(yīng)霍爾效應(yīng)傳感器。由于它帶有自己的 LCD,我可以使用它來校準(zhǔn) Arduino 速度計(jì)算。我將磁鐵粘在主軸上,如下所示。
我用一個(gè)小塑料盒來裝液晶屏、Arduino、面包板和開關(guān)。
塑料外殼
阿杜諾
液晶顯示器
按按鈕
3路開關(guān)
編碼
該程序有幾個(gè)功能。使用了 LiquidCrystal_I2C 庫(kù)和 AccelStepper 庫(kù)。屏幕是使用數(shù)組設(shè)置的,因此它是可擴(kuò)展的。它使用 X 變量來表示公制與英制,y 變量在屏幕上打印每個(gè)數(shù)據(jù)字段。
const int x = 2;
int currentX = 0;
String screens[x][5] = {{"TPI","Dir","LatheRPM ","ServoRPM","tpi/mm"}, {"Pitch","Dir","LatheRPM","ServoRPM","tpi/mm"}};
設(shè)置按鈕標(biāo)志循環(huán)使用 for 循環(huán)來讀取按鈕狀態(tài)并在狀態(tài)已更改時(shí)發(fā)出信號(hào)。
void setButtonFlags()
{
for(int i=0; i < n; i++)
{
buttonState[i] = digitalRead(buttonPin[i]);
delay[1];
if(buttonState[i] != lastButtonState[i])
{
if(buttonState[i] == HIGH)
{
//Serial.print("Button: ");
//Serial.println(buttonPin[i]);
buttonFlags[i] = HIGH;
}
}
如果按鈕已更改狀態(tài),則解決按鈕標(biāo)志會(huì)觸發(fā)按鈕操作。
void resolveButtonFlags()
{
for(int i = 0; i < n; i++)
{
if(buttonFlags[i] == HIGH)
{
buttonAction(i);
buttonFlags[i] = LOW;
printScreen();
}
}
}
按鈕動(dòng)作循環(huán)確定在顯示某個(gè)屏幕時(shí)按下某個(gè)按鈕時(shí)要執(zhí)行的操作。因此,當(dāng)您在公制屏幕上并按下按鈕 A 時(shí),音高將會(huì)改變。如果您使用英語,則 TPI 會(huì)發(fā)生變化。
void buttonAction(int button)
{
if (button == 0)
{
if (currentX == x-1)
{
currentX = 0;
}
else
{
currentX++;
}
}
if (button == 1)
{
if (currentX == 0)
{
if(currentTPI == nTPI-1)
{
currentTPI = 0;
}
else
{
currentTPI++;
}
}
速度傳感器回路使用去抖來觸發(fā)計(jì)算主軸 RPM 回路和步進(jìn) RPM 回路。每主軸旋轉(zhuǎn)一次,步進(jìn)器 RPM 只會(huì)改變一次。同樣,根據(jù)您在哪個(gè)屏幕上,它將計(jì)算英制或公制。
void speedSensor()
{
time = millis();
int currentSensorState = digitalRead(SensorPin);
if (currentSensorState != lastSensorState)
{
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay)
{
if (currentSensorState != sensorState)
{
sensorState = currentSensorState;
if (sensorState == LOW)
{
calculateRPM(); // Real RPM from sensor
if (currentX == 0)
{
englishCalc();
}
else if (currentX == 1)
{
metricCalc();
}
}
}
}
發(fā)送數(shù)據(jù)循環(huán)在步進(jìn)器不運(yùn)行時(shí)運(yùn)行,用于將信息發(fā)送到 LCD 屏幕。當(dāng)步進(jìn)器運(yùn)行時(shí),這個(gè)循環(huán)不活躍,因?yàn)樗鼫p慢了 arduino 的處理器。
void sendData()
{
unsigned long currentMillis = millis();
if(currentMillis - prevMillis >= interval)
{
prevMillis = currentMillis;
lcd.setCursor(9,2);
lcd.println(lcdRPM);
lcd.rightToLeft();
lcd.print(" ");
lcd.leftToRight();
lcd.setCursor(9,3);
lcd.println(servoRPM);
lcd.rightToLeft();
lcd.print(" ");
lcd.leftToRight();
lcdRPM = 0;
}
}
步進(jìn)速度計(jì)算基于每英寸的絲杠螺紋(在本例中為 8TPI)、同步帶齒輪比(在本例中為 1.529)、微步(在本例中為 400)和 RPM。
void metricCalc()
{
stepperRPM = 1.529 * 0.315 * 400 * RPM * pitch[currentPitch] / 60.00;
servoRPM = 0.482 * RPM * pitch[currentPitch];
}
// =========================== metric stepper speed =========================
void englishCalc()
{
stepperRPM = 1.529 * 8.00 * 400.00 * RPM / ( tpi[currentTPI] * 60.00 );
servoRPM = 1.529 * 8.00 * RPM / tpi[currentTPI];
}
這是主循環(huán),一旦你讓步進(jìn)器運(yùn)行,只有速度傳感器循環(huán)與步進(jìn)器設(shè)置速度庫(kù)函數(shù)和 if 語句一起運(yùn)行以停止電機(jī)。
void loop()
{
setButtonFlags();
resolveButtonFlags();
sendData();
speedSensor();
if (digitalRead(leftPin) == HIGH)
{
//direction = 1;
lcd.setCursor(4,1);
lcd.print("CW ");
lcd.setCursor(9,3);
lcd.println(servoRPM);
lcd.rightToLeft();
lcd.print(" ");
lcd.leftToRight();
lcd.setCursor(9,2);
lcd.println(lcdRPM);
lcd.rightToLeft();
lcd.print(" ");
lcd.leftToRight();
delay(5);
stepper.enableOutputs();
stepper.setSpeed(stepperRPM);
stepper.run();
while(stepper.isRunning())
{
speedSensor();
stepper.setSpeed(stepperRPM);
stepper.run();
if(digitalRead(leftPin)==LOW)
{
stepper.disableOutputs();
lcd.setCursor(4,1);
lcd.print("OFF");
break;
}
}
}
else if (digitalRead(rightPin) == HIGH)
{
//direction = -1.00;
lcd.setCursor(4,1);
lcd.print("CCW");
lcd.setCursor(9,3);
lcd.println(servoRPM);
lcd.rightToLeft();
lcd.print(" ");
lcd.leftToRight();
lcd.setCursor(9,2);
lcd.println(lcdRPM);
lcd.rightToLeft();
lcd.print(" ");
lcd.leftToRight();
delay(5);
stepper.enableOutputs();
stepper.setSpeed(-stepperRPM);
stepper.run();
while(stepper.isRunning())
{
speedSensor();
stepper.setSpeed(-1*stepperRPM);
stepper.run();
if(digitalRead(rightPin)==LOW)
{
stepper.disableOutputs();
lcd.setCursor(4,1);
lcd.print("OFF");
break;
}
}
}
}
*更新*
我添加了一個(gè) if 語句,這樣當(dāng)程序處于切割/螺紋模式時(shí),如果您按住藍(lán)色瞬時(shí)按鈕,主軸將以快速模式反向運(yùn)行,以快速切割材料。
if(digitalRead(buttonPin[1]) == HIGH)
{
stepper.setSpeed(1500);
stepper.run();
}
結(jié)論
總而言之,該系統(tǒng)運(yùn)行良好。如果您正在切割螺紋,請(qǐng)不要停止伺服電機(jī),因?yàn)檫@會(huì)導(dǎo)致主軸和絲杠超時(shí)。您將無法回溯相同的螺紋輪廓。如果我有更多時(shí)間,我會(huì)在步進(jìn)電機(jī)上安裝一個(gè)編碼器以形成一個(gè)閉合控制回路,以便主軸和絲杠也可以根據(jù)位置同步。但這似乎工作正常,只要伺服器保持運(yùn)行,我就可以用這種設(shè)置切割公制螺紋(只需像平常一樣脫離托架)。您將在下面找到構(gòu)建項(xiàng)目的組件列表和每個(gè)項(xiàng)目的基本描述以及原理圖。
接線圖與源代碼一起附上。您應(yīng)該能夠?qū)⑺羞@些部分放在一起,上傳代碼并開始切割金屬。
?
- Helping Finger開源硬件
- 開源硬件-警燈
- 電子起子主板開源硬件
- AirBits開源硬件
- 閃爍的LED開源硬件
- 電子秤開源硬件
- 智能積木開源硬件
- 音箱開源硬件分享
- HBus開源硬件
- 門鈴開源硬件
- 電子英雄開源硬件
- Arduino手表開源硬件
- 機(jī)械臂開源硬件
- 主流的開源硬件有哪些詳細(xì)資料說明
- 數(shù)控車床改變絲杠螺紋旋向時(shí)的調(diào)試
- 數(shù)控機(jī)床cnc是什么意思 cnc車床和數(shù)控車床有什么區(qū)別 8233次閱讀
- 滾珠絲杠是干什么用的 滾珠絲杠裝配注意事項(xiàng) 975次閱讀
- 絲杠:核心傳動(dòng)功能部件 國(guó)產(chǎn)替代 786次閱讀
- 用小安派開源硬件制作一個(gè)桌面天氣站 809次閱讀
- 使用開源硬件的烹飪過程 1313次閱讀
- 尋找開源硬件成功的觸發(fā)器 636次閱讀
- 數(shù)控車床一級(jí)保養(yǎng)內(nèi)容與要求 4610次閱讀
- 什么是高速車床 高速車床使用的電機(jī) 2749次閱讀
- dfrobotDFRobot Bluno M3控制器簡(jiǎn)介 1823次閱讀
- 源創(chuàng)通信BPI-M1+ 開源硬件開發(fā)板介紹 2648次閱讀
- 源創(chuàng)通信開源智能路由器 MTK 7623N 介紹 2897次閱讀
- 測(cè)距傳感器在車床生產(chǎn)中的應(yīng)用解析 928次閱讀
- 關(guān)于FPGA在開源方面的探索淺析 3706次閱讀
- 三大主流開源硬件對(duì)比:Arduino vs BeagleBone vs Raspberry Pi 6363次閱讀
- 開源硬件究竟有多“Open”?看完這個(gè)你就清楚了 6939次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多