網頁

2011年7月3日 星期日

使用AVR 玩弄 EL-Wire (冷光線)

EL-Wire(ElectroLuminescent Wire, 簡稱 冷光線),是一種利用電致發光原理的發光體,外觀類似電線。看起來像是電線,但依照所要發出不同顏色的光再批覆上不同的外皮,而且由於本體中心有一根單心銅線(依照本文所使用的 3mm 的冷光線線徑,銅線部分大約占整體的 1/3,也就是 1mm 左右的線徑)可根據設計的圖形、文字做不同的形狀變化。

本文主要的目的為介紹如何使用 AVR (其他為控制器亦可)控制冷光線,內容有:

  1. 冷光線介紹與焊接方法
  2. 冷光線DC(直流電)轉AC(交流電)電路(此處的AC是指有頻率的電壓,但所轉換的電壓不一定要通過電壓零點)。
  3. 冷光線控制電路
  4. 程式碼
  5. 實際例子影片

無線模組 (RF 315MHz) 發射接收,使用8051與ATtiny2313

相信大多數的人都有玩過遙控類的玩具,甚至在日常生活中也常常用到,例如家裡的電動門、汽車中控鎖......等,都使用到這種 RF (Radio Frequency) 通訊的技術。

本文中所要探討的是 RF 315MHz 長距離發射/接收模組 (TG-11A 與 TG-11B) 的控制方法,不使用額外的編碼與解碼晶片,而是使用 MCU (Micro-Controller Unit) 微控制器來負責發射與接收:發射端送出自訂字元,接收端接收自訂字元產生相對應的動作 (這裡是控制 LED 明滅)。


網路上關於照片中的模組所找到的資料都是基於八支腳位的,不過由於大部份接腳都是共用的,所以簡化之後的接腳只有 Vcc、GND和 DATA IN/OUT用的到。

文中所使用的模組都是 4-pin,有些接腳在使用時必須接在一起 (照片中可清楚看出)。

參考網站:
WinAVR AVR-GCC Tutorial - Running TX433 and RX433 RF modules with AVR microcontrollers

2011年3月3日 星期四

實作 UART 功能使用 Attiny45 USI

Attiny45 是一個 8-pin 的晶片,因為體積小而且功能強大且內建 4K 的 flash rom,對於簡單的一些練習是再好不過的晶片。但是這幾天為了想作一些關於 ADC 的實驗,於是就拿了它來做,結果呢? 它本身內建的功能沒有所謂的 UART (也就是在接腳圖上看不到 TxD 與 RxD ),而且手邊的Attiny2313 卻只有 on-chip Analog Comparator 兩支接腳作為類比比較用。一個有 ADC 卻沒硬體 UART,一個有 UART 卻只有一組 Analog Comparator 也不夠用 ......真是羚羊趕不完!

不過既然 Attiny45 有 USI 功能,想必可以用軟體實作的方式做出來!

上網 google 的一下,在 Atmel 官網中的一份文件( AVR307: Half Duplex UART Using the USI Module on tinyAVR and megaAVR devices) 有解決方案(如果找不到這份文件請 Google 一下,Updated 10/03,打文時又檢查了一遍連結發現ATEML官網最近有大改版)。不過事情卻沒想像中這麼容易,文件中所使用的晶片是 Attiny26,編譯器是 IAR Workbench。跟我用的都不一樣,所以如果要使用 Attiny45 內的 USI 做出 UART 的功能,必定要經過一番苦讀與修改。


首先要做的就是下載 AVR307所附的範例程式,把 Attiny26 相關的暫存器設定,修改為Attiny45,最後再修改整個 IAR 的程式碼讓它可以符合並通過 AVR Studio 編譯器的語法檢查,這樣才能產生所需要的Attiny45 UART 程式碼。


我的目的是要使用 ATtiny45 實現兩個 ADC 的監控。當然需要兩個 UART 功能的也可利用這個方法來做實現。


硬體線路:


硬體線路可以分為兩個部份,第一部分是Attiny45的線路部分,需要注意的是:當使用三線USI模式時,PB1(pin6) 是設定為 output 而且是一個open-drain output,所以必須要加上一個pull-up電阻。如圖中所示,加上了一個 1K 電阻,經實際測試是OK的!


