光栅盘是在圆盘边刻有很多光栅。当光源照射到光栅部分时,没有被光栅挡住的光源就透射过去。本系统中采用了一个圆面上刻有60个均匀光栅格的光栅盘。当电机旋转一周时,会产生60个光脉冲信号。 3.8.2 光电传感器
光电传感器原理是有一个发光二极管和一个由光信号控制放大的三极管组成。由发光二极管发出红外光线通过3mm宽的气隙透射到另一端的三极管上,使得该三极管导通。其特征如下:
? 气隙是3mm。 ? 分辨率达到0.5mm。 ? 大电流传输比
ICIF?30100。
? 暗电流为:0.25?
? 在IF=10mA时,发光二极管产生的光线的波长为940nm。
安装时将光栅盘圆面钳到沟槽中,光电传感器的发光二极管发出的红外线通过3mm气隙照射到光栅盘,光通过光栅盘面上透光的光栅气隙可以使得光传感器的三极管导通,从C极会输出一个低电平,被光栅挡住的光不能透过去,使得光电传感器的C极会输出一个高电平。
3.8.1光电传感器原理图
光电传感器在硬件电路设计上很简单, 如图3.8.2。在光电传感器的1引脚上接一个限流电阻R,限制流过发光二极管的电流IF=10mA左右。计算公式如下:
IF?(VCC-VF)/R
其中,VF?1.15V,VCC?5V,IF?10mA,计算出R?390?左右。
21
3.8.2光电传感器设计图
3.9本章小结
本章讨论了系统硬件电路设计的原则;依据系统方案设计了各功能模块电路;说明各模块电路的连接方法;着重分析了放大电路、复位、LCD电路、转速测量电路的原理。
4系统软件设计
4.1引言
随着现代技术的发展,利用软件代替和简化硬件,利用基本的硬件电路和软件技术达到系统多功能集成和容易修改的要求。一个较为简单的硬件电路,系统功能的主要实现 是依靠软件的设计来完成的。本系统的软件采用模块化设计,将系统分为若干个模块,分别实现各项功能,这样在系统软件的调试过程中,各个模块的独立调试有助于问题的发现和解决,在一定程度上节约了程序的调试时间。
4.2系统应用程序设计
微芯公司为PIC18F458系列的集成与调试提供的工具包括:软仿真器,集成开发调试软件MPLAB,PIC系列单片机可采用汇编语言或C语言编写源程序代码。MPLAB是一个完整的PIC单片机集成开发环境,也是目前最优秀、最流行的PIC单片机开发软件,大部分的PIC系列的单片机都可以采用该软件工具进行开发。MPLAB包括下列功能:集成可视化编辑界面,可直接编写C、汇编等文件。集成代码生成工具,包括汇编器、连接器等等。基本调试工具,支持调试断点工具走。系统的软件设计是用PIC的汇编语言在MPLAB集成环境下运行、调试、完成的运行。
22
4.3直流电机转速控制器的软件设计
直流电机转速控制器的软件设计和系统功能的开发和完善是一个循序渐进过程,本文所作的软件开发是基于直流电机多速控制器的基本功能要求设计的该系统软件有主程序、功能键处理程序、电机运行显示程序、键盘设置参数程序测速程序、延时子程序等。 该系统的整个软件设计全部采用模块化程序设计思想,由系统初始化模块、案件识别模块、LCD模块、高优先级和低优先级中断服务程序四大模块组成。其中,系统初始化模块、按键识别和LCD显示模块在主程序完成,而中断服务完成TMR0定时溢出中断、TMR1外部计数溢出中断、TMR3的1?s计数溢出中断以及INT0外脉冲上边沿捕获中断等。整个软件的主程序和中断服务程序框图如图4.3至4.5。
图4.3主程序框图
23
图4.4高优先级中断服务程序框图
图4.4低优先级中断服务程序框图
24
4.3.1系统初始化模块
主程序的系统初始化模块包括对PIC单片机的CPU系统时钟初始化、PIC单片机的
I/O方向初始化、TMR0定时/计数器的初始化、TMR3定时/计数器的初始化、CCP模块的初始化和系统相关变量的初始化过程。 4.3.1.1 CPU系统始终初始化
PIC18单片机内部集成了经过校正的8MHz主时钟源,系统上电默认主时钟为1MHz。通常,需要对OSCCON寄存器进行配置,使其工作在8MHz。若为了提高CPU的运算速度,则采用PIC18单片机的内部PLL的4倍频以使CPU主时钟达到32MHz,只需要对OSCTUNE寄存器进行设置。本系统采用32MHz的时钟源,因此初始化的结果如下: OSCCON=0x70;//IRCF2..0=111,选择内部8MHz的主振荡器
OSCTUNE=0x40;//PLLEN=1,使能PLL的4倍频,从而CPU内核时钟为F为32MHz 4.3.1.2 PIC单片机I/O口方向初始化
在总图中,RD端口的RD0..7和RE端口的RE0..2是与LCD模块连接,主要是从PIC单片机输出数据或指令到LCD模块,因此可以将其全部设置为输出方向;另外,由于RE0..2上电复位默认为模拟输入口,不是数字I/O口,因此需要对ADCON1控制寄存器配置RE0..2为数字I/O口。由于RB端口接有3个按键K1..3和INT0外部中断信号输入,因此需要将RB端口配置成带有上拉功能的输入端口,可以启用RB内部弱上拉。P1A和P1B是PWM信号的输出,应将R1A和R1B配置成输出引脚。具体的初始化结果如下: ADCON1=0x0F;//RA和RE端口全为数字IO口 TRISD=0x00;//RD端口置输出方向 TRISE=0x00;//RE端口置输出方向 TRISCbits.TRISC6=0;RD6为输出引脚 TRISCbits.TRISC7=0;RD7为输出引脚 TRISDbits.TRISD4=0; P1A为输出引脚 TRISDbits.TRISD5=0; P1B为输出引脚 4.3.1.3 TMR0定时/计数器初始化
本系统中采用TMR0产生1s的定时,因此要将TMR0初始化工作在定时功能上,设置
T0CON模式寄存器的与分频比和选择内部时钟源计数来完成定时,对TMR1L和TMR1H设置定时1s的初值。由于TMR0可以采用16位的方式计数,在对TMR1L和TMRH载入初值时,
25