PIC单片机范文10篇

时间:2023-03-19 08:21:14

PIC单片机范文篇1

Microchip公司PIC系列的单片机为设计高性能、低功耗的单片机系统提供了很好的解决方案。下面从低功耗设计方法及具体例子来介绍PIC单片机低功耗应用。

1低功耗设计方法

为使系统工作在低功耗状态,必须正确设置单片机的配置及工作方式。下面结合最常用的PIC12、PIC16等单片机介绍低功耗系统的设计方法。

1.1基本设计方法

有许多技术可以降低系统的功耗,最常用的是Sleep模式。程序执行一条SLEEP指令,便进入了休眠(Sleep)模式。要Sleep模式下,晶振停止振荡,而此时单片机在3V电源条件下,只有1μA的电流。系统工作时,单片机可以采用看门狗或外部事件周期性地唤醒单片机,利用电子开关为系统提供电源,以减少系统待机功耗,延长电池使用时间。

单片机的工作频率和功耗的关系也很大,频率越高,功耗越大。在采用32kHz晶振、3V工作电压时,PIC12、PIC16等系列单片机的典型工作电流只有15μA;而采用4MHz晶振、5V工作电压时,单片机的典型工作电流达到几mA。在许多低功耗的场合,采用低速晶振实现低功耗非常有效。如果单片机采用RC振荡,还可以通过I/O口的操作改变振荡电阻,从而改变单片机工作频率,达到节能的目的。如图1所示,1个I/O引脚可以在等待状态下将并联电阻R1去掉,降低单片机工作频率。当单片机需要工作时,可将I/O引脚设置为输出并输出高电平,从而提高振荡频率。

1.2振荡电路设计

在单片机系统设计中,振荡电路的设计是十分重要的一个环节。PIC系列单片机的典型振荡电路如图2所示。

一般情况下,设计人员按照厂家给出的参数表进行选择。如果系统能够正常工作,也就不再进行改进了。其实,这是不合适的。因为Microchip的单片机根据型号和版本的不同,工作电压在直流2.5~5.5V的范围内,汽车级温度可以在-40~-125℃范围内,而参数表中只给出了有限的几种情况,实际环境参数会对振荡电路的性能产生很大的影响。如高温、低电压可减小振荡环路增益,而从降低振荡频率或者难以启动;低温、高电压可以使环路增益变大,从而使晶振过驱动,产生损坏的潜在危险或者振荡电路工作的高次谐波频率上升,加大系统功耗。因此,如何正确设计系统的振荡电路十分必要。对于PIC系列单片机,一般的设计步骤如下:

①选择晶振。根据系统需要的振荡频率进行晶振的选择。此外,晶振的工作温度和频率稳定度也是十分重要的指标。

②选择振荡器类型。PIC系列单片机有RC、LP、XT、HS等振荡模式。除RC模式外,振荡模式的选择实际上就是环路增益的选择。低增益对应低振荡频率,高增益对应高振荡频率。一般根据实际需要的工作频率可参考数据手册来选择。

③选择C1、C2。理想的情况是,保证系统在高温和最低工作电压下能够正常工作,使得电容在数据手册推荐的范围内最小。同时选择C2比C1大一些以加大相移,使其有利于振荡电路的上电启动。

④选择Rs。在以上参数都已经选定后需要决定Rs的大小。简单的办法是让系统工作在最低温度和最大电压情况下,此时得到的应该是时钟电路最大输出幅度。用示波器观察引脚OSC2的输出波形(注意,示波器的探头将给电路引入一个电容,一般为几pF),如果发现正弦波的峰(接收Vdd处)和谷(接收Vss处)被削平或压扁,说明驱动过载,需要在OSC2和C2间加入1个电阻Rs,一般1kΩ左右或小于1kΩ。Rs不宜过大,过大将使得输入和输出产生隔离,从而产生较大的噪声。当发现需要一个较大的Rs才能消除过驱动时,可以增加负载电容C2来补偿。C2一般选择在15~33pF之间。

系统振荡电路的设计对系统的稳定性、功耗等影响很大。一般情况下,系统从Sleep状态下唤醒时,振荡电路最难启动(尤其系统工作在高温、低压、低频的情况下)。此时,电阻Rs有利于振荡电路的启动,因为廉价的碳膜电阻容易产生白噪声,从而帮助电路起振。此外,选择C2稍大于C1以增大相移,也有利于电路起振。

2具体应用例子

2.1系统组成及框图

系统主要由PIC单片机、双音频解码拔号电路、语音集成电路、接口电路、Vcc电源控制电路、射频发射电路和EEPROM组成,可完成对家用电器的控制和对报警求援语音信息的自动传送,如图3所示。

2.2控制器工作方式

*当与控制器相串闻的电话机(以下称为本地机)处于摘机时,电话线输入电压发生变化,引起CD40106的2脚输出电平变化,输入到CPU的RB0端口产生中断信号,唤醒CPU,控制器进入工作状态。通过本地机的拔号盘对控制器的各种功能进行控制。如控制电视、音响、照明灯等电器电源的开关。

*当控制器接收到振铃信号时,CD40106的4脚输出电平变化,输入CPU的RB6端口产生中断信号,唤醒CPU进入工作状态,并对振铃信号进行计数;达到设定铃声数后,使控制器进入电话接收状态,开始接收远程传输DTMF信号,经MT8880解调得到的信号通过IRQ向单片机发出中断信号,将数据存入寄存器,经CPU运行,对控制器的各种功能进行控制。

*当控制器作为报警器,并处于警备状态时,报警探头时刻检测防范区域的情况;当探头向控制器发出警情信息,输入CPU的RB5中断产生信号,控制器进入工作状态,从EEPROM芯片读出预先设置的报警电话号码,经MT8880转换为DTMF信号,自动拨号,以语音形式将信息传送给用户或直接报警。

2.3应用电路

(1)电话接口电路

电话机与控制器采用控制器在前,电话机在后的串联方式,可实现电话机对控制器各种功能的控制。接口电路由过压保护电路、极性转换电路和中断请求电路组成,如图4所示。

①过压保护电路。在电话线回路上加入了一个压敏电阻R,它的作用是当它两端的电压大于其工作电压时呈短路状态,从而保护后级电路免受高压危害。当加到它的两端的电压小于其工作电压,压敏电阻呈开路状态,对后级电路的工作没有任何影响。在本设计中,压敏电阻的工作电压为220V

②极性转换电路。由于在电话线上传输的是交流信号,为了使信号的极性固定,在电路中加入电桥,进行全波整流。

③中断请求电路。为延长电池工作时间,CPU在待机时处于休眠的省电状态,在实现远程电话机和本地机对控制器功能控制时,由中断请求电路将CPU唤醒。

(2)语音电路

语音电路如图5所示。它以ISD4000语音芯片为核心,主要是存储报警语音,输出经功率放大后传送到电话线上。

(3)MT8880与PIC单片机的接口电路

MT8880是Mitel公司的DTMF收发器,具有功能强、功耗低、工作稳定、可靠等性高优点,因此在DTMF信号调制的场合得到了广泛的应用。MT8880与PIC单片机的接口电路如图6所示。

①MT8880与单片机的接口电路。D0~D3为4根数据线,MT8880对经过前置处理的DTMF信号进行解调,将解调得的信号存入片内寄存器中,并通过IRQ向单片机发出中断信号。单片机相应中断请求后,在R、W、RS0、RD的控制下,通过D0~D3读出解调出的数据。

②DTMF信号放大电路。当微处理器将要发送的DTMF数据写入MT8880相应的寄存器时,MT8880从TONE引脚发出DTMF信号,信号经过放大电路放大后,送往变压器进行电压变化。

3程序设计

程序在运行时:①为电器控制器,若是远程电话机对控制器进行操作,是根据电话的振铃声数来判断;若本地电话机对控制器进行操作,是根据本地电话机的摘机情况来判断。②为报警器,报警探头随时检测到警情并发出信号给控制器,而控制器则是根据用户的设置情况,是处于警备与否来判断是否拔出报警电话。图7是程序流程图。下面主要介绍初始化程序、MT8880设置子程序和DTMF信号发送以及接收子程序。

;初始化寄存器

F0EQU0H

RTCCEQU01H

PCEQU02H

STATUSEQU03H

FSREQU04H

RAEQU05H

RBEQU06H

RCEQU07H

RDEQU08H

REEQU09H

TRISAEQU85H

TRISBEQU86H

TRISCEQU87H

TRISDEQU88H

TRISEEQU89H

DAIFSEQU0X50;待发送的数据放在50开始的区域

RECEEQU0X21

SENDEQU0X22

DAIJSEQU0X40;数据暂存在从40H开始的区域

;MT8880设置子程序

;置MT8880为DTMF接收状态

R8880:MOVLW0X0D

MOVWFREVE;写控制寄存器A(接收模式)

MOVLW0X00

MOVWFREVE;写控制寄存器B(突发模式)

REIURN

;置MT8880为DTMF接收状态

T8880:MOVLW0X0F

MOVWFSEND;写控制寄存器A(发送模式)

MOVLW0X00

MOVWFSEND;写控制寄存器B(突发模式)

RETURN

;DTMF发送子程序

TELEPHON:CALLT8880;设置为发送模式

LOOP:MOVFDAIFS,0;拔号

MOVLWSEND

INCFDAIFS,1;检查是否发送结束

LL1:BTFSSSEND,1

GOTOLL1;已经发送完毕

CALLDELAY200;延时200ms

DECFDATALENGTH

GOTOLOOP;发送完毕

RETURN

;DTMF接收子程序

RECEIVE:CALLR8880;设置为接收模式

RWT:MOVFDJIJS,0

MOVLWREVE

BTFSSREVE,2

GOTORWT;查询是否收到数据

MOVLWREVE

ANDLW0XOF

MOVFREVE

INCFDAIJS,1

DECEDATALENGTH

RETURN

PIC单片机范文篇2

关键词Microchip单片机功耗编程

由美国Microchip公司生产的PIC系列单片机,由于其超小型、低功耗、低成本、多品种等特点,已广泛应用于工业控制、仪器、仪表、通信、家电、玩具等领域,本文总结了作者在PIC单片机开发过程中的一些经验、技巧,供同行参考。

1怎样进一步降低功耗

功耗,在电池供电的仪器仪表中是一个重要的考虑因素。PIC16C××系列单片机本身的功耗较低(在5V,4MHz振荡频率时工作电流小于2mA)。为进一步降低功耗,在保证满足工作要求的前提下,可采用降低工作频率的方法,工作频率的下降可大大降低功耗(如PIC16C××在3V,32kHz下工作,其电流可减小到15μA),但较低的工作频率可能导致部分子程序(如数学计算)需占用较多的时间。在这种情况下,当单片机的振荡方式采用RC电路形式时,可以采用中途提高工作频率的办法来解决。

具体做法是在闲置的一个I/O脚(如RB1)和OSC1管脚之间跨接一电阻(R1),如图1所示。低速状态置RB1=0。需进行快速运算时先置RB1=1,由于充电时,电容电压上升得快,工作频率增高,运算时间减少,运算结束又置RB1=0,进入低速、低功耗状态。工作频率的变化量依R1的阻值而定(注意R1不能选得太小,以防振荡电路不起振,一般选取大于5kΩ)。

另外,进一步降低功耗可充分利用“sleep”指令。执行“sleep”指令,机器处于睡眠状态,功耗为几个微安。程序不仅可在待命状态使用“sleep”指令来等待事件,也可在延时程序里使用(见例1、例2)。在延时程序中使用“sleep”指令降低功耗是一个方面,同时,即使是关中断状态,PortB端口电平的变化可唤醒“sleep”,提前结束延时程序。这一点在一些应用场合特别有用。同时注意在使用“sleep”时要处理好与WDT、中断的关系。

图1提高工作频率的方法

例1(用Mplab-C编写)例2(用Masm编写)

Delay()Delay

{;此行可加开关中断指令

/*此行可加开关中断指令*/movlw.10

for(i=0;i<=10;i++)movwfCounter

SLEEP();Loop1

}Sleep

decfszCounter

gotoLoop1

return

2注意INTCON中的RBIF位

INTCON中的各中断允许位对中断状态位并无影响。当PORTB配置成输入方式时,RB<7:4>引脚输入在每个读操作周期被抽样并与旧的锁存值比较,一旦不同就产生一个高电平,置RBIF=1。在开RB中断前,也许RBIF已置“1”,所以在开RB中断时应先清RBIF位,以免受RBIF原值的影响,同时在中断处理完成后最好是清RBIF位。

3用Mplab-C高级语言写PIC单片机程序时要注意的问题

3.1程序中嵌入汇编指令时注意书写格式见例3。

例3

…………

while(1){#asmwhile(1){

……#asm/*应另起一行*/

#endasm……

}/*不能正确编译*/#endasm

……}/*编译通过*/

……

当内嵌汇编指令时,从“#asm”到“endasm”每条指令都必须各占一行,否则编译时会出错。

3.2加法、乘法的最安全的表示方法见例4。

例4

#include<16c71.h>

#include

unsignedinta,b;

unsignedlongc;

voidmain()

{a=200;

b=2;

c=a*b;

}/*得不到正确的结果c=400*/

原因是Mplab-C以8×8乘法方式来编译c=a*b,返回单字节结果给c,结果的溢出被忽略。改上例中的“c=a*b;”表达式为“c=a;c=c*b;”,最为安全(对加法的处理同上)。

3.3了解乘除法函数对寄存器的占用

由于PIC片内RAM仅几十个字节,空间特别宝贵,而Mplab-C编译器对RAM地址具有不释放性,即一个变量使用的地址不能再分配给其它变量。如RAM空间不能满足太多变量的要求,一些变量只能由用户强制分配相同的RAM空间交替使用。而Mplab-C中的乘除法函数需借用RAM空间来存放中间结果,所以如果乘除法函数占用的RAM与用户变量的地址重叠时,就会导致出现不可预测的结果。如果C程序中用到乘除法运算,最好先通过程序机器码的反汇编代码(包含在生成的LST文件中)查看乘除法占用地址是否与其它变量地址有冲突,以免程序跑飞。Mplab-C手册并没有给出其乘除法函数对具体RAM地址的占用情况。例5是乘法函数对0×13、0×14、0×19、0×1A地址占用情况。

例5

部分反汇编代码

#include01A7081FMOVF1F,W

#include01A80093MOVWF13

;借用

unsignedlongValue@0x101A90820MOVF20,W

charXm@0x2d;01AA0094MOVWF14

;借用

voidmain()01AB082DMOVF2D,W

{Value=20;01AC0099MOVWF19

;借用

Xm=40;01AD019ACLRF1A

;借用

Value=Value*Xm01AE235FCALL035Fh

;调用乘法函数

……01AF1283BCF03,5

}01B0009FMOVWF1F

;返回结果低字节

01B10804MOVF04,W

01B200A0MOVWF20

;返回结果高字节

4对芯片重复编程

对无硬件仿真器的用户,总是选用带EPROM的芯片来调试程序。每更改一次程序,都是将原来的内容先擦除,再编程,其过程浪费了相当多的时间,又缩短了芯片的使用寿命。如果后一次编程的结果较前一次,仅是对应的机器码字节的相同位由“1”变成“0”,就可在前一次编程芯片上再次写入数据,而不必擦除原片内容。

在程序的调试过程中,经常遇到常数的调整,如常数的改变能保证对应位由“1”变“0”,都可在原片内容的基础继续编程。另外,由于指令“NOP”对应的机器码为“00”,调试过程中指令的删除,先用“NOP”指令替代,编译后也可在原片内容上继续编程。

另外,在对带EPROM的芯片编程时,特别注意程序保密状态位。厂家对新一代带EPROM芯片的保密状态位已由原来的EPROM可擦型改为了熔丝型,一旦程序代码保密熔丝编程为“0”,可重复编程的EPROM芯片就无法再次编程了。使用时应注意这点,以免造成不必要的浪费(Microchip资料并未对此做出说明)。

参考文献

PIC单片机范文篇3

关键词Microchip单片机功耗编程

--------------------------------------------------------------------------------

由美国Microchip公司生产的PIC系列单片机,由于其超小型、低功耗、低成本、多品种等特点,已广泛应用于工业控制、仪器、仪表、通信、家电、玩具等领域,本文总结了作者在PIC单片机开发过程中的一些经验、技巧,供同行参考。

1怎样进一步降低功耗

功耗,在电池供电的仪器仪表中是一个重要的考虑因素。PIC16C××系列单片机本身的功耗较低(在5V,4MHz振荡频率时工作电流小于2mA)。为进一步降低功耗,在保证满足工作要求的前提下,可采用降低工作频率的方法,工作频率的下降可大大降低功耗(如PIC16C××在3V,32kHz下工作,其电流可减小到15μA),但较低的工作频率可能导致部分子程序(如数学计算)需占用较多的时间。在这种情况下,当单片机的振荡方式采用RC电路形式时,可以采用中途提高工作频率的办法来解决。

具体做法是在闲置的一个I/O脚(如RB1)和OSC1管脚之间跨接一电阻(R1),如图1所示。低速状态置RB1=0。需进行快速运算时先置RB1=1,由于充电时,电容电压上升得快,工作频率增高,运算时间减少,运算结束又置RB1=0,进入低速、低功耗状态。工作频率的变化量依R1的阻值而定(注意R1不能选得太小,以防振荡电路不起振,一般选取大于5kΩ)。

另外,进一步降低功耗可充分利用“sleep”指令。执行“sleep”指令,机器处于睡眠状态,功耗为几个微安。程序不仅可在待命状态使用“sleep”指令来等待事件,也可在延时程序里使用(见例1、例2)。在延时程序中使用“sleep”指令降低功耗是一个方面,同时,即使是关中断状态,PortB端口电平的变化可唤醒“sleep”,提前结束延时程序。这一点在一些应用场合特别有用。同时注意在使用“sleep”时要处理好与WDT、中断的关系。

图1提高工作频率的方法

例1(用Mplab-C编写)例2(用Masm编写)

Delay()Delay

{;此行可加开关中断指令

/*此行可加开关中断指令*/movlw.10

for(i=0;i<=10;i++)movwfCounter

SLEEP();Loop1

}Sleep

decfszCounter

gotoLoop1

return

2注意INTCON中的RBIF位

INTCON中的各中断允许位对中断状态位并无影响。当PORTB配置成输入方式时,RB<7:4>引脚输入在每个读操作周期被抽样并与旧的锁存值比较,一旦不同就产生一个高电平,置RBIF=1。在开RB中断前,也许RBIF已置“1”,所以在开RB中断时应先清RBIF位,以免受RBIF原值的影响,同时在中断处理完成后最好是清RBIF位。

3用Mplab-C高级语言写PIC单片机程序时要注意的问题

3.1程序中嵌入汇编指令时注意书写格式见例3。

例3

…………

while(1){#asmwhile(1){

……#asm/*应另起一行*/

#endasm……

}/*不能正确编译*/#endasm

……}/*编译通过*/

……

当内嵌汇编指令时,从“#asm”到“endasm”每条指令都必须各占一行,否则编译时会出错。

3.2加法、乘法的最安全的表示方法见例4。

例4

#include<16c71.h>

#include

unsignedinta,b;

unsignedlongc;

voidmain()

{a=200;

b=2;

c=a*b;

}/*得不到正确的结果c=400*/

原因是Mplab-C以8×8乘法方式来编译c=a*b,返回单字节结果给c,结果的溢出被忽略。改上例中的“c=a*b;”表达式为“c=a;c=c*b;”,最为安全(对加法的处理同上)。

.3了解乘除法函数对寄存器的占用

由于PIC片内RAM仅几十个字节,空间特别宝贵,而Mplab-C编译器对RAM地址具有不释放性,即一个变量使用的地址不能再分配给其它变量。如RAM空间不能满足太多变量的要求,一些变量只能由用户强制分配相同的RAM空间交替使用。而Mplab-C中的乘除法函数需借用RAM空间来存放中间结果,所以如果乘除法函数占用的RAM与用户变量的地址重叠时,就会导致出现不可预测的结果。如果C程序中用到乘除法运算,最好先通过程序机器码的反汇编代码(包含在生成的LST文件中)查看乘除法占用地址是否与其它变量地址有冲突,以免程序跑飞。Mplab-C手册并没有给出其乘除法函数对具体RAM地址的占用情况。例5是乘法函数对0×13、0×14、0×19、0×1A地址占用情况。

例5

部分反汇编代码

#include01A7081FMOVF1F,W

#include01A80093MOVWF13

;借用

unsignedlongValue@0x101A90820MOVF20,W

charXm@0x2d;01AA0094MOVWF14

;借用

voidmain()01AB082DMOVF2D,W

{Value=20;01AC0099MOVWF19

;借用

Xm=40;01AD019ACLRF1A

;借用

Value=Value*Xm01AE235FCALL035Fh

;调用乘法函数

……01AF1283BCF03,5

}01B0009FMOVWF1F

;返回结果低字节

01B10804MOVF04,W

01B200A0MOVWF20

;返回结果高字节

4对芯片重复编程

对无硬件仿真器的用户,总是选用带EPROM的芯片来调试程序。每更改一次程序,都是将原来的内容先擦除,再编程,其过程浪费了相当多的时间,又缩短了芯片的使用寿命。如果后一次编程的结果较前一次,仅是对应的机器码字节的相同位由“1”变成“0”,就可在前一次编程芯片上再次写入数据,而不必擦除原片内容。

在程序的调试过程中,经常遇到常数的调整,如常数的改变能保证对应位由“1”变“0”,都可在原片内容的基础继续编程。另外,由于指令“NOP”对应的机器码为“00”,调试过程中指令的删除,先用“NOP”指令替代,编译后也可在原片内容上继续编程。

另外,在对带EPROM的芯片编程时,特别注意程序保密状态位。厂家对新一代带EPROM芯片的保密状态位已由原来的EPROM可擦型改为了熔丝型,一旦程序代码保密熔丝编程为“0”,可重复编程的EPROM芯片就无法再次编程了。使用时应注意这点,以免造成不必要的浪费(Microchip资料并未对此做出说明)。

参考文献

PIC单片机范文篇4

计算机与信息工程学院生产实结

专业通信工程

姓名刘志强

指导教师

班级通信02-8班

成绩______

为期三周的生产实习结束了,与在校期间的工程实践相比,生产实习更多的是将理论应用到了实践中。通过自己的所见所闻真正的对所学的知识有了一个更具体更实质的认识。

在天津的众多外资企业中,韩国三星是个颇具规模的大型企业集团单就其电子业在天津乃至全国都占有很重要的地位。原创:三星电机是隶属于三星集团的一家以生产移动通信、电脑、卫星通信等电子产品所需要的核心部件为主的大型企业公司。在三星电机实习的一段时间里,我深刻地感受到一个制度完善的大型企业,对个人能力的提高是多么的重要。刚开始了解这家公司还是通过在网上找到的一些资料,后来听一位前辈介绍,三星电机现在已经有了很大的规模除本公司外还新建了第二法人,而令我想不到的是就连很有影响的三星电子其实他们所生产的手机有百分之八十的部件都是三星电机提供的,而且三星电机所承揽的还都是一些技术要求很高的核心部件。

三星电机对像我这样的应届毕业生其实有很高的要求,虽然在学校里我们都学习过单片机,但真到用的时候才知道自己跟公司的要求有多大差距。不过好在在学校的工程实践中有过一个月的单片机的短期强化性的学习。其实在学校里我们所学的也只不过是最简单的单片机的原理及应用,只能算是入门教育,而单片机在实际中的应用是非常广的。

这段时间里我对单片机有了个更为全面具体的认识,单片机就是CPU、RAM、ROM、输入/输出等设备集中在同一块集成电路芯片中,价格上也并不昂贵,我们刚开始接触单片机时就经常讲8051,8031,80C51什么的,其实MSC51是美国INTEL公司生产的一系列单片机的总称,其中8051是最早最典型的产品。而80C51是这几年在我国非常流行的单片机是由美国ATMEL公司开发生产的。

以前对单片机的中断系统一直很不理解,其实把理论的东西引入到生活中的例子里就好理解了。比如在学习时,突然电话铃响了,这时我就要放下现在的学习去接电话,交谈后放下电话继续学习,而这一过程就是生活中的“中断”现象,即正常的工作被外部的事件打断了。能够引起中断的我们称之为中断源,单片机中有很多可以引起中断的事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。中断是现代计算机必须具备的重要功能,计算机暂时停止原程序转而为外部设备服务(执行中断服务程序),并在服务完成后自动返回原程序。中断可以提高CPU的工作效率:计算机有了中断功能后,CPU和外设可同步工作;还有就是便于实时处理:在实时控制系统中,被控制的各个实时参量,越限数据和故障信息任何时刻可向CPU发出中断申请,要求CPU及时处理,这样CPU就可以在最短的时间内处理现场的情况,对系统实施正确调节和控制;此外中断还便于故障处理,提高系统的稳定性:计算机运行过程中的各种异常,如电源断电、系统的失常和故障可以通过中断立刻通知CPU,做出应急处理。中断事件有可能多个同时发生,也就存在个优先级的问题。但这些都是系统的合理和优化所必须的。

公司里提到最多的是PIC单片机,PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,原创:使用起来也不方便。PIC单片机是靠发展多个系列产品型号来满足不同层次用户的需要,其系列从低到高有几十个型号。其中PIC12C508单片机仅有8个引脚,是世界上最小的单片机,价格也很便宜。PIC8位单片机共有三个级别,有相对应的指令集。其系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成即标号;操作码助记符;操作数1,操作数2;注释。再有PIC的精简指令使其执行效率大为提高,其开发环境优越、保密性能好而且还自带看门狗定时器可以用来提高程序运行的可靠性。

PIC单片机范文篇5

Abstract:Thistextintroducedthedesignprocessofadrybatterychargerforwithmachineofsinglechipmicrocomputercontrolling.Thatcharger''''scoreisbaseonMicrochipcompany''''ssinglechipmicrocomputerofPIC12F683,specialemulationelectriccircuitmoldofPIC12F683piece,highaccuracyA/Dconversion,andsuper-speedPWMetc.functionmakeuseofingrefreshinginthecontrol,detailedlyrelatingitshardwarewithsoftwareofsingleslice.

KeyWords:Alkalinedrybattery

前言

随着便携式设备不断小型化、轻量化和高性能化,作为其电源的二次电池的使用率日益提高。

如今,废旧电池的处理已日益成为环境保护部门的一项重要工作,众所周知,废电池会对我们的自然环境造成很大的污染,而可对碱性干电池充电的充电器的使用,会大大减少废旧电池的产生量,因为普通电池如果质量合格,可以用该充电器进行反复充电,且充电时间少节省耗电量。

经过上个世纪的发展,电池及其保护电路技术日趋成熟,如今应用在很多应用领域,采用干电池作为电源的产品越来越多,这一方面要归功于干电池的优良特性,另一方面也是由于采用单片机控制的干电池可以降低系统复杂度和综合成本。

本文所用的单片机为美国Microchip所生产的PIC系列的8位单片机。它是业内首先采用RISC结构的高性价比嵌入式控制器,其高速度,低电压工作,低功耗,强大驱动能力,低价OTP技术,体积小巧等都体现了单片机工业的新趋势。PIC单片机从覆盖市场的角度出发,发展出三个层次系列多种型号的产品来满足不同的产品设计需求。

PIC单片机总线结构采取数据总线和指令线分离独立的哈佛(Harvard)结构,具有很高的流水处理速度。它的精简指令集结构(RISC)基本上使它所有得知另都是单字节,因此其程序空间的效率比一般单片机高很多。PIC单片机已经是世界上最具有影响力的嵌入式微控制器之一。

1.3充电技术概述

在可充化学电池或物理电池的运用过程中,充电器是其成功运用的重要装置,所以可充电池一出世,充电器便是个关键问题,因为充电器的好坏直接影响到电池的两个重要技术指标:1)可充电池的使用容量;2)可充电池的循环使用次数,即使用寿命。然而直到六十年代以前充电器技术并没有得到长足发展,普遍采用的方法主要是恒流或恒压充电方法,并且其充电效果是不得不承认的现实。这种状况直到六十年代Mascc博士基于最低出气率可充曲线

恒流充电时其起始充电电流总是低于电池的可接受能力,造成充电效率低,充电时间长;而在充电后期,最终的充电电流又总是高于电池可接受的程度,因而电池内部气体析出率不断增加,到充电结束时,所有充电电流全部供给气体析出,电池内部电压迅速增加,电池温度也随之迅速上升,造成每次充电电极上都有活性物质脱落,从而大大降低了电池的寿命。

限压充电则是在充电初期,电池电压与充电电压相差太大致使充电电流过大,而随时间并不按指数规律下降(常偏离制定曲线)。

后来,根据Mascc曲线,又提出了所谓的两段式,三段式或更多段式充电。所谓两段式充电指首先对电池进行恒流或恒压充电,当电池电压达到一定程度,然后对电池进行涓流充电;所谓三段式一般是首先对电池进行恒流充电,待电池电压达到电压阀值后转化为第二阶段,即所谓限压充电阶段,当充电电流小到某种程度后转化为第三阶段,即涓流充电。

综上所述尽管已经有了多种充电方法,而且也有一定的效果,然而大多忽略了一个重要事实,即充电电池并不是工作于理想状态,每个电池都有自己独特的个性,确切地说每个充电电池都有自己有别于其它甚至是同类电池的充放电曲线,该曲线甚至在充电过程中还是动态变化的,这就意味着好的充电控制模式应该是变化的,而且应该与电池的充放电曲线变化一致才是最佳的。事实上,每个电池在充电的任意时刻总存在一个最佳的充电电流和充电模式的。在判别电池是否充足电方面,目前有两种标准算法,通常称为"负电压法"(-ΔV)和"温度法"(ΔT)。要使用这两种算法,充电电流必须不小于0.2C,这样才能够让电池产生显著的温升或者电压降,从而判别充电效果。

第2章MPLAB集成开发环境软件包

