• 沒有找到結果。

第三章 電路模擬演算法與實際電路演算法

3.1 子系統之電路模擬演算法

使用前述Huang et al. (2007)演算法之概念,將該演算法分別說明如後。現在沿用 前章的符號定義,並將ia與va分別設為路段a的電流與電壓值,Ra為路段a之電阻值,

圖3.3 雙曲線逼近成本函數示意圖 資料來源:(鄭兆哲,2009)

3.2 子系統之實際電路演算法(PCA-Sub)

根據前述演算法,我們發展出一套子系統之實際電路演算法。先前的演算法在演 算時,沒有考慮到電阻值「量化誤差」的問題,因為在做電腦模擬時,數值都相當的 精確,但實際電路製作時,需要考慮量化的誤差,沒有辦法設定成理論的電阻值一定 等於實際的電阻值,這是因為元件本身的限制使然,無法做到百分之百的精確是必然 的。

另外,除了量化的影響之外,我們可能會碰到遞迴過程中,運算時的電阻值R 超an 過實體電阻最大值Rmax的限制,現在令演算法每次迴圈計算時其最大電阻值為R ,OnROn =max(Ran ,∀a),我們必須將所有電阻值作等比例的轉換,亦即同乘以Rmax/ROn, 讓所有電阻值都不超過Rmax。基於以上各點,我們所發展出的實作電路演算法步驟如 下:

步驟0: 將子路網之各起點 r 模擬成直流電流源I ,電流值設為該起點至訖點之rs 流量,各起點電流值之比會等於實際各路段流量q 之比(亦即rs k

I q

rs

rs = ,

且對每一個子路網,皆用同一個比值k);另外,將路網訖點模擬成接地

自己的起訖點,但是電流本身是無法分別起訖點的。所以,前述方法在改良以後,學 性成本函數,取代線性成本函數,以尋找最短路徑的解法,類似於 Regularized Frank-Wolfe Algorithm (Migdalas, 1984),主要可避免 Frank-Wolfe 演算法找尋可行解方 向時會找到邊界解(boundary solutions)的缺點。

3.4 系統實際電路演算法(PCA-Sys)

第四章 實作的誤差與影響

4.1 量化誤差的定義

一般我們所採用的數字系統皆為十進位系統(decimal system),也就是以 0、1、

2、…、9 等十個數字作為計數的基底;但是想要控制數位電阻之電阻值,僅能以二進 位系統(binary system)的訊號輸出來控制,也就是以 0、1 兩個數字為計數之基底,換 言之,任何的十進位數字都須用0 或 1 來表示,以八位元的二進位系統為例,十進位 的1 代表二進位的 00000001;十進位的 2 代表二進位的 00000010,以此類推。故我 們想要控制數位電阻的值,就必須以此二進位的訊號來控制它。表3.1 顯示電阻的階 數變化所顯示的各階電阻值。

表4.1 數位電阻階數與實際阻值間的關係(以最大值為10KΩ為例) 階數(十進位) 階數(二進位) 實際電阻值

0 00000000 0.0000Ω 1 00000001 39.2157Ω 2 00000010 78.4314Ω 3 00000011 117.6471Ω

… … …

254 11111110 9960.7843Ω 255 11111111 10000.0000Ω

資料來源:本研究整理

3.2 小節中說明,先前演算法在演算時,沒有考慮到電阻值「量化誤差」的問題。

何謂量化誤差?量化誤差就是量化的結果與未量化前實際值之間的差值。由於數位可 變電阻的特性限制,造成並非想要什麼電阻值都可以得到。舉一個最大值為10KΩ(即

Ω

10000 ),且為 8 位元共 256 階變化的電阻為例,其電阻值僅有 256 階的變化而已。

所以,當我們在計算時,得出某次遞迴之實際阻值為50Ω,但我們卻沒有辦法實際將 阻值調整至50Ω,僅能以39.0625Ω或78.125Ω來顯示,這就是量化的誤差。

顯然地,在一個範圍值內的量化階數越多,量化的誤差會越小。故我們在電路製 作時,一定要將量化誤差考慮進去。原先的數位可變電阻之電阻值為R ,而各電阻an 值分別經過量化後,阻值將會轉變成Q 。 an

4.2 電阻值量化的影響

