利用PSoC1實現(xiàn)基于WPC協(xié)議的電力發(fā)送器設計
1, 無線充電概述
本文引用地址:http://m.butianyuan.cn/article/176187.htm無線充電技術在消費類市場表現(xiàn)出巨大的潛力。在不使用連線的情況下給電子設備充電不但可為便攜式設備用戶提供一種便利的解決方案,而且還讓廣大設計人員能夠尋找到更具創(chuàng)新性的問題解決方法。許多電池供電型便攜式設備均能受益于這種技術,從手機到電動汽車不一而足。
目前,無線充電技術主要有兩個聯(lián)盟A4WP和WPC。A4WP是以三星和高通牽頭的6家企業(yè)成立了無線充電聯(lián)盟,而WPC主要有TI、三星、HTC、LG、海爾等109家成員。WPC主要是采用線圈耦合的方式來實現(xiàn)能量轉移,目前主要為5W產品的低功耗應用制定規(guī)范,也在嘗試為高功率產品制定規(guī)范。它可實現(xiàn)在一個平面上為多個電器進行充電,充電板的發(fā)射端與充電產品接收端距離為5毫米。而A4WP正在促進共振方式無線充電技術的發(fā)展。充電板與智能機裝置擁有同樣頻率的共振線圈,通過共振來充電,因此即便智能手機不與充電板接觸也可進行充電。另外,該技術無需考慮電波,可為多臺智能產品同時充電,并可通過非金屬表面的物體進行充電,使用起來非常方便。
除了兩大聯(lián)盟的技術方式外,也存在其他幾種充電方式,比如以Wildcharge、Duracell兩家公司為主的傳導式充電、Powermat和Palm的無線充電技術,以及以Powercast公司為代表的RF射頻充電技術等等,但無線充電方式還遠不止這些。
2,WPC介紹
電力發(fā)送器(其通常為一個平面用戶將電力接收器放置在上面)連接至電源。符合WPC標準的設備線圈起到了一個50%占空比諧振半橋的作用,其輸入為19-VDC(±1 V)。如果電力接收器需要或多或少的功率,則線圈頻率會發(fā)生變化,但會保持在110到 205kHz 之間,具體取決于功率需求。
如第二部分介紹,電力發(fā)送器的關鍵電路是用于向電力接收器傳輸電力的一次線圈、驅動一次線圈的控制單元以及解調一次線圈電壓或者電流的通信電路。圖2是采用Cypress的PSoC1對一次線圈的控制及驅動電路,它采用的是A1設計。
圖2, WPC電力發(fā)送器驅動電路
其中,LM5107是線圈驅動芯片, 20N06HD是MOSFET管,Cp(約為100nF)是電路所有電容總和,Lp是一次線圈,A1設計中其值為24uH。
電力發(fā)送器的通信部分主要為解調來自電力接收器的電壓信號,并解析數(shù)據包。通信過程中采用的是差分雙向編碼(differential bi-phase encoding)方式,每個碼元持續(xù)時間開始時電平都發(fā)生躍變,如果在半個碼元持續(xù)時間后電平再次躍變,則代表1;而在整個碼元持續(xù)時間內電平不發(fā)生躍變,則代表0.如下圖3所示:
圖3,WPC通信編碼
在PSoC Designer中實現(xiàn)的原理圖如下圖4所示,
圖4,PSoC Designer設計原理圖
從上圖可以看到,對線圈的驅動控制采用的是PWM模塊PWMDB8_1,其與Port2_5和Port2_7相連以驅動控制LM5107芯片。 解調來自電力接收器的電壓信號,PSoC1使用了4個元件(Decode_Timer,PGA_1, COMP_1和OneShot_1), Decode_Timer模塊用來計時,PGA_1對接受到的微笑信號放大, COMP_1把模擬信號變數(shù)字信號,OneShot_1對信號進行同步并產生中斷,軟件就根據Decode_Timer計算的OneShot_1兩次中斷的時間間隔來解碼協(xié)議。當兩次中斷間隔為:
1T----解碼為邏輯1
1.5T----如果第一次收到1.5T間隔的中斷,解碼為兩個bit,邏輯1和邏輯0
如果第二次收到1.5T間隔的中斷,解碼為邏輯0
2T---解碼為兩個邏輯0
這里“T”為1bit傳輸時間
其軟件實現(xiàn)如下所示:
cur_time = Decode_Timer_COMPARE_REG;
if (cur_time > prev_time)
{
delta = 250 - cur_time;
delta += prev_time + 1;
}
else delta = prev_time - cur_time;
//estimate the delta between next samples taking into accoun timer overflow
prev_time = cur_time;
if ((delta > ONE_T_LOWER) (delta ONE_T_UPPER))/*1T*/
{
//ADD_BIT(1,WPTdata);
評論