当前位置:首页 > 贵州大学六自由度机械手课程设计 - 图文
第四章 电气结构设计
电气部分主要由计算机、AT89S52控制器、舵机驱动模块组成。在计算机上编写好程序后输出.hex文件格式源程序,将其通过RS-232串行总线载入AT89S52单片机,打开电源开关后由AT69S52产生六路占空比可调的PWM信号,PWM信号输出到舵机,控制舵机按程序规定的步骤运动,从而带动机械手各关节的转动,由此来使机械手完成规定的动作。由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。
4.1 计算机与AT89S52通信
计算机与AT89S52之间通过串行总线RS-232来联系,它是计算机与单片机之间信息传递的枢纽,一切数据的传输必需由它完成。本实验只需将用计算机编好的程序通过RS-232串行总线烧入单片机,然后由单片机控制舵机运行即可。
AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,它与80C51 产品指令和引脚完全兼容,因此在嵌入式控制应用系统中应用广泛。
RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。单片机和RS232的电平标准是不一样的,单片机与电脑串口通信应该遵循下面的连接方式:在单片机与上位机给出的RS232口之间通过电平转换电路实现TTL电平与RS232电平之间的转换。
9
AT89S52引脚图
4.2 AT89S52控制舵机
单片机控制舵机具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用。本次实验中AT89S52产生的占空比可调的PWM信号经由驱动模块的接收通道进入信号解调电路进行解调,获得一个直流偏置电压。该直流偏置电压与电位器的电压比较,获得电压差送入电机驱动集成电路,以驱动电机正反转。直到电压差为0,电机停止转动。
舵机主要由外壳、减速齿轮组、电机、电位器、控制电路组成。减速齿轮组由马达驱动,其终端、输出端带动一个线性的比例电位器作位置检测该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较。产生纠正脉冲并驱动马达正向或反向地转动,使齿轮组的输出位置与期望值相符,令纠正脉冲趋于为0,从而达到舵机精确定位的目的。
本次实验舵机驱动模块采用的是parallax公司生产的16路舵机控制模块,其包括16路舵机控制线接口、单片机通信接口、舵机驱动电源接口、开关、复位键、控制芯片等部分组成。
10
AT89S52控制模块与舵机驱动模块
11
第五章 程序分析
六自由度机械手控制程序如下,改变code armdata[]数组中的数据即可调整各转动副的转动角度。
程序主函数只有最后很小的一部分,主程序通过调用各个子函数完成程序的运行。这样做可有效的较少主程序的大小,提高程序的运行速度。首先运行子函数uart_Init(),它主要负责单片机串口中断驱动程序、发送和接收中断信号、初始化串行口和UART波特率函数。下一个子程序robotmove()主要用于舵机的转角控制。数组armdata[]中的数据为占空比数,子程序robotmove()通过读取其中的数据改变脉冲宽度而控制舵机。子程序delay_nms()为各个舵机动作延迟时间控制。
#include
#define uchar unsigned char #define RXD P12 #define TXD P12
#define WRDYN 44 //写延时 #define RDDYN 43 //读延时
//延时程序*
void Delay2cp(unsigned char i) {
while(--i); //刚好两个指令周期。 }
//往串口写一个字节 void WByte(uchar in ) {
uchar i=8;
TXD=(bit)0; //发送启始位
Delay2cp(183); //发送8位数据位 while(i--) {
TXD=(bit)(in &0x01); //先传低位 Delay2cp(176); in =in >>1; }
12
共分享92篇相关文档