?? rs-232接口轉(zhuǎn)換為rs-485接口的智能轉(zhuǎn)換器_中國(guó)藍(lán)科信息技術(shù)網(wǎng).htm
字號(hào):
COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:link {
COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:visited {
COLOR: #0000cc; TEXT-DECORATION: underline
}
#ft {
CLEAR: both; FONT-SIZE: 12px; COLOR: #666666; LINE-HEIGHT: 20px; FONT-FAMILY: Arial; HEIGHT: 20px; TEXT-ALIGN: center
}
#ft A {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:link {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:visited {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#usrbar {
LETTER-SPACING: normal
}
#usrbar A {
LETTER-SPACING: normal
}
#usrbar A:link {
LETTER-SPACING: normal
}
#usrbar A:visited {
LETTER-SPACING: normal
}
#ft {
LETTER-SPACING: normal
}
#ft A {
LETTER-SPACING: normal
}
#ft A:link {
LETTER-SPACING: normal
}
#ft A:visited {
LETTER-SPACING: normal
}
</STYLE>
<DIV id=usrbar><NOBR>
<SCRIPT> var myref = encodeURI("http://hi.baidu.com/xjmbs/blog/item/937ac909cb498383d1581bde%2Ehtml");</SCRIPT>
<A href="http://www.baidu.com/" target=_blank>百度首頁(yè)</A> | <A
href="http://hi.baidu.com/" target=_blank>百度空間</A>
<SCRIPT language=JavaScript>
document.write(" | <a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"'>登錄</a>");
</SCRIPT>
</NOBR></DIV>
<DIV id=main align=left><!--[if IE]>
<SCRIPT>
var objmain = document.getElementById("main");
function updatesize(){ var bodyw = window.document.body.offsetWidth; if(bodyw <= 790) objmain.style.width="772px"; else if(bodyw >= 1016) objmain.style.width="996px"; else objmain.style.width="100%"; }
updatesize(); window.onresize = updatesize;
</SCRIPT>
<![endif]-->
<DIV id=header>
<DIV class=lc>
<DIV class=rc></DIV></DIV>
<DIV class=tit><A class=titlink title="馬斌山的空間 http://hi.baidu.com/xjmbs"
href="http://hi.baidu.com/xjmbs">中國(guó)藍(lán)科信息技術(shù)網(wǎng)</A></DIV>
<DIV
class=desc>藍(lán)科信息技術(shù)是綜合性工農(nóng)業(yè)自動(dòng)化技術(shù)服務(wù),電子產(chǎn)品研發(fā),電子產(chǎn)品和電子元件銷售為主單位,有項(xiàng)目找不到人做那就找藍(lán)科;有項(xiàng)目沒(méi)有技術(shù)人員來(lái)維護(hù)找藍(lán)科;要購(gòu)買產(chǎn)品找藍(lán)科……藍(lán)科與你真誠(chéng)合作!</DIV>
<DIV id=tabline></DIV>
<DIV id=tab><A href="http://hi.baidu.com/xjmbs">主頁(yè)</A><A class=on
href="http://hi.baidu.com/xjmbs/blog">博客</A><A
href="http://hi.baidu.com/xjmbs/album">相冊(cè)</A><SPAN>|</SPAN><A
href="http://hi.baidu.com/xjmbs/profile">個(gè)人檔案</A> </DIV></DIV>
<DIV class=stage>
<DIV class=stagepad>
<DIV style="WIDTH: 100%">
<TABLE class=modth cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=modtl width=7> </TD>
<TD class=modtc noWrap>
<DIV class=modhead><SPAN class=modtit>查看文章</SPAN></DIV></TD>
<TD class=modtc noWrap align=right></TD>
<TD class=modtr width=7> </TD></TR></TBODY></TABLE>
<DIV class=modbox id=m_blog>
<DIV class=tit>RS-232接口轉(zhuǎn)換為RS-485接口的智能轉(zhuǎn)換器</DIV>
<DIV class=date>2007-03-26 00:23</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
<TBODY>
<TR>
<TD>
<DIV
class=cnt>摘要:介紹一種將RS-232接口轉(zhuǎn)換為RS-485接口的智能轉(zhuǎn)換器,該轉(zhuǎn)換器采用串口竊電技術(shù)獲取電源,采用單片機(jī)技術(shù)實(shí)現(xiàn)了數(shù)據(jù)收發(fā)流向的自動(dòng)控制。文中給出了轉(zhuǎn)換器的硬件電路及軟件設(shè)計(jì)方法。<BR>關(guān)鍵詞:接口轉(zhuǎn)換
串口竊電 低功耗
<P></P>
<P>現(xiàn)代工業(yè)企業(yè),由于自動(dòng)化設(shè)備眾多,往往采用局域網(wǎng)控制形式,而利用RS-485接口組網(wǎng)簡(jiǎn)單,成本低廉,且通信距離可滿足一般工業(yè)應(yīng)用,因此獲得了廣泛應(yīng)用,但一般的微機(jī)系統(tǒng)或工業(yè)自動(dòng)化設(shè)備,如PLC,智能化儀表等,往往僅具有RS-232接口,因此
實(shí)現(xiàn)RS-232接口與RS-485接口的轉(zhuǎn)換,就具有重要的實(shí)際意義。傳統(tǒng)的做法是在原設(shè)備內(nèi)擴(kuò)展一個(gè)通信適配卡,由該卡實(shí)現(xiàn)RS-232→RS-485接口的轉(zhuǎn)換。采用接口轉(zhuǎn)換卡存在著以下幾方面的問(wèn)題:⑴由于各設(shè)備采用的總線結(jié)構(gòu)不同,轉(zhuǎn)換卡的通用性較差;⑵占用原系統(tǒng)的軟硬件資源較多;⑶硬件復(fù)雜,成本高,尤其對(duì)一些硬件結(jié)構(gòu)緊湊或無(wú)法改動(dòng)原設(shè)備軟硬件資源的自動(dòng)化設(shè)備,使該方案根本無(wú)法實(shí)施。<BR>針對(duì)上述情況,我們?cè)O(shè)計(jì)了一種小巧的無(wú)須外部供電的智能收發(fā)轉(zhuǎn)換器,實(shí)現(xiàn)了RS-232和RS-485接口間的智能轉(zhuǎn)換。<BR>轉(zhuǎn)換器系統(tǒng)構(gòu)成<BR>本智能轉(zhuǎn)換器作為一個(gè)獨(dú)立的電平轉(zhuǎn)換控制器,主要完成電源獲取、RS-232電平與RS-485電平間的轉(zhuǎn)換及實(shí)現(xiàn)數(shù)據(jù)流向的自動(dòng)控制,其系統(tǒng)構(gòu)成框圖如圖1所示:</P>
<P></P>
<P><IMG src="RS-232接口轉(zhuǎn)換為RS-485接口的智能轉(zhuǎn)換器_中國(guó)藍(lán)科信息技術(shù)網(wǎng).files/0407011.jpg"
border=0></P>
<P>圖1
系統(tǒng)構(gòu)成框圖<BR>由于本收發(fā)器要從標(biāo)準(zhǔn)RS-232接口上獲取電源,而RS-232接口可提供的電源功率又十分有限,所以如何降低轉(zhuǎn)換器的功率消耗是本設(shè)計(jì)的重點(diǎn)。為降低功耗,本轉(zhuǎn)換器均選用<BR>新型低功耗器件。<BR>電源電路<BR>本轉(zhuǎn)換器采用串口竊電的方法從RS-232接口獲取電源,并經(jīng)DC/DC電路轉(zhuǎn)換為+3V電源供給單片機(jī)及接口電平轉(zhuǎn)換芯片使用。<BR>標(biāo)準(zhǔn)RS-232接口中有三個(gè)發(fā)送信號(hào),即數(shù)據(jù)終端準(zhǔn)備好DTR,請(qǐng)求發(fā)送RTS和發(fā)送數(shù)據(jù)TXD。這三根輸出信號(hào)線中,每根線上的典型輸出電流為±8mA,典型輸出電壓為±12V。我們即從此三根線中來(lái)獲取電源,因TXD發(fā)送數(shù)據(jù)線處于等待發(fā)送及發(fā)送“1”的時(shí)間要大于發(fā)送“0”的時(shí)間,故電源轉(zhuǎn)換采用負(fù)電源輸入方式,以最大限度的增加電源輸入功率,保證轉(zhuǎn)換電路的正常工作。<BR>從RTS和DTR兩根信號(hào)線上可獲取的輸入功率為P=2×U×I=2×12×8=192mw,當(dāng)電源轉(zhuǎn)換效率為85%,輸出電壓為3V時(shí),RTS和DTS可提供的輸出電流為I=P.η/U=54.4mA。<BR>而考慮TXD處于等待發(fā)送及發(fā)送“1”態(tài)時(shí),也可為系統(tǒng)提供一定的功率,
故由RS-232接口提供的輸出電流將大于此值。這里將DTR、RTS及TXD三根輸出線經(jīng)二極管整流隔離后輸出電壓為-12V,輸出電流大于54.4mA的負(fù)電源,為降低轉(zhuǎn)換器功耗,將電源輸出電壓選取為+3V顯然各公司提供的DC-DC轉(zhuǎn)換器中沒(méi)有一個(gè)能直接做到-12V輸入+3V輸出,因此我們采用MAXIM公司的MAX716電源IC,稍做改動(dòng),實(shí)現(xiàn)了此功能。由MAXIM716設(shè)計(jì)的DC-DC轉(zhuǎn)換電路如圖2所示。</P>
<P></P>
<P><IMG src="RS-232接口轉(zhuǎn)換為RS-485接口的智能轉(zhuǎn)換器_中國(guó)藍(lán)科信息技術(shù)網(wǎng).files/0407012.jpg"
border=0></P>
<P>圖2 DC-DC
轉(zhuǎn)換電路<BR>由MAXIM716設(shè)計(jì)的電源電路主要特點(diǎn)是轉(zhuǎn)換效率高達(dá)85%,外圍電路簡(jiǎn)單,無(wú)需變壓器,低功耗靜態(tài)電流僅100μA,該轉(zhuǎn)換器的輸入電壓范圍為-2.5V〜-13.5V,輸出電壓為+3V,輸出電流可達(dá)300mA,但由于輸入功率的限制在本設(shè)計(jì)中僅可輸出略大于54.4mA的電流。<BR>RS-232接口<BR>本轉(zhuǎn)換器采用一只單發(fā)/單收RS-232接口芯片用于完成RS-232電平到TTL電平的轉(zhuǎn)換,對(duì)接口芯片的要求是低工作電源、低功耗、小體積。在這里我們選用MAXIM公司的MAX3221E,該芯片的工作電壓為3〜5.5V,靜態(tài)電流小于1μA,負(fù)載電流小于2mA,數(shù)據(jù)傳輸率為120kbps,外圍元件少,僅需4個(gè)0.1μf的外接電容,且該芯片的體積也是同類產(chǎn)品中體積最小的,MAX2321E還具有±15KV
ESD保護(hù)功能,接口電路見(jiàn)圖3。<BR><BR><IMG
src="RS-232接口轉(zhuǎn)換為RS-485接口的智能轉(zhuǎn)換器_中國(guó)藍(lán)科信息技術(shù)網(wǎng).files/0407013.jpg" border=0></P>
<P>圖3 智能轉(zhuǎn)換接口電路</P>
<P>RS-485接口<BR>RS-485接口芯片用于完成將TTL電平轉(zhuǎn)換為RS-485接口電平的任務(wù),本轉(zhuǎn)換器采用MAX3485作為RS-485接口芯片,該芯片的主要技術(shù)參數(shù)為:工作電源為3~3.6V,工作電流1mA,數(shù)據(jù)傳輸率為12Mbps。當(dāng)驅(qū)動(dòng)60Ω負(fù)載時(shí)(RS-485網(wǎng)絡(luò)終端匹配電阻120Ω的并聯(lián)值)峰值電流可達(dá)50mA。<BR>防雷保護(hù)<BR>通信線路中瞬態(tài)電壓干擾是威脅通信接口安全的主要因素,而雷電波保護(hù)是必不可少的,為保證通信網(wǎng)絡(luò)的安全,這里采用瞬態(tài)電壓抑制器TVS作為保護(hù)器件,該器件可承受高達(dá)數(shù)KV的脈沖電壓和數(shù)十至數(shù)百安培的浪涌電流,瞬間承受功率高達(dá)數(shù)千瓦,本轉(zhuǎn)換器在RS-485的發(fā)送端及接收端采用了3只TVS,分別對(duì)線路之間和線路對(duì)地間的瞬態(tài)電壓干擾進(jìn)行抑制,可避免雷電對(duì)通信網(wǎng)絡(luò)的破壞。<BR>單片機(jī)<BR>本轉(zhuǎn)換器采用Microchip公司的微功耗小體積單片機(jī)PIC12C508A,其主要參數(shù)為;工作電壓2.7〜5V,工作電流小于1mA,6根I/O口線,512字節(jié)ROM。PIC12C058A完成的功能是讀取波特率設(shè)置開(kāi)關(guān)的數(shù)值及串行數(shù)據(jù)位數(shù)開(kāi)關(guān)的狀態(tài),從而根據(jù)開(kāi)關(guān)的數(shù)值或狀態(tài)完成收發(fā)數(shù)據(jù)的自動(dòng)轉(zhuǎn)換控制功能,各引腳功能如下:GP0、GP1、GP4、GP5四個(gè)引腳設(shè)定對(duì)應(yīng)于16種常用的波特率(300、600、1200至38.4kbps等8種以及900、1800至115.4kbps等8種)的延時(shí)時(shí)間,GP3對(duì)應(yīng)于10位或11位串行數(shù)據(jù)格式,GP2為TXD輸入,用來(lái)檢測(cè)UART何時(shí)發(fā)送和停止發(fā)送數(shù)據(jù),GP1為復(fù)用輸出引腳用于控制MAX3485的接收使能,GP0也為復(fù)用輸出引腳,用來(lái)控制MAX3485的發(fā)送使能。<BR>本轉(zhuǎn)換器使用的最大電流為各芯片峰值工作電流之和,即:<BR>IΣ=0.12+2.0+50.0+1.0=53.12mA,此電流小于DC-DC轉(zhuǎn)換器的最小輸出電流54.4mA,從而證明了串口竊電技術(shù)是完全可行的。<BR>軟件設(shè)計(jì)<BR>單片機(jī)軟件部分主要完成功能如下:上電后單片機(jī)將所有的I/O設(shè)為輸入,并讀入I/O狀態(tài)且保存到寄存器中,接下來(lái)將GP0和GP1設(shè)定為輸出狀態(tài)并將其設(shè)為低電平輸出,即RS-485口處于禁止發(fā)送接收允許狀態(tài),CPU根據(jù)數(shù)據(jù)開(kāi)關(guān)的設(shè)定值,確定出用戶設(shè)定的波特率和串行數(shù)據(jù)格式,從而預(yù)置內(nèi)部的延時(shí)設(shè)定,CPU檢測(cè)到UART開(kāi)始通信后,打開(kāi)發(fā)送使能,經(jīng)內(nèi)部預(yù)置延時(shí)后開(kāi)始在一個(gè)位寬時(shí)間內(nèi)檢測(cè)是否有下一個(gè)起始位到來(lái),如檢測(cè)到則重新延時(shí)等待,否則關(guān)閉發(fā)送使能,結(jié)束當(dāng)前通信,重新檢測(cè)UART起始位。<BR>結(jié)束語(yǔ)<BR>本轉(zhuǎn)換器采用串口竊電技術(shù)而省略了外部電源,采用新型低電壓、低功耗器件設(shè)計(jì),一方面支持了串口竊電技術(shù),另一方面又簡(jiǎn)化了電路設(shè)計(jì),降低了成本,同時(shí)該轉(zhuǎn)換器還具有很強(qiáng)的防雷電沖擊能力使得本轉(zhuǎn)換器具有很高的實(shí)用價(jià)值,在擴(kuò)展基于RS-485總線的通信網(wǎng)絡(luò)分支及延伸RS-232總線通信距離方面均可得到廣泛的應(yīng)用。</P></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=opt><A title=查看該分類中所有文章
href="http://hi.baidu.com/xjmbs/blog/category/¼¼Êõ½»Á÷">類別:技術(shù)交流</A> | <A
title=將此文章添加到百度搜藏
onclick="window.open('http://cang.baidu.com/do/add?it='+encodeURIComponent('RS-232接口轉(zhuǎn)換為RS-485接口的智能轉(zhuǎn)換器'+'_百度空間')+'&iu='+encodeURIComponent(location.href)+'&fr=sp#nw=1','_s','scrollbars=no,width=600,height=450,right=75,top=20,status=no,resizable=yes'); return false;"
href="http://cang.baidu.com/do/add" target=_blank>添加到搜藏</A> | 瀏覽(<SPAN
id=result></SPAN>) </DIV>
<DIV class=line></DIV>
<SCRIPT language=JavaScript>
allkey=allkey+"f3f14f2c10fdb1ec8a139920_937ac909cb498383d1581bde_";
</SCRIPT>
<DIV id=in_comment><A name=comment></A>
<DIV class=tit>網(wǎng)友評(píng)論:</DIV>
<SCRIPT>
function writecmt(type,id,cmtname,cmturl,cmttime){
var html1="";
if(type==1){
if(cmturl==""){
html1="<a name='"+id+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span> ";
}else{
html1="<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span> ";
}
}else{
if(cmtname=="匿名網(wǎng)友"){
if(cmturl==""){
html1="<a name='"+id+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span> ";
}else{
html1="<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span>";
}
}else{
if(cmturl==""){
html1="<div class='f14' style='display:inline'>網(wǎng)友:<a name='"+id+"'>"+cmtname+"</a> - <span class=\"date\">"+cmttime+"</span></div>";
}else{
html1="<div class='f14' style='display:inline'>網(wǎng)友:<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a> - <span class=\"date\">"+cmttime+"</span></div>";
}
}
}
document.write(html1);
}
</SCRIPT>
<DIV id=page></DIV></DIV>
<DIV id=in_send>
<FORM id=popFormSubmit name=form1 onsubmit="return checkcmtform()"
action=/xjmbs/commit method=post><INPUT type=hidden value=8 name=ct> <INPUT
type=hidden value=1 name=cm> <INPUT type=hidden value=937ac909cb498383d1581bde
name=spBlogID>
<SCRIPT language=JavaScript>
document.write("<input type='hidden' name='spRefURL' value='"+window.location.href+"'>");
</SCRIPT>
<DIV class=tit>發(fā)表評(píng)論:</DIV>
<TABLE cellSpacing=5 cellPadding=0 width=620 border=0>
<TBODY>
<TR>
<TD class=f14>姓 名:</TD>
<TD><INPUT id=spBlogCmtor style="WIDTH: 220px" onfocus=hidErr(1);
maxLength=49 onchange="checkname('spBlogCmtor')" name=spBlogCmtor>
<DIV id=nmerror style="DISPLAY: none">*姓名最長(zhǎng)為50字節(jié)</DIV></TD></TR>
<TR id=1_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=1_err_con></DIV></TD></TR>
<TR>
<TD class=f14>網(wǎng)址或郵箱:</TD>
<TD><INPUT id=spBlogCmtURL style="WIDTH: 360px" onfocus=hidErr(2);
maxLength=128 onchange="checkeandu('spBlogCmtURL')" name=spBlogCmtURL>
(選填)</TD>
<SCRIPT>
G("spBlogCmtor").value="";
G("spBlogCmtURL").value="";
</SCRIPT>
</TR>
<TR id=2_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=2_err_con></DIV></TD></TR>
<TR>
<TD class=f14 vAlign=top>內(nèi) 容:</TD>
<TD><TEXTAREA id=spBlogCmtText style="WIDTH: 520px; HEIGHT: 155px" onfocus=showverkey();hidErr(3); name=spBlogCmtText></TEXTAREA>
<SCRIPT>
G("spBlogCmtor").value=G("spBlogCmtor").defaultValue;
G("spBlogCmtText").value="";
</SCRIPT>
</TD></TR>
<TR id=3_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=3_err_con></DIV></TD></TR>
<TR id=vercode>
<TD class=f14 vAlign=top>驗(yàn)證碼:</TD>
<TD vAlign=top><INPUT type=hidden
value=16FB8B8937EB0ACADF883BC301015BC0B835B8CAEB8FEDE3A3B3B25E67AB5D8999B03F9FFDCE75C2AC39D2ADDB9DA72F0DD091A8C6904D11A49057516F594EBD
name=spVcode> <INPUT maxLength=4 size=6 name=spVerifyKey
autocomplete="off">請(qǐng)輸入下圖中的四位驗(yàn)證碼,字母不區(qū)分大小寫。<BR>
<SCRIPT language=JavaScript>
var imgsrc="http://post.baidu.com/cgi-bin/genimg?16FB8B8937EB0ACADF883BC301015BC0B835B8CAEB8FEDE3A3B3B25E67AB5D8999B03F9FFDCE75C2AC39D2ADDB9DA72F0DD091A8C6904D11A49057516F594EBD";
document.write("<img id='verifypic' src='"+imgsrc+"' width='120' height='40'>");
function newverifypic(){
document.getElementById("verifypic").src = imgsrc +"&t="+ Math.random();
}
</SCRIPT>
<A title=看不清左邊的字符 href="javascript:newverifypic();">看不清?</A> </TD></TR>
<TR>
<TD class=f14 vAlign=top> </TD>
<TD class=f14
vAlign=top><INPUT type=submit value=發(fā)表評(píng)論 name=btn_ok></TD></TR></TBODY></TABLE></FORM></DIV><BR></DIV>
<TABLE height=8 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=modbl width=7> </TD>
<TD class=modbc> </TD>
<TD class=modbr width=7> </TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV>
<SCRIPT language=javascript>
<!--
var hstr="/xjmbs/brwstat?key1=1";
document.write("<script src='"+hstr+"&key2="+allkey+"'><\/script>");
//-->
</SCRIPT>
<BR>
<CENTER>
<DIV id=ft>©2007 Baidu</DIV></CENTER>
<SCRIPT>
if(document.getElementById("m_blog"))
{
var imgarray = document.getElementById("m_blog").getElementsByTagName('img');
var imgw = document.getElementById("m_blog").offsetWidth;
imgw =imgw-40;
for(var i=0; i<imgarray.length; i++){
if(imgarray[i].className=="blogimg" && imgarray[i].width>=imgw) imgarray[i].width=imgw;
}
}
</SCRIPT>
</CENTER><IMG style="DISPLAY: none" src=""> </BODY></HTML>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -