溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux中怎么使用Arduino制作一個繪圖儀

發(fā)布時間:2021-10-23 09:31:28 來源:億速云 閱讀:128 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹了linux中怎么使用Arduino制作一個繪圖儀,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

由于我是一個很懷舊的人,我真的很喜歡最初的 Arduino Uno。下面是我用到的其它東西的一個清單(僅供參考,其中一些我也不是很滿意):

  • FabScan shield:承載步進(jìn)電機(jī)驅(qū)動器。

  • SilentStepSticks:步進(jìn)電機(jī)驅(qū)動器,因為 Arduino 自身不能處理步進(jìn)電機(jī)所需的電壓和電流。因此我使用了一個 Trinamic TMC2130 芯片,但它是工作在單獨(dú)模式。這些替換為 Pololu 4988,但是它們運(yùn)轉(zhuǎn)更安靜。

  • SilentStepStick 保護(hù)裝置:一個防止你的電機(jī)驅(qū)動器轉(zhuǎn)動過快的二極管(相信我,你肯定會需要它的)。

  • 步進(jìn)電機(jī):我選擇的是使用 12 V 電壓的 NEMA 17 電機(jī)(如,來自 Watterott 和 SparkFun 的型號)。

  • 直線導(dǎo)桿

  • 木制的基板

  • 木螺絲

  • GT2 皮帶

  • GT2 同步滑輪

這是我作為個人項目而設(shè)計的。如果你想找到一個現(xiàn)成的工具套件,你可以從 German Make 雜志上找到 MaXYposi。

硬件安裝

正如你所看到的,我剛開始做的太大了。這個繪圖儀并不合適放在我的桌子上。但是,沒有關(guān)系,我只是為了學(xué)習(xí)它(并且,我也將一些東西進(jìn)行重新制作,下次我將使用一個更小的橫梁)。

linux中怎么使用Arduino制作一個繪圖儀

帶 X 軸和 Y 軸軌道的繪圖儀基板

皮帶安裝在軌道的側(cè)面,并且用它將一些輔助輪和電機(jī)掛在一起:

linux中怎么使用Arduino制作一個繪圖儀

電機(jī)上的皮帶路由

我在 Arduino 上堆疊了幾個組件。Arduino 在最下面,它之上是 FabScan shield,接著是一個安裝在 1 和 2  號電機(jī)槽上的 StepStick 保護(hù)裝置,SilentStepStick 在最上面。注意,SCK 和 SDI 針腳沒有連接。

linux中怎么使用Arduino制作一個繪圖儀

Arduino 堆疊配置(高清大圖)

注意將電機(jī)的連接線接到正確的針腳上。如果有疑問,就去查看它的數(shù)據(jù)表,或者使用歐姆表去找出哪一對線是正確的。

軟件配置

基礎(chǔ)部分

雖然像 grbl 這樣的軟件可以解釋諸如像裝置移動和其它一些動作的 G-codes,并且,我也可以將它刷進(jìn) Arduino 中,但是我很好奇,想更好地理解它是如何工作的。(我的 X-Y 繪圖儀軟件可以在 GitHub 上找到,不過我不提供任何保修。)

使用 StepStick(或者其它兼容的)驅(qū)動器去驅(qū)動步進(jìn)電機(jī),基本上只需要發(fā)送一個高電平信號或者低電平信號到各自的針腳即可。或者使用 Arduino 的術(shù)語:

digitalWrite(stepPin, HIGH);delayMicroseconds(30);digitalWrite(stepPin, LOW);

stepPin 的位置上是步進(jìn)電機(jī)的針腳編號:3 是 1 號電機(jī),而 6 是 2 號電機(jī)。

在步進(jìn)電機(jī)能夠工作之前,它必須先被啟用。

digitalWrite(enPin, LOW);

實際上,StepStick 能夠理解針腳的三個狀態(tài):

  • Low:電機(jī)已啟用

  • High:電機(jī)已禁用

  • Pin 未連接:電機(jī)已啟用,但在一段時間后進(jìn)入節(jié)能模式

電機(jī)啟用后,它的線圈已經(jīng)有了力量并用來保持位置。這時候幾乎不可能用手來轉(zhuǎn)動它的軸。這樣可以保證很好的精度,但是也意味著電機(jī)和驅(qū)動器芯片都“充滿著”力量,并且也因此會發(fā)熱。