Microchip公司为PIC系列单片机配备了功能强大的的软件集成开发环境MPLAB,可以通过网上下载和光盘发行两种方式为用户免费提供。使能在自己的微机系统上对PIC系列单片机进行程序的创建,录入,编辑以及汇编,甚至还能实现程序的模拟运行和动态调试之类的虚拟实战演练,并且调试的方式可以采用连续运行,单步运行,自动单步运行,设置断点运行等多种运行方式。MPLAB的功能非常丰富。

2.1MPLAB软件介绍

MPLAB是一个集成了多种单片机应用开发工具软件与一体的,功能完备的软件包。其中的5种工具软件简要介绍如下:

(1)ProjectManager(工程项目管理器)

工程项目管理器是MPLAB的核心部分,用于创建和管理工程项目,为开发人员提供自动化程度高,操作简便的符号化(屏幕上的指令,指令地址,常数,变量,寄存器等均用表义性和可读性很强的符号代表和表识)调试工作平台。

(2)MPLABEditor(源程序编辑器)

源程序编辑器是一个全屏幕文本编辑器,用于创建和修改汇编语言源程序文件。源程序文件以纯文本格式保存,其文件扩展名为".asm"。

(3)MPASMAssembler(汇编器)

用于将汇编语言源程序文件(.asm)汇编成机器语言目标程序文件(.hex),并负责查找语法错误和格式错误等一些浅层次简单错误。

(4)MPLAB-SIMSoftwareSimulator(软件模拟器)

软件模拟器是一种代替价格较贵的HardwareEmulstor(硬件仿真器)的调试工具,也是一种非实时,非在线的纯软件的调试工具。借助这个在微机系统上运行的工具软件,我们可以不需要任何额外的附加硬件,仅用软件的手段,来模方PIC系列单片机的指令的执行和信号的输入/输出,从而实现对用户自编单片机源程序的模拟运行,功能条适合深层次逻辑错误检查。因此可以说,Microchip公司为学习和应用PIC系列单片机的人们提供了一种虚拟的实战环境。对于单片机初学者来说,不用花钱也可实现边学边练的梦想;对于单片机开发者来说,可以缩短开发周期和降低开发成本。总之,它是一种许多其它型号系列单片机很少配备的,性能价格比极高的程序调试工具。不过他也存在一定的局限性:一它不能模拟PIC16F87X片内少数的功能图书的模块;它是不能帮我们查找目标板上的电路错误;三是他执行速度慢而只能适合调试那些实时性要求不高的程序。

(5)MPLAB-ICDDebugger(在线调试工具ICD的支持程序)

这是一种专门与ICD配合使用的支持程序。ICD是Microchip公司专门为PIC16F87X摄制的一种廉价在线调试工具套件。另外,还包含一些其它软件。例如:程序模块连接器,库程序管理器,C语言编译器,硬件在线仿真器的支持程序,目标程序烧录器的支持程序,运行于DOS操作系统下的汇编器等等。

3.1关于干电池的充电器

我们平常所用的可进行充电的电池大多都为镍铬充电电池,一般认为干电池是不可充的。但是只要我们根据干电池的特点对它进行必要的控制,干电池也是可重复进行充电的,不仅节约了资源,也对环境的保护起到一定的作用。

3.1.1碱性干电池的特点

在日常生活中,我们最常用的电池为碱性干电池。在使用过程中,电池电压会逐渐下降,在降低到一定程度后,即使电池容量还有剩余,电池也无法继续使用。因此在电量不足时,干电池便无法使用。

3.1.2可再充干电池的条件

从理论上讲,干电池是不可以充电的。但多年的实验证明,只要掌握以下几点要素,干电池的充电再循环使用是完全可行的。

(1)、电池不要太亏电:端电压不低于1.3V,短路电流不低于300mA,太亏电会使内阻增加,产生热。

(2)、充电电流控制在一定的范围之内。

(3)、选择正规厂家做工好的电池,效果会更好。

3.2硬件电路设计

它的特点是以硬件实体来体现毕业设计的成果。如课题要求用单片机来控制干电池充电器,这个充电器就是毕业设计的成果。

3.2.1设计思想

干电池的充电器非常简单,那些用于镍基电池的充电控制电路、充电算法、电流调节电路和计时器都不再需要。干电池充电器,不论是线性工作方式还是脉冲工作方式,这个电路只需要很少的程序代码,并且可以用简单的模拟电路实现。

PIC单片机范文篇6

关键词:CEBus总线扩频电力线载波

1系统介绍

铁路沿线的各站点都装设有用于照明的大型灯塔。目前对灯塔的控制一般采用集中控制方式,在控制室中使用多个闸刀对灯塔进行一对一控制。因灯塔和控制室常位于铁路两侧,所以施工较困难,而且电缆的投资大,自动化水平也不高。采用电力线载波通信技术,在现成的电力线路上传输数据,无需装设通信线路,也不占用无线通信频道资源,可很好地解决这个问题。但由于电力线上存在高衰减、高噪声、高变形等问题,它不是一个理想的通信媒介。因此要在电力线上实现可靠的载波通信,必须选用基于扩频技术的抗干扰能力强的电力线载波专用Modem芯片来设计铁路灯塔控制系统。

铁路灯塔控制系统由一个主站和若干个子站构成,主站和子站挂接在单相或三上低压电力线上。主站安装于控制室内,子站安装于各灯塔底座的控制箱内。主站和子站以扩频电力线载波通信方式实现数据交换。

系统中站和子站的载波通信网络接口控制器选用美国Intellon公司的SSCP300芯片。该芯片是一个高度集成的电力线收发器和信道存取接口,提供了CEBus(用户电子总线)总线标准。CEBus是EIA(美国电子工业协会)制定并颁布的一种通信标准,目前为EIA-600。CEBus标准是一种应用于网络的开放式通信协议,采用节点到节点的通信方式,数据传输速率为10kbps。CEBbus协议采用ISO/OSI协议中的四层:物理层、数据链路层、网络层和应用层。一个CEBus信息由报头和数据包组成,如图1所示。报头是载波侦听多路访问/冲突检测(CSMA/CDCR)协议的一部分,发送方用监听传输介质中是否有其它发送方占用信道,以获取对传输通道的控制权。CEBus采用扩频载波(SSC)技术,形成“Chirp”扫频信号,对报头采用ASK调制,数据包采用PRK调制,频率范围为100kHz~400kHz。

2硬件结构

2.1主站及子站的硬件结构

主站及子站的硬件结构如图2所示。

主站以PIC16F877单片机为核心,由指示、键盘、RS232接口、在线编程接口、通信接口等单元组成。指示单元用74LS164串/并转换芯片实现,接到PIC16F877单片机的RB5和RB4引脚。键盘单元用74LS165并/串转换芯片实现,接到PIC16F877单片机的RA3、RA4和RA5引脚。主站定义了具有如下功能的按键:(1)一个灯塔的东西南北灯组选择;(2)子站地址选择;(3)锁键盘;(4)运行命令。在线编程接口单元利用PIC16F877单片机的/MCLR、RB3、RB6、RB7四个引脚对CPU的在系统程序及定值进行修改。主站利用MAX202实现标准RS232通信接口,可与上位监控PC机进行数据通信,也可外接Modem来实现远程通信。

子站由PIC16F877单片机、指示、在线编程接口。固态继电器出口、地址编码、通信接口等单元组成。地址编码用于设置本子站的地址码,用一个八位开关与PIC16F877单片机的RD口连接,共有256个编码。每个子站装有四个固态继电器,用于开启和关闭一个灯塔的东西南北四个方向的灯组。

2.2通信接口

主站和子站的通信接口原理如图3所示。

SSCP300网络控制器提供了一个与SPI兼容的主处理器接口,将PIC16F877的RC3(SCK)、RC4(SDO)、RC5(SDI)引脚定义用于SPI串行通信,分别与SSCP300的SCLK、SDI、SDO连接。SSCP300的片选信号/CS、复位信号/RST及中断信号/INT分别连接与PIC16F877的RB3、RB2及RB1引脚。由SSCP300产生的“Chirp”波形输出到其SO管脚,经放大、三级滤波、SSCP111媒介接口IC放大后,被传输到电力线耦合电路并送至电力线。由电力线经耦合电路来的“Chirp”波形经无源六级LC构成的滤波器后,被传输到SSCP300的SI引脚。耦合电路采用铁氧体磁环作为耦合变压器的磁芯,变比为1:1,初次级线圈的匝数均为7。采用TVS来抑制较大幅度或较大加速度的瞬间电压。

3软件结构

系统的软件采用模块化结构,主要包括初始化模块、输出控制模块、键盘扫描模块、通信模块等。整个软件分为主站软件和子站软件两部分。下面以通信模块软件的设计为例来说明程序设计方法。

SSCP300向与之连接的PIC16F877单片机提供CEBus服务。PIC16F877单片机通过SPI接口对SSCP300进行初始化、层信息设置、数据链路的存取控制设置等操作。完成以上步骤后,可进行数据的发送和接收。

PIC16F877单片机与SSCP300间各种形式的数据交换由控制命令来实现。常用的控制命令、十六进制码及功能如表1所示。一般情况下,命令后紧跟数据长度,接着为数据信息。

表1常用控制命令

命令码命令值命令名称功能

RST

LR

LW

IR

PR

PT

WRS-460X01

0X02

0X03

0X04

0X08

0X09

0X46Reset

Layer_Management_Read

Layer_Management_Write

Interface_Read

Packet_Receive

Packet_Transmit

Write_Register_46复位

读层信息

写层信息

读标志位

接收分组

发送分组

设置数据链路控制

3.1SSCP300的初始化

当电源接通或执行复位命令时,SSCP300将执行一个内部诊断和建立序列。直到此序列被执行完毕,命令才能被送至SSCP300。在对SSCP300进行初始化之前,PIC16F877要完成I/O口的初始化、片内RAM初始化以及SPI接口的初始化。

3.2层信息设置

初始化完成后可进行层信息设置。层信息设置的数据长度为7个字节,字节0为控制方式,一般设为数据链路(DLL)方式;字节1为组地址的低八位;字节2为组地址的高八位;字节3为设备地址的低八位;字节4为设备地址的高八位;字节5为系统地址的低八位;字节6为系统地址的高八位。在设置地址时应注意某些段内的地址为保留地址,不要使用,如0x0000为广播地址。

在层信息设置的过程中,首先单片机向SSCP300写入LW命令及数据长度“0X07”,然后确定好0~6字节的数据信息。层信息设置完成后,应用LR命令读回,判断读回信息与写入信息是否一致。如果一致则说明设置成功,否则应重新初始化后再设置层信息。

3.3数据链路存取控制设置

若节点之间的通信采用地址应答方式ADRACK或地址非应答方式ADRUACK,则应进行数据链路存储控制设置,由命令WRS-46来实现,数据长度为1。可设置的内容为:(1)在主处理器的每个发送期内需要发送ADRUACK的次数;(2)在信道间存取的时间;(3)对于ACK和ADRUACK,是否需要尝试多信道存取。

3.4数据的发送和接收

数据的发送和接收分别由命令PT和PR来实现。单片机送出PT命令后,接着送出数据长度、控制域、目标节点的设备和系统地址、源节点的设备和系统地址、数据信息等。应答或非应答通信方式由控制域决定。源节点地址应和初始化的地址一致,数据长度不超过32字节。发送完成后应读回标志位,判断是否发送成功。当SSCP300接收到有效数据帧时,将向单片机提供一个中断信号,单片机检测到该信号后发送PR命令,读回SSCP300接收到的数据帧其格式与发送数据帧类似。接收完成后也应进行正确性判断。

PIC单片机范文篇7

关键词:HART协议智能变送器现场总线数字数据通信

概述

现场总线技术是当前自动检测技术的热点之一。从现场总线技术形成来看,它是控制、计算机、通信、网络等技术发展的必然结果;而智能仪表则为现场总线的出现和应用奠定了基础。自1983年Honeywell推出智能仪表--Smar变送器之后,世界各厂家都相继推出各有特色的智能仪表。为解决开放性资源的共享问题,从用户到厂商都强烈要求形成统一标准,促进现场总线技术的形成。目前,几种有影响的现场总线技术有:基金会现场总线、LonWorks、PROFIBUS、CAN、HART,除HART外,均为全数字化现场总线协议。

全数字化意味着将取消传统的模拟信号的传送方式,而要求每一个现场设备都具有智能及数字通信能力,使得操作人员或其他设备(传感器、执行器等)向现场发送指令(如设定值、量程、报警值等),同时也能实时地得到现场设备各方面的情况(如测量值、环境参数、设备运行情况及设备校准、自诊断情况、报警信息、故障数据等)。此外,原来由主控制器完成的控制运算也分散到了各个现场设备上,大大提高了系统的可靠性和灵活性。现场总线技术关键之处在于系统的开放性,强调对标准的共识与遵从,打破了传统生产厂家各自独立标准的局面,保证了来自不同厂家的产品可以集成到同一个现场总线系统中,并且可以通过网关与其他系统共享资源。

目前,一方面现场总线标准正处在完善和发展阶段,另一方面传统的基于4~20mA的模拟设备还在广泛应用于工业控制信各个领域。因此,马上全数字化是不现实的。为满足从模拟到全数字的过渡,HART协议应运而生。HART采用频移键控(FSK)技术。它基于Bell202通信标准,在4~20mA模拟信号上叠加不同的频率信号(2200Hz表示"0",1200Hz表示"1")来传送数字信号(见图3)。HART协议的数据传输速率为1200bps(位/秒)。HART现场总线(简称HF)系统采用主从工作方式:主机为1台IBM-PC机;从机为1台或多台遵守HART协议的HF智能变送器。当从机只有1台HF智能变送器,即智能变送器工作在点-点方式下时,可继续使用传统的4~20mA信号进行模拟传输,而测量、调整和测试数据用数字方式传输;当从机为多台HF智能变送器时,即智能变送器工作在多站方式下时,4~20mA信号作废,每台变送器工作电流为4mA左右。所有测量,调整和测试数据均用数字方式传输。由于每台HF变送器有惟一的编号,所以主机能对每一台变送器进行操作。HART提供设备描述语言(DDL),以确保互操作性。应该指出,HART被认为是事实上的工业标准,但它本身并不算现场总线(模拟和数字的混合),只能说是现场总线的雏形,是一种过渡协议。由于4~20mA模拟信号标准将在今后相当长的时间内存在,所以研究HART协议仍具有重要意义。

本文讨论基于HART协议智能变送器的硬件实现的技术问题。一是要解决微功耗的问题,二是要讨论实现HART协议智能变送器通信功能的有效方法。

一、功耗要求

为实现智能变送器的基本功能,如线性化处理、温度补偿、自动零点和量程调整及数字通信等,以下关键器件如微控制器、A/D、D/A、通信芯片及传感器等是所必需的。图1是HART协议智能变送器的原理框图。传感器模拟量信号经A/D转换成数字量后送入单片机,单片机将处理后的数字量通过D/A转换器,经V/I转换电路输出4~20mA标准电流信号。在数字通信时,微处理器通过通信接口芯片及耦合电路,以4~20mA电流环路为介质传送和接收数据。

图1中的存储器(memory),用来存储传感器的特性参数、现场命令、现场状态等工作参数。

图2是图1中通信系统的详细方框图。中心是Bell202通信标准的HART调制解调器,并在信号的输出端和输入端分别加1个波形整形和带通滤波器,用以加强通信的可靠性。

1.功耗要求

为兼容4~20mA现行标准,HART协议智能变送器必须可工作在4~20mA两线回路中。这就意味可用来为变送器供电的电流不能超过4mA。在实际应用中,为兼容数字与模拟两信号,通常将数据频率信号通过V/I转换电路的调整管,转换为幅度为±0.5mA的频率信号,叠加在两线的4~20mA电流环上(2200Hz表示"0",1200Hz表示"1"),如图3所示。由于对特性,此信号的平均值为0,因此模拟和数字两种信号互不干扰。但环路上电流瞬时最大值I=4.5mA,最小值I=3.5mA,如果向变送器供电过多,超过3.5mA,将导致数字信号负半周失真。考虑到调节量所需的余量,要求对变送器供电电流一般不要超过3.4mA为好。

2.供电方式

给变送器系统供电主要有两种方式:一是直接将输入电压稳压成所需电压(5V或3.3V)后向系统供电,这种方法总电流必须控制在4mA以内,二是采用DC-DC供电方式,只要DC-DC变换器的效率足够高,在功耗控制上它比第1种方法要宽松得多,但同时还需要考虑变换器的线性稳定性因素可能带来的负面影响。由于目前微功耗、高性价比的集成电路出现,采用方法一的优越性更多,因为在供电方式上,2种方法都有需考虑对供电电压的适应问题。一般工业现场多为DC24V,也有DC36V供电的。一般要求变送器能在DC12~42V供电电压下稳定、可靠地工作,这一方面直接供电方式要比DC-DC变换方式灵活得多。

二、通信系统

1.通信芯片

SMAR公司生产的HT2012为贝尔202标准的单片机CMOS微功耗FSK调制解调器。它是为设计过程控制仪器检测和其他的低功率装备中提供HART通信功能的专用芯片。

HT2012由4个主要功能模块组成:时钟频率、解调器、调制器、载波检测。

HT20l2需要460.8kHz外时钟输入,3~5V供电,低功耗(典型值40μA)[5]。

HT2012调制解调器的半双工的。当一个运转时,调制器和解调器中的另一个会被停止。工作在Bell202标准,发送、传送和接收调制位速率1200bps。

HT2012使用1200Hz("1")和2200Hz("0")Bell202信号频率,CMOS、TTL兼容。

TH2012具有载波检测输出端OCD,低电平有效,表示对方通信芯片准备进行载波发送,改进了通信的实时性和灵活性。另外,19.2kHz时钟信号输出,也为应用提供了方便。

2.D/A及V/I转换器

为将数字频率信号转换为±0.5mA的频率信号,叠加在两线的4~20mA电流环上,还需要附加耦合电路,这样必然会造成更多的功耗开销。而美国A/D公司的产品AD421[2],是专为HART协议智能仪表设计的,包括4~20mA电流环的16位D/A转换器。它与HART协议兼容,其开关电流源和滤波器功能块,可HART电压信号向±0.5mA电流信号的转换,为应用带来方便。

AD421基本性能:(1)4~20mA输出;(2)HART兼容,能用于标准HARTFSK协议通信;(3)16位分辨率;(4)±0.01%积分的非线性;(5)3V、3.3V或5V可调节电压输出及2.5V和1.25V精度参考,用于自身和系统其他器件;(6)Vcc=5V供电时,750μA最大静态电流,典型值为575μA;(7)可编程报警电流功能,允许变送器发出电流超范围警报,以表示转换器的故障;(8)灵活的高速串行接口。

AD421有2种工作方式:4~20mA输出方式和3.5~24mA报警输出方式。

三、单片机及A/D转换器

1.A/D转换器

为实现智能变送器的功能,在电路硬件设计上,需要1个增益可调的仪表放大器和1个分辨率至少在14位的A/D转换器,来实现对传感器信号的放大和模数转换。这样才能达到智能变送器的高精度、自动调节量程、大量程比的设计要求。对智能差压变送器,还需要对静压和温度进行采样,从而实现对静压和温度的补偿,提高全范围的测量精度。这样,还需要1个多路转换器实现通道间的切换。如果选用分立元件,必然会有相当大的功耗引入,难以满足HART协议智能变送器功耗要求。某些大公司为兼容4~20mA的智能变送器设计了专用A/D转换器,如MAXIM公司的MAX1400和AD公司的AD7714。其共同点是将增益可调的仪表放大器、多路转换器和A/D转换器集成在1个芯片中,功耗在几百μA左右,为实现HART协议智能变送顺提供了方便。

MAX1400基本性能:(1)MAX1400[1]为低功耗、多通道、带SPI同步串行口的∑/ΔA/D转换器;(2)18位分辨率;(3)3个全差分或5个准差分信号输入通道;(4)可编程PGA,选定增益分别为(1,2,4,8,16,32,64或128);(5)AIN1~AIN6可组成3个全差分输入通道,也可以组合成5个准差输入通道;(6)2个额外的全差分系统校正通道CALOFF和CALGAIN用来作为失调和增益误差的校正;(7)MAX1400内的2个漂移补偿缓冲器,用于隔离所选输入和PGA及调制器的电容性负载的联系。当V+为5V供电时,MAX1400的参考输入为2.5V,模拟输入的变化范围为-Vimax~+Vimax。Vimax=5÷(2×GAIN)。

2.单片机

为实现高性能、微功耗的智能变送器控制电路,单片机选用PIC16C73[7]。它具有功耗低、运行速度快、功耗强等特点。采用长字节指令,所有指令均为单字长,除跳转为双周期指令均为单周期(4个时钟周期)指令。内含看门狗、8级硬件堆栈、192×8RAM、32上定时器、2个捕捉器、5路8位A/D转换器、SPI/I2共用的同步串行口、1个异步发送/接收串口USART、多种中断功能,包括B口RB4~RB7输入电平变化中断。

四、基于HART协议智能压力/差压变送器的设计

图4为HART协议智能压力/差压变送器的电路原理图。电路所用集成电路为上面所提及的,其特点为:集成度高、性/价比好、功耗低、功能强。片间的数据通信采用MOTOROLA公司推出的同步串行接口SPI(SerialPeripheralInterface),同优点是占用MCU资源小,可根据系统的大小随着扩充。在实际应用中,单片机可方便地与带SPI接口的集成电路芯片如A/D、D/A、数据存储器等连接。由于单片机PIC16C73带有SPI串行总线硬件接口,使数据通信速度更高,使用更灵活。

1.电路说明

A/D转换器MAX1400的2个全差分通道AIN1、AIN2和AIN3、AIN4分别对差压传感器TRS1、静压传感器TRS2进行厝数转换。AIN5和AIN6组成准差分输入通道对TRS1的恒流输入进行监测。传感器均为半导体压阻传感器,压阻传感器的特点是它的每个桥臂电阻都比较大,一般为2kΩ,以下均假设它们的桥臂电阻值为2kΩ。采用恒流供电,可以进一步减小传感器的非线性和温度对传感器输出灵敏度的影响。实验得知,压力和差压传感器的等效电阻值在全温度范围内(0~70℃)的变化量是全量程内压力或差压所引起的等效电阻值变化的100倍左右,因此,AIN5所测得的A/D值可以对整个变送器进行温度补偿。为提高变送器的测量精度,须对静压给差压带来的误差进行补偿,所以电路中设计了全差分通道AIN3、AIN4对静压传感器TRS2进行监测,从而可实现对静压的补偿。

HART通信模块由HT2012和波形整形电路及带通滤波器组成。整形电阻由74HC126(4个三态输出缓冲器)组成,并能通过2个750Ω电阻及2.2μF的耦合电容,将整形后的HT2012发出的电压信号输入到AD421的开关电流源和滤波器功能块中,可实现HART电压信号由±0.5mA电流信号的转换。带通滤波器由图4中细线框中的2个运算放大器及电阻、电容组成。它将4~20mA环路上的±0.5mAHART电流信号转换为HART电压信号,经HT2012解调,再送入单片机串行通信接口中,从而完成数据的接收任务。

AD421除完成4~20mA电流信号输出及HART通信外,还为系统提供电源及参考电压。它的2.5V参考电压供自己和MAX1400使用。

数据存储器选用24LC65,为8KB的串行E2PROM,供电电压2.5~5.5V,功耗:读电流150μA;写电流3mA(5V供电)。用来存放传感器特性参数及现场组态命令、工作参数、通信数据。

HT2012的19.2kHz信号,送入PIC16C73的计数器输入端,用于检测HT2012的工作情况。

HT2012的OCD信号,送入PIC16C73的RB7端。RB7设为中断方式,用于检测通信状态。

2.功耗及电流分配

AD421由4~20mA环路主电源供电,转换的5V电源为自己和24LC65及MAX1400的模拟电路部分供电,设计时须留下功耗余量。AD421工作电流为600μA,24LC65读电流为10μA,MAX1400的模拟电路工作电流不超过100μA,而变送器功耗设计为3.4mA,剩下2.5mA电流供电路其他器件使用。具体分配如下:传感器由恒流二极管3CRC供电0.5mA,剩下2.0mA电流由另一支3CRC恒流后供电路的其他部分使用。这样可避免由于器件在动态和静态工作时功耗的不同而引起4~20mA信号的变化(尽管实验证明这个变化是很小的)。

3CRC恒流原理是:其内部提供一稳定的1.24V从两管脚引出,在这两管脚上接1个电阻即可中输出恒流。计算公式为:I(mA)=1.24/R(kΩ)。只要保证3CRC的工作电压略大于1.24V即可正常工作。

稳压管选用ZRC330。它的稳压值为3.3V,最小工作电流为20μA,最大吸收电流达5mA,温度系数50ppm是比较理想的器件。MAX1400的工作电流值小于150μA(3.3V供电),HT2012的功耗电流40μA,带通滤波器选用运放TLC27L2C,最大功耗电流仅为48μA。整形电路的74HC126工作于低频下最大电流500μA左右,剩下1.25mA电流供单片机消耗。

单片机PIC16C73的功耗在4MHz时钟、Vdd=3V时,为2.0mA;而在4MHz和20MHz时钟、VDD=5V下工作时,电流值分别为2.7mA和13.5mA。可见适当降低单片机工作频率可使其功耗大幅度下降。由于PIC16C73除跳转指令外,均为单字节指令,指令周期仅为4个时钟周期同,其运行速度比其他类型的单片机快,适当降低工作频率其运行速度仍远远满足变送器实时要求。本设计单片机采用1MHz工作频率,其功耗的实验数据小于1mA。

HT2012工作主时钟为特殊的460.8kHz,需要特或向SMAR公司索取。本电路采用1片PIC16C58A[7]单片机,外接1.8432MHz晶振,经单片机4分频后,正好输出460.8kHz的时钟,直接供HT2012使用。PIC16C58A单片机是PIC系列单片机中的低挡产品,功耗与PIC16C73相当。由于电路由增加了1片单片机,整个电路的功耗将超出允许范围。为保证功耗要求,电路设计采用能量分时复用的方法:程序通过V1、V2、V3实现传感器和PIC16C58A的分时复用,即变送器在做A/D转换时,系统给传感器供电,当需要检测通信有无或主动进行通信时,单片机将给传感器的0.5mA关断,而将电流并入3.3V工作电源上,同时启动PIC16C58A。PIC16C58A的功耗指标为32kHz时钟,VDD=3V时典型值小于15μA。由于对PIC16C58A的某一I/O口(如RB)进行置高、置低操作,所以不怕程序"跑飞",因此不需PIC16C58内的WDT功能,将它置于OFF状态,功耗大大降低。因此,PIC16C58A在1.8432MHz的时钟下工作,其功耗不会超过0.5mA。

对数据存储器24LC65的功耗:读电流150μA,没有功耗问题;而写电流3mA,一般出现在数据通信完成之后的很短时间内,只要规定在通信时4~20mA电流信号作废,即可解决功耗要求问题。24LC65一定要接在4~20mA主电源中。

从以上分析,电路功耗小于3.4mA的智能变送器,满足要求。

PIC单片机范文篇8

关键词:串行通信无线通信机器人

足球机器人是一个极富挑战性的高技术密集密集型项目,融小车机械、机器人学、机电一体化、单片机、数据融合、精密仪器、实时数字信号处理、图像处理与图像识别、知识工程与专家系统、决策、轨迹规划、自组织与自学习理论、多智能体协调以及无线通信等理论和技术于一体,既是一个典型的智能机器人系统,又为研究发展多智能体系统、多机器人之间的合作与对抗提供了生动的研究模型。它通过提供一个标准任务,使研究人员利用各种技术获得更好的解决方案,从而有效促进各个领域的发展。其听理论与技术可应用于工业生产、自动化流水线、救援、教育等实践领域,从而有效推动国家科技经济等方面的发展。机器人足球从一个侧面反映了一个国家信息与自动化领域的基础研究和高技术发展水平。

目前,国际上有机器人足球比赛分为两大系列——FIRA和Robocup。本文所要论述的系统所应用的F-180小型足球机器人比赛就是RoboCup系列中应用较广泛的一种。

F-180小型足球机器人足球比赛的示意图如图1所示,比赛双方各有5名机器人小车在场上。足球机器人系统在硬件设备方面包括机器人小车、摄像装置、计算机主机和无线发射装置;从功能上分,它包括机器人小车、视觉、决策和无线通信四个子系统。

其中无线通信系统是衔接主机和底层机器人不可缺少的一环,它必须保证从主机端到机器人底层之间的数据传送是可靠的,从而使得机器人比较能够顺利流畅进行。由于比赛双方都有多个机器人同时在场地上跑动,要求无线通信有一定的抗干扰性。无线通信系统的性能相当程度上直接影响着机器人的场上表现。

1系统的设计及实现

比赛中从摄像头来的视频信号经过计算机处理之后得到控制小车用的数据信息,而无线通信系统的就是将这些数据信息及时准确地送达场上的每一个机器人小车,系统采用广播方式,各机器人根据特定标志识别发给自己的有用数据,从而进行决策与行动。整个系统的框图如图2所示。

1.1发送端的硬件设计

发送端主要用PIC16F877单片机实现编码和对发射机的控制,计算机通过串行口发送数据,经过PIC16F877编码后再通过PTR3000无线通信模块将数据发送出去。

所采用的PIC16F877单处机是MICROCHIP公司推出的8位单片机。采用RISC指令系统和哈佛总线结构,最高运行的时钟频率可达20MHz,因而指令运行速度快。它有很宽的工作电压范围,可直接与3.3V的PTR3000无线通信模块配合使用。

TR3000无线数据收发模块是一种半双工收发器,采用NORDIC公司的nrf903无线收发芯片,工作频率采用国际通用的数传频段ISM,频段915MHz,工作频率可以在902MHz~928MHz可变。采用GMSK调制,抗干扰能力强,特别适合工业控制。灵敏度高,达到-100dBm,最大发射功率+10dBm,工作电压为2.7V~3.3V。它最多有169个频道,可满足需要多频道的场合,最高数据速率可达76.8kbps。因而完全可以满足小型组机器人通信的数传速率与距离的需要。

本系统中PIC16F877就是采用20MHz的时钟信号,能够满足即时收发数据以及编码的需要。整个系统中包含两种电源,无线通信模块的电源为3.3V,而MAX232又需要+5电源。信号线的连接也要考虑两种电平的匹配问题,在必要的地方要加上电平转换电路。

首先单片机要接收来自计算机端的数据,计算机串口输出的信号经过MAX232由232电平转换为TTL电平。但是由于单片机采用3.3V电平,因而MAX232输出的信号需经过电平转换才能输入单片机,电平转换可以采用TI公司提供的典型电平匹配电路(见图3),也可采用74LVCXX系列逻辑门来转换。

由于PIC16F877只有一个异步串行口,因而要通过16C550通用同步异步收发器(USART)芯片来扩展一个异步串行口。这样就可以保证从计算机串口输出的数据与无线通信的数据速率不同,从而使原始数据经过通信编码及打包数据量增加之后也能及时传送,并且在必要时也能将接收数据送回计算机端,实现半双工通道。系统的电路图如图4。从图4可以看出PIC单片机采用并口对16C550进行初始化配置。由于16C550共有10个寄存器,且占用了8个地址,因而PIC单片机用RA0、RA1、RA2三个通用I/O口做地址线选择16C550的各个寄存器。单片机可以不断通过RB1、RB2引脚检测TXRDY、RXRDY信号获知ST16C550是否接收到数据,还是已经发送了数据。还可以通过把16C550设置成中断方式使每接收到一个字节数据便产生一次中断使INT信号有效,单片机进入中断处理程序,从而使单片机的执行效率更高。

单片机通过自带的异步串行口输出数据到PTR3000通信模块。由于nrf903芯片接收和发送数据共用一个引脚,因而需要其他电路来解复用。最简单的方法就是在单片机的TX引脚先接一个10kΩ的隔离电阻,再与RX和PTR3000的DATA引脚相连。但是这种方法有两个缺点,它会造成发送的数据串入到单片机的接收引脚中,另外发送信号的驱动能力受到了极大的限制。因此,本系统采用了74HC244三态缓冲器作为隔离(见图4中虚线框内所示),并且通过单片机的RB4控制收发状态,因而在半双工方式下发送信号与接收信号可以互不干扰地传送。

对于通信模块工作状态的控制主要包含表1所列的这几个信号,通过单片机的普通I/O口即可控制。

表1PTR3000工作工作模式配置表

PTR3000工作模式STBYPWR-DWNTXENCS

正常工作:接收0000

正常工作:发射0010

掉电模式01XX

待机模式10XX

1.2发送端的软件设计

当系统复位时,单片机首先要对PTR3000无线通信模块和16C550的寄存器进行编程初始化。PTR3000的初始化编程是通过同步串行信号进行的,总共有三个信号CFG_CLK、CS和CFG_DATA,分别连接到单片机RC3、RB7、RC5引脚。PIC16F877单片机本身就有同步串行口功能模块,但是由于PTR3000的同步串行数据位为14位,并非整数字节,而且14位数据必须一次初始化完成,因此实际通过普通的I/O口编程来实现这14位的同步串行信号更方便一些。在整个初始化期间CS信号必须一直为高电平。这14位初始化字的定义见表2。在初始化同步串行信号输出时最高有效位在先。在对PTR3000编程前先其状态为接收状态以免在其他频率造成无线干扰,编程完成后就可以将状态改为发射状态了。

表2PTR3000初始化控制字各位定义

Bit参数名称符号参数

位数

0~1频段FB必须为了10(表示为选择频段915±13MHz)2

2~9频点CHf=902.1696+CH·0.1536(MHz)

10~11输出功率POUT发射功率≈-8dBm+6dBm·POUT2

12~13时钟分频输出Fup"00"=>Fup=fxtal

"01"=>Fup=fxtal/2

"10"=>Fup=fxtal/4

"11"=>Fup=fxtal/82

接下来对16C550的初始化设置。由于PIC16F877自身的并行口对16C550进行初始化编程设置各个寄存器,需要注意的只是在输出每一个字节之前先要通过RA0~RA2输出相应字节的地址信号。在初始化设置时将16C550的波特率设置低于76.8kbps,以保证接收的数据能够通过PTR3000即时发送。

1.3接收端的硬件设计

接收端装在每个机器人小车上,由于机器人小车的控制采用DSP控制器TMS320LF2407,因而在接收端PTR3000无线通信模块就采用TMS320LF2407来控制。通过PTR3000接收的数据直接输入DSP,由DSP进行解码,从而做出决策和发出控制信号。因而无线通信系统的接收端电路相对发送端要简单得多,只需用TMS320LF2407代替发送电路中的单片机与PTR3000模块相连接即可。PTR3000的初始化编程也就由2407的普通I/O口来实现,只不过在初始化编程之后依旧保持PTR3000处在接收状态。

2协议的设计

2.1物理层的编码设计

物理层的编码设计要根据所采用的物理器件和物理信道的特性来决定。本系统采用PTR3000无线通信模块在接收模块中为了获得0直流电平就需要在所传输的数据中逻辑“0”和逻辑“1”的数量相等。只有满足上述条件接收部分才会获得很高的接收正确率。长时间空闲也会导致接收部分的0直流电平漂移,因为长时间的空闲实际上一直发送的是逻辑“1”。

