0 引 言
硬幣的識別分為兩個方面:對于硬幣幣值的準確檢測;對于真幣、偽幣的準確鑒別。由于硬幣的復雜性,長期以來,對于硬幣的準確識別都難以很好的解決。目前,無論是國外還是國內,通常的解決方法都是基于單片機的電渦流檢測法。本文在電渦流檢測的基礎上,利用FPGA的快速處理特性和高可靠特性,對硬幣的厚度、直徑、材質、電導率、磁導率等進行了準確的檢測,以便準確地識別硬幣。
1 電渦流反射式互補檢測傳感器原理
電渦流檢測是建立在電磁感應原理基礎之上的一種無損檢測方法,它適用于導電材料,如果把一塊導體置于交變磁場之中,在導體中就有感應電流存在,即產生渦流,由于導體自身各種因素(如電導率、磁導率、形狀、尺寸和缺陷等)的變化會導致感應電流的變化,利用這種現(xiàn)象判知導體性質、狀態(tài)的檢測方法,叫作電渦流檢測法。
在電渦流檢測中,是靠檢測線圈來建立交變磁場的;把能量傳遞給被檢導體,同時又通過渦流建立的交變磁場獲得被檢測導體中的質量信息。
在本硬幣識別器中,采用探頭式線圈,由于硬幣在幣道中滾動時,其在徑向位置會產生微小的抖動,為了消除這種抖動帶來的影響,在幣道兩邊都安裝有檢測線圈,進行探頭互補式檢測。如圖1所示。
檢測線圈和檢測線路組成一個振蕩器,當硬幣通過幣道時,線圈的電感會發(fā)生變化,引起檢測電路振蕩頻率發(fā)生變化。通過FPGA對振蕩頻率進行檢測,以正確識別硬幣。
2 基于FPGA的等位移多點采樣原理
硬幣通過檢測線圈時,會引起振蕩頻率發(fā)生變化,傳統(tǒng)的檢測方法通常是檢測變化的振蕩頻率的極值,即最大值。但這種檢測方法只有一個采樣點,識別偽幣能力不強。也有人采用每過一段相同的時間取一次采樣點,通過多采樣點提高識別效果。但是,當硬幣通過幣道時,由于投幣力量、初始速度以及硬幣邊緣的光滑程度、硬幣的重量等的區(qū)別,并不是每一種硬幣通過檢測線圈時的速度都是一致的;同一種、甚至同一個硬幣,也并不是每次通過檢測線圈時的速度都是一致的。所以,若采取等時間間隔取樣,就會造成取樣時,硬幣和檢測線圈的物理相對位置不一樣,引起檢測結果不一樣。這不僅會引起對偽幣可靠識別的準確性,也會影響對真幣的幣值檢測及真幣識別的可靠性,甚至把真幣當成偽幣來識別。正是由于這些問題,在實際的硬幣識別器產品中,通常采用的是只采取一個采樣點,即極值采樣法,但這種單點采樣法由于只在硬幣通過幣道的某一瞬間獲取硬幣的參數(shù)信息,有很大的局限性,識別偽幣能力不強。
在該設計中,采取等位移多點取樣法,完全克服了以上方法的缺點,具有很高的識幣能力。同時,還能對硬幣的直徑進行檢測。
由于采樣時間和采樣間隔都很短,對系統(tǒng)的高速性和可靠性有較高的要求,用傳統(tǒng)的單片機難以滿足要求,在該設計中,通過FPGA完成對數(shù)據(jù)的高速采樣和處理。
2.1 系統(tǒng)原理
圖2為系統(tǒng)原理框圖。在幣道的不同位置安裝有幾個光電傳感器,通過基于FPGA的脈沖寬度測量,可檢測得到硬幣通過幣道中光電傳感器之問距離的間隔時間。通過FPGA的高速數(shù)據(jù)處理,可得到硬幣的直徑、硬幣通過幣道時的加速度,并得到硬幣進行等位移多點采樣的采樣時刻。當硬幣通過檢測線圈時,就進行基于 FPGA的多倍周期同步測頻。再由FPGA對數(shù)據(jù)進行高速處理,得到硬幣的特征參數(shù),再把該特征參數(shù)和E2PROM中的硬幣特征值進行比較,就可以判別硬幣的幣值和真?zhèn)巍?/p>
2.2 基于FPGA的間隔時間測量
圖3為基于FPGA的間隔時間測量原理示意圖,A,B,C三點為光電檢測點。當硬幣通過光電檢測點時,光電檢測電路的輸出由低電平跳變?yōu)楦唠娖?。圖4為硬幣通過幣道時A,B,C三個光電傳感器的輸出波形。
圖4中,ta為硬幣前沿通過A點到硬幣后沿經過A點的間隔時間;tb為硬幣前沿通過A點到硬幣前沿通過B點的間隔時間;tc為硬幣前沿通過B點到硬幣前沿通過C點的間隔時間。
光電傳感器的輸出接到FPGA,由FPGA對標準頻率信號進行計數(shù),不難測得硬幣通過幣道時的間隔時間ta,tb,tc。在本設計中,F(xiàn)PGA的時鐘頻率為100 MHz,即標準頻率信號為100 MHz。經過實際檢測,ta,tb,tc的最小時間為0.01 s,則可估算出最大測量誤差為:
可見有足夠高的精確度。
2.3 硬幣直徑檢測
通過光電傳感器實現(xiàn)硬幣直徑及通過幣道的加速度的檢測。如圖3,在幣道的A點、B點和C點分別安裝光電收發(fā)器。AB點和BC點的距離相等且為s。
硬幣通過幣道時做勻加速度運動,設加速度為a,下面通過由FPGA高速檢測得到的ta,tb,tc以及光電傳感器之間的距離s來求加速度a,并求出硬幣的直徑d。
設硬幣的前沿通過A點,B點,C點的速度分別為vA,vB,vc,則有:
由此可計算出硬幣通過幣道時的加速度a。設光電傳感器A距離幣道底部的垂直距離為h;光電傳感器A檢測點掃過硬幣的長度為l。圖5為硬幣的半徑r和h,l的關系圖。由圖5可得如下公式:
硬幣的直徑為d=2r,由式(1)~式(6)可得:
式中:h和s是已知的;ta,tb,tc可通過FPGA檢測得到。
由此公式,就可通過測量硬幣通過的時間ta,tb,tc并計算得到硬幣的直徑d。
2.4 等距離多點采樣
見圖3,D,E點位置設在檢測線圈的邊緣,CD間的距離為s。當硬幣前沿通過D點時,開始采樣;當硬幣后沿通過E點時,停止采樣。為了充分地采集硬幣在各個位置的參數(shù)信息,采樣點應足夠多。在本設計中,沿硬幣滾動的方向每間隔0.1 mm位移采樣一次。
檢測線圈和檢測電路組成振蕩器,振蕩頻率既不能太高,也不能太低。在本設計中,振蕩頻率為200 kHz(此頻率指硬幣未通過線圈時的振蕩頻率)。經實際測試,硬幣通過檢測線圈時的速度范圍為0.1~0.5 m/s??梢姡矌磐ㄟ^幣道時的速度有較大的變化范圍,同一硬幣多次投幣時,通過檢測線圈同一點(比如:A點)的速度也有區(qū)別。為了實現(xiàn)每次投幣多點采樣時,檢測線圈和硬幣的相對位置都一樣,就必須采取等位移多點采樣。當硬幣的前沿通過D點時開始采樣,以硬幣前沿通過D點的時刻作為采樣時間的零起始時刻,每過0.1 mm采樣一次。首先,需要計算出通過每一個0.1 mm位移所需要的時間t1,t2,t3,…。由于速度越來越快,必定有t1,>t2>t3>…,再每隔t1,t2,t3,…時間檢測采樣一次。圖6為采樣過程示意圖,tS為采樣時間。
由于硬幣在幣道中做勻加速度直線運動,設硬幣的前沿通過D點時的速度為vD,則有:
令s為0.1 mm,0.2 mm,0.3 mm,…,設需要的時間分別為t0.1,t0.2,t0.3,…。由2.3所述方法可求得a和vD,則通過求解一元二次方程可得到t0.1,t0.2, t0.3,…,若以硬幣通過D點作為零時間參考點,則在t0.1,t0.2,t0.3,…采樣即可得到正確的等位移多采樣值。有:t1=t0.2-t0. 1,t2=t0.3-t0.2,…。
當硬幣后沿通過E點時,停止采樣,D點和E點的沿幣道方向的距離為y,設通過E點的時刻為tE,則有:
由此即可計算出tE,即為硬幣通過幣道時最后一個采樣點。
根據(jù)式(9),要求得t,涉及到開方運算。開方運算的算法主要有Newton-Raphson算法、SRT-Redun-ant算法和Non-Redudant算法。這三種算法可以得到開方運算的近似結果。關于上述三種算法的介紹參見參考文獻[1—3]。
為了有足夠高的檢測精度,要求t精確到1μs。另外,由于硬幣由C點到D點的最小時間為0.3 ms,所以必須在0.3 ms內完成上述的算法。通過FPGA不難實現(xiàn)這些要求,但是若采用單片機來實現(xiàn)就有一定的難度,如:若用51單片機,頻率12 MHz來實現(xiàn),則機器周期就是1μs,要實現(xiàn)上述算法是不可能的。所以在該設計中采用FPGA實現(xiàn)。
2.5 基于FPGA的多倍周期同步測頻法
在該設計中,檢測線圈為電渦流反射式互補檢測,準確地測試出其輸出頻率是很重要的。對于頻率的測試,有測頻法、測周期法,但測量精度都不夠高,在該設計中,兩種測試方法誤差都比較大,所以采用等精度多倍周期同步測頻法,可達到較高的精度。
由于硬幣通過檢測線圈時的速度范圍為:0.1~0.5 m/s,要求每隔0.1 mm距離采樣一次,則采樣的時間間隔范圍為0.2~1ms。為了保證采樣的快速和準確性,采樣時間不能超過0.2 ms,本設計采樣時間取0.1 ms。
該設計中,F(xiàn)PGA的頻率為100 MHz,由檢測線圈及檢測電路組成的振蕩器頻率為200 kHz(此頻率指硬幣未通過線圈時的振蕩頻率)。
所謂測頻法,就是先給定一個閘門時間,在此閘門時間內,對被測頻率信號計數(shù),由此即可計算出被測信號的頻率。在本設計中,閘門時間為0.1 ms,被測信號頻率為200 kHz左右,若用測頻法,則測量誤差為:
1/(0.1×10-3×200×103)=5%
所謂測周期法,就是在被測頻率信號的一個周期內,對參考頻率信號進行計數(shù),由此即可計算出被測信號的周期,在本設計中,參考頻率信號為100 MHz,被測信號頻率為200 kHz左右,若用測周期法,則測量誤差為:
(200×103)/(100×106)=0.2%
由此可見,都有較大的誤差,下面用等精度多倍周期同步測頻法,既可以在振蕩頻率變化的情況下保持精度的一致,又可以減少測量誤差,提高測試精度。
設被測信號頻率為fx,計數(shù)器CT1對fx進行計數(shù);參考信號頻率為fr,計數(shù)器CT2對fr進行計數(shù)。
CT1的閘門開放時間完全與fx的m個周期同步。閘門開放時間T1=mtx。在fx的第一個上升沿和第m+1個上升沿之間的mtx時間間隔內,允許CT2對fr計數(shù),計數(shù)值記為N。上述測頻的時序圖如圖7所示。
fx的計算公式如下:
fx=m/Nfr
根據(jù)誤差傳遞公式,有:
式中:△fx,△fr,△N為絕對誤差。相對誤差δ=±(△fx/fx),由于fr由晶體振蕩器輸出,其穩(wěn)定度較高,所以△fr非常小,可忽略不計?!鱊極限是±1,故測量誤差δ為:
由式(13)可以看出,測量誤差與被測信號的頻率大小無關,僅與閘門時間和標準頻率時間有關。標準頻率越高,閘門時間越長,測量誤差越小。
在本設計中,為了保證測量的速度,閘門時間比較短,在閘門時間不變的情況下,標準頻率越高,誤差越小。
為了提高測量頻率的精度,必須采用較高頻率的標準信號。在傳統(tǒng)的硬幣識別器設計中,多采用單片機測量頻率,但由于單片機受本身的時鐘頻率和若干指令運算的限制,難以得到較高的標準頻率信號,無法滿足高速、高精度的測量要求。采用高速、高精度、高可靠性的現(xiàn)場可編程陣列FPGA為實現(xiàn)高速、高精度的測頻提供了保證。
在本設計中,fr=100 MHz,T1=0.1 ms,則相對測量誤差δ為:
誤差遠小于測頻法和測周期法誤差。這就解決了瞬時、快速采樣的測量精度問題。
若用傳統(tǒng)的單片機等精度多倍同步測頻方案,假設用常用的MCS-51單片機,設時鐘頻率為12 MHz,機器周期為1 MHz,則誤差為:
δ1=1/(1 000 000×0.000 1)=0.01=1%(15)
可見,用傳統(tǒng)的單片機采集頻率數(shù)據(jù),誤差太大,難以滿足高精度測量的要求。
正是出于提高測量精度的考慮,在本設計里用了FPGA來完成頻率數(shù)據(jù)的采集工作。
3 結 語
在硬幣識別器的研究中,本文首先提出了基于FP-GA的等位移多點采樣法,并且提出基于FPGA 的光電檢測來對硬幣的直徑進行準確測量的方法,具有一定的理論指導意義和較強的實際應用價值。通過這些方法,大大提高了硬幣識別的準確性和可靠性,特別是在對硬幣的制造材料不均勻的情況下,更能體現(xiàn)其優(yōu)越性。筆者曾對國外大公司,如:日本的GLORY公司、美國A&A公司生產的硬幣識別器進行研究,由于其在硬幣識別方面為單點采樣法,所以其對一些不均勻硬幣(如:泰國的10銖硬幣)識別效果并不理想,由于本硬幣識別器采取等位移多點采樣法,所以識別效果較好,識別準確率可達到99.5%以上。另外,硬幣識別器在某些情況下,需要在比較惡劣的環(huán)境下使用,需要較強的抗干擾能力,如:在野外使用的投幣電話,在公共汽車上使用的無人值守投幣機。由于FPGA的純硬件電路特性,抗干擾能力特別強,具有很高的可靠性。