***,也是很重要的,我們需要一個決定繪圖儀方向的方法:

digitalWrite(dirPin, direction);

下面的表列出了功能和針腳:

< 如顯示不全,請左右滑動 >
功能1 號電機(jī)2 號電機(jī)
啟用25
方向47
步進(jìn)36

在我們使用這些針腳之前,我們需要在代碼的 setup() 節(jié)中設(shè)置它的 OUTPUT 模式。

pinMode(enPin1, OUTPUT);pinMode(stepPin1, OUTPUT);pinMode(dirPin1, OUTPUT);digitalWrite(enPin1, LOW);

了解這些知識后,我們可以很容易地讓步進(jìn)電機(jī)四處移動:

    totalRounds = ...    for (int rounds =0 ; rounds < 2*totalRounds; rounds++) {       if (dir==0){ // set direction         digitalWrite(dirPin2, LOW);       } else {         digitalWrite(dirPin2, HIGH);       }       delay(1); // give motors some breathing time       dir = 1-dir; // reverse direction       for (int i=0; i < 6400; i++) {         int t = abs(3200-i) / 200;         digitalWrite(stepPin2, HIGH);         delayMicroseconds(70 + t);         digitalWrite(stepPin2, LOW);         delayMicroseconds(70 + t);       }    }

這將使滑塊向左和向右移動。這些代碼只操縱一個步進(jìn)電機(jī),但是,對于一個 X-Y 繪圖儀,我們要考慮兩個軸。

命令解釋器

我開始做一個簡單的命令解釋器去使用規(guī)范的路徑,比如:

"X30|Y30|X-30 Y-30|X-20|Y-20|X20|Y20|X-40|Y-25|X40 Y25

用毫米來描述相對移動(1 毫米等于 80 步)。

繪圖儀軟件實現(xiàn)了一個 持續(xù)模式 ,這可以允許一臺 PC 給它提供一個很大的路徑(很多的路徑)去繪制。(在這個視頻中展示了如何繪制 Hilbert 曲線)

設(shè)計一個好用的握筆器

在上面的***張圖中,繪圖筆是細(xì)繩子綁到 Y 軸上的。這樣繪圖也不精確,并且也無法在軟件中實現(xiàn)提筆和下筆(如示例中的大黑點(diǎn))。

因此,我設(shè)計了一個更好用的、更精確的握筆器,它使用一個伺服器去提筆和下筆??梢栽谙旅娴倪@張圖中看到這個新的、改進(jìn)后的握筆器,上面視頻鏈接中的 Hilbert 曲線就是使用它繪制的。

linux中怎么使用Arduino制作一個繪圖儀

圖中的特寫鏡頭就是伺服器臂提起筆的圖像

筆是用一個小夾具固定住的(圖上展示的是一個大小為 8 的夾具,它一般用于將線纜固定在墻上)。伺服器臂能夠提起筆;當(dāng)伺服器臂放下來的時候,筆就會被放下來。

驅(qū)動伺服器

驅(qū)動伺服器是非常簡單的:只需要提供位置,伺服器就可以完成所有的工作。

#include <Servo.h> // Servo pin#define servoData PIN_A1 // Positions#define PEN_UP 10#define PEN_DOWN 50 Servo penServo; void setup() {  // Attach to servo and raise pen  penServo.attach(servoData);  penServo.write(PEN_UP);}

我把伺服器接頭連接在 FabScan shield 的 4 號電機(jī)上,因此,我將用 1 號模擬針腳。

放下筆也很容易:

  penServo.write(PEN_DOWN);

進(jìn)一步擴(kuò)展

我的進(jìn)一步擴(kuò)展的其中一項就是添加一些終止檢測器,但是,我也可以不用它們,進(jìn)而使用 TMC2130 的 StallGuard 模式來代替。這些檢測器也可以用于去實現(xiàn)一個 home 命令。

以后,我或許還將添加一個真實的 Z 軸,這樣它就可以對一個木頭進(jìn)行銑削雕刻,或者鉆一個 PCB 板,或者雕刻一塊丙烯酸塑料,或者 &hellip; (我還想到了用激光)。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“l(fā)inux中怎么使用Arduino制作一個繪圖儀”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI