单片机控制电机调速实验报告

合集下载

单片机步进电机控制实验报告

单片机步进电机控制实验报告

单片机步进电机控制实验报告单片机步进电机控制实验报告引言:步进电机是一种常用的电动机,具有结构简单、体积小、转速稳定等优点,广泛应用于工业自动化、机械设备等领域。

本实验旨在通过单片机控制步进电机,实现电机的正转、反转、加速、减速等功能。

通过实验,深入了解步进电机的工作原理和控制方法,提高对单片机的编程能力。

一、实验目的本实验的主要目的是掌握步进电机的工作原理,了解单片机控制步进电机的方法和步骤,并通过实验验证控制效果。

二、实验器材1. 步进电机:XX型号,XXV,XXA2. 单片机开发板:XX型号3. 驱动电路:包括电源、驱动芯片等三、实验原理步进电机是一种特殊的电动机,其转子通过电磁螺线管的工作原理实现转动。

步进电机的转子分为若干个极对,每个极对上都有一个螺线管,通过对这些螺线管施加电流,可以使转子转动。

单片机通过控制螺线管的电流,实现步进电机的控制。

四、实验步骤1. 连接电路:根据实验器材提供的电路图,将步进电机与单片机开发板相连接。

2. 编写程序:使用C语言编写单片机控制步进电机的程序。

程序中需要包括电机正转、反转、加速、减速等功能的实现。

3. 上传程序:将编写好的程序通过编程器上传到单片机开发板上。

4. 实验验证:通过按下开发板上的按键,观察步进电机的运动情况,验证程序的正确性。

五、实验结果与分析经过实验验证,编写的程序能够准确控制步进电机的运动。

按下不同的按键,电机可以实现正转、反转、加速、减速等功能。

通过调整程序中的参数,可以实现不同速度的控制效果。

实验结果表明,单片机控制步进电机具有较高的精确性和可靠性。

六、实验总结通过本次实验,我深入了解了步进电机的工作原理和控制方法,掌握了单片机控制步进电机的编程技巧。

实验中遇到了一些问题,如电路连接不正确、程序逻辑错误等,但通过仔细分析和排除,最终解决了这些问题。

通过实验,我不仅提高了对步进电机的理论认识,还锻炼了自己的动手实践能力和问题解决能力。

单片机步进电机控制实训报告

单片机步进电机控制实训报告

单片机步进电机控制实训报告一、引言随着工业自动化技术的不断发展,步进电机作为一种能够将电脉冲转化为机械转动的装置,在各种自动化控制系统中得到了广泛的应用。

而单片机作为现代电子计算机技术的重要分支,具有体积小、价格低、抗干扰能力强等特点,被广泛应用于各类电机的控制中。

本次实训旨在通过单片机实现对步进电机的控制,加深对步进电机和单片机理论知识的理解,提高实际操作技能。

二、实验目标本次实训的目标是通过单片机控制步进电机,实现电机的正转、反转、停转等操作。

同时,通过对电机的控制,进一步了解步进电机的特性和工作原理。

三、实验原理步进电机是一种将电脉冲转化为机械转动的装置。

当给步进电机施加一个电脉冲信号时,电机就会转动一个固定的角度,这个角度通常称为“步进角”。

通过控制电脉冲的数量和频率,可以实现对电机的速度和位置的控制。

而单片机的GPIO口可以输出高低电平信号,通过控制输出信号的频率和占空比,可以实现对步进电机的控制。

四、实验步骤1、准备器材:单片机开发板、步进电机、杜邦线、面包板、焊锡等。

2、连接电路:将步进电机连接到单片机开发板上,使用杜邦线连接电源和信号接口。

3、编写程序:使用C语言编写程序,通过单片机控制GPIO口输出电脉冲信号,控制步进电机的转动。

4、调试程序:在调试过程中,需要不断调整程序中的参数,观察电机的反应,直到达到预期效果。

5、测试结果:完成程序调试后,进行实际测试,观察步进电机是否能够实现正转、反转、停转等操作。

五、实验结果及分析通过本次实训,我们成功地实现了通过单片机控制步进电机的正转、反转、停转等操作。

在实验过程中,我们发现步进电机的转速和方向可以通过改变单片机输出信号的频率和占空比来控制。

我们还发现步进电机具有较高的精度和稳定性,适用于需要精确控制的位置和速度控制系统。

六、结论与展望通过本次实训,我们深入了解了步进电机的工作原理和单片机的应用。

实践证明,单片机控制步进电机是一种高效、精确、可靠的方法。

51系列单片机直流电机闭环调速实验

51系列单片机直流电机闭环调速实验

一、实验名称:51系列单片机直流电机闭环调速实验 基于Protuse 仿真实验平台实现二、实验内容(实验原理介绍): 1、直流电机调速原理图1所示电枢电压为V ,电枢电流I ,电枢回路总电阻为R ,电机常数C ,励磁磁通量Φ。

那么根据KVL 方程:电机转速φC IR V n -=,其中,对于极对数为P ,匝数为N ,电枢支路数为a 的电机来说:电机常数aPN C 60=,意味着电机确定后,该值是不变的。

而在V-IR 中,由于R 仅为绕组电阻,导致IR 非常小,所以V-IR ≈V 。

由此可见我们改变电枢电压,转速n 即可随之改变。

实现直流电机的闭环调速 实现原理如下图所示:2、测速软件设计Array图12 软件测速的方框图/****T1中断服务程序********单位时间(S)方波的个数*************/void time1_int(void) interrupt 3{count_speed++; if(count_speed == 20) { count_speed = 0;num_display = num_medium; num_medium = 0; }}3、PID 算法的数字实现由于DDC (Direct Digital Control )系统是一种时间离散控制系统。

因此,为了用微机实现(式3-1-1)必须将其离散化,用数字形式的差分方程来代替连续系统的微分方程。

