APP下载

轮式机器人控制系统设计

2011-06-09杨春雷宋玉龙杨姗姗

电子设计工程 2011年24期
关键词:低电平高电平计数器

杨春雷,宋玉龙,张 腾,杨姗姗

(1.西北工业大学 电子信息学院,陕西 西安 710129;2.西北工业大学 计算机学院,陕西 西安 710129;3.西北工业大学 自动化学院,陕西 西安 710129)

移动机器人主要有轮式、履带式、腿式、蛇形式、跳跃式和复合式。轮式机器人具有机构简单、驱动和控制相对方便、机动灵活等优点,被大量应用于工业、农业、反恐防爆、家庭、空间探测等领域[1]。本系统用两个直流电机驱动4个轮子,用差动的方式实现机器人各种直线、曲线运动。在各类机电系统中,直流电机具有良好的起动、制动和调速性能。最常用的直流调速技术是脉宽调制(Pulse Width Modulation,PWM)直流调速技术,它具有调速精度高、响应速度快、调速范围宽和耗损低等特点[2]。本系统选用具有6个PWM通道的Atmega168单片机作为处理器,使用两个定时器的快速PWM模式对电机进行速度控制。

1 硬件设计

1.1 Atmega168特征

Atmega168是ATMEL公司的一款高性能、低功耗的8位AVR微控制器[3],采用先进的精简指令集架构。Atmega168有3个定时/计数器:8位的定时/计数器 0、16位的定时/计数器1以及8位的定时/计数器3。每个定时器有2个PWM通道,因此共有6个PWM通道,它们对应的PWM波输出引脚分别为 PD6(OC0A)、PD5(OC0B)、PB1(OC1A)、PB2(OC1B)、PB3(OC2A)、PD3(OC2B)。

1.2 电路原理图设计

图1所示为Atmega168最小系统的原理图,包括电源电路、复位电路和晶振电路。图中复位电路制造出两个复位信号,其中信号用于单片机,RST信号用于ISP下载。

图2所示为电机的双H桥驱动电路原理图,下面对重要部分作说明:

1)H桥电路 驱动电路采用功率 MOSFET(Metal-Oxide-Semiconductor Field Effect Transistor)构成 H 桥驱动电路。如图2所示,当PWM1A为高电平、PWM1B为低电平时,NMOS管U9和PMOS管U7导通,另外两个截止,电机反转;当PWM1A为低电平、PWM1B为高电平时,NMOS管 U9和PMOS管U7截止,另外两个导通,电机正转。PWM2A和PWM2B同上。

图1 Atmega168最小系统Fig.1 Atmega168 Minimum System

2)二极管D1~D8 因为电机线圈在电路开闭瞬间产生的反向电动势通过会高过电源,这样对MOSFET和电路会有很大的影响甚至烧毁电机,为避免这种情况发生,通常需要在MOSFET两端并联二极管[4]。

图2 双H桥驱动电路Fig.2 Dual H bridge drive circuit

1.3 印刷电路板设计

为了使机器人有较大的驱动能力,必须在设计PCB时注意电机相关电源线的线宽,要有能力经过较大电流。然而由于MOS管引脚焊盘间距的限制,线宽不可能太大,为此采用焊盘布线。如图3右边H桥驱动电路部分所示,与MOS管源极、漏极相连的大电流线均是由焊盘拉制成的,可以通过在焊接时增加锡量来提升过大电流的能力。这样制出的电路板可以承受10 A以上驱动电流。

2 软件设计

2.1 开发软件及配置

1)开发环境构建

文中选用AVR Studio 4+WinAVR构建开发环境。AVR Studio 4是官方的开发环境,可使用汇编语言进行开发,使用其他语言需第三方软件协助,集软硬件仿真、调试、编程下载于一体。它是唯一的调试器。WinAVR是基于GCC编译器的开源软件,补充AVR Studio 4的不足,用于C语言开发。

图3 驱动控制电路PCB图[5]Fig.3 Drive and control circuit PCB

2)修改 Makefile

WinAVR基于GCC,因此就免不了使用makefile来实现自动编译,打开一个已有的Makefile进行修改即可。将MCU改为Atmega168,F_CPU改为12MHz(电路板上使用晶振的频率),SRC改为工程中C源文件的名字 (如SRC=file1.c file2.c file3.c)。另存为新的Makefile文件并放在工程文件夹中。

2.2 定时器PWM模块使用

图4所示为定时/计数器 0的控制寄存器 TCCR0A、TCCR0B 的位定义。其中 COM0A1、COM0A0、COM0B1、COM0B0为比较输出模式(Compare Output Mode)位,决定了在计数器TCNT0与输出比较寄存器OCR0A、OCR0B值相同时,引脚OC0A、OC0B 输出电平的高低;WGM02、WGM01、WGM00 为波形发生模式(Waveform Generation Mode)位,决定定时/计数器 0 工作模式;CS02、CS01、CS00 为时钟选择 (Clock Select)位,决定定时/计数器0所用时钟对主时钟的分频比;FOC0A、FOC0B为引脚OC0A、OC0B强制输出,此处不用。

定时/计数器有 4种工作模式:普通模式、CTC(Clear Timer on Compare Match)模式、快速PWM模式、相位修正PWM模式。模式的设置方法如图表1所示。本系统采用模式3,计数最大值为0xFF的快速PWM模式。

图4 定时/计数器0控制寄存器Fig.4 Timer/Counter 0 Control Register