實作電路演算法是根據前述的電路模擬演算法所推衍出來的,因為在實際電路 中,所使用的元件有著許多限制,在3.2 節中已提及,電阻本身存在著量化的誤差,

量化誤差對於電路的實作可能會造成影響。

受限於軟硬體的限制,以及操作上的便利性等等,因此我們選擇256 階的數位可 變電阻來做本實作。事實上,我們發現量化的階數對於目標值的影響而言,並不會太 過於劇烈,詳細情況將在後面說明。

在電路模擬演算法與實作電路演算法這兩個演算法中,後者新增新的演算步驟。

除了前述最大阻值的限制外,步驟2 將阻值量化,得到一個新的量化電阻值 Qan,此 處就有量化的誤差。也因為這樣,後面的電流與電壓計算,也都有造成一定程度的不 精確。

儘管因為量化之故,造成了演算法會提早收斂,但是,所求得的解與理論值之間,

差異可說是非常的微小,這顯示利用本演算法,量化所造成的誤差對於最佳解而言,

影響並不明顯。但在電阻有256 階的情況下是如此,那麼,我們現在想要探討的是,

量化的階數大小,對於答案的精確度是否影響很大呢?以常理判斷之,當電阻的量化 階數越少的時候,答案應該會更加的不精確,因為量化後所得之電阻值,離實際的阻 值應該會相差的更多,所以,我們現在使用電腦模擬的方式,並以圖4.1 的範例為例 題,此小型範例可以模擬成圖 4.2 的路網,並套入 3.2 節的演算法做電腦的模擬,用 以探討量化階數的變化對於實際阻值以及目標值的影響大小,結果如表4.2:

圖4.1 電腦模擬測試路網圖 資料來源:(Huang,2007)

圖4.2 電腦模擬測試電路圖 資料來源:本研究整理

表4.2 量化階數不同對於目標值之影響

階數 遞迴次數 x1 x2 目標值 目標值誤差

11.540 8.460 1231.331 256 *19 11.511 8.489 1231.353 0.00182%

128 *18 11.575 8.425 1231.357 0.00200%

64 13 11.513 8.487 1231.351 0.00165%

32 11 11.494 8.506 1231.389 0.00473%

16 7 11.635 8.365 1231.588 0.02091%

資料來源:本研究整理

註:*號表示該次運算結果,會發生如同 3.2 節所述之收斂值不唯一的現象。在 256 階的實驗中,第 20 次遞迴之 解為(11.562, 8.438),目標值 1231.345,誤差為 0.00117%;在 128 階的實驗中,第 19 次遞迴之解為(11.524, 8.476),

目標值1231.337,誤差為 0.00050%

令人驚異的發現,儘管阻值是經過量化之後的電阻值,但是其對於各路段之流量 解的影響卻是相當的有限,因為對於解的影響不大,使得各目標值也與理論目標值之 間差距甚微;而隨著階數的減少,目標值的誤差雖然越來越大,但是影響幅度有限。

4.3 元件的誤差

電阻除了量化的誤差之外,本身還存在有其他的誤差。以市售的一般型電阻為 例,每一顆電阻都只有一個固定的電阻值,即所謂「定值電阻」,但其理論電阻值與 實際電阻值之間往往存在著誤差,這是因為現實的電阻器本身除電阻外,還擁有著微 量的電感或電容,使其阻值與理想的電阻器有所差異。一般電阻的誤差約在5%左右,

這也就是說電阻的最大值不固定,即所謂的元件誤差。

電子元件的各種標示值與實際值之間常常存在著誤差。同樣地,我們所使用的數 位可變電阻也有著類似的誤差,因為每一顆元件的最大值都不一樣,甚至是實驗當時 的溫度、溼度等變化,對於元件的精準度都有影響。以理論最大值為10KΩ的數位可 變電阻來說,據實際量測的結果,此型數位可變電阻的最大值約在9.5KΩ~10.5KΩ之

間,而最大值與其量化後每一階的距離有關係,電阻最大值較大,電阻每階的間距也

表 4.3 三十個數位可變電阻之設定電阻值與實際表示阻值

表4.4 量化誤差與元件誤差合併考慮之影響

階數 遞迴次數 x1 x2 目標值 目標值誤差

11.540 8.460 1231.331 256 *24 11.628 8.372 1231.553 0.0180%