第二部份是一個 RS232 準位準換電路,Attiny45 所標示的的 Tx 與 Rx 分別接到 232 晶片的 pin11 和 pin12,由於輸出已經直接跳線到 D-Type 母接頭,因此在與電腦連接時並不需要特別購買 9-pin 的 RS232跳線,直接用一般的線就好。圖中所使用的晶片為 MAX232 和 HIN232,若你使用的晶片代號不一樣時,請查閱一下晶片手冊。對於簡單應用與測試來講這個線路很足夠了,不但簡單而且零件很容易取得,價錢又便宜!

2011年2月27日 星期日

利用家中廢棄的省電燈泡,自製 LED 燈泡 (使用阻容降壓)

還記得 "淺談 LED 驅動連接方式" 裡所談的,現在我們要利用其中的 LED 並聯連接方式來實際動手做一個 LED 燈炮,但這可不是測試喔!是真的可以用的家用燈泡,利用家中廢棄的省電燈泡所做的一個 AC  電源驅動的 LED 燈,來取代那一顆壞掉的省電燈泡!

硬體線路:

硬體線路如右所示。R1 與 C1 是阻容降壓主要的元件,決定整個電路所輸出的電流值;D1 ~ D10 代表所使用的白光 LED (當然,可以使用更多的白光 LED,只要了解接下來的計算方式);R2 是限流電阻。

在右圖中分別有兩個量測器,上方為顯示電路中通過 LED 的電流值,下方為顯示分壓後的交流電壓值;這兩個量測器可作為驗證計算的結果值。

在這個實際應用的線路,使用 AC 110 V (60 Hz),白光 LED 順向電壓 VF = 3.2 V,LED 限制電流為 10 mA。
這電路中比較重要的是電容 C1 與 電阻 R2 的計算,我們必須計算出最小的需求值。

淺談 LED 驅動連接方式

,LED (Light-Emitting Diode) 發光二極體是現在很夯的東西,省電、顏色多樣,現在外面很多的霓虹燈 (看檳榔攤就知道) 幾乎都被汰換成 LED了,以後連我們所用的照明設備也會開始進入到 LED 稱霸的世界;但是驅動 LED 一般都是使用直流電 (直流電就是頻率為"0"的電壓,而交流電就是會隨時間做週期性變化的電壓,LED 可直接使用交流電壓,但是必須符合其特性下所使用),可直接使用交流電的 LED 應該在不久的將來就可以看到了。

NOKIA 說"科技始終來自於人性",上面講的其實在未來就有可能被人性化的需求所取代,等一下文中所要講的 LED 驅動方式,或許在不久的將來就會變的不一樣了,誰也說不定吧!

廢話不多說!本文中所要談的是現在大家常用的 LED 驅動連接方式,因為驅動電路的設計與選擇和 LED 所選用的排列方式一定的關連性,這關係到 LED 的可靠度與亮度穩定性。

2011年2月21日 星期一

如何在部落格加入程式碼高亮度語法辨識

相信很多寫部落格的同好,遇到要發佈關於程式碼的部份都會很頭大,原因是語法格式要做一些小修改才能正確的顯示在部落格上。遇到比較好的部落格網站會提供某些標籤供使用,但是如果能夠像在程式編輯器裡面寫程式時,不但可以顯示各語法間的高亮度辨識,也有行碼可看,這樣不是更好嗎?

請看下面程式碼,寫程式時不就是這個樣子的編輯視窗嗎?

static uint8_t buffer[60];
static uint8_t screen_mem[8];

const prog_uint8_t dot_00[] = {
0xEF, 0x96, 0xEF, 0xCB, 0xAD, 0xEF, 0x86, 0x8F};

// definition method 1
// typedef char PROGMEM prog_char;
const prog_char message_00[] = " THIS IS MADE BY a-lu. ";
const prog_char message_01[] = " WHAT'S UP MAN! ";

// msg_00_0 save in SRAM
const prog_char* msg_00_0[] = {
 message_00,
 message_01
};

不僅僅是 C 語言而已,只要是現今大部分常用的語法,大多可以正常的辨識並使用不同顏色與高亮度顯示出來,並且可以配合網頁或是部落格而有不同的佈景主題可以選用,只要會使用下面的技巧就可達到這個目的。

如果你想學習如何在部落格中使用這種技巧的話,那就繼續往下看吧!