2013年5月28日 星期二

每周一印:Gear

玩3D printer的社群,主要分成兩個方向,一是重新開發新的機器,另一種是開發新的應用。
所以今天我就嘗試新的應用--印齒輪。了解一下目前手上的3D printer可以印到多小模數的齒輪。

要印之前先介紹一下齒輪的參數,最常控制的就是齒數與模數。
調整齒數來組合出所需的齒輪比,而同一組齒輪對需要相同模數才能配合轉動。
一個常用的公式就是 T(齒數) x M(模數) = D (節徑),簡稱:他(T) x 媽(M) = 的(D)。
不過因為某些深奧的原因,齒數越來代表齒根被切得越深,進而造成強度不足。
所以常用的齒輪最少不會低於17~14齒,除非做轉位。

好吧,以上簡單撇個幾句,只是為了交待為什麼我這次先用20齒(儘量少的齒數,但又不能太少)。然後配合模數0.5、1.0、2.0畫了三個齒輪。(其實是畫了一個,直接放大2倍、4倍)

先印模數 0.5 ,齒數20的齒輪看看,如下圖。很不幸地,他的profile已經被破壞殆盡。
當然精度的問題首先來自於機構的不穩定性,但生成G-Code的Skeinforge軟體也好不到那去!
總之我手上的這一台看來是無法做模數 0.5的齒輪了!

再來印了一個模數1.0,同樣20齒的。
這次看來好多了,雖然還是沒有漸開線,但已經有明確的"齒"了。
我也再多印一個來互相轉動看看,看來到模數 1.0就可以做實驗用了!


2013年5月27日 星期一

每周一印:門檔 door stopper

在印了這麼多東西之後,倒還沒有為了解決生活小問題印個東西。
今天剛好有個機會,就是印一個門檔來固定門的位置,避免它擺來擺去。

我書房的門因為後面有放背包,所以沒有辦法自然開到最大。
空間上看起來就卡卡的,甚至有時候風一吹就大力地關上,十分不方便!
所以常見的方便小物就是門檔,如下圖中綠色物件所示:

藉由門欲向右邊開啟時,帶有楔形的門檔 (其實就是一個楔型塊)會被往下壓,
而由地面反作用到楔形塊的正向力就變大,同時也形向左的摩擦力。
這個摩擦力就可以使得門被卡在當下的位置上。

下面就是成品的照片,一個簡單小物!




2013年5月26日 星期日

2013年5月18日 星期六

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日 星期五

母親節快樂,來印個東西吧!

這幾天狂在做馬達的控制,好久沒有印東西了!
為此,我今年決定用3D印表機印一個全世界都沒有的母親節紀念小品。
不過很可惜,今天pro/E的license有問題,無法改圖。
但就是一個小心意了!



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月7日 星期二

Arduino範例09:利用7段顯示器進行倒數

之前做過另一篇「4026+七段顯示器」這個東西,現在我要改用Ardunio來做了!
(其實我很早就為自己規畫這一系列相關練習,前後呼應!)

操作目的
就是用Ardunio叫它依序對七段顯示器的那幾隻腳位進行輸出,然後就是要顯示出來倒數的樣子。

Video


2013年5月6日 星期一

Arduino範例08:控制喇叭發聲

之前拆了收音機並且獲得的喇叭(8歐姆3瓦)兩顆,外加兩個壓電片。
所以配合Ardunio的板子,我們做一個發聲的範例。(可參考"喇叭Tear down")

我們知道各音符剛好對應的就是Hz,例如Do(523Hz), Re (587Hz), Mi(659Hz), Fa(698Hz), So(784Hz), La(880Hz), Si(988Hz),所以如果我們要叫Ardunio輸出這些音符,就需要這些Hz數。很幸運地是,Ardunio已經幫我們建立好對應表了,就是內建 pitches.h 這個檔案。

所以接下來我就挑了小蜜蜂當作練習的曲目,讓Ardunio輸出一系列的脈波給喇叭發聲。

Video


2013年5月5日 星期日

Tear down: 喇叭

之前有一篇"收音機tear down",當時有拆下兩顆喇叭,
這次特別針對喇叭做更進一步拆解。


從背面來看,其中大顆的是喇叭,小顆黃黃舊舊的是一塊壓電片(常用於蜂嗚器)。
 

Arduino範例07:LED燈依序發亮

這次要做的是利用陣列來產生依序的輸出,主要用的是 for ( ) 語法。
如下圖所示,表達的就是 0~99 的數列,共100個數字。

所以我們們將用 for 函數輸出 0~5等6個數字,再對應數位出輸的腳位。
輸出的腳位接上LED燈,就可以看到燈從第一個依序亮到最後一個,
再由最後一個亮回第一個,並且在第一個停留0.5秒。

Video

2013年5月4日 星期六

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

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

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

Video

Arduino範例05:利用光敏電阻調整LED

這次要學習如何使用analogWrite()來取得外部類比輸入電壓, 
並且使用Serial.begin()和serial.println()直接在電腦看輸入電壓大小。

操作目的:
利用光敏電阻檢測外界光線的強弱,當外界光線不足時,要求LED燈亮起。

Video


2013年5月3日 星期五

Tear down: 凸輪推墨水

前幾天從回收筒裡撿到一個東西,覺得很特別--凸輪推墨水管
拍個照片PO上來。

先是打開外殼一看,有一個DC小馬達帶蝸輪蝸桿要轉動一個東西。
然後有一個墨水管繞裡其中再出來。

 更進一步打開之後,看得更清楚!

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

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

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

2013年5月2日 星期四

Arduino範例03:Use PWM to control LED brightness

有關於PWM的認識,請參考"直流馬達的速控 (一)"。
而在Ardunio裡,若要做類比輸出 analogWrite,板子是給500Hz的PWM脈波輸出,我們再藉由控制duty time來輸出等效的電壓。其中analogWrite ( ) 的參數範圍是0~255,255代表duty time為100%;127為50%。這次就藉由等效的電壓讓LED燈做明暗的變化。

操作目的 
利用analogWrite所輸出的PWM,來調整LED燈的亮度。

Video