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

Arduino範例02:使用按鈕鍵輸入訊號控制LED燈

在準備開始一系列的練習前,先說這些範例都是Adunio內建有的,並且在網路上找到得說明的(http://coopermaa2nd.blogspot.tw/2010/12/arduino-lab2-led.html)。但照抄這些練習po上來實在沒有誠意,所以我會做一些小小的改變,至少程式碼的部分,我會嘗試一些小改變。

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

在開始前先說明Ardunio程式的架構,主要分成三部分: 
1. int                     //先宣告用要用參數
2. void setup() {} //用來跑第一輪初始值的開頭
                            //兩個大括弧”{“與”}”要分隔到不同兩行
3.void loop () {}  //用來跑無限迴圈的開頭
                           //除非是”{“ 或 ”}” 做結,否則每一行結束要用”;”做結

所以我們接下來寫的程式大概就是先宣告參數,然後用void setup () {}來跑初始要求,再用void loop () {}寫進我們要的動作。

----------------------------------------------本次範例----------------------------------------------
操作目的 
使用按鍵控制LED指的開關,當我斷路的時候,LED燈反而亮起來。

Video

Tear down: 收音機內部構造

家裡面台MP3/CD收音機一附快壞掉的樣子,USB抓不到,CD後面曲目抓不到,又只能聽FM的電台而已,所索就把它拆了。反正這時代,大家也很少用收音機,拆一拆來看看裡面吧!

這台是三洋手提式MP3/CD收音機,在2006年的出廠的機器。拆開機器的內部,發現有兩個主要的板子,一個負責接收外部進來的電源+供應音源+收取 FM電台的訊號;另一個接的是CD player+USC+LCD銀幕。我把架構圖再畫成block diagram顯示如下:

我把架構圖再畫成block diagram顯示如下:紫色的pwoer進到到變壓器,轉成直流電統給「音源/電源主板」與「光碟機/USB/LCD」。藍色的輸入項目包括光碟機、USB輸入、收FM的電感,外加幾個按鈕都會各自輸入對應的主板。而綠色的板子也會輸出音源至喇叭以及LCD顯示。

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,無法理解為什麼它要脫褲子放屁。)

3D printer 列印尺寸誤差的探討

印了這麼多東西,但我卻沒有實際量過一次誤差到底是多少。
就業界的說法,就是沒有出過FAI報告,這樣的樣品是無法過關的。
所以這次就為我的Ardunio板子做一個盒子,同時驗證尺寸誤差的量是多少。

首先依Ardunio的板子在Pro/E裡先畫一個適當大小的盒子,
然後用3D printer印出來,再用游標卡尺,量測各尺寸。





每周一印:名字牌 & The Dawn of Christianity

本週3D 印表機的工作最主要是印名牌給同事當紀念品,
當然還有一些親朋好友,這種小禮物真是好東西。

所以就可以看到下面的照片有一堆名字
放眼望去,怪怪的…好佳在不是印直的!




