一般提到 Arduino 所控制的機械,大家腦海中所浮現的畫面,大概就是個小小的伺服馬達或步進馬達,移動輕小的物體;但是 Arduino 其實可以驅動更強大的裝置,這次我們來看看如果讓 Arduino 壓扁鋁箔罐吧!
身為一個有環保意識的世界公民,喝完飲料隨手壓扁鋁箔罐是一定要的。富有求知精神的你上 Google 搜尋,發現壓扁鋁箔罐的方法百百種,有人用腳、手、大氣壓力,也有人販賣手動壓罐器,透過桿槓原理讓壓罐更輕鬆。但老實說,你最受不了的就是一次次地做著同樣的事情;一轉頭,你看到躺一旁在角落的 Arduino ,上次用它不知道已是多久以前,一層灰塵薄薄的在表面,靜靜地訴說著你對它的冷淡。 是時候讓它復活了。
材料
壓罐器的核心是電動推杆( Linear Actuator ,又稱線性致動器)。電動推杆將一般馬達的圓周運動轉換成線性運動,進而提供拉力(也可以是推力),幫我們把鋁箔罐壓扁。電動推杆是推進還是後拉,是由電流的方向所決定,為了方便改變電流流動的方向,這裡我們需要一個使用 L298N 晶片的馬達驅動模組,方便我們控制電動推杆移動的方向。

來源:Wikipedia
L298N 的原理其實很簡單,它裡面有一個稱為 H-Bridge 的迴路,也就是在形狀像是 H 的迴路的上,裝兩組對應的開關。其中一組開關形成通路的時候,會使電動推杆往前推;另一組通路的時候,則會使電動推杆往後拉。而當兩組都是開路的時候電動推杆就會停止在原處不動。
H-Bridge
但一個電動推杆並不便宜,小型電動推杆的價格從 1000~3000 元不等。所幸台灣本身就有好幾家公司在生產電動推杆,雖然他們通常不提供零售,但可以上拍賣網站透過關鍵字(例如:電動推杆、線性致動器等)搜尋零售商。
線路配置
首先如下圖所示,將 Arduino 、 12 伏特直流電源和電動推杆與 H-Bridge 連接。我們所使用的 L298 本身可以將 12 伏特的電源的降壓至 5 伏特,因此可以直接提供電源給 Arduino,而不需要額外的電源。
來源:Makezine
來源:Makezine
構造
壓罐器的主體是一塊 2 × 4 英吋的木塊,一端以電動推杆提供的方式固定住,另一端則是一小塊木頭作為擋板,阻止鋁箔罐滑出去,電動推杆的前端則加裝一塊小木頭,負責將推力傳達到罐子上。木塊的兩側可以再加上兩塊木片,避免電動推杆推歪,但這並不是必要的結構。
來源:Makezine
程式碼
再來點此取得程式碼,並上傳到 Arduino 。程式碼預設花 30 秒讓電動推杆往前推、停頓個一秒、再往後收 30 秒,如果想要調整這個時間的長短的話可以調整 crushTime
這個參數(預設是 30000,單位是毫秒)。
細心的你可能已經發現程式碼裡總是在
stop()
之後呼叫delay(1000)
。這是因為如果太快的改變電動推杆移動的方向的話,可能導致電路不穩,所以為了保險起見,我們讓 Arduino 在改變方向前多等一秒鐘,確定電動推杆已經停止移動才進行下個步驟。
開動
接下來?當然就是餵點食物給你的新朋友囉!
參考資料