2013年5月1日 星期三

LPD6803 RGB LED driver

簡單易用的 RGB LED driver IC, 資料表中說明它對於每個顏色表現只有5bits,透過串列通訊依序放置 15bits data ,起頭bit=1每個顏色佔據 5bits 總共剛好16個資料



控制程式碼範例,基本上只要依序送出資料即可控制

/*

***********************************************************************************************

*                  LPD6803 5bits RGB LED Driver

*                               All Rights Reserved

* File name      : LPD6803.c

* Programmer     : Wen-Shong Lay, Taiwan Tai-chung

* Web presence   : 

* E-Mail         : wslay0924@gmail.com

* Language       : CCS complier version

* Hardware       : PIC12F1822

* Date           : 07 Spr 2013         Version 1.0

*

* This module provides an interface to LPD6803 RGB LED driver

*   PIN2   GMODE=1 採用線性32階; GMODE=0 非線性輸出256階, 內置上拉

*   PIN3   OMODE=1 內恆流/恆壓驅動; OMODE=0 外掛驅動, 內置上拉

*   PIN13  COMDE   選擇內部輝度時鐘源GCLK, COMDE=1 GCLK=內部振盪器輸出; COMDE=0 GCLK=DCLK, 內置上拉

   

*   PIN1   DIN  = SDA

*   PIN4   DCLK = SCK

*   PIN5,7,11  輸出端   VCC + LED + -^^^^^- OUTx   RL=(VCC-VLED-Vout(約0.4~0.8V))/ILED

*   PIN6,8,10  回授腳

*   OMODE=1 (空接為上拉)

*      內恆壓  FBx ----   GND

*      內恆流  FBx -^^^^- GND    I_LED = 0.7V/Rx

***********************************************************************************************

*/


#define SDA   PIN_A5

#define SCK   PIN_A4


/*

*********************************************************************************************************

* TRANSMISSION RGB SEQUENCE

*

* Description : Output RGB 

* Arguments   : dr, dg, db   0-31

*         

* Returns     : none

* Notes       : 

*               OMODE=1; 

*               GMODE=0; CMODE=0 256 level (non-linear meet 32 level)

*               GMODE=0; CMODE=0 32 level 

*   bit15  bit14  bit13  bit12  bit11  bit10  bit9  bit8  bit7  bit6  bit5  bit4  bit3  bit2  bit1  bit0

*     1     R4     R3     R2     R1     R0     G4    G3    G2    G1    G0    B4    B3    B2    B1    B0     

*********************************************************************************************************

*/

void LPD_RGB(char dr, char dg, char db)

{

  char i=0;

  if (dr>31) dr = 31;

  if (dg>31) dg = 31;

  if (db>31) db = 31;

 

  output_drive(SDA);

  output_drive(SCK);

  output_bit(SDA, 0);

  output_bit(SCK, 0);

  for (i=0; i<32; i++)       //start process need 32 bits 0

  {

    output_bit(SCK,1);

    output_bit(SCK,0);

  }

  

  //第一個bit 必須輸出1

  output_bit(SDA, 1);

  output_bit(SCK, 1);

  output_bit(SCK, 0);

  

  //輸出R 

  for (i=0; i<5; i++)

  {

    output_bit(SDA, bit_test(dr, 4-i));

    output_bit(SCK, 1);

    output_bit(SCK, 0);

  }

  

  //輸出G

  for (i=0; i<5; i++)

  {

    output_bit(SDA, bit_test(dg, 4-i));

    output_bit(SCK, 1);

    output_bit(SCK, 0);

  }

  

  //輸出B

  for (i=0; i<5; i++)

  {

    output_bit(SDA, bit_test(db, 4-i));

    output_bit(SCK, 1);

    output_bit(SCK, 0);

  }

  

  output_bit(SDA, 0);

  output_bit(SCK, 1);

  output_bit(SCK, 0);

}






EPSON SVM7910 series Multi-Melody IC

1978 年 EPSON 開始販售全世界第一個和旋音樂IC,偶然機會從以前大哥抽遞中翻出兩顆,標註 新台幣 100元的IC,起初不清楚這顆IC的來歷,因此一放就是10幾年...
最近剛好想尋找比較好聽的音樂IC, google 所有論壇討論才找到 EPSON SVM7910 series
最後回想起零件櫃有著兩顆不知名的IC,翻出來看才曉得,原來它的來歷真的不小

用著麵包板插著電路,緊接著發出聲音,只能用讚嘆~~ 以前就能做出這樣美好的音樂,為何後來出的三隻腳IC都只有 one tune 聲音像極了廉價玩具聲,這顆雖然有30年歷史,但是發出聲音在現代絕對還可以佔有優勢





