發表文章

目前顯示的是 5月, 2012的文章

Arduino: Analog Output (PWM) 用CRO觀察PWM訊號

圖片
在上一章我們是用LED的光暗來測試PWM的輸出, 這次我們會用CRO來觀察PWM訊號。 我用的是舊式的Analog Scope,因此在使用前需要先較正儀器。 把Probe 接至CRO的較正輸出,再根據數據較正儀器。 較正了的波型輸出。 示波器開始老化了,因此Vp-p的輸出 / 量度並不是太過準確。 我在上圖中的設定是y-axis = 1V/div,可是Vhigh的部分不太準確。 接下來的波型圖片均以2V/div 和 0.5ms/div為基準量度。 analogWrite(11, 31); analogWrite(11, 63); analogWrite(11, 95); analogWrite(11, 127); analogWrite(11, 159); analogWrite(11, 191);  analogWrite(11, 223);  analogWrite(11, 255);

Arduino: Analog Output (PWM) 用PWM控制LED的光暗

圖片
Analog Output 目標 使用Arduino的PWM功能以達至不同光度輸出的效果。 原理 PWM (Pulse WidthModulation 脈衝寬度調變) 是一種透過改變訊號的Duty Cycle(工作週期) 以達至改變能量輸出的其中一種方法。看文字可能有點難以理解,請看下列兩張圖片。 這兩張圖片是用示波器測量TL494的PWM訊號, 所以Ch1 High的電壓讀數資料是不適用於Arduino 上的,務必注意這一點。 (TL494 是TI - Texas Instrument在1980年代研發出來的PWM Controller, 直到三十年後的今天還有不少Switching Power Supply 有用上TL494, 詳細內容請見:  http://www.ti.com/lit/ds/symlink/tl494.pdf ) 圖片中的是V-t(電壓-時間)的關係圖,數據線和X軸的面積(Duty Cycle) 是能量, 由此可見,圖一的Duty Cycle比圖二為多,圖一設定的輸出能量亦因而較多。 參考網站:  http://en.wikipedia.org/wiki/Pulse-width_modulation (抱歉在上文出現了中英混雜的情況,很多名詞學習的時候是用英文的, "脈衝寬度調變"這個名詞我今天才第一次聽到的。) 材料 1. Arduino 主板,這次測試是用Arduino Duemilanove USB的板子作示範。 2. 普通的單色LED,用作顯示燈之用, 為了更明顯的看到不同輸出的分別, 這次不用接上220Ω的電阻。 Arduino 的DO輸出電流很少 (<40mA), 所以不用擔心會燒壞MCU。 Arduino 的PWM特性 Arduino並不是每個DIO均能輸出PWM的訊號, 若果你板子上的MCU是 ATmega8,PIN9, 10, 11才能輸出PWM訊號; 若果你板子上的MCU是 ATmega168 / ATmega328,PIN3, 5, 6, 9, 10, 11才能輸出PWM訊號; 若果你的板子是Arduino Mega,PIN2至13均能輸出PWM訊號; Arduino的PWM是8-bit的st

Arduino: Analog Input (Analog Input) 用可變電阻控制LED開關間距

圖片
Analog Input 目標 使用可變電阻 (Potentiometer)控制LED燈的開關間距, 從而令LED以不同頻率閃動。 材料: 1.  Arduino 主板,這次測試是用 Arduino Duemilanove USB的板子作示範。 2. 1 0k Ω 可 變電阻 (Potentiometer),它是電阻的一種, 不過它有一個旋鈕,它的電阻值會隨著旋鈕位置不同而改變。 圖解: 最左方的是這次會用上的款式,旋鈕需要用螺絲起子來調較。 其餘是較大的款式,單價較右方的款式便宜, 使用時旋鈕可以配上一個膠蓋,視覺上較美觀,絕緣度也較好。 其次藍色的是RS的天價產品,這個是做一個AC220V的調光器時多買的, 特點是膠柄,品質、造工優良和昂貴。 最右方的是長柄的版本,比較少機會需要使用,也比較昂貴。 (如果到市面上的店家單買上述零件的話,價錢會是天文數字的, 其實有一些店家會打包一些寫MCU (Arduino)會用到的零件組合在賣, 如果你找不到的話可以電郵給我,我可以提供我平常買的店家資料給你。) 4.  麵包板和連接線 接線圖 將可變電阻的中間腳位接上 Arduino Duemilanove Analog Input 0腳, 可變電阻的其餘兩腳則分別接上DC5V和GND。 接線完成了應該是這個模樣的。 程式碼 這次用的範例是內建了在Arduino Software的AnalogInput範例。 程式路徑: File > Examples > 3.Analog > AnalogInput 程式碼解說 先來是作者的話和程式來源的介紹。 然後是設定變量、I/O PIN和 程式運作的主體部分。 明白了上面的講解就可以按編譯及上傳了,按鈕在上排的方塊, 成功後下方應出現Done uploading. 的字樣。 然後你就可以動手測試了, 這次不用額外的LED的原因是因為PIN13本身就接著一顆在板子上SMD的LED。 你可以一邊用螺絲起子調整可變電阻,一邊觀察LED的閃動頻率。 最後完成了應該是這個模樣的。 下次我們來做一個Analog Input 和 Analog

Arduino: 用按制控制LED開關 Button (Digital Input)

圖片
Button 目標 用按制控制一顆LED的 亮著和熄滅 (Digital Input)。 材料 1. Arduino 主板,這次測試是用 Arduino Duemilanove USB的板子作示範。 2. 按制,用作輸入裝置之用, 普通兩腳直插的就可以了。 圖解: 最左方的是這次會用上的單刀按制,有長柄(黑色)和短柄(橙色)的可供選擇。 其次黑白色的兩個是雙刀的按制, 兩個的分別是黑色的是自回復位置的,白色則是自保持的。 在其右方的是限位開關,其特點是片形的按柄。 最右方的是能裝在面板上的按制。 這次實驗用最左方的款式就可以了。 3. 10k Ω的電阻,用作電路的限流之用, 避免DC5V的電源直接接地。 4.  麵包板和連接線 (如果到市面上的店家單買上述零件的話,價錢會是天文數字的, 其實有一些店家會打包一些寫MCU (Arduino)會用到的零件組合在賣, 如果你找不到的話可以電郵給我,我可以提供我平常買的店家資料給你。) 接線圖 把按制的一腳 接到Arduino  Duemilanove的DC5V, 另一腳接上10k Ω電阻和 Arduino  Duemilanove的2腳, 10k Ω電阻的 另一腳接上 Arduino  Duemilanove的GND。 接線完成了應該是這個模樣的。 程式碼 這次用的範例是內建了在Arduino Software的Blink範例。 程式路徑: File > Examples > 2.Digital > Button 程式碼解說 先來是作者的話和程式來源的介紹。 然後是設定變量和I/O PIN的位置。 然後就是程式運作的主體部分。 明白了上面的講解就可以按編譯及上傳了,按鈕在上排的方塊, 成功後下方應出現Done uploading. 的字樣。 然後你就可以動手測試了, 這次不用額外的LED的原因是因為PIN13本身就接著一顆在板子上SMD的LED。 *如果插好了USB,可是板子上的綠色PWR的LED沒有亮著, 這情況是代表接線錯誤,需要檢查接線。 按制沒按著的時候,buttonState = LOW,所以

Arduino: Arduino Software設定和Blink a LED 點亮和熄滅LED(Digital Output)

圖片
Blink a LED 目標 讓一顆LED依特定的時間頻率點亮和熄滅(Digital Output)。 材料 1. Arduino 主板,這次測試是用 Arduino Duemilanove USB的板子作示範。 2. 220 Ω的電阻,用作電路的限流之用, 雖然因為Arduino 的輸出電流很少(<40mA), 不串聯電阻就把LED接上是沒大問題的, 但我們這是在學習,把基本的做好還是必需的。 3. 普通的單色LED,用作顯示燈之用。 LED有不同的顏色可供選擇, 還有一些是雙色甚至是可以變色的, 買普通直插的就可以了,SMD的要用線路板焊好才能使用, 故此今次不會使用。 圖解:  最左方的是3mm的直插LED, 接著的是5mm的直插LED, 再接著的是雙排的5mm LED,做專題的交通燈時經常能大派用場, 最右方的是1210 SMD的白光LED。 (如果到市面上的店家單買上述零件的話,價錢會是天文數字的, 其實有一些店家會打包一些寫MCU (Arduino)會用到的零件組合在賣, 如果你找不到的話可以電郵給我,我可以提供我平常買的店家資料給你。) 接線 把 220 Ω電阻的電阻接到Arduino  Duemilanove的13腳, 220 Ω電阻 另一頭則接上LED的正極,也就是較長的那腳位, LED的負極,也就是較短的那腳位側接到接地點GND。 接線完成了應該是這個模樣的。 設定Arduino Software 先開啟Arduino Software, 在初次使用的時候要先進行設定, 先設定你正在使用的板子, 設定路徑: Tools > Board > Arduino Duemilanove or Nano w/ ATmega328 如果你在用別的板子就要在這裡選擇正確的型號。 接下來要設定板子在使用的Serial Port, 設定路徑: Tools > Serial Port > COM5 這要視符你的Arduino  Duemilanove連接到哪個連接埠才可以正確把它設定好。 在裝置管理員能找到你的Arduino  Duemilano