离散化的PID 表达式为:[]⎭⎬⎫⎩⎨⎧--++=∑=nj DIP n e n e T T j e T T n e K n P 0)1()()()()( (式3-1-2)式中,T ——采样周期;P n ()——第n 次采样时微机输出;e n ()——第n 次采样时的偏差值;e n ()-1——第n-1次采样时的偏差值;n ——采样序号,n =0,1,2,…。

通常把(式3-1-2)称为PID 的位置控制算式。

根据(式3-1-2)可以进一步推导出离散化的位置型PID 编程表达式,如(式3-1-3):第K 次采样PID 的输出式为:P K P K P K P K P I D ()()()()=++(式3-1-3)其中,设[]⎪⎪⎩⎪⎪⎨⎧--=-+=+===∑∑==)1()()()1()()()()()()()(00K E K E K K P K P K E K j e K K E K j E K K P K E K K P D DK j I I I I K j I I P P 式中,K TT K K T T K I I PD DP=----=----积分系数;微分系数。

单片机直流有刷电机系统控制实验报告

单片机直流有刷电机系统控制实验报告

实验名称:单片机直流有刷电机系统控制实验报告实验目的:1. 了解有刷电机的工作原理和基本结构2. 掌握单片机对有刷电机进行控制的方法和技巧3. 探究单片机直流有刷电机系统的稳定性和精确控制性能实验设备:1. 单片机开发板2. 直流有刷电机3. 桥式整流器4. 电源供应器5. 逻辑分析仪6. 示波器实验过程:1. 连接单片机开发板和直流有刷电机,并通过桥式整流器和电源供应器为系统供电。

2. 编写单片机控制程序,包括PWM波输出、速度控制算法等内容。

3. 将程序下载到单片机开发板上,并通过逻辑分析仪和示波器对系统进行调试和监测。

4. 在不同工作条件下,比如负载变化、电压波动等情况下,观察系统的稳定性和控制性能。

实验结果与数据分析:1. 经过一系列实验操作,我们获得了系统在不同工况下的运行数据,包括电流、转速、PWM波形等。

2. 通过对数据的分析,我们发现系统在稳态和动态工作条件下表现出了良好的稳定性和精准性能,能够满足实际工程控制要求。

3. 我们也发现了系统在特定工况下的一些问题和不足之处,比如在低速和负载较大时的起动过程中的震动和噪音等。

结论与讨论:1. 通过本次实验,我们对单片机直流有刷电机系统的控制原理和方法有了更深入的了解,同时也掌握了一定的实际操作技能。

2. 在工程应用中,我们应该综合考虑系统的稳定性、动态性能和控制精度,进行更加系统和全面的设计和调试。

3. 我们还需要进一步研究和改进系统中存在的问题,以提高系统的整体性能和工程应用价值。

附录:实验中使用到的控制程序代码和调试数据记录表格。

在控制系统稳定性方面,我们发现在不同的负载条件下,系统的稳定性表现出了一定的差异。

在轻载条件下,系统的动态响应较快,控制精度较高;而在重载条件下,系统的动态响应速度降低,控制精度也有所下降。

这表明在实际工程应用中,需要根据具体的负载情况对于控制系统进行相应的调节和优化,以获得更好的稳定性和控制性能。

在实验过程中,我们也发现了一些值得注意的问题。

基于单片机的直流电机控制设计性实验报告

基于单片机的直流电机控制设计性实验报告

设计题目:直流电机控制电路设计一设计目的1掌握单片机用PWM实现直流电机调整的基本方法,掌握直流电机的驱动原理。

2学习模拟控制直流电机正转、反转、加速、减速的实现方法。

二设计要求用已学的知识配合51单片机设计一个可以正转、反转或变速运动的直流电机控制电路,并用示波器观察其模拟变化状况。

三设计思路及原理利用单片机对PWM信号的软件实现方法。

MCS一51系列典型产品8051具有两个定时计数器。

因为PWM信号软件实现的核心是单片机内部的定时器,所以通过控制定时计数器初值,从而可以实现从8051的任意输出口输出不同占空比的脉冲波形。

从而实现对直流电动机的转速控制。

AT89C51的P1.0—P1.2控制直流电机的快、慢、转向,低电平有效。

P3.0为PWM波输出,P3.1为转向控制输出,P3.2为蜂鸣器。

PWM控制DC电机转速,晶振为12M,利用定时器控制产生占空比可变的PWM波,按K1键,PWM值增加,则占空比增加,电机转快,按K2键,PWM值减少,则占空比减小,电机转慢,当PWM值增加到最大值255或者最小值1时,蜂鸣器将报警四实验器材DVCC试验箱导线若电源等器件PROTUES仿真软件KRIL软件五实验流程与程序#include < reg51.h >sbit K1 =P1^0 ; 增加键sbit K2 =P1^1 ; 减少键sbit K3 =P1^2 ; 转向选择键sbit PWMUOT =P3^0 ; PWM波输出sbit turn_around =P3^1 ; 转向控制输出sbit BEEP =P3^2 ; 蜂鸣器unsigned int PWM;void Beep(void);void delay(unsigned int n);void main(void){TMOD=0x11; //设置T0、T1为方式1,(16位定时器) TH0=0 ; 65536us延时常数{t=(65536-TH)/fose/12} TL0=0;TH1=PWM ; //脉宽调节,高8位TL1=0;EA=1; //开总中断ET0=1; //开T0中断ET1=1; //开T1中断TR0=1 ; // T0定时允许while(1){if(K3==0&&K1==1&&K2==1) // 转向{turn_around=!turn_around;}while(K3==0); //检测K3是否释放do{PWM++ ;if(PWM>0xfe)//防止PWMS计数溢出{PWM=0xff;}if(PWM==0xff)Beep() ; 响delay(3000);}while(K1==0&&K2==1);do{PWM-- ;if(PWM<1){PWM=1;}if(PWM==1)Beep() ;delay(3000);}while(K1==1&&K2==0);}}void timer0() interrupt 1 using 2 // 定时器0中断服务程序{TR1=0 ; //T1禁止TH0=0 ; //置T0定时常数TL0=0 ;TH1=PWM ; //置T1定时常数TL1=0;TR1=1 ; //T1允许PWMUOT=0 ;// PWM波输出0}void timer1() interrupt 3 using 3 //定时器1中断服务程序{TR1=0 ; //T1禁止PWMUOT=1 ; //PWM波输出1}void Beep(void) //蜂鸣器子程序{unsigned char i;for (i=0;i<100;i++){delay(100);BEEP=!BEEP; }BEEP=1; delay(100);}void delay(unsigned int n){while(n--) ;}六 Proteus仿真截图七实验结果此次试验通过仿真系统进行了仿真,按下相应的开关,可实现控制直流电机的加速、减速及转向。

单片机控制步进电机调速实验

单片机控制步进电机调速实验

51系列单片机控制步进电机调速实验实验目的及要求:1、熟悉步进电机的工作原理2、熟悉51系列单片机的工作原理及调试方法3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量)4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。

速度设定由键盘设定,步进电机的反馈速度由LED数码管显示。

实验原理:步进电机控制原理一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。

步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。

步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。

因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。

步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。

由于输入的是脉冲信号,输出的角位移是断续的,所以又称为脉冲电动机。

随着数字控制系统的发展,步进电动机的应用将逐渐扩大。

步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。

步进电机的驱动电路根据控制信号工作,控制信号可以由单片机产生。

电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。

0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)图1 是反应式步进电动机结构示意图,它的定子具有均匀分布的六个磁极,磁极上绕有绕组。

控制步进电机实验报告(3篇)

控制步进电机实验报告(3篇)

第1篇一、实验目的1. 理解步进电机的工作原理及控制方法。

2. 掌握单片机与步进电机驱动模块的接口连接方法。

3. 学习使用C语言编写程序,实现对步进电机的正反转、转速和定位控制。

4. 通过实验,加深对单片机控制系统的理解。

二、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是控制精度高、响应速度快、定位准确。

步进电机控制实验主要涉及以下几个方面:1. 步进电机驱动模块:常用的驱动模块有ULN2003、A4988等,它们可以将单片机的数字信号转换为步进电机的控制信号。

2. 单片机:单片机是整个控制系统的核心,负责接收按键输入、处理数据、控制步进电机驱动模块等。

3. 步进电机:步进电机分为单相、双相和三相等类型,本实验使用的是双相四线步进电机。

三、实验设备1. 单片机开发板:例如STC89C52、STM32等。

2. 步进电机驱动模块:例如ULN2003、A4988等。

3. 双相四线步进电机。

4. 按键。

5. 数码管。

6. 电阻、电容等元件。

7. 电源。

四、实验步骤1. 硬件连接(1)将步进电机驱动模块的输入端(IN1、IN2、IN3、IN4)分别连接到单片机的P1.0、P1.1、P1.2、P1.3口。

(2)将按键的输入端连接到单片机的P3.0口。

(3)将数码管的段选端连接到单片机的P2口。

(4)将步进电机驱动模块的电源端连接到电源。

(5)将步进电机连接到驱动模块的输出端。

2. 编写程序(1)初始化单片机I/O端口,设置P1口为输出端口,P3.0口为输入端口,P2口为输出端口。

(2)编写按键扫描函数,用于读取按键状态。

(3)编写步进电机控制函数,实现正反转、转速和定位控制。

(4)编写主函数,实现以下功能:a. 初始化数码管显示;b. 读取按键状态;c. 根据按键状态调用步进电机控制函数;d. 更新数码管显示。

3. 调试程序(1)将程序烧写到单片机中;(2)打开电源,观察数码管显示和步进电机运行状态;(3)根据需要调整程序,实现不同的控制效果。

基于51单片机的PWM直流电机调速

基于51单片机的PWM直流电机调速

基于51单片机的PWM直流电机调速在现代社会,PWM直流电机已经成为各类机械设备不可或缺的动力源。

为了更好地控制电机的转速和输出功率,我们需要进行PWM调速操作。

本文将简要介绍如何基于51单片机实现PWM直流电机的调速。

一、PWM调速原理PWM调速是一种通过改变电机供电电压的占空比来调整电机转速和功率的方法。

当一个周期内高电平所占的时间比较短时,电机得到的平均电流和平均转矩也相应减小,电机的速度和功率也随之降低。

反之,当高电平所占的时间比较长时,电机得到的平均电流和平均转矩也相应增大,电机的速度和功率也随之提高。

因此,通过改变PWM信号的高电平占空比,可以实现直流电机的调速、调功等功能,极大地提高了电机的效率和可控性。

二、硬件电路搭建根据上述PWM调速原理,我们需要搭建一个控制板,将51单片机的PWM输出与直流电机相连。

具体电路如下:1、选择合适的电源供电,一般为12V/24V直流电源。

2、使用L298N模块作为直流电机驱动模块,将模块的电源接到电源供电上,将模块的IN1和IN2引脚分别接到51单片机的P1^0和P1^1引脚上,将直流电机的正负极分别接到模块的OUT1和OUT2引脚上。

3、将51单片机的P1^2引脚连接到一个脉冲宽度计波形滤波器(LCF)的输入端,并将输出端接到L298N模块的ENA引脚上。

4、调整脉冲宽度计波形滤波器的参数,以达到合理的PWM输出波形。

5、建立一个按键,将按键的一端接到51单片机的P3^2引脚上,将另一端接到单片机的地端。

6、根据需要进行其他接线。

三、软件程序设计根据上述硬件电路,我们需要进行相应的软件程序设计,以实现基于51单片机的PWM 直流电机调速。

以下是程序设计的主要步骤:1、在程序中定义需要使用的IO口。

2、调用定时器初始化程序,设置定时器的时钟频率、计数器值和工作方式等参数。

3、编写一个PWM输出函数,实现对PWM信号的输出。

4、编写一个ADC采样函数,读取ADC转换器的值,并根据采样值输出一定的PWM信号。

单片机实验-单片机控制直流电机数码显示速度

单片机实验-单片机控制直流电机数码显示速度

武汉工程大学实验报告实验课程单片机综合实验姓名张鹏学号0704140228 专业及班级通信02 实验地点408 实验组号1组实验日期实验项目单片机控制电机实验(PWM)实验目的1了解直流电机PWM调速的原理2 了解对象模块的工作原理3 了解ADC0809工作原理4 了解显示模块的工作原理实验任务(1)基础实验(开环)(2)扩展实验(闭环)实验原理,实验步骤,实验仪器设备(名称,型号,功能,量程,在本次试验中的用途)二实验原理(1)单片机控制直流调速系统的工作原理概述整个系统的工作原理:首先是人为给定电动机转速的电压信号,然后将这个电压信号通过A/D转换成数字信号后传送给单片机(8025)。

单片机通过中断方式将接收到的数据先保存起来。

然后再对此数据进行处理,接着启动ADC0809开始采样直流电动机的实际速度值,再通过PID控制算法,得到一个输出信号值,再通过DA转换器将这个数字信号转换成相应的模拟电压控制信号,经过PWM 波形发生器来驱动直流发动机;并且不断循环,并且在这个循环往复的过程中,讲采集到的不断变化的速度值,通过LED数码管显示出直流电机的速度值。

整个系统设计包括了电位器控制部分,A/D转换部分,单片机控制部分,数码显示部分,电动机模块部分。

PWM调速原理及其实现方法PWM是通过控制固定电压的直流电源开关频率,从而改变伏在两端电压,从而达到控制要求的一种电压调整方法。

PWM可以应用在很多方面,如电机调速,温度控制,压力控制等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内接通和断开的时间的长短。

通过改变直流电机电枢上电压的占空比来改变平均电压的大小,从而控制电动机的转速。

因此,PWM又被称为开关驱动装置。

当电机通电时,速度增加;电机断电时,速度逐渐减少。

只要按一定规律,改变通、断电的时间,即可让电机转速得到控制PWM信号的产生通常有两种方法:一种是软件的方法,另一种是硬件的方法了解对象模块的工作原理PWM模块内部结构图在设计中首先要将给定的直流电动机转速的模拟电压转换成数字信号,同时还要对测速发电机进行采样并转化成数字信号,因此需要用A/D芯片。

单片机综合实验-PWM直流电机调速

单片机综合实验-PWM直流电机调速

武汉工程大学实验报告实验课程 单片机综合实验实验项目 单片机控制电机转速实验(PWM)专业名称 07级通信工程实验日期 2009年11月27日 班级 02班 指导教师 苏文静实验地点 机电楼408实验目的1.了解直流电机PWM的工作原理2.基础要求:编程并实现直流电机的调速,LED显示电机的转速,即电位器输出(开环)3.扩展要求:编程并实现直流电机的调速,以SPEED口输出的信号为反馈显示电机的实际转速(闭环)实验原理1.PWM的调速原理PWM调速是通过改变输出脉冲的占空比,从而改变电机转速的一种调速方法。

PWM调速分为单极性和双极性两种。

在单极性方式下,电机的转动方向不变,改变的只是转速;而在双极性方式下,电机的转动方向和转速都是可变的。

以下以单极性为 例说明PWM调速的基本原理。

假设一个脉冲周期内,高电平电压为Us,持续时间为t1;低电平为0V,持续时间为t2。

则脉冲周期T=t1+t2,该周期内平均电压U0=t1*Us/T。

令α=t1/T,则U0=α*Us,α表示占空比。

当高电平电压不变的情况下,电机两端电压的平均值U0取决于占空比α的大小。

改变α值就可以改变端电压的平均值,从而达到调速的目的,这就是PWM调速原理。

在双极性方式下,如果U0为负,意味着电机将反转,转速由U0的绝对值控制。

2.对象模块(PWM电机调速模块)工作原理直流电机PWM调速模块由测速电路和PWM调速电路两部分组成。

模块的电源由接口总线引入。

本模块中使用的电机为5V的直流电机。

电机测速部分(1)直流电机测速原理介绍电机测速部分由一个霍尔开关和信号放大电路组成。

与电机同轴的转盘上装有两块的强力磁钢,它们的磁极性相反,以保持转盘的平衡并保证转盘每转一周霍尔开关只导通一次。

霍尔开关平时输出为正电压,当转盘上的磁钢与霍尔开关正对时,霍尔开关输出负电压,经整形、放大输出。

单片机通过对负脉冲计数,可计算出电机的转速。

(2)电机测速部分电路原理及说明3144为霍尔开关,整形、放大由LM358完成。

电机控制实验报告分析(3篇)

电机控制实验报告分析(3篇)

第1篇一、实验背景电机控制技术在现代工业和日常生活中扮演着重要角色,其性能直接影响着设备的运行效率和稳定性。

为了更好地理解和掌握电机控制技术,我们进行了一系列电机控制实验。

本报告将对实验过程、结果及分析进行详细阐述。

二、实验目的1. 熟悉电机控制系统的基本组成和原理;2. 掌握电机控制实验的操作步骤和注意事项;3. 分析实验数据,验证电机控制理论;4. 提高实际操作能力和故障排除能力。

三、实验内容1. 电机控制实验平台搭建实验平台主要包括电机、控制器、传感器、电源等设备。

实验过程中,我们需要根据实验要求,正确连接各设备,确保实验顺利进行。

2. 电机调速实验通过调整PWM信号的占空比,实现对电机转速的调节。

实验中,我们测试了不同占空比下电机的转速,并记录实验数据。

3. 电机转向控制实验通过改变PWM信号的极性,实现对电机转向的控制。

实验中,我们测试了不同极性下电机的转向,并记录实验数据。

4. 电机制动实验通过调整PWM信号的占空比和极性,实现对电机制动的控制。

实验中,我们测试了不同制动条件下电机的制动效果,并记录实验数据。

四、实验结果与分析1. 电机调速实验结果分析实验结果显示,随着PWM占空比的增大,电机转速逐渐提高。

当占空比为100%时,电机达到最大转速。

实验数据与理论分析基本一致。

2. 电机转向控制实验结果分析实验结果显示,通过改变PWM信号的极性,可以实现对电机转向的控制。

当PWM信号极性为正时,电机正转;当PWM信号极性为负时,电机反转。

实验数据与理论分析相符。

3. 电机制动实验结果分析实验结果显示,通过调整PWM信号的占空比和极性,可以实现对电机制动的控制。

当PWM信号占空比为0时,电机完全制动;当占空比逐渐增大时,电机制动效果逐渐减弱。

实验数据与理论分析基本一致。

五、实验结论1. 电机控制实验平台搭建成功,能够满足实验要求;2. 电机调速、转向和制动实验均取得了良好的效果,验证了电机控制理论;3. 通过实验,提高了实际操作能力和故障排除能力。

基于51单片机的PWM直流电机调速报告

基于51单片机的PWM直流电机调速报告

课程名称:微机原理课程设计题目:基于51单片机的PWM直流电机调速直流电机脉冲宽度调制(Pulse Width Modulation-简称PWM)调速产生于20世纪70 年代中期,最早用于自动跟踪天文望远镜、自动记录仪表等的驱动,后来由于晶体管器件水平的提高及电路技术的发展, PWM 技术得到了高速发展,各式各样的脉宽调速控制器,脉宽调速模块也应运而生,许多单片机也都有了PWM输出功能。

而51单片机却没有PWM 输出功能,采用定时器配合软件的方法可以实现51单片机PWM的输出功能。

本设计就是由单片机STC89C52RC芯片,直流电机(搭建H桥电路驱动)和四位一体LED数码管为核心,辅以必要的电路,构成了一个基于51单片机PWM可调速的直流电机。

该可调直流电机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。

该可调直流电机布置合理,全部器件分布在7*9cm洞洞板上,看起来小巧精简。

采用的是单片机内部定时器产生方波并且两个P口交换输出,可以方便灵活地调速度和方向。

该可调直流电机从0到最大速度1200转每分钟一共设置了60个档次的转速,采用红光四位数码管,可以直观地显示出来(显示的是每分钟的转速)。

有红光和绿光的两个二极管作为转速指示灯。

四个控制按键就可以控制电机的转速,方向与暂停。

每按一个键,该可调电机就会实现相对应的功能,操作非常简单。

关键词:直流电机,51单片机,C语言,数码管一、设计任务与要求 (4)1.1 设计任务 (4)1.2 设计要求 (4)二、方案总体设计 (5)2.1 方案一 (5)2.2 方案二 (5)2.3 系统采用方案 (5)三、硬件设计 (7)3.1 单片机最小系统 (7)3.2 数码管显示模块 (7)3.3 系统电源 (8)3.4驱动电路 (8)3.5 整体电路 (9)四、软件设计 (10)4.1 keil软件介绍 (10)4.2 系统程序流程 (10)五、仿真与实现 (13)5.1 proteus软件介绍 (13)5.2 仿真过程 (13)5.3 实物制作与调试 (15)5.4 使用说明 (17)六、总结 (18)6.1 设计总结 (18)6.2 经验总结 (18)七、参考文献 (21)一、设计任务与要求1.1 设计任务1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).加深焊接的技巧,提高焊接的能力5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程1.2 设计要求1).四个按键分别实现改变转向,加速,减速与暂停的功能2).H桥电路驱动直流电机3).一个红光和一个绿光二级管指示电机转向4).四位数码管显示转速二、方案总体设计设计一个基于51单片机的可调直流电机。

PWM实验报告

PWM实验报告

51单片机控制直流电机PWM调速实验时间:第12周星期六1-4节51单片机控制直流电机PWM调速实验目的1.掌握脉宽调制 (PWM) 的方法。

2.用程序实现脉宽调制,并对直流电机进行调速控制。

实验设备PC 机一台,单片机最小系统,驱动板、直流电机,连接导线等实验原理1.PWM (Pulse Width Modulation) 简称脉宽调制。

即,通过改变输出脉冲的占空比,实现对直流电机进行调压调速控制。

2.实验线路图:实验内容:1. 利用实验室提供的单片机应用系统及直流电机驱动电路板,编制控制程序,实现直流电机PWM调速控制。

2.实验原理图:3. 程序如下:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit KEY1 = P3^4;sbit KEY2 = P3^5;sbit KEY3 = P3^6;sbit IN1 = P1^0;sbit IN2 = P1^1;sbit ENA = P1^2;sfr ldata=0x80;sbit dula=P2^6;sbit wela=P2^7; //sbit lcden=P3^4;//uchar timer,ms,t_set = 1;uchar T_N=100;uchar T_N1=100;uchar T_H_N=50;uchar T_H_N1=50;void msplay(uchar,uchar);uchar codex1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79 ,0x71};//uchar code x2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar code x3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//uchar code x4[]={0x01,0x02,0x04,0x08,0x10,0x20};void delay(uint z) //延时函数{uint x;for(x=z;x>0;x--);}void Key_Scan(){if(KEY1 == 0){delay(20);while(!KEY1);T_H_N++;if(T_H_N >=99){T_H_N =99;}}if(KEY2 == 0){delay(20);while(!KEY2);T_H_N--;if(T_H_N <= 1){T_H_N = 1;}}if(KEY3 == 0){delay(15);while(!KEY3);IN1=~IN1;IN2=~IN2;}}void Motor_Init(){ENA = 0;IN1 = 1;IN2 = 0;}void Timer0_Init(){TMOD=0X12;TH0=(256-50);TL0=(256-50);// TH1=(65535-T_H)/256;// TL1=(65535-T_H)%256;EA=1;ET0=1;TR0=1; }void main(){uchar k3,k2,k1,k0;Timer0_Init();Motor_Init();while(1){k2=T_H_N/10;k3=T_H_N%10;k1=0;k0=0;msplay(k0,2);msplay(k1,3);msplay(k2,4);msplay(k3,5);Key_Scan();}}void timer0() interrupt 1{TR0=0;// TH0=(65536-50)/256;// TL0=(65536-50)%256;T_H_N1--;if(0==T_H_N1){ENA=0;T_H_N1=1;}T_N1--;if(T_N1==0){ENA=1;T_N1=100;T_H_N1=T_H_N;}TR0=1;} void msplay(uchar y1,uchar y2){ldata = x1[y1];dula=1;dula=0;delay(1);ldata = x3[y2];wela=1;wela=0;delay(1);ldata = 0x00;dula=1;dula=0;delay(1);ldata = 0x0ff;wela=1;wela=0;delay(1);}占空比数值显示为70时,原理图的显占空比为70%时的调试图实验思考题本实验中是通过改变脉冲的占空比,周期T 不变的方法来改变电机转速的,还有什么办法能改变电机的转速,应该怎么实现?答:可以让占空比不变,改变周期T的大小来改变电机的转速。

单片机电机速度控制实验报告

单片机电机速度控制实验报告

单片机电机速度控制实验报告实验目的本实验旨在通过使用单片机控制电机的转速,研究单片机在电机速度控制方面的应用。

实验原理电机速度控制是电机控制领域中的重要研究内容之一。

单片机作为一种常用的控制器件,其在电机速度控制中也有着广泛的应用。

本实验采用PID控制算法来实现单片机对电机速度的控制。

PID控制算法是一种经典的控制方法,通过根据电机速度与设定速度之间的误差来调节电机的输入信号,从而实现对电机速度的精确控制。

实验器材1. 单片机开发板:XXX型号2. 直流电机:XXX型号3. 驱动电路:根据电机型号选择相应的驱动电路4. 电源:12V直流电源5. 电阻、电容等辅助元器件6. 逻辑分析仪(可选)实验步骤1. 搭建电路:根据电机型号选择相应的驱动电路,并将电机与驱动电路连接至单片机开发板上。

2. 编写程序:使用C语言编写程序,实现PID控制算法。

程序主要包括如下几个部分:a) 初始化:对单片机进行GPIO口、定时器等相关设置。

b) 速度测量:通过编码器或其他传感器来测量电机的实时速度。

c) PID控制:根据速度测量值与设定速度值之间的误差,计算PID控制算法所需的比例、积分和微分参数,并调节电机输入信号。

d) 输出控制:将计算得到的电机输入信号输出至驱动电路。

e) 延时控制:根据设定的采样周期对程序进行延时控制,以实现实时的速度控制。

f) 循环控制:将以上步骤循环执行,实现电机速度的连续控制。

3. 烧写程序:将编写好的程序通过编程器烧写至单片机开发板上。

4. 实验测量:使用示波器或逻辑分析仪等仪器对电机的转速进行测量,并记录实时的速度控制效果。

5. 数据分析:通过对测量数据的分析,评估所设计的PID控制算法在电机速度控制方面的性能及精度。

6. 总结与讨论:根据实验结果,总结本次实验的经验教训,并提出改进措施和下一步的研究方向。

实验结果与分析通过对实验测量数据的分析,我们可以得到电机速度控制效果的定性和定量评估。

32单片机pwm控制直流电机的实验报告

32单片机pwm控制直流电机的实验报告

32单片机pwm控制直流电机的实验报告实验名称:32单片机PWM控制直流电机实验实验目的:通过学习和实验,让学生了解32单片机PWM控制直流电机的原理和实现方式。

实验原理:PWM即脉冲宽度调制,是一种常用的调制方式。

其原理是基于脉冲的占空比,通过改变脉冲的宽度来控制输出信号的平均值。

在32单片机中,我们可以通过配置寄存器和引脚功能来实现PWM输出。

此次实验中,我们需要通过PWM控制直流电机的速度。

对于直流电机,我们可以通过改变电机的电压来改变其转速,因此我们可以通过控制PWM信号的占空比来实现对直流电机速度的控制。

实验过程:1、准备材料:32单片机、电位器、直流电机,电容等。

2、将电位器接入32单片机的ADC引脚,通过调节电位器来改变ADC引脚的电压。

3、编写程序,配置32单片机PWM模块,实现对直流电机的速度控制。

程序示例如下:#include <reg52.h>sbit IN1 = P3^0;sbit IN2 = P3^1;sbit EN = P3^2;unsigned int speed;void timer0_init(){TMOD = 0x02;TH0 = 0xff;TL0 = 0xff;ET0 = 1;EA = 1;TR0 = 1;}{timer0_init();while(1){speed = ADC_Get(1);TH0 = speed >> 8;TL0 = speed;P1 = speed;}}void pwm_init(){TMOD |= 0x10;TL1 = 0x00;TH1 = 0x00;ET1 = 1;TR1 = 1;EA = 1;}void pwm_output(unsigned int duty) {int value;value = duty*10;TL1 = value;TH1 = value >> 8;}void timer1_isr() interrupt 3{IN1 = 0;IN2 = 1;pwm_output(90);}void timer0_isr() interrupt 1{EN = 1;}4、进行编译和下载,将32单片机与电机、电源等接线好。

单片机控制电机调速实验报告

单片机控制电机调速实验报告

重庆邮电大学综合实验报告——单片机控制步进电机调速学生姓名:组长:AAAA组员:AAAAAAAA学号:XXXXXXXXXXXXXXXXXX所在学院:自动化班级:XXXXX 专业:机械设计制造及其自指导老师:XXXX 成绩评定:检测与控制实验中心2目录一、实验要求与目的 (3)1、设计要求 (3)2、实验目的 (3)二、设计思路 (3)三、实验原理 (4)1、步进电机 (4)2、步进电机控制系统结构 (4)3、速度控制算法 (5)四、功能概述及方案设计 (5)1、显示模块 (5)2、AD转换模块 (6)3、步进电机细分驱动模块 (6)五、实验运行程序 (7)六、实验心得 (13)参考文献 (13)3一、实验要求与目的1、设计要求1、步进电机的给定速度由电位器通过AD转换输入2、只有给定速度和实际速度显示功能3、实际速度通过红外光电开关(或霍尔元件)检查4、步进电机具有细分功能:1/2细分 1/4细分 1/8细分5、测试步进电机的响应时间及曲线2、实验目的1、熟悉步进电机的工作原理2、熟悉51系列单片机的工作原理及调试方法3、设计基于51系列单片机控制的步进电机调速原理图4、实现51系列单片机对步进电机的速度控制5、了解霍尔元件和步进电机细分驱动芯片tb6560的使用二、设计思路主控芯片采用STC89C52单片机,显示采用1602液晶,由于步进电机速度设定由电位器输入,使用外部AD tlc5510,AD时钟源接89C52 ALE引脚,AD为并行,AD使用单片机P1口,可以直接读取,根据对应数据设定速度。

步进电机速度控制采用闭环控制,由于传统的PID控制算法波动较大,我们采用分级设定加速度的办法,并把编码器反馈回来的速度与设定速度进行比较确定是加速还是减速,软件模拟加速减速过程,步进电机细分由驱动芯片TB6560提供,由于驱动细分由m1、m2口电平决定,我们采取直接通过拨码开关设定电平,从而设定驱动细分值。

单片机直流电机调速系统实训报告

单片机直流电机调速系统实训报告

单片机综合实训报告专业:汽车电子技术学号:08341-12姓名:指导教师:柳铭时间:2010年5月30日—7月10日摘要在电气时代的今天,电动机在工农业生产与人们日常生活中都起着十分重要的作用。

直流电机作为最常见的一种电机,具有非常优秀的线性机械特性、较宽的调速范围、良好的起动性以及简单的控制电路等优点,因此在社会的各个领域中都得到了十分广泛的应用。

直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。

从控制的角度来看,直流调速还是交流拖动系统的基础。

早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。

随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到更高的性能。

采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。

本文设计了直流电机控制系统的基本方案,阐述了该系统的基本结构、工作原理、运行特性及其设计方法。

主要研究直流电机的控制和测量方法,从而对电机的控制精度、响应速度以及节约能源等都具有重要意义。

本设计系统以单片机AT80C52为核心,附以外围电路,实现直流电机调速的系统;运用单片机的运算和处理能力和L293D电机驱动芯片来实现电机的手动加速、减速调速等智能控制系统,并运用软件Proteus进行仿真来得到实验结果。

关键词单片机L293电机驱动直流电机PWM目录一、实训目的与要求 (1)1.1实训目的 (1)1.2实训要求 (1)二、实训题目及总方案 (1)2.1实训题目 (1)2.2设计方案 (1)2.3主要元件介绍 (2)2.3.1 AT89C52 (2)2.3.2 L293D (3)2.4电路原理 (4)2.5原理图及原理框图 (4)三、设计过程 (5)3.1筹备过程 (5)3.2制作过程 (5)3.3调试过程 (6)3.4显示结果 (7)3.5元件清单 (7)四、总结 (8)4.1个人实训小课题 (8)4.1.1题目 (8)4.1.2原理及调试 (8)4.1.3秒表原件清单 (9)4.2结论总结 (10)4.3心得体会 (10)五、参考文献 (11)附录 (12)附图 (12)开关控制电路 (12)驱动电路 (13)程序 (14)一、实训目的与要求1.1实训目的学习知道单片机的性能与功能,在现实生活中的应用。

单片机电机步进控制实验报告

单片机电机步进控制实验报告

单片机电机步进控制实验报告I. 引言在现代工程领域中,单片机电机步进控制技术被广泛应用,它能够实现准确、高效的电机控制。

本实验旨在通过使用单片机控制电机步进运动,探索其应用和性能。

II. 实验目的本实验的主要目的包括:1. 了解单片机控制电机步进运动的原理;2. 掌握电机驱动器的接口和控制方法;3. 进行基本的电机步进控制实验;4. 能够通过程序控制电机实现不同步进模式。

III. 实验器材和布置1. 单片机开发板2. 电机步进驱动器3. 步进电机4. 连接线5. 电源实验布置如下:(这里可以插入实验布置的示意图或图片)IV. 实验步骤1. 连接硬件:将电机步进驱动器与单片机开发板连接,并将步进电机与驱动器相连接。

2. 编写初始化程序:在单片机开发环境中编写初始化程序,包括引入相关库和设置引脚的输入输出状态。

3. 编写电机控制程序:根据步进电机的类型和驱动器的接口,编写单片机控制程序。

程序中要包括控制电机旋转方向、转速和步进模式等的代码。

4. 载入程序并运行:将编写好的程序载入单片机,并通过开发板的编程接口进行烧录。

编程完成后,将电源接入,观察电机的运动情况。

5. 实验记录和分析:记录电机在不同程序设置下的运动情况,并进行分析和总结。

V. 实验结果与分析(这部分根据实验结果来进行详细的描述和分析,可包括电机的旋转方向、转速、步进模式切换等内容,并结合实验目的和预期结果进行分析。

)VI. 结论通过本次单片机电机步进控制实验,我们成功地掌握了电机步进控制的基本原理和方法。

通过编写控制程序,我们能够准确控制电机的运动方向、转速和步进模式。

该技术在工程中具有广泛应用前景,可在自动化控制、机器人技术等领域发挥重要作用。

VII. 实验总结本实验通过实际操控单片机和电机进行步进控制,加深了对单片机电机步进控制原理的理解。

同时,我们也熟悉了单片机开发环境的使用和编程技巧。

然而,本实验还存在一些不足之处,例如未对电机的精确度进行详细测试和分析。

单片机步进电机控制实验报告

单片机步进电机控制实验报告

单片机步进电机控制实验报告1. 实验背景步进电机是一种特殊的直流电机,具有精确定位、运行平稳等特点,广泛应用于自动化控制系统中。

本实验旨在通过单片机控制步进电机的转动,加深对步进电机原理和控制方法的理解。

2. 实验器材和原理实验器材•单片机开发板•步进电机•驱动模块•连接线实验原理步进电机按照一定步进角度进行转动,每转动一定步数,即转动特定的角度。

步进电机的控制需要通过驱动模块来实现,驱动模块与单片机进行连接,通过单片机的输出控制步进电机的转动。

3. 实验步骤步骤1:连接电路将单片机开发板与驱动模块通过连接线连接,确保连接线的接口正确连接。

步骤2:编写程序使用C语言编写控制步进电机的程序,并上传到单片机开发板中。

程序需要实现控制步进电机转动的功能,可以根据需要设置转动的方向和步数。

步骤3:设置参数根据实际情况设置步进电机的转动参数,例如转动方向、转动速度等。

确保设置的参数符合实验要求。

步骤4:开始实验将步骤1和步骤2准备好的电路和程序连接在一起,并开启电源。

通过单片机的输出控制步进电机的转动,观察步进电机的转动情况。

步骤5:记录实验结果记录步进电机的转动情况,包括转动方向、转动步数等信息。

观察步进电机的转动是否符合预期,记录任何异常情况。

步骤6:实验总结根据实验结果进行总结和分析,评估步进电机控制的效果。

分析实验中可能出现的问题和改进方向,并提出改进措施。

4. 实验注意事项•在实验过程中,严格按照操作步骤进行,避免出现操作失误。

•注意检查电路连接是否正确,确保连接稳固可靠。

•在进行步进电机控制时,注意控制信号的稳定性和准确性。

•注意观察步进电机的转动情况,及时记录转动信息。

•实验过程中如有异常情况出现,应立即停止实验并进行排查。

5. 实验结果根据实验步骤和注意事项进行实验,步进电机的转动情况符合预期,控制效果良好。

6. 实验总结本次实验通过单片机控制步进电机的转动,加深了对步进电机原理和控制方法的理解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

重庆邮电大学综合实验报告——单片机控制步进电机调速学生姓名:组长:AAAA组员:AAAAAAAA学号:XXXXXXXXXXXXXXXXXX所在学院:自动化班级:XXXXX专业:机械设计制造及其自动化指导老师:XXXX成绩评定:检测与控制实验中心目录一、实验要求与目的 (3)1、设计要求 (3)2、实验目的 (3)二、设计思路 (3)三、实验原理 (4)1、步进电机 (4)2、步进电机控制系统结构 (4)3、速度控制算法 (5)四、功能概述及方案设计 (5)1、显示模块 (5)2、AD转换模块 (6)3、步进电机细分驱动模块 (6)五、实验运行程序 (7)六、实验心得 (13)参考文献 (13)一、实验要求与目的1、设计要求1、步进电机的给定速度由电位器通过AD转换输入2、只有给定速度和实际速度显示功能3、实际速度通过红外光电开关(或霍尔元件)检查4、步进电机具有细分功能:1/2细分 1/4细分 1/8细分5、测试步进电机的响应时间及曲线2、实验目的1、熟悉步进电机的工作原理2、熟悉51系列单片机的工作原理及调试方法3、设计基于51系列单片机控制的步进电机调速原理图4、实现51系列单片机对步进电机的速度控制5、了解霍尔元件和步进电机细分驱动芯片tb6560的使用二、设计思路主控芯片采用STC89C52单片机,显示采用1602液晶,由于步进电机速度设定由电位器输入,使用外部AD tlc5510,AD时钟源接89C52 ALE引脚,AD为并行,AD使用单片机P1口,可以直接读取,根据对应数据设定速度。

步进电机速度控制采用闭环控制,由于传统的PID控制算法波动较大,我们采用分级设定加速度的办法,并把编码器反馈回来的速度与设定速度进行比较确定是加速还是减速,软件模拟加速减速过程,步进电机细分由驱动芯片TB6560提供,由于驱动细分由m1、m2口电平决定,我们采取直接通过拨码开关设定电平,从而设定驱动细分值。

三、实验原理1、步进电机步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。

步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机。

步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。

步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。

其基本原理作用如下:(1)控制换相顺序通电换相这一过程称为脉冲分配。

例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。

(2)控制步进电机的转向如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。

(3)控制步进电机的速度如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。

两个脉冲的间隔越短,步进电机就转得越快。

调整单片机发出的脉冲频率,就可以对步进电机进行调速。

2、步进电机控制系统结构单片机在适当的时刻通过对计数器0赋初值,设置好加减速过程的频率变化(即速度、加速度变化),以防止失步。

例如,在点位控制中设置好速度曲线图,在起动和升速时,使步进电机产生足够的转矩驱动负载,跟上规定的速度和加速度;在减速时,下降特性使负载不产生过冲,停止在规定的位置。

启动细分驱动电路中的固化程序以产生一定频率的脉冲,经功率放大后驱动步进电机运动。

步进电机运动方向的改变及启动和停止均由计算机控制硬件控制电路实现。

图2 步进电机控制系统3、速度控制算法单片机控制系统通过A/D电路检测设定速度值,通过编码器得到实际速度值,当实际速度值大于设定速度值,步进电机加速,反之减速。

根据实际速度真与设定速度值的差值大小的不同,将加速度分为三个等级,相差越大,加速度越大。

从而达到既能快速达到设定速度值,又能让实际速度稳定在设定速度值左右的目的。

四、功能概述及方案设计1、显示模块显示模块采用1602液晶显示测量参数和显示所有测量数据。

程序逻辑功率驱动器步进电机编码器电源输入脉冲细分指令2、AD转换模块3、步进电机细分驱动模块TB6560步进电机驱动电路主要包括3部分电路:控制信号隔离电路、主电路和自动半流电路,可利用简单的编程实现。