這顆有著很多型號,google很久早到了一篇pdf檔,完整介紹型號與植入的音樂
也試著詢問電子材料行,仍然有賣,可是價格已經漲到NT$150/pcs 真的貴到爆


放置一段音樂測試影片,這顆IC唯一缺點就是沒有SMD封裝,且周邊電路多了些,透過修改周邊電路可以簡單改變音樂性,也不失另外一種優點



這是原廠建議接線腳位圖


2013年2月15日 星期五

[Nixie Tube] MC34063 DC-DC High Voltage Generator

前蘇聯時代的一些數字真空管(Nixie Tube)早在2007就曾經看過,以前對於真空管沒有研究,因此就錯失了第一時間的探討,後來專注看一下說明,才知道其實就是數字指示器,真空管內灌有惰性氣體,透過陰極與陽極間高壓而發光,它不是熱電子衝擊,因此沒有高溫問題,有些人誤認為是燈泡,其實不然,雖然所需電壓高(170V)但是電流卻很低(2.5mA) 一根不到0.4W;國外很多人對於這種夢幻橘燈有著吸引力,發出橘色字體邊緣還伴隨著淡淡的紫色光
確實沒有實際看過很難體會這種魅力,以下這張照打著強閃光字體依然清晰可見




相較於仿間一般的LED指示器,只需要低壓即可運作,Nixie卻需要高壓才能發光
產生高壓有兩種途徑,一方面採用笨重的大型變壓器,另外一種採用DC-DC轉換方式
實驗搭配MC34063 外掛Power MOSFET方式,輸入12V 進而產生約略170V左右工作電壓
以下模型為常用的電路模型,實驗中電感元件很重要,可以讓輸出效率更高
在電感路徑中放置一顆Low ESR電容,充放電效率更高,經實驗可提高約略10%
輸出高壓穩壓電容,增加一顆0.68uF 金屬皮膜電容,可讓高壓穩定增加5倍




將測試電路移植到PCB,經驗證效率約 62.5% ,效率其實不是挺高,有時候也必須遷就於MC34063,另一方面也是這種電路的天缺










2012年12月16日 星期日

Power Counter Relay 汽車電源延遲啟動 電源延遲關閉

現在汽車額外增加的電子設備越來越多,一個電菸頭可能需要增加以下的配件,行車紀錄器、測速器、汽車額外增加的擴大機、 i-Phone/i_pad 充電器  ... 等等

[電源延遲啟動]
但是當汽車鑰匙轉到ACC,電菸頭已經開始供電,引擎發動時會在斷電再重新送電,這個簡單的引擎發動的步驟,原本藉由插在電菸頭供電的設備,已經被啟動了兩次
有些電子設備體質較差,除了無法承受短時間啟動與關閉, 同時引擎發動的瞬間電壓甚至會飆高到24V 以上,很多設備都是在這種狀況下歸西
因此納入電源延遲啟動的小組件顯得重要,由於電路簡單,可以確保引擎已經發動才會供電


[電源延遲關閉]
這個功能通常需要拉兩條線連接電瓶電,讓點菸頭設備持續有電,但是為了避免例如行車紀錄器把電瓶電耗光,因此再拉一條線接到ACC電源,透過Key 轉動來決定何時設備啟動與關閉,好處是可以讓原本行車紀錄器可以在引擎關閉後,離開汽車時可以在錄影一段時間,新聞在報,很多汽車被破壞都是在車主離開車子後約 1-2hr間發生


[汽車電壓偵測]
這樣設施如果能夠再配合汽車電壓變動的特色,作為自動啟動與關閉的功能,可以讓整個步驟變得更簡單, 達到不必插拔,完全自動啟動的關閉,做到電源延遲啟動與電源延遲關閉的功能,連配線都變得簡單了

[單晶片設計組件]
分成三大塊
1. 類比數位轉換, 需要偵測輸入電壓,同時還需要偵測外部延遲啟動與延遲關閉偵測
2. 計時器, 計時基時設定為 1ms , 另外基時為LED 閃爍頻率計算
3. 標準I/O 控制繼電器啟動與關閉, LED 指示燈啟動與關閉

[時序圖]
1.電源延遲啟動 透過可變電阻調整 (2-63sec)
2. 電源延遲關閉 透過指撥開關調整
     00   :   1 分鐘
     01   :   30 分鐘
     10   :   1 小時
     11   :   2 小時

