顯示具有 Mechatronics 標籤的文章。 顯示所有文章
顯示具有 Mechatronics 標籤的文章。 顯示所有文章

2015年2月17日 星期二

Arduino 翻書機

這如同上一篇一樣,都是我們家老闆讓我上班時間亂搞的小project. 
(我們家老闆真的很開明,這一點一定要廣告一下)

這裡面用了不少的馬達,不過控制與程式上其實都沒有什麼難度,所以我就只留影片與照片,不把那亂七八糟沒有整理的電路與程式碼秀出來了。

我們做完之後,最大的問題在於如何建立後續的中文OCR,因為目前聽說中文的OCR辨識度十分差。所以我們想把這個 funny project 放出來,看有沒有人願意跟我們合作OCR的部分。機構的部分我們都可以處理。為了圖書館接下來需要電子化保存舊書的需求。這是一個不賺錢,但可以保存人類知識的特別專案。
歡迎各路強者可以一起來開發Open Source的書本掃瞄機。

整體架構:電源供應 >> Arduino Mega 2560 >> Motor >>  翻頁、相機 

接得亂七八糟的線

2015年2月16日 星期一

Android 手機透過Bluetooth+Arduino 控制開關

用藍牙控制馬達這是已經十分常見的Arduino專題了:
(1) 首先在Android 上用 APP inventor 去發送藍牙的訊號,
(2) 然後 Arduino 接一個藍牙模組收到手機的訊號後,再命令使馬達動作。

嚴格來說這篇在技術上沒有什麼特殊焦點,
最主要展現的概念是,家用開關的自動化能不能直接疊上去?

當一般民眾不願意自己去拆帶有電流的開關時,
他能不能直接買一個「貼」上去?

當然這有點脫褲子放屁,要嘛就直接換一個手機可以控的開關就好。
例如有一個認識的朋友就在做這一類:
http://www.aengin.com/proinfo.php?id=4

但想到脫褲子放屁的不是只有我,你看看Lockitron
不是叫你換掉鎖,而是幫你再貼一個電子開關上去。
https://lockitron.com/ 

總之無線開關的需求是因為我窩在被窩裡不想起來關燈。
出遠門時天黑時,需要連上網打開家裡的電燈,或設定自動開燈的時間。

然後我也到kickstarter上看到類似相關的募資,用遙控器控制家用開關的

募資金額……0  (哀傷~~~)

所以我就放棄把機構改更好的動力了 (不然我是已經有新的機構的想法)。也不要建議我去做系統了,所有大的廠商都在做平台了 google nest、sentri、apple home skit、Samsung smarthome、小米…這是一個打群架的時代了,我們這種小人物能做的,只有小眾單品。

不過身為一位 Maker,做這樣的東西有時就只是為了趣味。我還是會把這樣的東西完成,自己做一個家裡的中控中心,開始用建置家裡的防火防盜Sensor與自動化系統。

---------------------------- 以下是做的過程與相關的筆記與參考資料---------------------------------
參考資料:
http://appinventor.mit.edu/explore/
http://blog.cavedu.com/programming-language/appinventor/appinventorandarduinowithbluetooth/
http://blog.cavedu.com/programming-language/appinventor/appinventorandarduinowithbluetooth2/

首先先上app inventor的網站註冊,在網路上直接寫程式,getting start的文章網路上很多,查一下就可以寫出來,我寫的內容如下:

2015年1月24日 星期六

Tear dwon:滑鼠

用了三、四年的羅技滑鼠壞了,換了中鍵的按鈕還是不行,就只好拿來拆解拍照了。
在拆解之前先為它默哀一下…(好像高中解剖牛蛙前的心情,感謝你讓我學習你的內部構造)

打開其中最主要有4個元件
(1) 左右邊各一個的微動開關 (給左右鍵用的)
(2) 中間圓圓黑色的微動開關 (給中鍵用的)
(3) 滑鼠滾輪正下方有一藍一黑的遮斷式Sensor (量滾輪跑多少的)
(4) 紅外線折射模組 (量滑鼠跑到那裡去的)

  