表1 定时/计数器0工作模式设置Tab.1 Timer/Counter 0 work mode settings

2.3 程序原理及实现

图2中H桥驱动电路中,PWM1A若为高电平,PWM1B则必须为低电平,否则反之。故PWM1A与PWM1B波形应是互相反相的。PWM2A、PWM2B也是如此。对于快速PWM模式,通过比较输出模式位的设置可以得到反转和非反转两个正好互相反相的PWM波信号。

图5 电机驱动程序流程Fig.5 Motor drive program flow

如图5所示为电机驱动程序的流程。程序中使用了两个 8位定时器(定时器 0和定时器 2),通过 PD6(OC0A)、PD5(OC0B)、PB3 (OC2A)、PD3 (OC2B)4个引脚输出信号PWM1A、PWM1B、PWM2A和PWM2B。下面对流程中各个步骤进行详细说明:

1)端口初始化:

将端口方向寄存器 DDRx(Data Direction Register)中对应引脚 PD6(OC0A)、PD5(OC0B)、PB3(OC2A)、PD3(OC2B)的比特位设为1,从而使这些引脚处于输出模式。

2)定时器0、2初始化:

定时器0、2的设置方法是一样的,下面仅对定时器0的设置作详细说明:

①WGM02、WGM021、WGM00 取 011, 即快速 PWM 模式,计数器最大值为0xff。

②COM0A1、COM0A0取10,为非反转模式,即当计数器TCNT0的值与输出比较寄存器OCR0A的值相同匹配时,OC0A引脚输出低电平,当计数器TCNT0计数值溢出回到0时,OC0A引脚输出高电平。

③COM0B1、COM0B0取11,为反转模式,即当计数器TCNT0的值与输出比较寄存器OCR0B的值相同匹配时,OC0B引脚输出高电平,当计数器TCNT0计数值溢出回到0时,OC0B引脚输出低电平。可以看出,当OCR0B的值与OCR0A设成一样时,OC0B的输出波形正好与OC0A的反相。

④时钟选择位CS02、CS01、CS00取001,则定时/计数器使用的时钟频率没有经过主时钟预分频,即等于晶振主时钟频率。

⑤计数寄存器初值TCNT0设为0x00,则计数器从0加计数到255,溢出后又直接从0加计数到255,如此往复。

⑥输出比较寄存器OCR0A=OCR0B=100,当TCNT0计数值等于100时,则引脚OC0A、OC0B输出电平发生改变。此数值决定了直流电机的转速,在整个机器人程序系统中,当由机器人的策略子程序给出合适的值。

3)死循环:

一般单片机程序都要主函数执行死循环,以避免程序执行到不可预知的地方。

2.4 下载目标代码

选择AVR Studio的菜单栏Project|Configuration Options即可打开工程设置,确保Create Hex File前的复选框被选中,然后编译上述C程序,若无错误即可生成.hex文件用于下载。

将ISP下载线与单片机端和计算机端都连接好,打开一款AVR下载软件,在下载之前要设置一下熔丝位。新的Atmega168单片机时钟源选择熔丝位是配置在 “校准的内部RC振荡器”状态的,改成“外部8 mHz以上石英晶振”状态[6]。然后即可将.hex文件下载到单片机Flash中。

3 结 论

本文从硬件和软件两方面详细讲述了轮式机器人直流电机驱动板整个系统的开发原理和过程。其中,硬件部分介绍了驱动电路的设计原理图,并给出了支持电机大电流、大功率运转条件下PCB的画法。软件部分首先介绍了AVR单片机开发环境的构建以及新建工程所需的配置,然后详述了用2个定时器的快速PWM模式产生4路PWM信号的方法,最后说明了ISP下载所需配置和下载方法。使用6节强力镍氢电池,系统实际运行可达到15 A的驱动电流,达到预期目的。

[1]朱磊磊,陈军.轮式移动机器人研究综述[J].机床与液压,2009,37(8):242-247.ZHU Lei-lei,CHEN Jun.Wheeled mobile robot research[J].Machine Tool&Hydraulics,2009,37(8):242-247.

[2]张立勋,沈锦华,路敦民,等.AVR单片机实现的直流电机PWM调速控制器[J].机械与电子,2004,4:29-32.ZHANG Li-xun, SHEN Jin-hua, Lu Dun-min, et al.Pulse width modulation speed controller of DC motor based on AVR Microcontroller[J].Machinery and Electronics,2004,4:29-32.

[3]Atmel Corporation.8-bit AVR Microcontroller with 8K Bytes In-System Programmable Flash:ATmega48、ATmega88、ATmega168[M].USA:Atmel Corporation,2004.

[4]陈万米,张冰,朱明,等.智能足球机器人系统[M].北京:清华大学出版社,2009.

[5]谈世哲.PROTEL DXP2004电路设计基础与典型范例[M].北京:电子工业出版社,2007.

[6]江海波,王卓然,耿德根,等.深入浅出AVR—从Atmega48/88/168开始[M].北京:中国电力出版社,2008.

猜你喜欢

低电平高电平计数器
采用虚拟计数器的电子式膜式燃气表
一种基于FPGA的PWM防错输出控制电路
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
浅谈物理电路与数字电路
PDM 1kW中波广播发射机保护电路分析
15-MeV电子直线加速器的低电平系统
计数器竞争冒险及其处理的仿真分析
三值绝热多米诺可逆计数器设计
基于单片机的仰卧起坐计数器