由于PTR3000的这些特性,很自然就想到采用曼彻斯特编码(Manchester)(也称为数字双向码(DigitalBiphase)或分相码(Biphase,Split-phase)。它采用一个周期的方波表示“1”,而且它的反向波形表示“0”。由于方波的正负周期各占一半,因而信号中不存在直流分量。在异步串行通信中有一个起始位“0”,因此将停止位“1”长度也设为一位,这样在一个字节共10位信号中也就不存在直流分量了。只是加了曼彻斯特编码之后原来一个字节的数据现在要两个字节才能传送。

图4

有一些数字节,不会在进行曼彻斯特编码之后的数据串口出现,但是在一个字节中也具有0直流分量的特性,也有很高的接收正确率。这类数据字节如:0xF0、0x0F、0xCC、0x33等。从码型看来其中0xF0码型定时性能是最好的(其码型见图5),它很容易使异步接收器达到同步并且不会发生错误。由于0xF0的这种特性就可以用它做同步码元,在空闲的时间内通信系统就通过一直发送同步码元,使接收端保持同步,而且也可以保持接收模块的0直流电平状态。

2.2纠错编码设计

为了在有一定外界干扰的情况下,保证主要与机器人之间的无线通信依然稳定可靠,必须采取一定的抗干扰措施,这可以采用纠错编码来实现。可以选择纠错编码方案有(14,8)分组码、(7,4)分组码和循环码,需要使用两字节的长度发送一字节的有效信息;(5,2)分组码和循环码,交错码、(21,8)分组码和缩短循环码、(21,9)BCH码、(21,12)BCH码,需要使用三字节的长度发送一字节的有效信息。

系统中使用了(7,4)分组码,并在实际中取得了较好的效果。它的构成方式如下:

假定不做任何处理的原码格式为:

其高四位的监督码为:

A2A1A0

其低四位的监督码为:

B2B1B0

则编码后成为两个byte长度:

1X7X6X5X4A2A1A0

0X3X2X1X0B2B1B0

其中每个字节的最高位作为标志位,用于表示高四位和低四位,高四位用“1”做标志,低四位用“0”做标志。接收端通过检测标志进行重组和解码。对于译码基本方法有维特比译码和使用监督矩阵译码,可根据具体的编码方案灵活选用。

2.3帧格式设计

一般数据帧包括帧头、机器人标识、数据、数据校验、保留字节等内容,通常按照下面的格式排列:

帧头机器人标识数据保留字数据校验

为了保证帧能够准确接收,帧头的设计至关重要。一般帧头需要两个或两个以上的字节,并且应该选择数据中出现几率较低的数值和组合。在这个系统中可以采用一般数据中根本不会出现的数据字节如0xF0、0xCC作为数据帧头。而其它类型的帧(如开球或暂停等命令帧),则可以选择在0xF0之后加上其它的字0x33、0xC3、0x3C、0x0F等构成。这种帧头组合在一般的数据中是不会出现的,因而可保证帧同步不会出错。场上的每个机器人通过数据帧中的机器人标识来识别属于自己的数据,由于场上只有5个机器人,因而机器人标识只占用一个字节。

PIC单片机范文篇9

由于传感器能将各种物理量、化学量和生物量等信号转变为电信号,使得人们可以利用计算机实现自动测量、信息处理和自动控制,但是它们都不同程度地存在温漂和非线性等影响因素。传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。因此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应用。另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产力、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感器系统不断涌现。温度传感器是其中重要的一类传感器。其发展速度之快,以及其应用之广,并且还有很大潜力。

为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术而开发设计了这一温度监控系统。文中传感器理论单片机实际应用有机结合,详细地讲述了利用热敏电阻作为热敏传感器探测环境温度的过程,以及实现热电转换的原理过程。

本设计应用性比较强,设计系统可以作为生物培养液温度监控系统,如果稍微改装可以做热水器温度调节系统、实验室温度监控系统等等。课题主要任务是完成环境温度检测,利用单片机实现温度调节并通过计算机实施温度监控。设计后的系统具有操作方便,控制灵活等优点。

本设计系统包括温度传感器,A/D转换模块,输出控制模块,数据传输模块,温度显示模块和温度调节驱动电路六个部分。文中对每个部分功能、实现过程作了详细介绍。整个系统的核心是进行温度监控,完成了课题所有要求。

设计要求

控制要求

(1)生物繁殖培养液的温度要保证在适于细胞繁殖的温度内,这主要在控制程序设计中考虑。温度控制范围为15~25,升温、降温阶段的温度控制精度要求为0.5度,保温阶段温度控制精度为0.5度。

(2)微机自动调节正常情况下,系统投入自动。

(3)模拟手动操作当系统发生异常,投入手动操作。

(4)微机监控功能显示当前被控量的设定值、实际值,控制量的输出。

受控对象的数学模型

生物繁殖的培养液主要用于生物的繁殖研究,而温度是影响生物繁殖的重要因素。本系统要求长时间监视培养液的温度,并对当前的温度进行控制。本控制对象为生物繁殖用培养液,采用继电器进行控制。

系统的硬件配置

单片机和系统总线

单片机:PIC16F877A(PIC16F877A为美国MICORCHIP公司生产的带A/D转换的8位单片机)。

显示系统:商用计算机。

用户内存:256MRAM。

系统总线:RS-232-C接口(又称EIARS-232-C)RS232C有25条线,,分为5个功能组,包括4条数据线,11条控制线,3条定时线,7条备用线和未定义线。

操作系统:Windows2000。

硬件电路板的制作

本设计中需要有2个继电器控制温度调节系统,2个LED用来提示串口数据指示,还有一个PIC16F877A单片机,一个Max232电平转换器,一个有源晶体振荡器及其电阻电容等。在确定电路的正确性,可行性之后,开始使用Protel对它进行布图。

Protel是一个很好用的电子制作工具,它还可以进行仿真。在画原理图的过程中,原理图中的元件库中可能找不到自己要找的元件,如PIC16F877A等,所以要自己画元件。在画原理图后,选择将元件自动编号,然后根据需要更改部分元件的编号。在定好元件编号后,使用TOOLS中的ERC进行检查,它会提示是否有编号相同的元件等错误。在ERC检查无误后,便可以开始封装了。同样,部分元件的封装在PCB库中找不到或者是有出入,如按键开关,2位拨码开关在PCB库中找不到,所以需要自己根据元件的实际大小和相应的原理图中引脚编号,做出正确的封装。

附录1

(1)本设计使用的部分单片机程序如下:

#include<pic.h>

//*************************

voidINIT()

{

ADCON1=0X07;

TRISC=0X80;

TRISB=0X00;

TRISD=0X00;

RD1=0;

RD0=0;

TRISA=0X0f;

TRISE=0X00;

}

//*************************

#include<pic.h>

#include"init.h"

#include"proc.h"

//*************************

unsignedchari;

unsignedintdelay;

externunsignedchara;

externunsignedchartemph;

externunsignedchartempl;

//***************************

voidmain()

{

//初始化

INIT();

for(delay=65536;delay>0;delay--)asm("clrwdt");

temph=0x35;

templ=0x30;

do

{

asm("clrwdt");

PROCDIANPIN();

RC0=0;

RC1=0;

}while(1);

}

#include<pic.h>

#include"tranpc.h"

//*********************

unionadres

{

inty1;

unsignedcharadre[2];

}adresult;

externunsignedintdelay;

unsignedinttemp;

unsignedinty;

unsignedcharreceive;

unsignedchara;

externunsignedcharrxbuf[];

unsignedchartemph;

unsignedchartempl;

externunsignedchari;

//******************************

voidPROCDIANPIN()

{

ADCON0=0X89;

ADCON1=0X84;

ADIF=0;

ADGO=1;

for(delay=0x8ff;delay>0;delay--)asm("nop");

while(ADIF==0)

{

asm("clrwdt");

}

asm("clrwdt");

ADIF=0;

adresult.adre[0]=ADRESL;

adresult.adre[1]=ADRESH;

if((adresult.y1<=0x204)&&(adresult.y1>=0xD9))

{

temp=0x10;

for(

y=0x204;adresult.y1<=y;adresult.y1=adresult.y1+0x07)

{

temp++;

if(temp==0x1a)temp=0x20;

if(temp==0x2a)temp=0x30;

if(temp==0x3a)temp=0x40;

if(temp==0x4a)temp=0x50;

if(temp==0x5a)temp=0x60;

if(temp==0x6a)temp=0x70;

if(temp==0x7a)temp=0x80;

if(temp==0x8a)temp=0x90;

if(temp==0x9a)temp=0x100;

}

}

TXPC(temp);

RC0=1;

RXDATAS();

if(rxbuf[0]!=0)

{

if((rxbuf[0]==0x10)&&(rxbuf[1]==0xff))receive=0xff;

elseif(rxbuf[0]==0x20)

{

PIC单片机范文篇10

关键词:微控制器;晶闸管开关;电路板

1引言

在日常生产与生活中,大量电动机都以规定的速度和功率去拖动各种机械。而在军事上,很多应用往往要求旋转天线在各种条件下都要保持匀速转动,这就要求在不同的情况下,电动机能相应调整工作速度,以保持恒定的速度。要实现这一功能,最常用的方法是对电动机的转速进行调节。改变直流电动机的电枢或交流电动机的定子电压,都可以在一定的范围里改变转速;也可用双向晶闸管交流开关或直接选用模拟控制的通用电动机驱动器来取代笨重的电动机、发电机组以及饱和电抗器。本文介绍一个直接由110/240V电源供电的通用电动机驱动电路和一个MCU以及一个双向晶闸管开关来实现控速的设计方法。其中单片机选用Microchip公司的PIC12F675。与用户接口的方式有三种一个是接触传感器;一个是按钮;一个是电位器。笔者在该仿真实验中采用的是电位器。辅助电源从电源电压中变压整流获得。

2设计方案和结构

2.1电路结构

电动机的调速系统是一个闭环系统,其结构图如图1所示。使用时,可通过设置电位器的电阻大小,并经A/D输入单片机来预设速度;单片机通过同步电路与220V交流电源同步,并通过输出脉冲控制晶闸管的通断,从而控制电动机的速度,同时将电动机的速度通过速度检测装置(霍尔开关)反馈给单片机以形成闭环。

2.2单片机电路的功能原理

该设计中单片机电路的功能原理图如图2所示。它由5V直流副电源和220V交流主电源、单片机、双向晶闸管开关和电机整流电路和霍尔开关组成。其中,单片机的脚1(Vdd)接+5V脚8(Vss)接地,其它引脚的功能与设计如下:

(1)GP3用于上电复位。在通电的瞬间,C3通过R2充电GP3以经延迟后低电平触发。延迟的大小和CPU的频率有关,对于PIC12F675单片机,延迟只要大于72ms就可以了。GP3外的电阻可以选1kΩ电容应大于0.1μF。二极管D2的作用是在电源快速反复通断时,保证C3电容能及时放电。

图2

(2)GP4主要用于速度信息的输入。该脚外的电位器R1用于为GP4输入一个电平(GP4在这里的功能是10位A/D转换器)。该输入电平通过A/D转换后,用于给单片机输入一个预设速度。将该速度和实际速度进行比较,并计算出速度的偏差,然后查表或通过算法便可以得到延迟Td。电位器R1的阻值应较大(在100kΩ左右),以减少5V副电源的负载压力。

(3)通过GP2可输入同步信号。由于220V的交流电源频率不是很稳,因此,为了保证延迟Td的精确,应通过R5输入交流信号进行同步。GP2在这里的功能也是A/D转换器,它可将通过R5输入的交流信号转化成数字信号。R5的阻值要大约在1MΩ左右。因为R5直接接在220V的交流电源上,而单片机的输入电流不能太大。

(4)通过GP0可输入霍尔器件产生的电动机转速信号。

霍尔开关是用于磁场检测的半导体传感器,霍尔开关的实际接线图如图3所示,PIC12F675的1脚接5V直流电源,2脚接地,3脚输出频率脉冲给单片机的GP0脚。

在正常工作时,霍尔开关被放置在电动机内按周期强度和方向发生变化的磁场中。其输出电压的大小随着垂直通过霍尔开关半导体薄片的磁场的强度变化,霍尔开关有电流式和开关式两种。电流式霍尔开关输出的是模拟信号,可完全包含磁通量的变化情况;而开关式霍尔开关则由于集成了比较器,因而可直接输出数字信号。本设计采用数字式无疑是最方便的。如果采用电流式,由于选用的是功能全面的自带比较器的PIC12F675单片机,它的GP1脚上输入的一个门限电平(由两个电阻分压得到)通过单片机内部的比较器和GP0脚的转速模拟信号进行比较,也可以实现信号检测。

由于实际的霍尔开关要接在电动机的线圈附近,手工改造电动机相对比较困难。因此,该设计为了方便演示,可以使用一个由555定时器设计的多谐振荡器产生的频率脉冲信号来替代霍尔开关的输出信号。

(5)GP5脚输出的低电平脉冲用于触发双向晶闸管开关,其脚输出低电平脉冲的时间是由延迟Td决定的,要保证和主电源同步才能使相位平稳的前后移动。GP5脚的低脉冲可以使双向晶闸管开关保持导通,直到220V电源反向。

此外,在实际应用中,双向晶闸管开关对触发电路的要求如下:

(1)双向晶闸管开关从截止到完全导通需要一定的时间(一般在10μs下),所以触发脉冲的宽度要在10μs以上,最好为20~50μs。如果是感性负载,由于电流上升比较慢,实际上还需要更宽的脉冲宽度。

(2)触发电路要有足够大的电压和电流。电压应在4~10V,电流要大于10mA,所以可使用5V的副电源。在双向晶闸管开关和GP5之间应接一个0.2kΩ的电阻。

(3)不触发时的电压应小于0.15~0.2V。触发脉冲的前沿要尽量陡,应在10μs以下。

3软件的实现

图4是该设计中转速和检测信号的波形时序图,图5是本设计方案的软件程序流程图。该程序的主要步骤是复位、初始化、设置GP2上升沿中断、设置A/D通道GP4、读取电位器设定的速度值n(n经过A/D)和读取Td预先设定值等。当交流电源变为负半周期时,设置GP2下降沿触发和延迟Td即可输出宽度为Tg的脉冲,同时设置GP0接收中断源请求等。一般当霍尔开关输入为上升沿时中断,计数器计数,而当霍尔开关再输入一个上升沿中断时,计数器停止,并记下数值a,最后在通过比例积分调节算法计算出延迟Td后清除n和a。当交流电源变为正半周期时,在设置GP2上升沿触发、设置A/D通道GP4、等待中断、补偿延迟T0、延迟Td以及触发脉冲Tg后,便可通过GP4读取设置速度n。设计时正负周期的程序循环进行。通过计数器的数值a计算转速s的算式如下:

s=f/a

其中,f是十六位计数器1的频率,为1MHz。

实际上,通过n和a由单片机计算延迟td需要一个准确的算法。数字调节算法一般选择PI算法,这是在工业过程控制中应用最广泛的一种控制形式。其作用在于能够集比例调节的快速和积分调节的清除静差作用于一体,从而使系统的静、动特性都有所改善。