五、实验运行程序/******************************************************Display.c文件******************************************************/#include <reg52.h>#include <intrins.h>#define Data P0 //数据端口#define LENGTH 7typedef unsigned char uchar;typedef unsigned int uint;code char num[] = "0123456789";char setSd[LENGTH] = "SetSpd:";char nowSd[LENGTH] = "NowSpd:";char r_min[5] = "r/min";//---------液晶显示接口------------sbit RS = P2^4;sbit RW = P2^5;sbit E = P2^6;void DelayMs(uchar ms);void DelayUs(uchar us);void InitLcd(void);void WriteData(uchar c);void WriteCommand(uchar c);void DisPlay(uint number, uchar status);void DisplayStr(char *s,uchar length);/****************************************************************** 数据显示******************************************************************/ void DisPlay(uint number, uchar status){char i;static char pre_i = 0;char temp[8] = {0};if(status == 0){WriteCommand(0x80);DisplayStr(setSd,LENGTH);}else{WriteCommand(0xc0);DisplayStr(nowSd,LENGTH);}if(number == 0){WriteData(num[temp[0]]);}else{i = 0;while(number){temp[i] = number%10;number /= 10;i++;}if(pre_i > i){WriteCommand(0x01); //显示清屏}pre_i = i;while(i > 0){i--;WriteData(num[temp[i]]);}}DisplayStr(r_min,5);}/*******************************************字符串显示函数********************************************/void DisplayStr(char *s,uchar length){uchar j = 0;while(j < length){WriteData(s[j]);j++;}}/****************************************************************** 写入命令函数******************************************************************/ void WriteCommand(uchar c){DelayMs(5);//操作前短暂延时,保证信号稳定E=0;RS=0;RW=0;_nop_();E=1;Data=c;E=0;}/******************************************************************写入数据函数******************************************************************/ void WriteData(uchar c){DelayMs(5); //操作前短暂延时,保证信号稳定E=0;RS=1;RW=0;_nop_();E=1;Data=c;E=0;RS=0;}/****************************************************************** 初始化函数******************************************************************/ void InitLcd(void){DelayMs(15);WriteCommand(0x38); //display modeWriteCommand(0x38); //display modeWriteCommand(0x38); //display modeWriteCommand(0x06); //显示光标移动位置WriteCommand(0x0c); //显示开及光标设置WriteCommand(0x01); //显示清屏}/****************************************************************** 微妙级函数12MHz频率******************************************************************/ void DelayUs(uchar us){uchar uscnt;uscnt = us>>1;while(--uscnt);}/****************************************************************** 毫秒延时函数******************************************************************/ void DelayMs(uchar ms){while(--ms){DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250);}}/******************************************************Init.c文件******************************************************/#include <reg52.h>typedef unsigned char uchar;typedef unsigned int uint;sbit CW = P2^1;sbit ENABLE = P2^2;extern void InitLcd(void);/************************************************ TB6560初始化*************************************************/ void InitTB6560(void){CW = 0;ENABLE = 1;}/************************************************定时器0初始化函数功能:周期定时50ms*************************************************/ void InitTime0(void){TMOD |= 0x01;EA = 1;ET0 = 1;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;TR0 = 1;}/************************************************定时器1初始化函数功能:设定为外部脉冲计数模式*************************************************/ void InitTime1(void){TMOD |= 0x50;EA = 1;ET1 = 0;TH1 = 0;TL1 = 0;TR1 = 1;}/************************************************定时器1初始化函数功能:设定为外部脉冲计数模式*************************************************/ void InitTime2(void){RCAP2H = (65536-50000)/256; //重装载计数器赋初值RCAP2L = (65536-50000)%256;ET2 = 1; //开定时器2中断EA = 1; //开总中断TR2 = 1; //开启定时器,并设置为自动重装载模式}/************************************************总初始化函数*************************************************/void InitSystem(void){InitLcd();InitTB6560();InitTime0();InitTime1();InitTime2();}/****************************************************** StepMotor.c文件******************************************************/#include <reg52.h>#include <math.h>#include "StepMotor.h"void main(void){int K;InitSystem();while(1){if(statusFlag == 0){preSetSpeed = setSpeed;setSpeed = SET_SPEED;if(setSpeed > nowSpeed){if(setSpeed - nowSpeed > 10)K = 10;else if(setSpeed - nowSpeed > 5)K = 20;else K = 60;if(adjustment < 1)adjustment = 1;adjustment = adjustment - adjustment/K;}else if(setSpeed < nowSpeed){if(setSpeed - nowSpeed > 10)K = 10;else if(setSpeed - nowSpeed > 5)K = 20;else K = 60;if(adjustment > 30000)adjustment = 30000;adjustment = adjustment + adjustment/K;}DisPlay(setSpeed,0);DisPlay(nowSpeed,1);statusFlag = 1;}}}/************************************************定时器2中断函数功能:周期定时50ms*************************************************/void Tsr_Time2(void) interrupt 5{static volatile uchar inTimes = 0;TR1 = 0;if(inTimes < 20){inTimes++;}else{nowSpeed = TH1*256 + TL1;statusFlag = 0;inTimes = 0;TH1 = 0;TL1 = 0;}TF2 = 0; //定时器2的中断标志要软件清0TR1 = 1;}/************************************************定时器0中断函数功能:周期定时50ms*************************************************/void Tsr_Time0(void) interrupt 1{CLK = ~CLK;TH0 = (65536 - adjustment)/256; //2600一转每秒TL0 = (65536 - adjustment)%256;}/****************************************************** StepMotor.h*******************************************************/ /********************************clk p2.0 步进电机转速c/cw P2.1 正反转Enable P2.2 驱动使能singal P3.5 编码器信号反馈*********************************/#define SET_SPEED P1typedef unsigned char uchar;typedef unsigned int uint;sbit CLK = P2^0;sbit CW = P2^1;sbit ENABLE = P2^2;//--------------函数声明--------------extern void InitSystem(void);extern void WriteData(uchar c);extern void WriteCommand(uchar c);extern void DisPlay(uint number, uchar status);//------------变量定义-------------int setSpeed; //速度设定int preSetSpeed;uchar count = 0;volatile int nowSpeed; //当前速度int staticAdjustment = 0;volatile int adjustment = 30000; //周期调整volatile uchar statusFlag = 0;六、实验心得经过这次的实验,我们受益匪浅,熟悉掌握了步进电机的工作原理,对51系列单片机的工作原理及调试方法也有了更进一步的了解,对霍尔元件和步进电机细分驱动芯片tb6560的使用也有了一定的了解,经过这次实验,锻炼了我们对知识的综合能力,在动手能力方面也有了进一步的提高。

相关文档
最新文档