128 *16 11.678 8.322 1231.872 0.0439%

64 14 11.664 8.336 1231.774 0.0360%

32 *8 11.975 8.025 1236.693 0.4354%

16 *4 12.242 7.758 1245.280 1.1329%

資料來源:本研究整理

註:*號表示該次運算結果,會發生如同 3.2 節所述之收斂值不唯一的現象。在 256 階的實驗中,第 25 次遞迴之 解為(11.653, 8.347),目標值 1231.695,誤差為 0.0296%;在 128 階的實驗中,第 17 次遞迴之解為(11.628, 8.372),

目標值1231.553,誤差為 0.0180%;在 32 階的實驗中,第 9 次遞迴之解為(11.357, 8.643),目標值

1232.282,誤差為 0.0773%;在 16 階的實驗中,第 5 次遞迴之解為(10.973, 9.027),目標值 1240.513,誤差為 0.7457%。

只要各路段的電流下降比例一致,我們就可以利用演算法將之修正回來。

除此之外,元件本身所能通過的電流也不能太大。文獻中指出,數位可變電阻所 能通過之電流不能超過5mA,故這對演算法也會有一些限制存在,不過無論電流通過 多寡,其各電阻之間通過電流的比例也會一樣的,故我們所發展出的演算法也要針對 此作處理。

第五章 微處理機系統之電子電路實作

公司所生產的P89V51RD2 這種 MCS-51(MCS:Micro Computer System)單晶片來做處 理架構的核心,這也是目前世界上非常普遍的一種單晶片微電腦。P89V51RD2 單晶 片之說明,如附錄一所示。在本微處理器中,共有32 個輸入/輸出腳位,我們將會使 用P0.0~P0.7 這八個腳位當做數位電壓值的輸入,而微處理器內部可以將此數位訊號 換算成類比訊號值,作為演算法運算之用。運算結束後,所得之電阻值再經由輸入/

輸出腳位傳至數位可變電阻(digital potentiometer,簡稱 digipot),以更改電阻值。

又由於電阻值必須不斷地變動,數位可變電阻的使用是必須的。我們選用Analog Devices 公司所生產,型號為 AD8400 的數位可變電阻來實作電路。本元件的最大電 阻值為10KΩ,共有 256 階,也就是說,將電阻值10KΩ平均分配 256 階,理論上每 處理器的步驟,這時就需要使用類比/數位轉換器(A/D Converters,簡稱 ADC),它可 以將類比的電壓值轉變成為數位訊號值,因為微處理器的輸入以及輸出,都是使用數 位信號,故將類比電壓值轉成數位訊號有其必要性。我們所使用的是 ADC0804 這個 型號的 ADC,它能把輸入的類比電壓值,轉換成 256 階的數位電壓值作輸出。較詳

細的ADC0804 腳位說明如附錄三所示。

因為需要利用微處理器控制的元件數較多,但 P89V51RD2 中也只有 32 個輸入/

輸出埠而已,我們將會面臨到腳位不夠的問題,這時就需要利用74164 這個 IC。這是 一個八位元的移位暫存器,我們主要是利用它來控制各個元件的 CS(chip select)腳 位,該腳位可以控制元件為啟動或是關閉。一般而言,當CS 為低電位,也就是 CS=0 (P89V51RD2)可以輸出阻值,再藉由 74164 控制數位電阻,使數位電阻顯示相對應之 電阻值。而流經數位電阻的電流造成了壓降,其壓降就由類比/數位轉換器(ADC0804)

來負責測量。各個 ADC0804 所得之電壓資料,傳送至微處理器,讓微處理器可以藉 由演算法,求出下一次遞迴時,需要輸出至數位電阻之電阻值。

在電路演算的過程中,運算是藉由微處理機的控制達成的,欲得知計算時各變數 的值,可將電路與個人電腦,每當微處理機計算出某變數之值,便可將其傳送至電腦 上顯示。個人電腦端的接收平台是利用Windows 內建的超級終端機完成,圖 5.1 為超

在電路演算的過程中,運算是藉由微處理機的控制達成的,欲得知計算時各變數 的值,可將電路與個人電腦,每當微處理機計算出某變數之值,便可將其傳送至電腦 上顯示。個人電腦端的接收平台是利用Windows 內建的超級終端機完成,圖 5.1 為超

相關文件