CD-Pro2 高階轉盤之副控韌體大改寫
為何有此計劃?
- 修改硬體為修正系統送電時繼電器亂跳誤動作的問題
- 問題發生原因分析:89C2051 在還沒脫離 reset 狀態至執行程式前的一段時間(數十 mS)其接腳為高電位,而 DZ 設計的電路為高電位動作,所以開機會誤動作,要等到開始執行程式後把接腳初始設定為低電位才恢復正常....
- R17,R20,R23 是為了幫忙 MCU 驅動電晶體的幫流電阻(MCU 高電位流出電流比低電位流入電流小上百倍)
- C4,C5,C13 是試著緩和誤動作而接的...但容量不足,搞得大家要換大容量的電容
- 改寫韌體是為了增加功能
- 小弟手上的 CD-Pro2 在 PLAY 時會隨機當掉,機心重讀並到 STOP 狀態
- 問題發生原因分析:經過量測,每次當機時 U5(本次改寫韌體標的) 發送錯誤的 RESET 信號給主控之 8031,造成重開機,原因未明
硬體修改方法
- 將原來的電晶體 Q1 Q3 Q4 (MPS8099) 改換成修改後的 2SA1015
- (並不一定要用 2SA1015,只是手頭上有得用,只要是PNP,放大率 hfe 超過 100 就可以用)
- 將 R17 R20 R23 (10K) 及 C4 C5 C13 (47uF) 拔掉
- 有用家提到為何要拔掉?原因是:
- R17,R20,R23:修改後的電路及韌體 MCU 為低電位動作,因 MCU 本身驅動能力足夠,所以不需要幫流電阻幫忙
- C4,C5,C13:修改後就沒有誤動作問題,也就沒有必要留著
- 註:如果說不拔掉的話又會如何呢?
- R17,R20,R23:不需要這些電阻幫流,留著只是徒增 MCU 無用的耗電,MCU 流通電流越小越好也越安全
- C4,C5,C13:留著保證誤動作, 另外無論有沒有改韌體,以 DZ 目前的電路來看,MCU 動作時造成的短路將使得電容器儲存的電荷對 MCU 接腳放電,這樣長久下來 MCU 可能會完蛋 !!
- U5 (89C2051) PIN 3(P3.1) 為偵測模式選擇 空接(註1):偵測上滑蓋 ; 接地(註2):偵測光碟
- U5 (89C2051) PIN 9 (P3.5) 為自動關機功能選擇 空接(註1):關閉 ; 接地(註2):開啟
- 註1:以上兩個輸入設定接點如不以外接開關作控制就不用另外加零件,如果要外接控制,必須在主控板上加上提升電阻(10K)及使用隔離線以確保穩定及提升抗雜訊能力(提升電阻的接法是用一顆 5.1K~10K的電阻,一隻腳接到 VCC +5V(例如 U5 Pin 20),另一隻腳接到要設定功能的 MCU pin 腳上,以自動關機功能為例,就是接到 MCU PIN 9(P3.5))。
- 註2:接地 (GND) 代表與 U5 Pin 10 (GND) 直接導通之點(或銅箔),如不以外接開關作控制並且需要接地(與 GND 短路)設定功能時,建議接在圍繞在 pin 外面的銅箔(為 GND)。
硬體修改圖片說明
原來的 MPS8099 實體圖(文字印刷面)及接腳
弟拿來替換的 2SA1015 實體圖(文字印刷面)及接腳
將 2SA1015 的 B、C 接腳交換
- 註:如使用的電晶體之接腳順序與 MPS8099 相同(EBC) 就不需要如此圖般交換接腳了)
- (請注意,此處 2SA1015 之 C、E 接腳與 MPS8099 之 C、E 接腳交換位置,請參考下面的電路圖)
- 在此可以看到:
- 原來 MPS8099 的 C 極接 RL1~RL3, 而 E 極接地(共射極(E)組態)
- 新的 2SA1015 的 E 極接 RL1~RL3, 而 C 極接地(共集極(C)組態)
這就是為何電晶體 (此處以 2SA1015 為例) 要轉 180 度的原因
與其它套件配合
- 阿仁兄的 My CD-Pro2 套件:
- 阿仁兄的 My CD-Pro2電路主控板部份基本上與 Diyzone 的電路 90% 相同,故可以如 (一)硬體修改部份說明 般直接修改
- 註:但是電路上所有電晶體的 B 極都沒接電容器,所以小弟猜想系統送電的一瞬間所有的繼電器應該會亂跳
- 註:但是電路上所有電晶體的 B 極都沒接電容器,所以小弟猜想系統送電的一瞬間所有的繼電器應該會亂跳
- 阿仁兄的 My CD-Pro2 電路圖 page3 (for CDM4 Power):
- Q1 & Q2 換成PNP 電晶體(請參考(二)硬體修改方法 確認接腳是否需要修改)
- R3 & R4 移除
- R6 & R7 (1K) 過小,請更換為 3.3K~10K
- 阿仁兄的 My CD-Pro2 電路圖 page4 (for VFD & blue LED):
- Q2 Q3 Q4 換成 PNP(請參考(二)硬體修改方法 確認接腳是否需要修改)
- R5 移除
- R7 R8 (1K) 過小,請更換為 3.3K~10K
- 2sc 兄的 cd pro2 001 套件:
韌體檔下載及燒錄說明
本次的主角-CD-Pro2 韌體檔 V1.3 (Firefox 用戶請按滑鼠右鍵選擇"鏈結另存新檔")
韌體燒錄(U5-89C2051)說明
燒錄前請先確認以下項目是否正確
MD5 sum : a737a3d778c6eb3715ec9d5976ad5da9
燒錄器 checksum : 3D35
注意:燒錄時必須將 LockBit 0 及LockBit 1 燒錄起來
因在我這邊沒燒錄這兩個 LockBit 會造成送電時接腳為低電位,繼電器及 LED 會動作,原因不明
建議再買一顆 89C2051 來燒錄,不要用原來的 MCU 來燒錄,因小弟手上也沒有 DZ 原來 MCU 的內容,萬一反悔或不合用,還有補救的機會...一顆約 NT$55 左右
想自己燒卻缺燒錄器嗎? 請參考以下兩個 DIY 燒錄器的網址哦(我沒試過 ^o^)
http://www.eit.fhbb.ch/htmldoz/mm/atmel-programmer/atmelprogrammers.html
(這一個較簡單)
http://oshd.sunsite.dk/projects/atmelprog/
這些都是透過 print port 燒錄
真的無法燒錄或無法 DIY 燒錄器的用家,請來信 os2user"小老鼠"giga.net.tw 與小弟聯繫燒錄事宜
各版本原始碼及其修改資訊
前言
小弟因熱愛及支持 Open Source 與其精神,所以小弟效法其精神將 Source Code 公佈出來
這是小弟第一次將 Source Code 公佈 (雖然微不足道 )
為了保障大家及小弟對 Source Code 的權利及義務
所以小弟效法 Open Source 中將 Source Code 公佈時所加上的 GNU 通用公共授權條款
小弟也在這些 Source Code 加上了 GNU 通用公共授權條款
注意 : 下載 Source Code 前請先閱讀以下的 GNU GPL 通用公共授權條款
GPL 通用公共授權條款英文原版
當您對 Source Code 做任何(所有,如線上閱讀等)行為,無論閱讀上述條款與否,將自動視同您已經同意這些條款,您將受到這些條款的保障與限制
- 註:以上所稱 "Source Code" 指所有 Source Code 以及在此所有的附屬檔案(說明檔)
隨 Source Code 附上的 GNU GPL 通用公共授權條款
MD5 Sum:0cce1e42ef3fb133940946534fcf8896
韌體寫作備忘、註記、說明
MD5 Sum:fe4e21eb76cf90a33d58e2ad987c7e23
以下所有的 Source Code 以 Keil C 撰寫編譯 (Assembly)
Version 1.3 Source Code
- MD5 Sum:b0545a01e92d13cba8fd56869bbb31e1
- Fix:
- 用紅外線遙控器操作系統時,如按得太久(或者隨機的時間)會造成系統以下的問題
- 偵測光碟模式時面板 LED會顯示光碟被拿開
- 偵測上滑蓋模式時面板 LED 會顯示上滑蓋被打開(如同真的被打開般),系統會停止運作 (這動作在真的打開時是正確的)
- 自動關機功能設定值可能會變化
- Improvements:
- 無論在偵測光碟或上滑蓋模式,如果開機時光碟不存在(上滑蓋開啟)系統不會做讀取光碟動作
- (V1.2在偵測光碟模式時無論光碟存在與否(上滑蓋開閉與否)皆會重讀)
- VFD 也不會打開(V 1.2在開機 VFD 會顯示上次關機的東西,有點礙眼)
- 要等到以下兩個條件之一發生
- 偵測光碟模式:光碟擺上去六秒
- 偵測上滑蓋模式:上蓋關閉
- 才會使 VFD 開啟及系統重讀,以上這些可避免雷射照射到眼睛,也減少不必要的重讀
- MD5 Sum:69b805b9c1c27abf22174af1579ada83
- Improvements:
- 在以下二狀態後
- 偵測光碟模式:光碟放入六秒後,重讀光碟
- 偵測上滑蓋模式:上滑蓋闔上後,重讀光碟
- 系統會偵測機芯的狀態
- 更新改進偵測機芯狀態演算法,使其偵測更精準正確,這改進也順便使 V1.1 新增功能(Display 功能開啟時重讀光碟,VFD 顯示資訊)改進避免造成操作上的不順
- MD5 Sum:833cecc49f99e35e9099103a06d96487
- Add:
- Display 功能開啟,VFD 關閉時,如以下狀態發生時
- 偵測光碟模式:光碟放入六秒後,重讀光碟
- 偵測上滑蓋模式:上滑蓋闔上後,重讀光碟
- VFD 會顯示資訊(重讀過程及結果),並於顯示結果後五秒關閉 VFD
- MD5 Sum:ce6273cea299bdc736dcf3ca751505c2
- First release
U5 (89C2051) MCU 接腳功能設定
- U5 (89C2051) PIN 3 (P3.1) 為偵測模式選擇 空接(註1):偵測上滑蓋 ; 接地(註2):偵測光碟
- 於系統送電時設定,通電時修改無效 (修改模式前要先斷電,修改完後送電才會修改)
- U5 (89C2051) PIN 9 (P3.5) 為自動關機功能選擇 空接(註1):關閉 ; 接地(註2):開啟
- 這可於使用中隨意修改,改完立刻生效
註1:以上兩個輸入設定接點如不以外接開關作控制就不用另外加零件,如果要外接控制,必須在主控板上加上提升電阻(10K)及使用隔離線以確保穩定及提升抗雜訊能力(提升電阻的接法是用一顆 5.1K~10K的電阻,電阻一隻腳接到 VCC +5V(例如 U5 Pin 20),另一隻腳接到要設定功能的 MCU pin 腳上,以自動關機功能為例,就是接到 MCU PIN 9 (P3.5))。
註2:接地 (GND) 代表與 U5 Pin 10 (GND) 直接導通之點(或銅箔),如不以外接開關作控制並且需要接地(與 GND 短路)設定功能時,建議接在圍繞在 pin 外面的銅箔(為 GND)。
!! 開機測試前特別注意事項(必須了解並測試後才能繼續看下面的內容) !!
軟硬體修改完成後開機測試前,必須 100% 確定機芯電源線(5V,9V) 從機芯卸下(沒有連接),以防止任何軟硬體的錯誤造成對機芯的破壞 !!!
接著測試並確認以下動作是否正常 (切記,如有任何不同或不對的地方千萬不可把機芯電源線接上機芯 !!)
- (開機程序)系統送電後(關機時),板動面板的搖頭開關或遙控器的 Power 按鈕後, 控制機芯 5V 電源的繼電器開啟, 接著一秒後控制機芯 9V 電源的繼電器開啟
- (關機程序)系統開機時,板動面板的搖頭開關或遙控器的 Power 按鈕後, 控制機芯 9V 電源的繼電器關閉, 接著一秒後控制機芯 9V 電源的繼電器關閉
基本上只要上面的動作正確,就可以確定軟體部分沒有問題,如果有其它功能異常或失效的地方(如上蓋/光碟偵測等等),請先依照正常關機程序關機後檢查電路有無問題(並不會對機芯造成破壞)
功能說明前言
- 主控板原來連接紅外線光碟偵測模組 molex 座(J5)可以改接為偵測上滑蓋的開關,但是原來紅外線光碟偵測模組上面有一顆電阻(R32 5.1K)當作 MCU的提升電阻
- 如果改接偵測上滑蓋的開關因沒有這個電阻所以就必須自行外加這個提升電阻(請參考功能說明前言第二點)以及使用隔離線以確保穩定及提升抗雜訊能力(就是把5.1k~10k的電阻接在 J5 的第2(Vcc +5V)及第3(MCU PIN 7 P3.3)PIN上,開關請用常開(N.O.)接點,蓋上上蓋接點導通,兩個接點接在 J5 的第1(GND)及第3(MCU PIN 7 P3.3) PIN上,至於偵測方式由上述 MCU PIN 3 接腳選擇。
- 註:當在寫這段說明時參考電路圖,發現主控板與紅外線光碟偵測模組的接腳號碼對不起來,我這些是以主控板的 J5 來說明(實際的電路板不在手上無法比對),所以 PIN 腳號碼可能有錯誤,但是 PIN 腳號碼後面括號的說明是絕對正確的,請安裝前確認一下。
- 有用家反映 8 秒後讀片時間太長,在此偵測光碟改成 6 秒後讀片。
- 使用遙控器操作時如長距離使用或沒有正對紅外線接收器時發現代表遙控器接收到訊號的燈會閃 但機心並沒有相對應的動作時,這是正常的,因為我寫的接收程式在實測時發現接收靈敏度比系統 主控程式的接收程式要高(當然是正確的資料,只要遙控器接收到訊號燈有閃代表接收到正確資料)。
- 外部輸入設定接點(光碟或上滑蓋偵測、自動關機功能開關、面板電源搖頭開關)有防止開關位於臨界點造成誤動作的功能,當開關從開(關) 轉到 關(開),要維持 0.3 秒才會承認,在時間內偵測到原狀態將不予承認放棄。
- 開(關)機指透過遙控器的 POWER 鍵或面板上電源搖頭開關操作電源狀態的改變,送電指將 AC 電源送入系統。
功能說明
- 光碟偵測:U5 之 PIN 3 接地(與 GND 短路) 則設定此模式
- 開機時如偵測到光碟不存在則不會讀片,VFD 空白,光碟放入時,系統等待六秒後讀片,VFD 顯示。
- 開機時如偵測到光碟存在則立即讀片,VFD 顯示。
- 當偵測到光碟放入(系統運作或者如第一點(開機時如偵測到光碟不存在...)所述)時,系統等待六秒,之後會重新讀碟,如六秒內把光碟拿開將停止計時,等到光碟放入後會重新計時。
- 上滑蓋偵測:U5 之 PIN 3 空接(開路)則設定此模式。
- 開機時如上滑蓋開啟則不會讀片,VFD 空白,蓋上後才會讀片,VFD 顯示。
- 開機時上滑蓋蓋上則立即讀片,VFD 顯示。
- 當機心正在動作(正在撥放等)時,如把上滑蓋打開,機心會自行停止。
- 當機心停止時,如把上滑蓋打開,機心不會有任何動作。
- 第三及第四點說明:因機心狀態取得的限制,當機心從動作到停止要經過 1.5秒才偵測得到,所以打開上滑蓋如不要讓機心重讀,就請機心停止一段時間後再打開。
- 無論機心動作或停止,打開上滑蓋會開始計時三秒,這三秒內如上滑蓋關閉,機心會等到三秒時間到才開始讀片,如時間超過後才蓋上會立刻讀片,如果還沒開始讀片(時間未到)卻把上滑蓋打開,則重新計時。這是防止上滑蓋被亂玩時造成機心跟著動作。
- 註:因以間接方式取得機心狀態,無法完全掌握機心狀態,所以可能發生當上滑蓋剛蓋上,機心正在重讀光碟時卻又打開上滑蓋(這屬異常操作),本來應該自動停止的機心卻無法停止的現象,此為正常現象,並非當機,此現象發生的頻率並不高,解決法為再把上滑蓋關閉,機心會重讀光碟,等讀到資料後 1.5 秒(如 第三及第四點 說明)後再打開機心就會停止。
- 系統送電保護:系統送電後,使用遙控器的 POWER 鍵或扳動面板上的搖頭開關來開機時不會馬上開機,必須要等三秒才能開機,並且在這三秒內使用遙控器的 POWER 鍵或扳動面板上的搖頭開關時間會重新計時,如果一直按著也一樣會重新計時,代表要保持沒有操作電源開關動作三秒,時間過後才能開機。
但這三秒內如按的是遙控器除了 POWER 以外的的任何按鈕則不會重計時間,此功能是為了使硬體電路穩定工作沒有突波後才送電給機心。 - 系統開關機保護:內容與上述之系統送電保護相同,只是對象變成關(開)機要開(關)機,這是防止遙控器的 POWER 鍵或扳動面板上的搖頭開關被當成吃角子老虎玩之異常操作造成電源頻繁動作對機心造成損壞。 ^o^ ^o^
- 自動關機: 關閉時(U5 之 PIN 9 空接(開路)):無論任何情形、無論時間多久都不會關機。
- 開啟時U5 之 PIN 9 接地(與 GND 短路):有下列兩種情形:
- 光碟存在(上滑蓋關閉):機心動作時不會計時
- 右列三種狀況將使計時重置並從頭開始計時 :
- 機芯動作停止
- 按下遙控器的任一鍵
- 光碟存在(上滑蓋關閉)變為光碟拿開(上滑蓋開啟)或相反動作
- 計時 二十分鐘 後關機:目的是在光碟存在(上滑蓋關閉)的狀況下只要有任何操作就不會自動關機。
- 光碟拿走(上滑蓋開啟):從光碟存在(上滑蓋關閉)變成這狀態時重新開始計時,無論發生任何狀況(第一點 所述的第一及第二種狀況)皆無法對計時時間造成任何影響,計時二十分鐘後關機,唯一能解除(重置並停止)這狀態只有將光碟放上(上滑蓋關閉),保留這功能是與吳大討論的結果。
- 註:當自動關機功能從關閉切換成開啟會重新計時
- VFD 開關:開機時 VFD 開啟,在任何狀況下按下遙控器的 DISPLAY 鍵則關閉(原來關閉則打開並將DISPLAY功能關閉)
- VFD 關閉時按下遙控器除了 DISPLAY 外的任一鍵將會使 VFD 開啟並計時五秒
- 這五秒內
- 按下遙控器除了 DISPLAY 外的任一鍵將重新計時
- 按下 DISPLAY 鍵則 Display 功能關閉,VFD 保持開啟。
- VFD 關閉時如系統為偵測光碟狀態,光碟放上後 VFD 會開啟,等到光碟讀完後五秒 VFD 關閉。
- VFD 關閉時如系統為偵測上滑蓋狀態,上滑蓋關閉後 VFD 會開啟,等到光碟讀完後五秒 VFD 關閉。
- 機心 9V 及 5V 循序上電功能、9V 5V 電源及遙控器訊號接收指示燈:這些功能與原來的韌體相同,只是時間稍有不同,故不贅述
後記
小弟唯一的請求就是使用了此韌體的用家請來信告訴小弟無論是想法或感言等等與此韌體有關的東西,因為我想知道我自己設計的東西給用家使用後的回饋...
說明到此結束,如有任何意見,問題,bug等等請來信討論,謝謝各位並祝使用愉快