這個組件基本上很簡單, 如果拉電瓶電,也不用再怕會耗光電了
由於有五種狀態,LED 透過不同閃爍頻率來表達

[電路板]
電路板基本上不大約  45mmX36mm



[組裝成品]

[裝上電菸頭] 方便使用


[驗證影片]

2012年11月3日 星期六

CCS program - PCWHD 使用Timer0設定方法

很多人列出Timer0範例,然而還是似懂非懂,透過以下範例來講解microchip timer應用方式
以下將列出如何計算與設定
Example:
  MCU: PIC18F452
  Crystal: 4MHz
  System clock: 4MHz/4 = 1MHz (1us)

Timer0有一組prescale可以設定,意義為累計多次"drivid by N"再增加一的動作
然而N就是輸入的clock cycle, 取得輸出cycle out 由prescale決定
Timer0 prescale 可以設定從1(no divid at all), 2, 4, 8...直到256

例如
  Prescale 設定256,必須取得256個system clock才能取得一次cycle out,
  因此Timer0變成 1us (system clock) * 256(Prescale setting) = 256 us/count.

假設設定Timer0 為8bit模式(PIC18F452T Timer0 有8或16bits可選),prescale設定為1
每經過256會發生中斷(overflow),相同得設定16 bit模式須經過65536 count

完整設定 timer 0 為 8 bit模式, 來源使用 system clock並且搭配prescale 256你設定方式為:

Code:

set_timer_0(RTCC_INTERNAL|RTCC_8_BIT|RTCC_DIV_256); 


   

8 bit mode:
    timer 0 overflow(interrupt) 為 256 us/count * 256 counts/overflow = 65536 us = 65.536 ms.


Formula:

period = 1/Hz = crystal frequence/(4*256-X)*prescale;

How to got X value:
X = 256-crystal frequence*period/(4*prescale)



例如:
a) 4,000,000/(4*256*256) = 15.2587890625 Hz
b) f=1/Hz => 1/15.2587890625 = 0.065536 sec = 65.536ms
c) if preset X value = 6 (set time value)
4,000,000/(4*(256-6)*256) = 15.625Hz => 1/15.625Hz=64ms(duty cycle)

例如:
a) 預取得15.625Hz => 1/15.625Hz = 0.064sec (duty cycle)
b) Time0 設定值 X = 256 - 4000000*0.064/(4*256) = 6

Code:

set_timer0(6); 

           
16 bit mode:
 timer 0 overflow(interrupt) 為 256 us/count * 65536 counts/overflow = 16,777,216 us = 16.77216 sec.

因此最終結論
a) clock source
b) 選擇 8 or 16 bit counter
c) prescale value

2012年5月1日 星期二

NEC uPC1237 喇叭保護電路電路設計

喇叭保護電路有現成IC可以使用,透過延遲電路讓電源啟動瞬間透過繼電器隔離喇叭
避免突然直流灌入喇叭,造成不可回復的損壞

早期NEC upc1237 就是個很好得產品,好的喇叭繼電器,必須擁有以下特點
1. 通電時延遲啟動搭配不同的R and C 完成延遲啟動的設定
2. 偵測到DC自動跳脫
3. 偵測主電源關閉,自動跳脫
看似簡單功能,在現在單晶片發達的年代,似乎沒有什摩特別,可是有一派專家認為傳統電晶體組成延遲電路,可以讓音質影響降到最低?? 因此特地買了些 "拆機品" 真正原裝得NEC upc1237 IC,並組成可調時間與自動復歸功能的喇叭保護電路

電路板layout給他完成了!
花了點功夫了解電路,同時把市面上常見的relay都lay進去
可以搭配很多款繼電器,同時也可以配合需求使用12/24V 環境
基本上可以不需要穩壓電路,穩壓電路主要目的延長繼電器壽命所使用
詳細組件搭配,可以放大電路圖參考!

電路圖部份零件有兩種規格,前者12V環境,後者24V環境


配市面上常見 10A 繼電器規格layout


搭配市面上常見 20A 繼電器規格layout


試作成品,搭配finder 10A 規格繼電器


試作成品,搭配OMRON 10A 規格繼電器

試作成品,搭配OMRON 10A 規格繼電器


試作成品,24V 規格繼電器,必須修改穩壓IC與部份電阻值,可詳見電路圖

試作成品,搭配idec 20A 規格繼電器



Layout前必須有完整實驗結果, 附上實驗過程Video
紅燈:主電源輸入 DC; 當輸入AC時必須搭配二極體
綠燈;表示喇叭保護電路啟動指示燈,綠燈亮起表示繼電器啟動,反之則是跳脫