PIC16F877简介
PIC16F877是由Microchip公司所生产开发的8位MCU,属于PICmicro系列单片微机,具有Flash program程序内存功能,可以重复烧录程序,适合教学、开发新产品等用途;而其内建ICD(In Circuit Debug)功能,可以让使用者直接在单片机电路或产品上,进行如暂停微处理器执行、观看缓存器内容等,让使用者能快速地进行程序除错与开发。
如图为PIC16F877的40根引脚图,PDIP是指一般最常见的DIP(Dual In Line Package)包装,而PIC单片机也有PLCC(Plastic Leaded Chip Carrier)与QFP(Quad Flat Package)两种形式的包装,依照不同的需求,寻找不同的包装形式。如图所示,每根接脚都有其特定功能,例如Pin11与Pin32(VDD)为正电源接脚,Pin12与Pin31(VSS)为地线接脚;而有些接脚有两种甚至三种以上功能,例如Pin2(RA0/AN0)代表PORTA的第一支接脚,在系统重置(Reset)后,可自动成为模拟输入接脚,接收模拟讯号,也可经由程序规划为数字输出输入接脚。
图1. PDIP40引脚PIC16F877接脚说明
图2. PDIP28和SOIC28引脚PIC16F877接脚图说明
图3. PLCC44引脚PIC16F877脚位图说明
图4. QFP44引脚PIC16F877引脚图说明
PIC16F877属于闪控式(Flash)单片机,可以重复烧录,其ROM的容量总共是8K words,以2K为一个page,区分为4个pages;内部RAM总共有512个字节(00f~1FFh),以128个字节为一个Bank,共区分为4个Bank,如图5所示,每个Bank的前半段都有其特殊用途,分别连接到其特殊功能模块,例如I/O、CCP、Timer、USART、MSSP等。
图5. PIC16F877的RAM配置
特殊内嵌功能
PIC16F877属于内嵌功能较多的单片机,除了CPU、POM、RAM、I/O等基本构造外,还包括以下各种功能,简介如下:
A/D converter:模拟数字转换器,最多可以读取8组模拟输入讯号。
CCP:Capture、Compare、PWM,用于控制直流马达。
Timer,内部定时器,有Timer0、Timer1、Timer2等。
USART:Universal Synchronous Asynchronous Receiver Transmitter,同步/异步串行传输,如RS232、RS485等。
MSSP;Master Synchronous Serial Port,两线式(I2C)与三线式(SPI)标准同步串行传输协定,常用于EEPROM内存资料的烧录与读取,或是与其它集成电路沟通与联系,形成多芯片网络。
PIC16F877基本电路
PIC振荡频率电路
单片机振荡电路与整体系统工作速度有直接的关系,例如同步∕异步串行传输、定时器等,都与振荡频率有关,不同系列单片机有不同振荡频率,根据产品资料手册,PIC16F877振荡频率最高可到20MHz;在图1中,振荡电路接于Pin13(OSC1/CLKIN)与Pin14(OSC2/CLKOUT),而振荡电路有以下四种形式:
LP:使用低功率振荡晶体(Low Power Crystal)
XT:使用振荡器∕谐振器(Crystal/Resonator)
HS:使用高速振荡器(High Speed Crystal/Resonator)
RC:使用电阻∕电容(Resister/Capacitor)
一般常用振荡晶体或是谐振器作为单片机振荡源,外接电路及PIC内部电路说明如图6所示。图中电容C1与C2规格大小是根据Crystal或Resonator而有所不同,表1列出电容建议值,使用其它振荡源的电路说明请参考产品资料手册。
图6. 振荡源电路图
表1. 建议电容值
外加电源与重置电路
PIC16F877的工作电压为5V,连接Pin11与Pin32,Pin12与Pin31为地线接脚;重置电路连接Pin1,按下Reset后,内部指令重头开始执行,系统重新运作。
图7. 电源与重置电路
输入输出接口
PIC16F877除了上述基本电路所占用的7支接脚外,其余的33支接脚都可当成输出、输入接脚,输入输出端口是单片机基本界面,可以与周边电路进行电路控制和信号传输与检测。PIC是8位的单片机,以接脚特性分组,每组尽量凑满8支接脚,并将I/O命名为PORTA(RA0~RA5)、PORTB(RB0~RB7)、PORTC(RC0~RC7)、PORTD(RD0~RD7)和PORTE(RE0~RE2)等,各分组接口特性说明如下:
PORTA
PIC16F877的PORTA总共有6个位(RA0~RA5),PORTA的接脚可作为数字输出输入端口,而系统重置后,PORTA自动成为模拟输入状态,可读取模拟输入讯号。
PORTB
PORTB总共有8个位(RB0~RB7),可以撰写程序规划输入输出方向、状态,其中,要进行烧录时,使用到三支接脚,分别是Pin36(RB3/PGM)、Pin39(RB6/PGC)与Pin40(RB7/PGD)。
PORTC
PORTC总共有8个位(RC0~RC7),除了可作为数位I/O外,还和一些特殊功能的周边电路共享接脚,例如CCP(直流马达控制)、I2C、SPI(同步串行通讯电路)、UART(异步串行传输电路)等等。
PORTD
PORTD总共有8个位(RD0~RD7),可作一般数字I/O,并与PSP(Parallel Slave Port)并列传输接口共享。当整体系统需要多单片机时,彼此可以经由并列传输接口来快速传输资料。
PORTE
PORTE总共有3个位(RE0~RE2),PORTE的Pin8、9、10有三种功能,除了基本I/O功能,也有模拟输入功能,而上述PORTD的并列传输接口设定所需的控制接脚,如/RD、/WR、/CS等,也是属于PORTE接脚。
PIC16F877指令简介
PIC16F877常用的语言有汇编语言与C语言两种,汇编语言是将每一个机器码使用一个文字代号代表,比较接近处理器真正动作模式;而C语言是比较符合人们的使用习惯,事先将汇编语言组合成C语言形式,使用较为方便,但是C语言所组译的机器码程序通常比较大,且组译软件通常需要额外购买。以下简介汇编语言相关指令与一套C语言组译软件。
PIC16F877指令摘要
PIC是采用RISC(Reduced Instruction Set Computing,精简指令集),与8051系列采用的CISC(Complicated Instruction Set Computing,复杂指令集)不同,PIC16F877所有指令指有35个,8051高达111个指令。
汽车电动助力转向系统
1 引言
随着电子控制技术的发展及其在汽车领域的广泛应用, 电动助力转向系统(Electric Power Steering, 简称EPS)越来越成为目前汽车电子技术研究的热点之一。与传统的转向系统相比,EPS系统结构简单,灵活性大,可以获得理想的操纵稳定性,能动态地适应汽车行驶状况的变化,在操纵舒适性、安全性、环保、节能、易于维修等方面也充分显示了其优越性[1]。目前, 电动助力转向已部分取代液压助力转向并获得广泛应用,如日本的大发、三菱、本田汽车公司,美国的Delphi汽车系统公司,德国的ZF公司等都相继研制出各自的EPS并装配使用。国内对EPS 系统的研究起步较晚,仅有清华、华中科大、吉林大学、合肥工大等高校开展了系统结构的方案设计、系统建模和动力学分析等研究,但处在理论探索、实验研究阶段。国内部分汽车厂商如重庆长安、南昌昌河、东风、一汽等与高校联合研究,也都处在研制的初级阶段,未达到实用程度[2]。
2 EPS系统的硬件组成及工作原理
2.1 EPS的硬件组成
EPS是一种直接依靠电力提供辅助扭矩的动力转向系统,结构如图2-1所示,它由电子控制单元(ECU)控制电机提供助力,系统主要由电子控制单元、扭矩传感器、转角传感器、车速传感器(可与其他系统共用)、直流电机、离合器、电磁继电器、减速机构和转向机构等组成。
图2-1 EPS系统结构图
2.2 EPS的工作原理
当汽车点火开关闭合时,ECU上电开始对EPS系统进行自检,自检通过后,闭合继电器和离合器,EPS系统便开始工作,当方向盘转动时,位于转向轴上的转角传感器和扭矩传感器把测得方向盘上的角位移和作用于其上的力矩传递给ECU,ECU根据这两个信号并结合车速等信息,控制电机产生相应的助力,实现在全速范围内最佳控制:在低速行驶时,减轻转向力,保证汽车转向灵活、轻便,在高速行驶时,适当增加阻尼控制,保证转向盘操作稳重、可靠。
3 基于PIC单片机的ECU系统设计
图3-1 ECU系统结构原理图
3.1 ECU工作原理
系统的控制核心为PIC16F877单片机,控制单元结构如图3-1所示。整个系统由车载 12V蓄电池供电,ECU工作时,扭矩、转角、车速、温度等传感器把采集到的信号经过输入接口电路处理后送至单片机的相应端口, 单片机根据系统助力特性和相应算法对这些数据分析处理,以确定助力电流的大小和方向,并通过单片机的PWM口发出脉冲指令和相应的换向控制端口发出换向指令,通过驱动电路和H桥电路控制直流电动机工作。在电动机的驱动电路上设有电流传感器,该传感器把检测到的电机实际工作电流通过电流探测电路反馈到单片机,单片机再根据相应的控制算法对电机实现闭环控制。如EPS系统工作出现异常,单片机将驱动EPS灯亮进行报警提示,同时断开继电器、离合器,退出电动助力工作模式,转为人工手动助力模式[3]。
3.2 PIC16F877单片机简介
该款机型是美国Microchip公司生产的8位RISC结构的单片机,具有高速数据处理的特性(执行速度可达 120ns),PIC16F877内部自带看门狗定时器、具有256Bytes的EEPROM、8k空间的FLASH存储器、8路10位AD转换功能、2 个脉宽调制CCP模块、在线烧录调试(ISP)功能,宽电压工作,可靠性高。PIC16F877有8级深度的硬件堆栈,RAM区的每个Byte位都可以寻址,有4条专用的位操作指令和2条移位指令。
3.3 直流电动机的选择
无刷直流电机在控制特性、效率、转矩脉冲、制造成本等方面,具有明显的优势。本项目采用永磁式无刷直流电机做为驱动源。
3.4 扭矩、转角传感器的选择
本文采用意大利BI公司的扭矩、位置复合传感器,该传感器除了提供扭矩信号外,还提供方向盘位置信号,为回正和阻尼逻辑的开发提供了便利。
3.5 电动机驱动控制电路的设计
电动机驱动控制电路必须能够高精度、快速地调整电动机的转速和输出转矩,从而满足EPS系统实时性和可靠性的要求。本项目中后向通道的核心控制采用脉宽调制(PWM)控制H桥电路。直流电机PWM控制方式有多种,根据电机工作的实际需要和系统的整体要求,本项目采用受限单极可逆PWM控制模式,主要优点在于可以避免开关管同臂导通,运行可靠性高、不需附加延时电路、开关频率相对较高,特别适用于大功率、大转动惯量、可靠性要求较高的直流电机控制的场合。
3.5.1 电机驱动电路
电动机的驱动电路主要包括FET桥式电路、FET基极驱动电路、电机驱动线路上的电流传感器和继电器构成。
FET桥式电路主要由四个大功率MOSFET功率管组成,要求功率管具有良好的开关特性、能承受较大的驱动电流、且具有较长的使用寿命,根据电机的功率参数及功率管的极限参数和电特性,我们采用四个相同的N沟道IRFP250功率管来构成H桥电路。
FET 基极驱动电路选用MOSFET专用栅极集成电路IR2109作为核心模块,该芯片是一种单通道、栅极驱动、高压高速功率器件,采用高度集成的电平转换技术,大大简化了逻辑电路对功率器件的控制要求,上管采用外部自举电容上电,使驱动电源数目大大减少,控制了电路板的体积,降低了成本,提高了系统可靠性 [4]。
驱动电路如图3-2所示,两个IR2109的IN端为驱动H桥同臂上下两个功率管的信号脉冲输入端,分别通过具有高速性能的6N137光电耦合器接至PIC16F877单片机的两个PWM脉冲输出端口;两个SD端分别与单片机的一个I/O口相连,控制电机停车操作;每个芯片的HO和LO端分别与同桥臂的功率管相连,控制电机转速;VB端通过自举二极管UF1005与+12V 电源相连,为了阻断特殊电路中所承受的全部电压,此处选用具有超快恢复特性的二极管UF1005。
图3-2 电机驱动电路
3.5.2 电机电流采样电路
系统进行电流采样有两方面用途,一是为电动机提供保护;二是通过电流传感器反馈电枢电流的信号,以便对电枢电流进行闭环控制。标准电阻是一种常用的电流传感器,由于其简单可靠、阻值稳定、精度高、频响好、输出电压直接比例于所流过的电流,在 PWM 系统中应用相当广泛。标准电阻一般采用锰铜或硅锰铜制成。在采样电路中,选用AD626把采样信号放大10的n倍送至单片机相应端口,具体电路如图 3-3。
图3-3 电机电流采样电路
3.6 继电器控制电路
如下图3-4所示,CPU控制信号经CPU端口PSP0输出后,开关管 Q1导通并驱动功率三极管 Q12,使继电器通电并闭合节点,继电器节点闭合后可给电机、离合器供电。CPU输出的高低电平信号分别控制继电器的合开操作。
图3-4 继电器控制电路设计
4 结论
本文在对EPS系统的原理和助力控制过程的分析基础上,对 EPS 控制系统的硬件电路进行了研究设计,提出了采用受限单极性可逆PWM控制模式控制直流电机;探索了在汽车电动助力转向系统中,低压、低速、大电流永磁式无刷直流电机的控制方法。采用精密电阻进行电机电流采样的方法,实现了对直流电机输出扭矩的闭环控制。在完成了硬件电路设计和软件编程后,按照预定的助力特性曲线,对EPS系统进行了台架试验,试验结果表明:电子控制单元信号采集的实时性较高,对电机闭环控制的跟随性较好,整个系统具有良好的电动助力特性,硬件部分的抗干扰能力和可靠性都很高。
超声波测距系统设计
引言
在自主行走机器人系统中,机器人要实现在未知和不确定环境下行走,必须实时采集环境信息,以实现避障和导航,这必须依靠能实现感知环境信息的传感器系统来实现。视觉、红外、激光、超声波等传感器都在行走机器人中得到广泛应用。由于超声波测距方法设备简单、价格便宜、体积小、设计简单、易于做到实时控制,并且在测量距离、测量精度等方面能达到工业实用的要求,因此得到了广泛的应用。本文所介绍的机器人采用三方超声波测距系统,该系统可为机器人识别其运动的前方、左方和右方环境而提供关于运动距离的信息。
1超声波测距原理
超声波发生器内部由两个压电片和一个共振板组成。当它的两极外加脉冲信号,且其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两极间未加外电压,当共振板接收到超声波时,就成为超声波接收器。超声波测距一般有两种方法:①取输出脉冲的平均电压值,该电压与距离成正比,测量电压即可测量距离;②测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔t,根据被测距离s=vt?2来得到测量距离,由于超声波速度v与温度有关,所以如果温度变化比较大,应通过温度补偿的方法加以校正。
本测量系统采用第二种方法,由于测量精度要求不是特别高,所以可以认为温度基本不变。
本系统以PIC16F877单片机为核心,通过软件编程实现其对外围电路的实时控制,并提供给外围电路所需的信号,包括频率振动信号、数据处理信号等,从而简化了外围电路,且移植性好。系统硬件电路方框图见图1。
由于本系统只需要清楚机器人前方、左方、右方是否有障碍物,并不需要知道障碍物与机器人的具体距离,因此不需要显示电路,只需要设定一距离阀值,使障碍物与机器人的距离达到某一值时,单片机控制机器人电机停转,这可通过软件编程实现。
2超声波发射电路
超声波的中心频率为40kHz,该频率可以通过以下程序产生(部分源程序):
2.1超声波发射电路
超声波发射电路以PIC16F877为核心,当单片机上电时,单片机从RA0口产生40kHz的超声波信号,但是此时该信号无法通过与非门进入放大电路使超声波发射头发射超声波,只有闭合开关S1时,从RA1口发射出一门控信号,该信号的频率为4kHz,同时启动单片机内部的定时器TMR1,开始计数。该门控信号每发射一个周期的波形,超声波就会发射10个完整的波形,这可由它们的频率得出。超声波的周期为1(40kHz)=01025ms,而门控信号的周期为1(4kHz)=0125ms。最后根据s=vt2求出障碍物与移动机器人的距离。当超声波接收头收到反射回来的超声波时,计数器停止计数,时间t可以根据计数器的计数与门控信号的周期求出。RA2口接RS触发器,RS触发器可以自动控制超声波的发射和停止。本系统的电路还包括人工复位电路,由单片机的MCLR引脚接S2来控制,超声波发射电路图见图2。
2.2门控电路(RS触发器)
为实现对超声波发射和接收的自动控制,须在电路中加一门控电路,该门控信号频率为4kHz,如把输出脉冲作为闸门信号,让已知频率fc的脉冲恰好通过闸门,那么t=NTc,其中,Tc为已知脉冲的周期,N为脉冲的个数。
门控电路由RS触发器组成,当输入端R=1(S=0)时复位,即输出端Q=0;当R=0(S=1)时置位,即Q=1。RS触发器与单片机的RA2口相连。
2.3超声波放大电路
超声波放大电路由三极管等组成,由于单片机RA口最多只有20mA~25mA上拉电流,而超声波发射器最小需要60mA的电流,所以在与非门后加一级放大电路来放大电流,以完成超声波的发射。超声波放大发射电路见图3。
3超声波接收电路
3.1超声波接收放大电路
由于超声波接收头接收到的超声波信号很微弱,所以在其后需加一超声波接收放大电路。该电路采用两个集成运放,设计为两级,两级都为同相输入,因为同相输入的电压放大倍数为1+RfR,所以每一级的放大倍数为10,两级放大倍数接近100倍,这样后续电路就可以很容易地检测到输入的信号。集成运放采用双电源供电,超声波接收放大电路见图4。
3.2信号滤波电路
从信号放大电路出来的声波带有一定的干扰,为了去除干扰信号,需要一滤波电路,信号滤波电路选用带通滤波器电路,使其中心频率为40kHz、带宽为2kHz,外加一过零比较器,使输出信号转化为方波信号。信号滤波电路见图5。
3.3信号整形电路
从信号滤波电路出来的方波信号很不规则,故其后加一整形电路,整形电路由两级非门串联,并联一电阻组成,整形后再送单片机进行处理,信号整形电路见图6。
4软件程序设计
软件采用模块化设计,由主程序、发射子程序等组成,软件程序框图见图7。
5结语
本文设计的超声波测距系统采用了单片机编程技术,配合硬件完成了系统的要求,其精度能满足大部分的工程需要。与传统的测距系统相比,具有结构简单、价格便宜、移植性好等特点。