2014年9月7日 星期日

量測原理與機械工程實驗 (as a laboratory assistant)

Measurement and Mechanical Engineering Laboratory is a required course for junior students in the department of mechanical engineering at National Taiwan University. This course consists of miscellaneous topics of different fields such as material science, solid mechanics, thermal science, control, and fluid mechanics (see Fig. 1). Students can access equipment (or even build one on their own) which measures/demonstrates displacement, velocity, acceleration, force, torque, pressure, temperature, vibration, and other meaningful physical quantities.

2014年2月22日 星期六

利用Matlab做逆向運動學以控制6軸Robotic Arm

相關閱讀
-------------------------------------------------------------------------------

台大機械碩士生 黃淵堯 蔡佳勳
關鍵字:Matlab, Arduino, RC Servo, Robotic Arm

夾取運動示範的影片:
----------------------------------------------------------------------------------------------------------
上個學期修習黃漢邦、林沛群老師的 "機器人簡介",剛好有一個專題作業,是把課程的知識應用在機械手臂的控制程式上。為此我們向大明助教商借已經組裝完的六軸機器手臂。機器手臂的構造,在之前的文章裡面有提過,這邊就不再贅述了。
以下直接進行我們控制部分規劃的介紹。

我們使用Matlab進行正逆向運動學計算,然後將各關節的角度輸出到Arduino,由Arduino來發送脈衝訊號來驅動RC伺服馬達來旋轉到特定角度。MATLAB的部分,我們使用兩個函式庫來進行運算,Arduino IO函式庫可負責Matlab和Arduino資料傳輸的工作 (使用方式可參考: http://goo.gl/TMp9Qx)。而Robotic Toolbox可以進行機器手臂運動學的計算以及軌跡的規劃 (使用方式可參考: http://goo.gl/eTyJKR)


2014年2月16日 星期日

馬達選用的綜合筆記

這一陣子因為選用馬達的問題,做了一些筆記。
雖然原本就不是馬達的專家,但至少針對選用時所需要的知識,自己做了一下功課。

其實選用馬達很難說A情況,就一定選用B。
有時伴隨著特性、價格、還是控制方法,各式各樣的條件,都會造成不同選用結果。
所以這篇不是用系統化去分類選用的知識,而是看討論的topic是什麼,而有不同的說明。


2013年11月21日 星期四

AC伺服馬達 vs 步進馬達

2014.01.14更新

馬達的學問既深又廣,很多時候只知有人這麼用,但卻為什麼要這麼用,不知其所然。有天我隨口說出了:「機械手臂很少用步進馬達做的。」立刻被人質疑,而我也不知道真正原因。為此我認真地重新了解一次,也順道做筆記在這。

先有一個基本的概念是步進馬達因為原理的關係 (詳見步進馬達的介紹),所以通常不會加迴授的encoder來偵測位置與轉速,此又稱為Open Loop。相反地,其它馬達因為不是"極對極"的準確定位,所以通常會加encoder來迴授控制,以達精確的定位。打個比喻,步進馬達是扶著欄桿走的瞎子,伺服馬達是裝了眼睛的行人。

回到討論的命題:機械手臂很少用步進馬達做的。
所以我整理了各項比較的項目如下表,很明顯地伺服相較於步進馬達,性能的確比較好。不管是響應、扭矩、速度範圍、重量、震動、溫升等等。但最重要的是,如果把機構手臂真的裝上步進馬達,靜止的時候也許東西還拿得住,但若移動的過程中,扭矩是會下降的。速度越快,扭矩越小,會造手臂整個失步下垂的危險。我想這才是其中最主要的考量。

此外步進馬達就算不動時,也是要耗能的。所以有些需要stand by的設備,不適合使用步進馬達。

但回過頭來說,步進在緩慢移動,固定負載的情況下,因為沒有Overshot的問題,就十分適合在靜止時不能有抖動的地方。

其它更多應用上的考量,可以依下列特性進行思考。


2013年7月5日 星期五

Project:利用3D printer製作6軸機械手臂 (3) 最終回的測試

相關閱讀

(1) Project:利用3D printer製作6軸機械手臂 (1)

(2) Project:利用3D printer製作6軸機械手臂 (2)

(3) Project:利用3D printer製作6軸機械手臂 (3) 最終回的測試

(5) 利用Matlab做逆向運動學以控制6軸Robotic Arm

-----------------------------------------------------------------------------------------------------

在完成供電的問題之後,就把可變電阻接一接,進行最後的測試。
以下第一步影片就是6個軸個各運作的影片。

任務:移動橡皮擦到目的地。

2013年7月2日 星期二

Project:利用3D printer製作6軸機械手臂 (2)

相關閱讀

(1) Project:利用3D printer製作6軸機械手臂 (1)

(2) Project:利用3D printer製作6軸機械手臂 (2)

(3) Project:利用3D printer製作6軸機械手臂 (3) 最終回的測試

(5) 利用Matlab做逆向運動學以控制6軸Robotic Arm

--------------------------------------------------------------------------------------------------

上一篇先發布了ME BOM,與爆炸圖,現在則先看看第一個抓取動作的影片:

在整個的流程中,我先從機構開始畫起,依照原圖修改。
(1) 原圖使用了很多自攻螺絲,但它很容易多拆裝幾次就壞掉了,所以塑膠件我會習慣用螺絲螺母鎖固,以方便地來拆裝。
(2) 我只是要實驗性質,所以底座原本設計360度的旋轉,我改成180度就好。
(3) Gripper的齒輪,我也改了齒形,換成模數2.0,14齒的齒輪。
 

再來就開始建立BOM表與規劃列印順序,這比較像是生管,因為像底座這種需要長時間的列印的,盡量放在半夜印,這樣隔天早上醒來就可以拿了。還有配色的要求,總沒有人希望自己的作品醜醜的,所以會依照CAD裡已設計的顏色來排程。而在BOM表完成之前就要記得訂購馬達之類的電子電機元件,因為全力來印的話不到24小時就完成了,電子料要及時進來測試!

第三步就是整修毛邊與試組裝,因為每個3D的能力不太一樣,我之前買的並不是太高檔的,所以精度也有點差,所以每印完一個要試著與對手件組合一下,誤差太大的要修改。

再來伺服馬達來的時候,一定要先測試,因為MG995這種太常見的RC馬達品質參差不齊。我這次就遇到兩個有問題的馬達,最後還要再另外去別的地方買。(以後網購也不要從太遠的地方買來,壞掉要換十分不方便。) 然後讓Arduino開始去測試每一個的性能,看多少PWM的值會轉到多少角度,先取得馬達性能再做安裝。


在安裝的時候,就是看當初設計好不好的時候,有些地方設計得十分難裝,我也是從這其中獲得一些教訓。其實也是因為待在前公司比較沒有機會從頭到尾、從無到有自己設計一個產品。這隻手臂算是真的我自己設計的產品吧!

目前我己完成組裝的部分,算是硬體的部分就大致完成了。然後程式的部分就利用Arduino接可變電阻當作輸入訊號,來控制馬達的角度。不過這時候問題才來,馬達的好壞這時立即看到,沒有辦法穩定地轉動,抖動的問題是手臂的致命傷。
所以我才說馬達是手臂好壞的重點:穩定、精度!

接下來另一個重點是控制的介面,但搞一個介面程式不在我的計劃之中,所以雖然我覺得那也是很重要的東西,但就先放在一旁就好。

2013年7月1日 星期一

Project:利用3D printer製作6軸機械手臂 (1)

相關閱讀
(1) Project:利用3D printer製作6軸機械手臂 (1)

(2) Project:利用3D printer製作6軸機械手臂 (2)

(3) Project:利用3D printer製作6軸機械手臂 (3) 最終回的測試

(5) 利用Matlab做逆向運動學以控制6軸Robotic Arm

---------------------------------------------------------------------------------


將近半個月沒有PO文了,因為想在正式去找工作之前完成一個Project,為這段不食人間煙火的日子劃下一個句點!所以結合了3D印表機 + Arduino + RC Servo Motor,第一次嘗試6軸機械手臂的製作。這個機械手臂以馬德里Carlos III大學Antonio Castro Gómez的手臂為原型,重新進行設計與修改。包括更換馬達為最用的MG995、減少一顆底盤的馬達、把多餘的拆件合併,自攻螺絲換螺帽等等。接下來會會介紹製做的過程,拋磚引玉希望同時也有製作的人一起來討論。

主要分成兩個Topic:(1)機構設計 (2)馬達控制。本文先討論機構設計的部分。
機構設計的部分:我把整隻手分成五個部分:
(1) Base:包括底坐的Joint-1(對Z軸旋轉) 與 Joint-2(對Y軸旋轉),馬達皆是MG995。
(2) Humerus:連結Base與Elbow之間的連桿,沒有攜帶馬達。
(3) Elbow:包括Joint-3(馬達MG995)與Joint-4(馬達MG90S)
(4) Wrist:Joint-5 (MG90S)、Joint-6 (MG90S)
(5) Gripper:夾持的手指端 (MG90)

原圖的.STL請至http://www.thingiverse.com/thing:30163下載
而我修改過的圖暫時先不放上來,因為還在做一些Design for assembly & manufacturing.

我先Release ME BOM出來,有興趣的人可以自行參考開發自己的。
以下是爆炸圖:
(1) Base Explore

2013年5月16日 星期四

Arduino範例13:Get frequency from Optical encoder by Arduino (量測encoder的訊號)

In past articles, we know how to control a small DC motor by PWM signal.
直流馬達的速控 (一) : 使用555產生PWM 驅動馬達

直流馬達的速控 (二) : 使用Ardunio產生PWM 驅動馬達

But if we want to do feedback control, we should know rotation speed.
So today, I practice using Arduino to get frequency from motor.

Below picture is a small DC motor with optical encoder.
This is tear down from inkjet printer.

You can see that, it has 448 "line" per Revolution, so I could get 448 pulses in every one turn.


2013年5月15日 星期三

Arduino範例12:Control RC Servo Motor by Arduino (控制RC伺服馬達)


做過直流馬達、步進馬達的控制,接下來要做的是RC伺服馬達的控制。下圖是伺服馬達的原理圖。伺服馬達廣義的定義,就是一顆已經帶有sensor的馬達,可以做回授的控制。而我們要使用的RC Servo Motor,使用十分方便,只需要供應指定寬度的PWM訊號,那他就會到達我們所想要的角度。


2013年5月11日 星期六

Arduino範例11:用可變電阻+Arduino 控制步進馬達位置

上一篇已經介紹用Arduino+ULN2003來驅動步進馬達了,
但只能要求速度與前進的總步數,尚無法要求停止的位置。
所以這次將利用可變電阻給予的電位訊號,來要求步進馬達所停位置。

當轉動可變電阻之後,電位(val)改變了,比較上一個時間電位(previous),
兩個的差值(val - previous)就當作馬達前進的步數。

接線圖

Video

2013年5月10日 星期五

Arduino範例10:用Arduino+ULN2003驅動步進馬達

上一篇用了最土炮的方法推動步進馬達,這次就直接改用Arduino的板子來給訊號。不過Arduino的板子本身只有用USB接電腦,不夠我們去驅動步進馬達。所以上網看了一下,發現有一種超好用的晶片ULN2003,可以用來協助我們推動馬達。

ULN2003是個有7個達靈頓電晶體的包裝陳列(Darlington Array),有7個NPN達林頓管組成,並且加上反向器,使引腳1~7輸入高電壓時,引腳16~10變成低電位,讓外面的電流流入。有這個就方便多了,不用再自己搭達靈頓電路,而且集極/射極的電壓達50V很夠用。


2013年5月9日 星期四

利用555晶片驅動步進馬達

初步介紹完步進馬達,接下來就是要驅動它了。原則上,我會先用最基本的方法來驅動馬達,通過老式的方法,對原理做最直接深入的了解。然後再用微控制晶片(Ardunio)做控制,這才是未來我打算用的方法。

今天要介紹的就是用555的晶片來驅動步進馬達(只控速度,計數的功能未來放在Ardunio直接決解)

使用的馬達為單極驅動、四相、12V的步進馬達,應該有5條線。可以用三用電表量測,找出共用點。

電路圖

2013年5月8日 星期三

步進馬達的介紹

之前已利用PWM的脈波進行直流馬達的控制,甚至抓取轉速的訊號進行回授的控制,這是閉迴路控制最典型的方法之一。現在我們要做的是另一種,也就是開迴路控制:步進馬達。

但步進馬達百百款,到底我們用的是那一款?怎麼用?之前都傻呼呼地,套件配那一種,就用那一種。可是我後來才發現自己的倉庫裡有四條線的,五條線的,六條線的,有圓扁形的,有方形的…笒等之類的。所以這次我才真正找資料好好地了解。

1. 從轉子的構造來分:
(1) PM:permanent magnet
            外側為電磁鐵的定子,內為NS交互磁化的永磁轉子(無齒型)
(2) VR:variable relutance 可變磁阻型
            轉子是利用齒型與定子吸引所發生的轉力,
            因而VR型在無激磁的時候,並不發生保持轉矩。
            (另外PM的磁極會互相吸引+推斥,但VR的只有互相吸引而已。)
(3) HB:Hybrid
            結合PM與VR的類型。
            轉子為永磁,有齒形,但磁化方向不同PM。
            以軸向截面交互磁化,所以可以分得更多的磁極。
            所以定子在軸向也分成不同截段。


2013年5月4日 星期六

Arduino範例06:利用光敏電阻來控制小型DC馬達

既然我們已經學會用PWM控制馬達,又學會用Ardunio做PWM的輸出,現在又可以從光敏電阻輸入類比訊號。那我們就整合一下做一個小段落的結尾:利用光敏電阻來控制馬達的轉速!

操作目的 
製作一個可循光跡轉動的馬達,光線越強,轉動速度就越快。

Video

2013年5月3日 星期五

Ardunio範例04:使用Arduino產生PWM 驅動直流小馬達

之前有一篇"使用555產生PWM 驅動馬達"是我們用手去控制可變電阻,來調整duty time。然後這次我們想更進一步在電腦上直接控制馬達的速度,所以就結合目前正在練習的Ardunio,產生PWM的訊號,去控制馬達。也請參閱"Ardunio範例三" 裡面就是說明如何從Ardunio丟出PWM訊號的。

Video
註:為了可以更明顯地表達速度變化,我分成五段的速度,每段各停留3秒鐘。
       等上升到最高的速度之後,再降回來。

2013年5月1日 星期三

直流馬達的速控 (一) : 使用555產生PWM 驅動馬達

在初步練習了晶片的應用之後,現在我們要連結這些電子電路來控制馬達了,首先第一個就是直流馬達的控制。關於直流馬達的基本原理就不在這裡贅述了,我們只在乎當我們要做速度控制時,該如何控制。

其實不只馬達的轉速,電熱器、燈的亮度等等控制都是類似的,主要有以下三種方法,其中第三種控制通電時間長短的方法,就是所謂的PWM (Pulse Width Modulation)脈衝寬度調節,該方法是最廣泛應用且效率較高的方法。接下來將以此為主題。


PWM 
我上網找到很多PWM的相關資訊,實在不太想重複整理……
直接列出來,有興趣的就可以找來看。
(1) http://www.letry.com.tw/A12.htm
     由最基本的555產生方波直接來控制馬達
(2) http://www.shs.edu.tw/works/essay/2011/03/2011033012355698.pdf
     這篇介紹了使用”比較器”來控制脈波中的duty time
(3) www.me.kuas.edu.tw/實務專題/95年PDF/95乙/黃義達%20郭士宏.pdf
     這篇更實務地說明如何先用555搭配積分器產生三角波,再用比較器控制輸出的duty time。

我自己讀完這些之後(其實不只這些,網路上有一脫拉庫資料),我把它們整理成三個層次:
1. 555 直接產生方波,加個可變電阻與二極體就可以控制PWM的duty time了。
2. 更進階地使用”比較器”來完成PWM的duty time控制。
3. 直接用電腦配合微晶片控制PWM的duty time。

這次我打算操作第一個與第三個就好了,第一個讓我們對物理現象有更直覺的反應,這也是實作的精神之一。第三個是因為現代的微控制晶片都十分方便,我們實務上會全部整合在微控制晶片中操作。 (至於第二個:用比較器…我想應該是我太simple,無法理解為什麼它要脫褲子放屁。)

555晶片應用的基本觀念

2013.Apr.20修訂:原本只有整理555的 (1)單穩態 (2) 非穩態 模式,今天再加入(3) 雙穩態模式。
============================================
之前使用步進馬達的時候,就已經用過555這塊晶片了(脈衝產生器)。雖然它很簡單,但我還是不太懂其原理與應用的方法。所以藉由自己再寫一篇文章,順道整理555的觀念。

先看晶片本身,其正極與負極個別是第8號和1號腳。(為了清楚起見,內部的一些連接暫時略去)。兩個黃色的三角形是比較器,並將比較的結果輸入中間綠色的觸發器。

輸出引腳3原本是接地,當比較器A 推開觸發器內的開關,引腳3就接正極做輸出。然後外部的C4也就接R4來的電源做充電。

當電容C4充好電之後,比較器B會因為引腳6的電壓比引腳5來得高,進而推動觸發器把開關扳回來,直到放完電。


因此在上圖"單穩態"的設計情況下,其開關步驟如下:
(1) 開始的時候,觸發器將電容C4和輸出(引腳3)接地。
(2) 當引腳2上的電壓比電源電壓的1/3還低時(就是觸發),就會使輸出(引腳3)變正,並開始允許電容器 C4通過 R4充電。
(3) 當電容器C4充電到供電電壓的2/3時,晶片使電容器放電,引腳上的輸出會再次變低。
所以每當引腳2被觸發的同時,C4開始充電,而充電的時間決定引腳3輸出的時間。
充電時間越長,脈沖寬度(時間)就越長,也就是正比於時間常數 "R4 x C4"。



====================================================
還有另一種稱之為"非穩態模式"

先將 引腳2 跳線到 引腳6,並且加入一個電阻R5。在這個情況下,用在比較器A的引腳2電壓將會由電容C4來決定。

延續單穩態的步驟3,C4放電完了之後,也就造成引腳2的電壓低過電源電壓的1/3,這時又觸發比較器A,使引腳3又開始輸出,然後電容C4又開始充電…周而復使。
這就是我們要產生的脈波了。
比較脈寬,充電時間正比於 [R4+R5] x C4
放電時間正比於 R5 x C4,做成的圖表如下:




555還可以做觸發用的 "雙穩態模式"
如下圖所示,引腳7與引腳6不要接在一起了,如此引腳6就不會有電流來充電,而比較器B也就不會去觸發內部的電路。這時555就由引腳2 & 4 來決定輸出。

1. 在引腳2上施加一個負脈衝,會使輸出腳3翻轉為正。
2. 在引腳4上施加一個負脈衝,又會使輸出腳3翻轉為負。 
3. 555定時器在這兩種狀態下都是穩定的,因此雙穩態可以做為觸發器



最後回顧一下"脈衝產生器"裡的圖。
1. 為何引腳2要接引腳6? >>成為非穩態模式,產生持續頻率。
2. 為何控制頻率的電阻要放在引腳6跟7之間? >>因為充、放電時間跟跟這個電阻有關。