作者Petrucci99 (拉拉拉)
看板ASM
標題[問題] ADC0804轉換速度與RGD-LED混色問題
時間Sun Oct 2 16:41:22 2011
各位版上先進^^"a
小弟這幾天做了一個小小的8051實驗
概念是用ADC0804把可變電阻轉成一個8bit數位訊號
然後把這個讀值設給色輪轉換公式裡面的H(Hue色調)變數
http://zh.wikipedia.org/wiki/HSV_%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4
算出r,g,b的權重,再用PWM法去點亮RGB-LED
經過一天的努力有了個初步的成果
大致上都友達預想的動作,但是嚴格來看還是有幾個問題
1.在轉動可變電阻的時候,RGB-LED雖然會隨著轉動變色,但是因為
ADC0804轉換速度關西,色輪顏色變化會有不連續的感覺
2.我的PWM點RGB-LED,是用三個獨立的sbit去控三個獨立PNP電晶體分別點亮
R,G,B 但是目前還是可以察覺會有一點閃爍狀況。
針對問題1.我目前只有想到找找看是不是有轉換速度更快的ADC IC,不過
小弟對8051的接觸只有大約半年,懂得比較少,所以想問一下版上的大家
有沒有其他的方法可以解決這種問題呢?and以前那種可以調EQ的音響他們
是用類比還是數位的方法去調整阿?(後來仔細想想,這應該還是跟震盪速
度不夠快有關,因為算了一下,現在的ADC線路一秒可以轉換10000次 囧)
另外問題2.自己想了一下大致上有兩個問題
一.是我用的震盪器時脈不夠快,目前這個實驗是用11.0592的震盪器,但是PWM的
計時中斷副程式有點小長.....所以中斷時間無法設太短。由這個問題又衍
生出另一個問題,就是要判斷程式執行時間是不是要去看機械碼的長度才可以抓
出個大致的執行時間?我目前計時中斷的時間是亂抓的,盡可能的小這樣..Orz
回到原問題,我這幾天是打算換一個速度較快的振盪器約30MHz~40MHz(希望有
這麼高的頻率and我的51可以支援),不知道這樣是否恰當?
二.透過LED DRIVER IC是否會比較好?例如下面這個DD313 LED DRIVER IC
http://www.siti.com.tw/product/spec/LED/SP-DD313-A.003.pdf
不過自己看了一下spec,有點疑惑,這個IC似乎也是用PWM的訊號去控IC的
RGB電流輸出,這樣輸出的電流不也是跟PWM訊號是一樣的嗎?還是說這個DRIVER IC
的功能只是提供一個穩定的電流,以增加壽命跟穩定性?
感謝大家耐心看完這麼長的問題,囧rz.....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.181.99.9
※ 編輯: Petrucci99 來自: 175.181.99.9 (10/02 19:12)
※ 編輯: Petrucci99 來自: 175.181.99.9 (10/02 20:09)
1F:推 POWERPC:PO錯區了吧,有硬體存在己非本板所能了,去電子板問問看 10/02 20:24
2F:推 lion21:我認為是單純軟體的問題.效率要提高.pwm要順.都要靠軟體 10/02 22:21
3F:推 ksmrt0123:2.PWM寫法可參考本板 #1BZWffSY W大的文章 10/02 22:25
4F:→ ksmrt0123:1.當從AD讀到設定值時, 用timer把現在值慢慢變過去 10/02 22:26
5F:→ Petrucci99:ksmrt板友,小弟不才,#1BZWffSY<=這個是什麼呢Orz? 10/02 23:32
6F:→ Petrucci99:感謝感謝~^^" 10/02 23:32
7F:推 ruemann:文章代碼 是本版的1056篇 10/03 00:27
8F:推 Seabook:2. ==>ADC有雜訊, 可以稍微濾波一下 10/03 07:50
9F:→ Petrucci99:感謝~^^ 10/03 11:12
10F:推 WolfLord:ADC的讀取與PWM的輸出可以TIMER岔開非同步動作這樣會比 10/03 14:12
11F:→ WolfLord:較順暢,如果MCU無法中斷,那ADC提取時間把LED關掉。 10/03 14:13
12F:→ WolfLord:人的眼睛很容易欺騙,結果這樣會比一邊提取ADC一邊做PWM 10/03 14:14
13F:→ WolfLord:"看起來" 順暢。 10/03 14:14
14F:推 hengchieh:可以用io的方式來算每段程式到底花多久時間才計算出來 10/04 00:30
15F:→ hengchieh:知道每個片段程式所耗的時間,就大概知道就往哪個方向 10/04 00:31
16F:→ hengchieh:去優化。 10/04 00:32
17F:→ hengchieh:所謂IO的方式是指一個片段程式執行完打個PULSE,用示波 10/04 00:32
18F:→ hengchieh:器去量測間隔時間。 10/04 00:33
19F:→ Petrucci99:感謝~ 10/05 11:55