舵机的数字化控制器设计毕业论文.doc_第1页
舵机的数字化控制器设计毕业论文.doc_第2页
舵机的数字化控制器设计毕业论文.doc_第3页
舵机的数字化控制器设计毕业论文.doc_第4页
舵机的数字化控制器设计毕业论文.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学毕业设计(论文)报告用纸舵机的数字化控制器设计毕业论文目 录引言11 舵机控制系统概述21.1 舵机工作原理21.2 PID控制算法21.2.1 PID控制系统的原理和特点21.2.2 增量式PID算法41.2.3 PID控制器参数的工程整定方法42 AVR单片机概述52.1 AVR单片机的优势特征52.2 ATmega8L单片机的特点62.2.1引脚说明82.2.2 A/D转换器92.2.3脉宽调制PWM原理103 串口通信123.1 串口通信的作用123.2 RS-232C接口和MAX232芯片简介123.3 MAX232芯片引脚描述及其应用123.3.1 MAX232应用电路介绍133.3.2串口模块原理图设计144 驱动芯片154.1 电机驱动芯片LG9110154.2 电机驱动芯片L293D165 硬件设计思路185.1 系统基本原理185.2 系统硬件设计195.2.1 原理图说明196 系统软件设计206.1 系统主程序206.1.1主程序设计要点206.1.2主程序流程图206.1.3 PID子程序流程图226.1.4 程序设计思路226.1.5 PD子程序说明236.2 系统仿真246.3 上位机266.3.1 MSComm控件原理266.3.2上位机运行结果277 系统调试297.1 硬件调试297.2 软件调试308 结论31谢 辞32参考文献33附 录34桂林电子科技大学毕业设计(论文)报告用纸 第50页 共52页引言 随着高新技术在测控领域中的应用,有力地促进了控制的系统化和精确化,然而,经典的反馈控制、现代控制和大系统理论在应用中遇到不少难题。首先,这些控制系统的设计和分析都是建立在精确的系统数学模型的基础上的,但是各个领域对自动控制系统控制精度、响应速度、系统稳、定性与自适应能力的要求越来越高,被控对象或过程的非线性、时变性、多参数点的强烈耦合、较大的随机扰动、各种不确定性以及现场测试手段不完善等,使难以按数学方法建立被控对象的精确模型;其次,为了提高控制的性能,整个控制系统变得极其复杂,增加了设备的投资,降低了系统的可靠性。人工智能的出现和发展,促进了自动控制向更高的层次,即智能控制发展。基于单片机的智能控制系统,使得舵机等伺服系统的模块化和数字化更容易实现,极大的促进了控制精度、响应速度等控制要求的提高。舵机作为一种伺服电机属于闭环控制系统,和一般的直流电机、交流电机相比具有较高的控制精度,步进电机虽然也具有一定的控制精度但仍然属于开环结构。于是舵机在机器人关节控制和航模转舵控制等需要精确控制而又没有很高载荷的系统中就显得十分经济实用,在航空航天仪器、雷达、导弹、智能自适应仪器、各种武器电子和抗恶劣环境电子等系统中也得到广泛应用。1 舵机控制系统概述1.1舵机工作原理舵机,又名伺服电机,主要是由外壳马达、减速齿轮和电位器构成。舵机主要适用于那些角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿,车模和航模的方向控制。舵机工作原理:舵机本质上是可定位的马达,它的内部包括了一个小型直流马达、一组变速齿轮组、一个反馈可调电位器和一块电子控制板。它是一个典型闭环反馈系统1,减速齿轮组由马达驱动,其终端(输出端)带动一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较,产生调整脉冲,并驱动马达正向或反向地转动,使齿轮组的输出位置与期望值相符,令调整脉冲趋于为0,从而达到使舵机精确定位的目的。简单的说就是发一个控制信号给舵机,经过电路板判断转动方向,再驱动马达开始转动,透过减速齿轮将动力传至摆臂,同时由电位器检测送回信号,判断是否已经达到指定位置。数字舵机(Digital Servo)和模拟舵机(Analog Servo)在基本的机械结构方面是完全一样的,主要由马达、减速齿轮、控制电路等组成,而数字舵机和模拟舵机的最大区别则体现在控制电路上,数字舵机的控制电路比模拟舵机的多了微处理器和晶振。相对于模拟舵机,数字舵机有如下优点:首先,驱动马达的动力,可以由微处理器的程序调整,以应用于不同的应用场合,并优化舵机性能。其次,舵机马达能以更高的频率响应控制信号,而且“死区”(无响应区)变小;反应变得更快;加速和减速时也更迅速、更柔和;运转精度以及舵机锁位能力也更强。本设计就是利用模拟舵机的机械部分,运用单片机和电位器的闭环系统进行角度控制,主要用到PD控制,采用电位器进行角度检测,由单片机对其进行处理,输出PWM脉冲信号控制舵机转动到所设定的角度。即将模拟舵机改装成数字舵机,实现了舵机的数字化控制。1.2 PID控制算法1.2.1 PID控制系统的原理和特点在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器作为最早实用化的控制器已有50多年历史,现在仍然是应用最广泛的工业控制器。它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。比例控制器是在误差一旦产生就立即有控制作用,使得被控量向减小误差的方向变化,控制作用的强弱取决于比例系数的。比例控制的缺点是对于具有自平衡的性的被控对象存在静差。加大可以减小系统静差,但过大的时候,会使系统的动态性能变坏,甚至会使闭环系统不稳定。PID控制系统原理如图1.1所示。图1.1 PID控制系统原理图 (1-1) (1-2)积分控制能对误差进行记忆并积分,有利于消除静差。但它的不足之处在于积分作用具有滞后特性,存在积分饱和现象,如果积分控制作用太强会使控制的动态性能变差,以至于使系统变得不稳定。比例控制器是在误差一旦产生就立即有控制作用,使得被控量向减小误差的方向变化,控制作用的强弱取决于比例系数的。比例控制的缺点是对于具有自平衡的性的被控对象存在静差。加大可以减小系统静差,但过大的时候,会使系统的动态性能变坏,甚至会使闭环系统不稳定。积分控制能对误差进行记忆并积分,有利于消除静差。但它的不足之处在于积分作用具有滞后特性,存在积分饱和现象,如果积分控制作用太强会使控制的动态性能变差,以至于使系统变得不稳定。微分控制能对误差进行微分,得出误差的变化趋势,增大微分作用可加快系统响应,使超调量减少,增加系统稳定性,缺点是对于干扰同样的敏感,使系统抑制干扰的能力降低。 1.2.2 增量式PID算法 数字PID是在模拟PID算法的基础上,用差分方程式代替连续方程,所以模拟PID算法中许多行之有效的方法都可以用在数字PID运算中。数字PID两种最基本的算法为:位置型PID和增量型PID。本设计采用增量型PID。增量式PID算法的输出量为: (1-3)式中,en、en-1、en-2分别为第n次、n-1次和n-2次的偏差值,Kp、Ti、Td分别为比例系数、积分系数和微分系数,T为采样周期1.2.3 PID控制器参数的工程整定方法主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行 PID控制器参数的整定步骤如下: 首先预选择一个足够短的采样周期让系统工作; 仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期; 在一定的控制度下通过公式计算得到PID控制器的参数。2 AVR单片机概述自1983年Intel公司推出8051单片机系列至今已有20年,Atmel公司把8051内核与其擅长的Flash制造技术相结合,推出了片内集成可重复擦写1000次以上Flash程序存储器、低功耗、8051内核的AT89系列单片机。改系列的典型产品有AT89C51、AT89C52、AT89C1051和AT89C2051,在我国的单片机市场上占有相当大的份额,得到了广泛的使用。由于8051本身结构的先天性不足及近年来各种采用新型结构和新技术的单片机的不断涌现,现在的单片机市场百花齐放。Atmel在这种强大的市场压力下,发挥Flash存储器的技术特长,于1997年研发并推出增强型内置Flash程序存储器的精简指令集RISC的新型高速8位单片机,简称AVR单片机,可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通信设备、家用电器等各个领域。2.1 AVR单片机的优势特征单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度提升,且电路简单,故障率低,可靠性高,成本低廉。单片机种类很多,在简易机器人制作和创新中,为什么选用AVR单片机呢? 简便易学,费用低廉 首先,对于非专业人员来说,选择AVR单片机的最主要原因,是进入AVR单片机开发的门槛非常低,只要会操作电脑就可以学习AVR单片机的开发。单片机初学者只需一条ISP下载线,把编辑、调试通过的软件程序直接在线写入AVR单片机,即可以开发AVR单片机系列中的各种封装的器件。AVR单片机因此在业界号称“一线打天下”。 其次,AVR单片机便于升级。AVR程序写入是直接在电路板上进行程序修改、烧录等操作,这样便于产品升级。 再次,AVR单片机费用低廉。学习AVR单片机可使用ISP在线下载编程方式(即把PC机上编译好的程序写到单片机的程序存储器中),不需购买仿真器、编程器、擦抹器和芯片适配器等,即可进行所有AVR单片机的开发应用,这可节省很多开发费用。程序存储器擦写可达10000次以上,不会产生报废品。 高速、低耗、保密 首先,AVR单片机是高速嵌入式单片机: AVR单片机具有预取指令功能,即在执行一条指令时,预先把下一条指令取进来,使得指令可以在一个时钟周期内执行。 多累加器型,数据处理速度快。AVR单片机具有32个通用工作寄存器,相当于有32条立交桥,可以快速通行。 中断响应速度快。AVR单片机有多个固定中断向量入口地址,可快速响应中断。 其次,AVR单片机耗能低。对于典型功耗情况,WDT关闭时为100nA,更适用于电池供电的应用设备。有的器件最低1.8 V即可工作。 再次,AVR单片机保密性能好。它具有不可破解的位加密锁Lock Bit技术,保密位单元深藏于芯片内部,无法用电子显微镜看到。 I/O口功能强,具有A/D转换等电路 AVR单片机的I/O口是真正的I/O口,能正确反映I/O口输入/输出的真实情况。工业级产品,具有大电流(灌电流)1040 mA,可直接驱动可控硅SCR或继电器,节省了外围驱动器件。 AVR单片机内带模拟比较器,I/O口可用作A/D转换,可组成廉价的A/D转换器。ATmega48/8/16等器件具有8路10位A/D。 部分AVR单片机可组成零外设元件单片机系统,使该类单片机无外加元器件即可工作,简单方便,成本又低。 AVR单片机可重设启动复位,以提高单片机工作的可靠性。有看门狗定时器实行安全保护,可防止程序走乱(飞),提高了产品的抗干扰能力。 有功能强大的定时器/计数器及通讯接口 定时/计数器T/C有8位和16位,可用作比较器。计数器外部中断和PWM(也可用作D/A)用于控制输出,某些型号的AVR单片机有34个PWM,是作电机无级调速的理想器件。 AVR单片机有串行异步通讯UART接口,不占用定时器和SPI同步传输功能,因其具有高速特性,故可以工作在一般标准整数频率下,而波特率可达576K。 2.2 ATmega8L单片机的特点ATmega8L是AVR高档单片机中内部接口丰富、功能齐全、性能价格比最好的品种。其主要特点如下: 高性能、低功耗的 8 位 AVR 微处理器。 先进的RISC结构。 130 条指令,大多数指令执行时间为单个时钟周期。 32 个8 位通用工作寄存器。 全静态工作。 工作于16 MHz 时性能高达16 MIPS。 只需两个时钟周期的硬件乘法器。 非易失性程序和数据存储器。 8K 字节的系统内可编程Flash 。 擦写寿命: 10,000 次。 具有独立锁定位的可选Boot 代码区。 通过片上Boot 程序实现系统内编程。 真正的同时读写操作。 512 字节的EEPROM。 擦写寿命: 100,000 次。 1K 字节的片内SRAM。 可以对锁定位进行编程以实现用户程序的加密。 外设特点。 两个具有独立预分频器8 位定时器/ 计数器,其中之一有比较功能。 一个具有预分频器、比较功能和捕捉功能的16 位定时器 /计数器。 具有独立振荡器的实时计数器RTC。 三通道PWM;8路 10 位ADC。 两个可编程的串行USART。 TQFP 与MLF封装的 8 路ADC。 可工作于主机/从机模式的 SPI串行接口。 PDIP 封装的6 路 ADC。 具有独立片内振荡器的可编程看门狗定时器。 面向字节的两线接口;片内模拟比较器 。 特殊的处理器特点。 上电复位以及可编程的掉电检测。 片内经过标定的RC 振荡器。 片内/片外中断源。 5种睡眠模式 : 空闲模式、 ADC 噪声抑制模式、省电模式、掉电模式及 Standby 模式。 I/O和封装。 23个可编程的I/O 口。 28引脚PDIP封装 ,32 引脚TQFP封装 ,32 引脚 MLF封装。 工作电压。 2.7-5.5V (ATmega8L)。 速度等级。 0-8 MHz (ATmega8L)。 4 Mhz时功耗 , 3V, 25C。 工作模式: 3.6 mA。 空闲模式: 1.0 mA。 掉电模式: 0.5 A。2.2.1 引脚说明ATmega8L PDIP封装的引脚图如图2.1所示。图2.1 ATmega8L PDIP封装 VCC 数字电路的电源。 GND 地。 端口 B(PB7.PB0) XTAL1/XTAL2/TOSC1/TOSC2端口 B 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。在复位过程中,即使系统时钟还未起振,端口 B处于高阻状态。通过时钟选择熔丝位的设置, PB6 可作为反向振荡放大器或时钟操作电路的输入端。通过时钟选择熔丝位的设置 PB7 可作为反向振荡放大器的输出端。 端口 C(PC5.PC0) 端口C为7 位双向 I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。 PC6/RESET 若 RSTDISBL 熔丝位编程,PC6作为 I/O 引脚使用。注意 PC6 的电气特性与端口C 的其他引脚不同,若 RSTDISBL 熔丝位未编程,PC6 作为复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。 端口 D(PD7.PD0) 端口D为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。 RESET 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限时间的脉冲不能保证可靠复位。 AVCC AVCC 是A/D转换器、端口C (3.0)及ADC (7.6)的电源。不使用ADC时,该引脚应直接与VCC 连接。使用ADC时应通过一个低通滤波器与VCC 连接。注意,端口C (5.4)为数字电源, VCC。 AREF A/D 的模拟基准输入引脚。 ADC7.6(TQFP 与MLF封装 ) TQFP与MLF封装的ADC7.6作为A/D转换器的模拟输入。为模拟电源 且作为10位ADC通道。2.2.2 A/D转换器特点: 10 位 精度 0.5 LSB 的非线性度 2 LSB 的绝对精度 13 - 260 s 的转换时间 最高分辨率时采样率高达15 kSPS 6 路复用的单端输入通道 2 路附加复用的单端输入通道 (TQFP与 MLF封装 ) 可选的左对齐ADC读数 0 - VCC 的 ADC输入电压范围 可选的2.56V ADC参考电压 连续转换或单次转换模式 ADC 转换结束中断ATmega8有一个10位的逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接,能对来自端口 C 的 8 路单端输入电压进行采样。单端电压输入以 0V (GND) 为基准。ADC包括一个采样保持电路,以确保在转换过程中输入到ADC的电压保持恒定。ADC 由 AVCC 引脚单独提供电源。AVCC 与 VCC 之间的偏差不能超过 0.3V。标称值为 2.56V的基准电压,以及 AVCC,都位于器件之内。基准电压可以通过在AREF引脚上加一个电容进行解耦,以更好地抑制噪声。 ADC 通过逐次逼近的方法将输入的模拟电压转换成一个 10 位的数字量。最小值代表GND,最大值代表AREF引脚上的电压再减去1 LSB。通过写ADMUX寄存器的REFSn位可以把 AVCC 或内部 2.56V 的参考电压连接到 AREF引脚。在 AREF 上外加电容可以对片内参考电压进行解耦以提高噪声抑制性能。任何 ADC 输入引脚,像 GND 及固定能隙参考电压,都可以作为 ADC 的单端输入。通过设置 ADCSRA寄存器的 ADEN 即可启动 ADC。如果要求转换结果左对齐,且最高只需 8 位的转换精度,那么只要读取 ADCH 就足够了。否则要先读 ADCL,再读 ADCH,以保证数据寄存器中的内容是同一次转换的结果。一旦读出 ADCL, ADC 对数据寄存器的寻址就被阻止了。也就是说,读取 ADCL 之后,即使在读 ADCH 之前又有一次 ADC 转换结束,数据寄存器的数据也不会更新,从而保证了转换结果不丢失。 ADCH 被读出后, ADC 即可再次访问 ADCH 及 ADCL寄存器。ADC转换结束可以触发中断。即使由于转换发生在读取ADCH与ADCL之间而造成ADC无法访问数据寄存器,并因此丢失了转换数据,中断仍将触发。2.2.3脉宽调制PWM原理本系统采用内部16位定时器T1来产生两路PWM信号。16位的T/C可以实现精确的程序定时(事件管理)、波形产生和信号测量。其主要特点如下: 真正的16位设计 (即允许 16 位的PWM) 2 个独立的输出比较单元 双缓冲的输出比较寄存器 一个输入捕捉单元 输入捕捉噪声抑制器 比较匹配发生时清除寄存器( 自动重载) 无干扰脉冲,相位正确的PWM 可变的PWM周期 频率发生器;外部事件计数器 4 个独立的中断源(TOV1、OCF1A、OCF1B 与 ICF1)寄存器:定时器 / 计数器 TCNT1、输出比较寄存器 OCR1A/B 与输入捕捉寄存器 ICR1 均为 16 位寄存器。访问 16 位寄存器必须通过特殊的步骤,T/C 控制寄存器 TCCR1A/B 为 8 位寄存器,没有 CPU 访问的限制。双缓冲输出比较寄存器 OCR1A/B 一直与 T/C 的值做比较。波形发生器用比较结果产生PWM或在输出比较引脚OC1A/B输出可变频率的信号。比较匹配结果还可置位比较匹配标志 OCF1A/B,用来产生输出比较中断请求。在 PWM 模式下用 OCR1A 作为 TOP 值时, OCR1A 寄存器不能用作 PWM 输出。但此时 OCR1A 是双向缓冲的, TOP 值可在运行中得到改变。当需要一个固定的 TOP值时可以使用 ICR1寄存器,从而释放 OCR1A 来用作PWM输出。工作模式:工作模式 - T/C 和输出比较引脚的行为 - 由波形发生模式 (WGM13:0) 及比较输出模式(COM1x1:0) 的控制位决定。比较输出模式对计数序列没有影响,而波形产生模式对计数序列则有影响。 COM1x1:0 控制 PWM 输出是否为反极性。非 PWM 模式时 COM1x1:0控制输出是否应该在比较匹配发生时置位、清零,或电平取反。本设计采用相位修正PWM 模式。相位修正 PWM 模式 (WGM13:0 = 1、 2、 3、10 或 11)为用户提供了一个获得高精度的、相位准确的 PWM 波形的方法。与相位和频率修正模式类似,此模式基于双斜坡操作。计时器重复地从 BOTTOM 计到 TOP,然后又从 TOP倒退回到 BOTTOM。在一般的比较输出模式下,当计时器往 TOP 计数时若 TCNT1 与 OCR1x 匹配,OC1x 将清零为低电平;而在计时器往 BOTTOM 计数时若 TCNT1 与 OCR1x 匹配, OC1x 将置位为高电平。工作于反向比较输出时则正好相反。与单斜坡操作相比,双斜坡操作可获得的最大频率要小。但其对称特性十分适合于电机控制。相位修正 PWM 模式的 PWM 分辨率固定为 8、9 或 10 位,或由 ICR1 或 OCR1A 定义。最小分辨率为2比特(ICR1或OCR1A设为 0x0003),最大分辨率为16位(ICR1或OCR1A设为 MAX)。 PWM 分辨率位数可用下式计算:工作于相位修正 PWM 模式时,计数器的数值一直累加到固定值 0x00FF、 0x01FF、0x03FF (WGM13:0 = 1、 2或3)、ICR1 (WGM13:0 = 10)或OCR1A (WGM13:0 = 11),然后改变计数方向。在一个定时器时钟里 TCNT1 值等于 TOP 值。具体的时序图为 图2.2。图中给出了当使用OCR1A或ICR1来定义TOP值时的相位修正PWM模式。图中柱状的 TCNT1 表示这是双边斜坡操作。方框图同时包含了普通的 PWM 输出以及反向 PWM输出。TCNT1 斜坡上的短水平线表示 OCR1x 和 TCNT1 的匹配比较。比较匹配后 OC1x中断标志置位。图2.2相位修正PWM模式时序图3. 串口通信3.1串口通信的作用系统需要接收上位机设置的角度的数据,并把下位机的数据传到上位机。因此串口模块的作用就是把单片机需要传送到上位机的数据转换成电脑的RS-232标准串口数据,以便把数据发送到上位机。3.2 RS-232C接口和MAX232芯片简介本系统串口通信模块设计采用的是MAX232芯片把单片机传来的数据转换成RS-232标准串口数据。以下对RS-232C接口和MAX232芯片做简要的介绍。RS-232C的全称是“数据终端设备(DTE) 和数据通信设备(DCE) 之间的串行二进制数据交换接口技术标准”,适合于短距离通信或带调制解调器的通信应用场合.PC机上一般都会有RS-232C接口,MAX232芯片是专门为电脑的RS-232标准串口设计的一款兼容RS232标准的芯片, 其结构图如图3.1所示。该器件包含2个驱动器2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。3.3 MAX232芯片引脚描述及其应用MAX232芯片引脚图如图3.1所示:图3.1 MAX232芯片引脚图本系统数据的接收和发送引脚选用的是T21N,R21N,R2OUT,T2OUT四个引脚,其中T21N、R2OUT与标准的RS-232C接口相连。负责数据把转化好的数据传送到上位机;T2OUT、R21N与单片机相连,负责接收从单片机送来的数据。 3.3.1 MAX232应用电路介绍MAX232 外围需要4个电解电容C1 、C2 、C3 、C4 ,是内部电源转换所需电容。其取值均为1F/25V。宜选用钽电容并且应尽量靠近芯片。C5为0.1F的去耦电容。如图3.2所示。但本设计均采用104电容。图3.2 MAX232应用接口电路图3.3串口模块原理图3.3.2串口模块原理图设计单片机要通过与MAX232芯片与上位机的串口相连才能与上位机通讯。单片机与上位机连接电路图如图3.3所示。本系统是通过单片机的控制通过串口与PC通信来实现的,首先,串口的2,3脚与232芯片的任一路接收端和发送端相连;然后再通过对应路的发送端和接收端与单片机的对应RXD和TXD相连,再串口中断打开后发送和接收数据,实现串口异步通信。在异步传送方式中,字符是按帧格式进行发送的。异步通信的帧格式如表3.1所示。表3.1异步通信的帧格式n-1 第N个字符(一串行帧) n+1 P 10D0D1D2D3D4D5D6D7P10D0 起始位 数 据 位 校验位 停止位4.驱动芯片4.1电机驱动芯片LG9110 低静态工作电流; 宽电源电压范围:2.5V-12V; 每通道具有800mA 连续电流输出能力; 较低的饱和压降; TTL/CMOS输出电平兼容,可直接连CPU; 输出内置钳位二极管,适用于感性负载; 控制和驱动集成于单片IC之中; 具备管脚高压保护功能; 工作温度:0-80。 LG9110 是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片 IC 之中,使外围器件成本降低,整机可靠性提高。该芯片有两个 TTL/CMOS 兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过 750800mA 的持续电流,峰值电流能力可达1.52.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。管脚定义如表4.1所示。表4.1 LG9110管脚定义图4.1 LG9110管脚波形图图4.2 应用电路4.2 电机驱动芯片L293D美国德州仪器(Texas Instruments)生产的微型电机驱动集成电路芯片,支持Vcc 4.536V,最大输出电流为1A。由于其驱动能力有限,多应用于小型机器。图4.3 L293D引脚L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,电机正转,反之,电机反转,选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转。如图4.4所示,IN端口接控制信号,OUT端口接电机的两端,EN端口接使能信号。一组IN端口输入为高低或低高电平时,能实现电机的正反转。一组IN端口输入均为高或低电平时,电机将停转。EN使能端为高电平时,相应端口输入信号有效;反之,则输入信号无效。在EN 端输入PWM波,通过调整PWM波的占空比,即可实现电机的无级调速。图4.4 应用电路 5.硬件设计思路5.1 系统基本原理本文以ATmega8L为核心,利用模拟舵机的机械部分,其中包括小型直流电机和一个反馈可调电位器,来组成一个闭环的舵机控制系统,直流电机用H桥芯片LG9110来驱动,电位器进行角度测量,通过单片机的内部A/D转换来反馈实时角度,单片机用PID算法实现角度控制,PID算法的作用为减小系统的超调和静差,加快系统的响应速度。上位机通过RS232串口与单片机进行通信,将所设定的角度送到单片机,单片机通过编程产生PWM信号,经由LG9110驱动,控制电机的正反转。整体电路原理框图如图5.1所示。电源USART单片机ATmega8L PWM A/DMAX232上位机直流电机LG9110电位器图5.1整体电路原理框图控制流程如下: 上位机设定-90到+90之间的角度,通过串口发送到单片机; 单片机读取角度v并将其转换成10位二进制数r; 电位器测量当前角度,并将结果送到单片机的A/D转换通道进行转换,转换结果为10为二进制数y; 求r与y的差值作为PD的控制值; 将PD控制的结果u送到T1定时器的输出比较寄存器OCR1A和OCR1B,OC1A和OC1B输出PWM信号控制舵机的转动; 当上位机发送一个命令#,单片机即将实时角度(即A/D转换的结果y)发送到上位机。5.2 系统硬件设计图5.1 系统原理图5.2.1 原理图说明 LG9110为舵机驱动部分,LG9110驱动芯片详细介绍见第四章,输入端IA、IB分别为定时器T1产生的两路使舵机正反转的PWM信号,经过LG9110内部的H桥来驱动模拟舵机内部的直流电机; J1作为模拟舵机内部电位器与系统的连接, 是系统的反馈部分; ISP为程序下载部分,最常用的是ISP下载方式进行,可以把芯片焊接好以后进行程序写入,这极大地方便了程序的修改。ISP串行下载接口有6个信号线。当RESET接地时,所有的程序和数据存储器阵列都可以通过串行SPI总线来下载。该串行接口包括引脚SCK(时钟信号)、MOSI(输入)、和MISO(输出)。如原理图所示。 J5是系统与串口通信模块的连接,模块与系统要共地。 单片机的PB1、PB2为PWM信号的输出端口,PB3、PB4、PB5、PC6为ISP的信号线,另外PC6接10K电阻到VCC为上电复位,PD0、PD1为串口连接,由于A/D转换参考电压采用VCC所以AREF悬空,PC3舵机反馈信号的A/D转换通道。本章介绍了硬件设计的总体思路,由于系统硬件比较简单,只有单片机模块和电平转换模块,制作也较为简单,然而细节问题还是不容小视的,一开始由于没有考虑到两个模块的共地问题而作了不少的无用功,因此我深刻的懂得了每一个细节部分都要细心,要有耐心的道理。6 系统软件设计6.1 系统主程序系统硬件电路设计方案确定以后,主要功能将依赖于系统软件编程来实现。控制系统能否正常可靠地工作,除了硬件设计合理外,功能完善的软件设计是非常关键的。这一部分将详细阐述本设计方案所需实现的功能、系统软件资源分配,上位机的设计方案及具体实现方法。6.1.1 主程序设计要点在论述具体的软件程序设计之前,先对软件设计的原则、方法等软件设计要点作简要的阐述,这是进行软件程序设计的依据和手段。应用程序的主要设计原则是: 软件设计与硬件电路设计需综合考虑。 软件设计必须保证系统的各个硬件功能模块能够协调工作,完成指定的系统功能。 各项功能程序设计实现模块化。 合理规划程序存储区和数据存储区,为功能的扩展预留空间,方便今后系统的功能完善和软件升级。 采取软件抗干扰措施,保证系统更可靠的运行。6.1.2 主程序流程图主程序流程图如图6.1所示开始初始化将v 转换成10位二进制数rT0是否溢出中断?读取A/D转换结果yPID算法,得出控制量uu=0?反转正转是否达到设定角度?停止结束图6.1 主程序流程图读取上位机设定的角度v6.1.3 PID子程序流程图如图6.2所示PID入口计算参数Kp,Kd读取A/D转换结果计算差值e1=e0;e0=r-y计算控制量 us=kp*e0+kd*(e0-e1)u2500u=2500u2500) us=2500; /限幅 if(us2) m=0; PID();/调用PD算法 if(u=0) OCR1BL=0x00; OCR1AL=u&0xff; /u大于或等于0,赋值给定时器T1数值比较else 器OCR1A的低8位,舵机正转 OCR1AL=0x00; OCR1BL=(-u)&0xff; /u小于0,则赋值给定时器T1数值 比较器OCR1B的低8位,舵机反转详细程序代码请见附录。6.2 系统仿真图6.3 仿真原理图本设计系统用proteus 7软件进行仿真,仿真原理图如图6.3所示,图中用L293D作为驱动芯片,用MOTOR-SERVO模拟舵机的转动。该仿真采用的程序与实际系统的有些差别,仿真中PD的系数取Kp=15;Kd=5.上位机设定的角度格式正确即回显“OK”,错误即回显“Error”。上位机发送“#”即回显控制量的大小。以此测试所编的程序是否能实现一定的功能。仿真检验所编写的程序是否能实现各个功能,是否能满足要求,可以通过示波器观察输出的PWM信号的占空比的实时变化(本仿真原理图省略),及其对舵机转动方向和角度的影响,串口通信的仿真检验所设置角度的格式是否正确,并观察控制量u随着角度的变化而变化,角度设定正确如图6.4所示,错误如图6.5所示,另外还有电位器实时数据的测量。图6.4 仿真结果(发送格式正确)图6.5 仿真结果(发送格式错误)6.3 上位机目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据采集和通信,而上位机通常以基于图形界面的Windows核心为操作平台,为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。单片机和PC的通信是通过单片机和PC串口之间的硬件连接实现的。6.3.1 MSComm控件原理Visual Basic 6.0(以下简称VB) 是一种功能强大、简单易学的程序设计语言。它不但保留了原先Basic语言的全部功能,而且还增加了面向对象程序设计功能。它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。本文的两个例子均采用该方式。另一种为查询方式,在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化,从而确定相应处理。在程序空闲时间较多时可以采用该方式。 利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法: Commport:设置或返回串口号。 Settings:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口状态。 InputMode:设置或返回接收数据的类型。 Inputlen:设置或返回一次从接收缓冲区中读取字节数。 InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。 InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。 Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。 OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。 OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。 Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。 CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。控件通信步骤: 加入通信部件,也就是MSComm对象; 设置通信端口号码,即Commport属性; 设置通信协议,即HandShaking属性; 设置传输速度等参数,即Settings属性; 设置其他参数,若必要时在加上其他的属性设置; 打开通信端口,即PortOpen属性设成True; 送出字符串或读入字符串,使用Input及Output属性; 使用完MSComm通信对象后,将通信端口关闭。即PortOpen属性设置成False。6.3.2上位机运行结果属性设置好以后,即可编写程序代码,详细代码见附录。 程序编写、调试完毕,执行菜单“运行/启动”命令或单击工具栏快捷按钮“启动”运行程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论