另外上網找了雕像的CAD檔來印一下 (from: http://www.thingiverse.com/thing:24467)
這雕像叫做:The Dawn of Christianity (基督教的黎明)

印的過程得到幾個結論:
(1) 因為有下巴的關係,需要設定有支撐材料來撐住倒空的部分。
(2) 精度依然不足,以至於臉部的表情無法呈現出來。
       (當然我尺寸很小,眼睛的大小可能不到1mm,很容易因為振動而糊掉!

目前依然還在挑戰艾菲爾鐵塔,因為ReplicatorG產生的G-code無法那麼細緻。
看來不單單只是馬達精度與機構的問題,連G-Code的生成都會影響精度的呈現。
Slic3r研究到一半還現在那沒有動……好多事想做喔!

Arduino範例01:Blinking

這篇單純只是紀念一下第一次使用Ardunio的板子寫Firmware而已。因為為了自己可以控訊號、馬達、sensor等等,所以找了這塊十分流行的微控制板子來做。

這塊板子是義大利藉的Massimo Banzi(學校的老師)和一位西班牙晶片工程師David Cuartielles一起開發出來的,並且引入David Mellis(學生)為電路板設計的編程語言。詳細的內容可以查看:https://zh.wikipedia.org/wiki/Arduino
後來聽說出國念書的學弟妹在美國的課堂上也是用Ardunio。

Anyway,我這次用的是Ardunio Mega 2560,因為剛好是我手上3D printer上用的板子,我想自己從頭學起機電整合的功課  (其實我手上還有NI 的 myDAQ,也十分好用)

3D Scanner: Splinescan Project

自從有了3D印表機,其實還想再去找3D掃描器來做。(其實想做的太多了,包括自己建立一個更大的FDM系統、桌上型CNC、雷射切割機…) 所以我先找了一個OpenSource的計畫來閱讀一下:Splinescan Project。這是一位叫Andrew Lewis的英國人在2009年開始的計畫,然後在2010年Make雜誌上出現該project的內容。但十分可惜的是Software、Firmware的內容著墨不多,以至我還是無法由文章之中確定雷射如果運作得到點座標資料,再建立CAD的。但不管,我還是先翻譯出來,再繼續找資料。
原文出處:http://blog.makezine.com/projects/make-21/3d-scanning-system/
------------------------------------------------------------------------------------
1. Overview
3D Scanner主要分成四個部分:
(1) 主架構Chassis: 這是掃瞄器主要結構,必須夠堅固才能把東西放在上面旋轉。This is the backbone of the scanner. Everything fits onto the chassis, and it needs to be rigid enough to withstand the weight of all the other components, and whatever you intend to put onto the turntable.
(2) 齒輪箱Gearbox: 使用步進馬達來轉動待測物體,透過齒輪比換成我們要的速度,不過並不會太複雜。This part takes the turning force of the stepper motor and turns it into something more suitable for our needs. It’s a simple design with only a few components.
(3) 電子零件Electronics: 我們電腦也要連結到這台機器,上需就要一些電子零件來當窗口。The brains and nerves of the scanner allow you control the turntable from your computer. The wiring is not difficult, and only limited soldering knowledge is required.
(4) 軟體Software: 文中沒有提到這一塊,但目前看來是使用SplineScan來把資料傳進來變3D檔。

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之間? >>因為充、放電時間跟跟這個電阻有關。

TTL 與 COMS

即然開始談到7400家族,就不得不談4000系列,這兩個系列剛好是最常用的晶片。

亦或我們換個角度來看,目前我所接觸到的晶片,最主要分成兩種,TTL和CMOS。
其中TTL最初的元件型號就是7400系列。
而CMOS最初的元件型號就是4000系列 (而後因為商業考量 CMOS也有出74HCxx系列)

* TTL: Transistor-Transistor Logic 晶體管邏輯電路,將微小的雙極型晶體管蝕刻在單矽晶片上。
* CMOS: Complementary metal-oxide-semiconductor 互補金屬氧化物半導體,也就是場效電晶體。

在1963年,工程師利用TTL製造出第一個邏輯電路(Designed by Orville Baker),然後又很快出現COMS的技術。前面使用的4026就是較老的CMOS晶片。一般來說TTL,功率耗電較大,驅動能力強,但工作電壓要求在5V左右。但CMOS的工作電壓就寬多了,可以到達12V,不過其功耗低,速度也比較慢,重點是易受靜電損壞 (不過已經改進許多)。


可以參考電晶體的歷史: http://www.computerhistory.org/semiconductor/timeline/1963-TTL.html
74xx (TTL) 家族介紹: http://electronicsclub.info/74series.htm
4000 (CMOS) 家族介紹:  http://electronicsclub.info/cmos.htm
以上都是很不錯的網站。

Tear down: DVD player (DVD放映機)

本周要感謝女朋友無償提供一台挑片十分嚴重的DVD player來當我的Tear down的主角。
下圖就是它被拆解前最後的照片了!

首先第一步就是打開外殼,看到裡面主體的架構。
看來結構比我想像中的簡單,主要有四個模組:
電源供應、光碟機、影像處理PCBA、控制面板 


接下來先看跟機構比較沒有關係的control panel。
其中晶顯示器控制IC是使用CS1694EO,made by SEMIC
可以上網其相關的電路圖,看起來應該是蠻常用的component 


2013年3月31日 星期日

每周一印:自製收藏盒

請原諒我炫耀的心態,這一篇單純只是把印出來盒子當作寶一樣來拍照!哈!哈!

因為不久前買的Ardunio的板子沒有盒子可以好好保護它,
索性就印了一個盒子給它當家用。另外再印一個蓋子,用滑槽滑進去蓋住。

在用卡尺量一量了之後,就畫一個簡單的CAD來印。
印完之後,大小就是專門給Ardunio的板字專用!

搶答電路 (7408 & 7400 組合)

在認識邏輯閘與相關晶片之後,這次要組合這些晶片,試做一個生活上會用的東西。所以我挑了綜藝節目上會使用的搶答器來試試看。




任務:有兩個關關,其中一個按下之後,指定的LED燈亮起,並且自鎖使燈持續亮著,同時阻斷另一個LED燈亮起。






經過思考我決定使用7408(AND) & 7400(NAND)組合成以上概念。電路圖如下。最外面兩個AND邏輯閘主要用來點亮LED燈,並配合1N4148自鎖,使放開按鈕之後LED燈依然亮著;而當比較快導通的那一個會將輸出的訊號送到對方NAND的邏輯閘上,當NAND邏輯閘上的兩個輸入都為"1",那輸出就為"0",就會切斷其對應下方的AND的輸入,導致阻斷。(各式邏輯閘的真值表,可參閱"邏輯電路的嘗試")


以下為實際電路與操作的影片。
(第一次用口說講解,聽到自己的聲音還是怪怪的。)

利用7408做自鎖的工作

在之前曾經使用過繼電器做自鎖的功能,但這次要使用邏輯晶片來達成。

如左圖所示,我們使用AND的邏輯,當開關按下的時候,7408的邏輯閘會有輸出,再將輸出用二極體傳回開關那一端的輸入,這樣就可以使下方的LED燈持續的發光。

另外還有幾點:
(1) 別忘了輸入端要下拉電阻接開關;
(2) 使用74HC08的話,電阻會改變,可以試試10k歐姆;
(3) 使用OR的邏輯閘也是可以用類似的路線達成。

影片中展現1N4148建立迴路後,所執行的自鎖功能。