51单片机的三维平台控制方案

上传人:d**** 文档编号:88377260 上传时间:2022-05-10 格式:DOCX 页数:36 大小:465.77KB
返回 下载 相关 举报
51单片机的三维平台控制方案_第1页
第1页 / 共36页
51单片机的三维平台控制方案_第2页
第2页 / 共36页
51单片机的三维平台控制方案_第3页
第3页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基于52单片机的三维平台控制技术方案目录1系统总体设计思路22.1 2系统硬件部分具体实现2主控制模块的设计与实现2驱动电路的设计与实现6显示电路的设计与实现9键盘电路的设计与实现10测速模块的设计与实现11限位反馈电路的设计与实现123.系统软件部分具体实现12附录15附录1:源代码15附录2:单片机控制板原理图34附录3:THB7128驱动板原理图35附录4:单片机控制板元件清单36附录5:THB7128驱动板元件清单371.系统总体设计思路本系统采用STC89C52单片机对三维平台上三个步进电机进行控制,初步实现的功能有:系统启动与停止控制,三轴联动,三轴的加、减速控制,三轴正、反转控制,X轴的启动与停止控制、X轴与丫轴的限位控制、三轴的转速检测与显示,最高1/128电流细分等功能,其系统框图如图1.1所示:图1.1三维平台步进电机控制系统框图2.系统硬件部分具体实现2.1主控制模块的设计与实现本设计选用STC89C52单片机作为主控制模块。STC89C52单片机是一种低功耗、高性能CMOS8位微控制器,具有8K可编程Flash存储器,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,全双工串行口。STC89C52单片机作为主控芯片,在本设计中主要实现以下几个工作:(1)接收矩阵键盘输入的控制信号;输出PWM脉冲控制三轴步进电机工作,包括输出PWM脉冲信号和方向信号;处理给定转速信号和测速反馈转速信号;在八个八段数码管上显示电机的给定转速和实时转速;接收限位反馈并做逻辑判断;主控制器的引脚分配表如表1.1所示:I/0口引脚号对应元件功能输入/输出P0.0P0.73932SB1SB12矩阵键盘输入输入(上拉电阻)P1.0P1.21374HC1383-8译码器控制信号输出P1.34THB7128X轴方向信号输出P1.45THB7128Y轴方向信号输出P1.56THB7128Z轴方向信号输出P1.67限位开关X_1限位信号输入P1.78限位开关X_2限位信号输入P3.010限位开关丫_1限位信号输入P3.111限位开关Y_2限位信号输入P3.515THB7128X轴脉冲输岀输出P3.616THB7128Y轴脉冲输岀输出P3.717THB7128Z轴脉冲输岀输出P2.0P2.72128八个八段数码管数码管段选信号输出XTAL1XTAL21918晶振电路时钟信号输入RST9复位电路复位信号输入P3.2(INT0)12X轴光电编码器转速信号输入P3.3(INT1)13Y轴光电编码器转速信号输入P3.414Z轴光电编码器转速信号输入主控制器原理图,如图2.1.1所示:T14l-T卜O卜9图2.1.1主控制器原理图Hlllk-/3mmmm-|-II匸L幣帝i2.2驱动电路的设计与实现驱动电路采用THB712步进电机驱动芯片对三位平台上的三个步进电机进行驱动。THB7128是一款专业的两相步进电机驱动芯片,它部集成了细分、电流调节、CMOS功率放大等电路,配合外围电路可实现高性能、多细分、大电流的驱动电路。其主要参数和性能指标如下:单芯片两相细分步进电机驱动;直接采用单脉冲和方向信号译码控制模式;双全桥MOSFET驱动,低导通电阻Ron0.53;可实现正反转控制;通过3位选择8档细分控制(1,1/2,1/4,1/8,1/16,1/32,1/64,1/128);最高耐压40VDC;高输出电流Iout3.3A;HZIP19封装;有复位和使能管脚;芯片部有过热保(TSD)和过流检测电路驱动电路原理图如图2.2.1所示:File:ateBSizeTitle2-Jun-2011NumberG:THB7128.DDBSheetDraWnBy:Revision654321WnfrE-rU/D-/dcpCPgnVmouobobTUAIa图2.2.1驱动电路原理图驱动器细分设定(M1、M2、M3)如表2.2.1所示表2.2.1驱动器细分设定M1M2M3细分数LLL1HLL1/2LHL1/4HHL1/8LLH1/16HLH1/32LHH1/64HHH1/1282.3显示电路的设计与实现本设计采用八个八段数码管实现转速显示功能,其中高4位数码管为给定转速显示,通过编程实现X、Y、Z三轴转速循环显示,低4位数码管为测速反馈的转速显示,显示方式同高4位。STC89C52单片机部采用查表法对转速信号进行数值处理,通过P2.0P2.7口输出段选信号,通过P1.0P1.2输出3路位选信号到74HC138中,通过3-8译码器对八个八段数码管进行选择。具体显示模块的硬件电路如图2.3.1所示:2.4键盘电路的设计与实现本设计中的键盘电路采用“4*4”矩阵键盘,采用键盘扫描的方式对按键信号进行捕获,并输入到STC89C52单片机的P0口中。具体键盘功能如表2.4.1所示。表2.4.1矩阵键盘功能L1L2L3L4H4系统启动系统停止X轴启动X轴停止H3X轴加速X轴减速X轴减速X轴减速H2Y轴加速Y轴减速Y轴减速Y轴减速H1Z轴加速Z轴减速Z轴减速Z轴减速2.5测速模块的设计与实现本设计采用E6B2-CWZ6C光电编码器对三轴步进电机的转速进行实时检测,并反馈到单片机中用作转速的实时显示。E6B2-CWZ6C光电编码器有以下特点:对应电源电压DC524V;外径40具备2000P/R的分辨率;具备使Z相对简单化的原点位置显示功能;实现轴负重、径向30N、推力相20N;附有逆接、负荷短路保护回路,改善了可靠性。E6B2-CWZ6C的输出方式为NPN集电极开路输出方式,共有红、白、橙三路转速信号输出,本设计中只采用其一路测速信号输入到单片机的外部中断口或T1计数器外部脉冲输入端进行转速检测。E6B2-CWZ6C部结构如图2.5.1所示:E6B2生叵路DC5-5-24VIV.JNPN以下IDG30V以下谕岀信号覺:A咏出琳杜Z相屏砸0VGND图2.5.1E6B2-CWZ6C部结构2.6限位反馈电路的设计与实现限位开关工作原理是,当三维平台没有接近限位开关时,限位开关输出为高电平;当三维平台接近限位开关时,限位开关输出为低电平;利用单片机I/O口去捕获限位开关输出电平,当限位开关输出为低电平时,控制电机方向信号,使电机反转。本设计中限位开关是采用LJ8A3-1-Z型,实物如图2.6.1所示。图2.6.1限位开关实物图3.系统软件部分具体实现STC89C52单片机部共有三个定时器/计数器资源分别是TO、T1、T2,两个外部中断输入口INTO和INT1,本设计中单片机的部资源分配如表3.1所示。表3.1单片机部资源分配:部资源工作模式功能TO16位计数器接收X轴脉冲输入T116位定时器记50ms时间作为转速计算的参考T216位定时器输出可调PWM脉冲信号INTO外部中断接收Y轴脉冲输入INT1外部中断接收Z轴脉冲输入系统工作程序流程图如图3.1所示:图3.1系统工作程序流程图转速检测模块程序流程图如图3.2所示:限位检测模块程序流程图如图3.3所示:X轴方向信号输出X轴方向信号输出图3.3限位检测模块程序流程图附录附录1:源代码#include#include/驱动脉冲信号输出x/驱动脉冲信号输出y/驱动脉冲信号输出z/*I/O口分配*/sbitcp_x=P35;sbitcp_y=P3A6;sbitcp_z=P3A7;sbitfx_x=P1A3;/x轴方向信号sbitfx_y=P1A4;/y轴方向信号sbitfx_z=P1A5;/z轴方向信号sbitx_xianwei1=P1A6;/x轴限位sbitx_xianwei2=P1A7;/x轴限位sbity_xianwei1=P3A0;/y轴限位sbity_xianwei2=P3A1;/y轴限位sbitLHJ_A=P1A0;sbitLHJ_B=P1A1;/74HC138(3-8)译码器输入控制信号线sbitLHJ_C=P1A2;sfrT2MOD=0xC9;/T2定时器工作模式unsignedcharx_speed=8,y_speed=8,z_speed=8;始化转速unsignedcharcount_x=0,count_y=0,count_z=0;脉冲数变量/给定x,y,z三轴初/记录三轴给定unsignedintcollect_x=0,collect_y=0,collect_z=0;储变量/三轴测速脉冲数存unsignedchart1_flag=0,t2_flag=0,t3_flag=0,t4_flag=0;/定时器T110ms标志位unsignedintx_tmpdate8=0,0,0,0,0,0,0,0;/定义数组变量unsignedinty_tmpdate8=0,0,0,0,0,0,0,0;unsignedintz_tmpdate8=0,0,0,0,0,0,0,0;codeunsignedchartable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴数码管0-9a-f表/*数码管位选*/#defineSMG_1LHJ_C=0;LHJ_B=0;LHJ_A=0/入脚,全0选择第一位数码管。#defineSMG_2LHJ_C=0;LHJ_B=0;LHJ_A=1/译码器的输译码器的输入脚,001选择第二位数码管#defineSMG_3LHJ_C=0;LHJ_B=1;LHJ_A=0#defineSMG_4LHJ_C=0;LHJ_B=1;LHJ_A=1#defineSMG_5LHJ_C=1;LHJ_B=0;LHJ_A=0#defineSMG_6LHJ_C=1;LHJ_B=0;LHJ_A=1#defineSMG_7LHJ_C=1;LHJ_B=1;LHJ_A=0#defineSMG_8LHJ_C=1;LHJ_B=1;LHJ_A=1voidkeyscan(void);/扫描键盘_nop_();_nop_();_nop_();_nop_();_nop_();voidinit()fx_x=1;fx_y=1;fx_z=1;TL1=(65536-50000)%256;TH1=(65536-50000)/256;TL0=(65536-1)%256;TH0=(65536-1)/256;TMOD=0x15;T2MOD=0x00;T2CON=0x00;IP=0x20;/外部中断0和外部中断1设置优先级IT0=1;/外部中断0为下降沿触发IT1=1;/外部中断1为下降沿触发EX0=1;/开外部中断0EX1=1;/开外部中断1TR0=1;/开计数器1,准备测速ET0=1;TR1=1;/开定时器1,记50msET1=1;TL2=(65536-1000)%256;TH2=(65536-1000)/256;x_tmpdate0=0xf6;y_tmpdate0=0xe6;z_tmpdate0=0xdb;/x_tmpdate4=0xf6;/第五个数码管显示/y_tmpdate4=0xe6;/z_tmpdate4=0xdb;voiddisplay(unsignedint*lp)/显示P2=0;/端口2为输出SMG_1;/第一位数码管delay();/延时5个空指令P2=0;/清0端口,准备显示下位P2=0;/端口2为输出SMG_2;/第二位数码管P2=tablelp1;/查表法得到要显示数字的数码段delay();/延时5个空指令P2=0;/清0端口,准备显示下位SMG_3;/第三位数码管P2=tablelp2;/查表法得到要显示数字的数码段delay();/延时5个空指令P2=0;/清0端口,准备显示下位出,否则进位影响到第四位数据SMG_4;/第四位数码管P2=tablelp3;/查表法得到要显示数字的数码段delay();/延时5个空指令P2=0;/清0端口,准备显示下位/P2=0;/端口2为输出/SMG_5;/第五位数码管/P2=lp4;/查表法得到要显示数字的数码段/delay();/延时5个空指令/P2=0;/清0端口,准备显示下位P2=0;/端口2为输出SMG_6;/第六位数码管P2=tablelp5;/查表法得到要显示数字的数码段delay();/延时5个空指令P2=0;/清0端口,准备显示下位SMG_7;/第七位数码管P2=tablelp6;/查表法得到要显示数字的数码段delay();/延时5个空指令P2=0;/清0端口,准备显示下位出SMG_8;/第八位数码管P2=tablelp7;/查表法得到要显示数字的数码段delay();/延时5个空指令P2=0;/清0端口voidmain()init();while(1)/限位开关控制if(x_xianwei1=0)fx_x=fx_x;while(x_xianwei1=0);if(x_xianwei2=0)fx_x=fx_x;while(x_xianwei2=0);if(y_xianwei1=0)while(y_xianwei1=0);if(y_xianwei2=0)/while(y_xianwei2=0);if(y_xianwei=0)if(z_xianwei=0)fx_z=fx_z;/*给定转速数据*/x_tmpdate1=15/10/x_speed;/百位x_tmpdate0=60000000/1000(T2初值)/200/x_speed/2/100x_tmpdate2=15/1/x_speed/1%10;/十位x_tmpdate1=60000000/1000/200/x_speed/2/10%10x_tmpdate3=150/1/x_speed%10;/个位x_tmpdate2=60000000/1000/200/x_speed/2%10y_tmpdate1=15/10/y_speed/1;/百位y_tmpdate2=15/1/y_speed/1%10;/十位y_tmpdate3=150/1/y_speed%10;/个位z_tmpdate1=15/10/z_speed/1;/百位z_tmpdate2=15/1/z_speed/1%10;/十位z_tmpdate3=150/1/z_speed%10;keyscan();if(t2_flag=1)t2_flag=0;/个位/扫描键盘/当1s时间到达时/标志位置0/*分辨率360时测定转速数据*/x_tmpdate5=1*collect_x/6/100;/百位x_tmpdate6=1*collect_x/6/10%10;/十位x_tmpdate7=1*collect_x/6%10;/个位60*collect_x/360/100;y_tmpdate5=1*collect_y/6/100;/百位y_tmpdate6=1*collect_y/6/10%10;/十位y_tmpdate7=1*collect_y/6%10;/个位z_tmpdate5=1*collect_z/6/100;/百位z_tmpdate6=1*collect_z/6/10%10;/十位z_tmpdate7=1*collect_z/6%10;/个位/*if(x_speed4)x_tmpdate5=x_tmpdate5/2;x_tmpdate6=x_tmpdate6/2;x_tmpdate7=x_tmpdate7/2;*/*计数变量置位*/collect_x=0;collect_y=0;collect_z=0;if(t4_flag=1)display(x_tmpdate);if(t4_flag=2)display(y_tmpdate);if(t4_flag=3)display(z_tmpdate);voidkeyscan()/读键盘值unsignedchark,k_temp;k=0xfe;doP0=k;k_temp=P0;if(k!=k_temp)switch(k_temp)case0x7e:EA=1;TR2=1;ET2=1;x_speed=8,y_speed=8,z_speed=8;fx_x=1;fx_y=1;fx_z=1;break;/启动case0x7d:EA=0;TR2=0;ET2=0;x_speed=200;y_speed=200,z_speed=200;break;/停止case0x7b:x_speed=200;break;/x停止case0x77:x_speed=8;break;case0xbe:while(P0=0xbe);if(x_speed1)x_speed=x_speed/2;break;break;case0xbd:while(P0=0xbd);if(x_speed1)y_speed=y_speed/2;break;break;case0xdd:while(P0=0xdd);if(y_speed1)z_speed=z_speed/2;break;break;case0xed:while(P0=0xed);if(z_speed64)count_x=0;if(count_y64)count_y=0;if(count_z64)count_z=0;if(count_x=x_speed)cp_x=cp_x;count_x=0;if(count_y=y_speed)cp_y=cp_y;count_y=0;if(count_z=z_speed)cp_z=cp_z;count_z=0;/T1定时器,记50ms时间voidT1ISR(void)interrupt3TL1=(65536-50000)%256;TH1=(65536-50000)/256;t1_flag+;if(t1_flag=20)t2_flag=1;t1_flag=0;t3_flag+;if(t3_flag=40)t4_flag=1;if(t3_flag=80)t4_flag=2;if(t3_flag=120)t4_flag=3;t3_flag=0;轴测速脉冲输入轴测速脉冲输入voidISR0(void)interrupt0/xcollect_x+;voidISR1(void)interrupt2/ycollect_y+;voidT0ISR(void)interrupt1TL0=(65536-1)%256;TH0=(65536-1)/256;collect_z+;/TO计数器,记录z轴测速脉冲附录2:单片机控制板原理图FileDateBSizeTitle2-JunNumber-2011G:THB7128.DDBSheetDrawnBy:Revision附录3:THB7128驱动板原理图U/DU/D-274R13T21U3P521匕C5VCCCWW654321111111J2frERU/DU/dcpcpminJ1VMGNDOUT2tOUIAVCCR83K3卅CLKOSC1VREFVREFIF10-C11|VCC100p16171810M1M2M3GNDSGNDPGNDNFANFBTHB7128|卜12NFANFBR110.2/1%R120.2/1%10R1910R2010R2110R22enablCW/cwwVCCVMOUT1AOUT2AOUT1BOUT2B1311OUTIAOUT2AOUT1BOUT2B104JC115VCCVM104C2U1附录4:单片机控制板元件清单DesignatorCommentFootprintQuantity74-138U374LS1381C110uRB.2/.41C230p08051C101,C10410408052C102470RB.2/.41C103100URB.2/.41D101DIODEDIODE1P1ConnectorSIP81R310K08051R115.1k08051U1AT89S52LAT89S521U274HC24574HC2451U478L0578L051Y112MCRYSTAL10,1,2,3,4,5,6,7,8,9,A,Connector9-RES,CON2,20B,C,D,E,F,CON8,SW-PBPOWER,RESET,RP103-10K附录5:THB7128驱动板元件清单DesignatorCommentFootprintQuantityR12R110.21%(R200)25122R9R14R1427008053R171K208051R15R161K08052R42K708051R5R83K308052R183K608051R75K(3362-502)RE1R1R2R3R19R20R21R2210K08057C1C2C6C9C1110408055C3C547108052C4100p08051C7100UF/50VRB.2/.41C8220UF/50VRB.2/.41D2IN5819Diode-0.41D1LEDDiode-0.41U5LM317TO-2521U3U4P521DIP42J1J2CON6(KF301-3P)POW62U26N137DIP81S1SWDIP-3PDIP61
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!