[問題] ADC0804轉換速度與RGD-LED混色問題

看板ASM作者 (拉拉拉)時間12年前 (2011/10/02 16:41), 編輯推噓7(7012)
留言19則, 8人參與, 最新討論串1/1
各位版上先進^^"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)

10/02 20:24, , 1F
PO錯區了吧,有硬體存在己非本板所能了,去電子板問問看
10/02 20:24, 1F

10/02 22:21, , 2F
我認為是單純軟體的問題.效率要提高.pwm要順.都要靠軟體
10/02 22:21, 2F

10/02 22:25, , 3F
2.PWM寫法可參考本板 #1BZWffSY W大的文章
10/02 22:25, 3F

10/02 22:26, , 4F
1.當從AD讀到設定值時, 用timer把現在值慢慢變過去
10/02 22:26, 4F

10/02 23:32, , 5F
ksmrt板友,小弟不才,#1BZWffSY<=這個是什麼呢Orz?
10/02 23:32, 5F

10/02 23:32, , 6F
感謝感謝~^^"
10/02 23:32, 6F

10/03 00:27, , 7F
文章代碼 是本版的1056篇
10/03 00:27, 7F

10/03 07:50, , 8F
2. ==>ADC有雜訊, 可以稍微濾波一下
10/03 07:50, 8F

10/03 11:12, , 9F
感謝~^^
10/03 11:12, 9F

10/03 14:12, , 10F
ADC的讀取與PWM的輸出可以TIMER岔開非同步動作這樣會比
10/03 14:12, 10F

10/03 14:13, , 11F
較順暢,如果MCU無法中斷,那ADC提取時間把LED關掉。
10/03 14:13, 11F

10/03 14:14, , 12F
人的眼睛很容易欺騙,結果這樣會比一邊提取ADC一邊做PWM
10/03 14:14, 12F

10/03 14:14, , 13F
"看起來" 順暢。
10/03 14:14, 13F

10/04 00:30, , 14F
可以用io的方式來算每段程式到底花多久時間才計算出來
10/04 00:30, 14F

10/04 00:31, , 15F
知道每個片段程式所耗的時間,就大概知道就往哪個方向
10/04 00:31, 15F

10/04 00:32, , 16F
去優化。
10/04 00:32, 16F

10/04 00:32, , 17F
所謂IO的方式是指一個片段程式執行完打個PULSE,用示波
10/04 00:32, 17F

10/04 00:33, , 18F
器去量測間隔時間。
10/04 00:33, 18F

10/05 11:55, , 19F
感謝~
10/05 11:55, 19F
文章代碼(AID): #1EY2EsbW (ASM)