实验七 IO接口控制实验——电机控制实验
电机控制实验报告

电机控制实验报告电机控制实验报告引言:电机是现代工业中常见的一种动力装置,广泛应用于各个领域。
为了使电机能够高效运行,需要进行电机控制。
本实验旨在通过对电机控制的研究,探讨电机的特性和控制方法。
一、电机特性研究1.1 电机的基本原理电机是通过电流在导体中产生的磁场与磁场之间的相互作用来实现能量转换的装置。
电流通过线圈时,会在线圈周围产生磁场,这个磁场与外部磁场相互作用,使得电机产生转动力矩。
1.2 电机的运行特性电机的运行特性包括转速、转矩、效率等。
转速是指电机每分钟旋转的圈数,转矩是指电机输出的力矩大小,效率是指电机输出功率与输入功率之比。
1.3 电机的启动和制动过程电机的启动是指电机从静止状态开始转动的过程,制动是指电机停止转动的过程。
在实际应用中,启动和制动过程对电机的寿命和效率都有一定的影响,因此需要进行控制。
二、电机控制方法2.1 直流电机控制直流电机是一种常见的电机类型,其控制方法较为简单。
通过调节电流大小和方向,可以实现直流电机的转速和转矩控制。
在实验中,我们通过改变输入电压和电阻来控制直流电机的转速和转矩。
2.2 交流电机控制交流电机是另一种常见的电机类型,其控制方法相对复杂。
交流电机的控制主要包括电压调节、频率调节和相位调节等。
在实验中,我们通过改变电压和频率来控制交流电机的转速和转矩。
2.3 闭环控制和开环控制电机控制可以分为闭环控制和开环控制。
闭环控制是通过反馈信号来调节控制系统的输出,以达到期望的效果。
开环控制则是直接根据输入信号来控制系统的输出。
在实验中,我们可以通过反馈电机的转速信号来实现闭环控制,提高控制的精度和稳定性。
三、实验过程与结果在实验中,我们选取了一台直流电机和一台交流电机进行控制实验。
首先,我们通过调节电压和电阻来控制直流电机的转速和转矩,观察并记录了不同参数下电机的运行特性。
接着,我们通过改变电压和频率来控制交流电机的转速和转矩,并对实验结果进行了分析和总结。
电机控制实验报告

电机控制实验报告目录一、设计说明 (2)二、方框图 (2)三、直流无刷无霍尔电机驱动原理图 (2)四、直流无刷无霍尔电机原理 (3)五、方案设计 (3)六、程序清单 (4)七、心得体会··············································8 附录Ⅰ、PCB图附录Ⅱ、原理图附录Ⅲ、元器件清单一、设计说明本次科研实践的内容是实现无刷电机的调速控制,需要实现以下要求:能够实时显示速度;可以手动设置速度;可以控制正反转;可以控制电机的启停。
二、方框图三、直流无刷无霍尔电机驱动原理图- 1 -注:● Ha,Hb,Hc输入端,内有上拉电阻,约30KΩ左右● 电流检测回路,一般应用Ri =10K,Ci = 104P,电流采样电阻R 选值参考R =0.05/( W/V) 式中:0.05常数,W电机功率,V工作电压如:工作电压12V,电机功率30WR=0.02(20mΩ)● 在无霍尔驱动中,反电动势信号经过L339处理后的相位不能搞错(MA—Ha;MB—Hb;MC—Hc)。
● 驱动门电路,建议使用IR2101S做为驱动门,起到隔离与电平转换作用。
● VCC电源滤波电容C,一般按C=W/V*100式中:C单位uF W 电机功率V工作电100常数。
四、直流无刷无霍尔电机原理无刷直流电机由电动机主体和驱动器组成,是一种典型的机电一体化产品。
基于MSP430的步进电机实验-IO口控制

1、实现步进电机开启、停止;
2、
3、实现步进电机正转、反转;;
4、实现步进电机调速。
三、实验原理:
1、步进电机控制原理:
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:
Speed_Update();
delay(m);
P3OUT=BIT2+BIT3;
Speed_Update();
delay(m);
a=P1IN&0X10;//更新转向控制值
b=P1IN&0X20;//更新启动控制值
}
}
else if((a!=0x10)&&(b==0X20))//反转时序
{
while((a!=0x10)&&(b==0X20))
(1)控制换相顺序即各个控制线通电顺序,这一过程称为脉冲分配。给步进电机一列脉冲并循环下去,那么步进电机会不停地转动。
(2)控制步进电机的转向,如果给定工作方式正序换相通电,步进电机正转;如果按反序通电换相,则电机就反转。
(3)控制步进电机的速度,如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。
{
while(tim--);
}
void Speed_Update(void)//延时选择子函数
IO实验报告

MOV MOV INT
AH,9 DX,OFFSET MES 21H
SCAN: MOV MOV IN AND CMP JNZ CALL
SCA1: CMP JNZ CALL
AX,0 DX,IOADD AL,DX AL,3H AL,0 SCA1 FAR PTR M_K0
3DH
PCI_CS_MIN_GNT EQU
3EH
PCI_CS_MAX_LAT EQU
3FH
;---------------------END-------------------------
ADDRESS_IO_0 DW
?
ADDRESS_IO_1 DW
?
ADDRESS_MEM_L DW
?
ADDRESS_MEM_H DW
CODE ENDS
END
START
PUSH SUB PUSH MOV MOV
DS AX,AX AX AX,DATA DS,AX
MOV MOV INT CMP JZ MOV JMP STA1: MOV MOV MOV MOV MOV INT JNC MOV MOV INT JMP AA: MOV MOV
AH,0B1H ;读配置资源 AL,1H 1AH AH,00 STA1 DX,OFFSET DIS5 M_EXIT
18H
PCI_CS_BASE_ADDRESS_3 EQU
1CH
PCI_CS_BASE_ADDRESS_4 EQU
20H
PCI_CS_BASE_ADDRESS_5 EQU
24H
PCI_CS_EXPANSION EQU
电机的联动控制实验

电机的联动控制实验
一、实验目的
1.通过本实验,学习综合控制模拟系统设计的流程及编程技巧,初步掌握系统设计的方法和编程思路。
2.通过用PLC实现电机联动控制替代电气线路这一过程,加深对电机联动设计及运用的理解,比对实际控制程序与实际电气控制的区别。
二、预习要求
实验前阅读《机电传动控制》相关章节,熟悉电机基本电气控制电路,根据实验要求弄清楚本实验的电气控制原理,实验前按动作要求编写出相应的程序清单。
三、实验内容及动作要求
1.实验原理
在实际的生产过程中往往是几个电机一起配合使用完成对机构的操作,根据实际生产加工过程的不同,对多个电机的动作要求也不,有的控制过程需要几个电机同时动作,有的则要求几个电机启动有规定先后的顺序,或者电机之间需要互锁控制。
本实验中有两台控制电机M1、M2,其中M1可以正、反向点动调整控制,M1正向启动之后,才能启动M2,停车是M2停止了才能停止M1,其电气控制原理图如下:
2.动作分配
在实验中选取7个按扭分别对应电机M1、M2的启停及正反转控制,同时选择三个指示等代表两电机的正反转运行状态(M1的正传反转,M2的正转),
四、实验要求与实验报告
1.本实验所模拟的电机运转方式是实际生产和控制过程中运用较多较为典型的过程,在利用实验加深理解的同时,在PLC的编程过程中希望同学们在正确合理完成的基础上能够充分发挥主观能动性,大胆创新灵活多变,熟练和提高自己的编程技巧。
2.实验程序需经指导老师检查确认运行正确才能通过。
3.整理实验数据,完成实验报告的相关内容,包括实际接线原理图、PLC 的I/O分配表、控制程序及注释等。
IO控制模块实验

一、实验目的1、了解TM320LF2407A DSP的数字I/O控制模块的使用方法;2、学习使用I/O管脚控制外围设备;3、学会使用程序驱动简单外围设备。
二、实验主要仪器与设备1、PC兼容机一台。
2、ICETEK-LF2407-USB-EDU实验箱一台。
3、USB连接电缆一条。
三、实验原理1、TMS320LF2407A DSP的数字I/O控制模块介绍数字输入/输出模块是集成在TMS320LF2407A片内的外设之一,它主要对芯片的通用、双向的数字I/O(GPIO)引脚进行控制。
这些I/O引脚大多数是基本功能和一般I/O复用的引脚,数字I/O模块草用了一种灵活方法,以控制专用I/O和复用I/O引脚的功能,所有I/O和复用引脚的功能可通过9个16位控制寄存器来设置,这些寄存器可分为两类:(1)I/O口复用控制寄存器(MCRx):用于选择I/O口作为基本功能方式或一般I/O引脚功能;(2)数据和方向控制寄存器(PxDATDIR):当I/O口用作一般I/O引脚功能时,用数据和方向控制寄存器可控制数据和到双向I/O引脚的数据方向,这些寄存器直接和双向I/O引脚相连。
具体控制寄存器的访问地址、定义请参见有关资料。
Code Composer Studio 2.2 主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接成COFF(公用目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。
2、ICETEK—LF2407—A板引出的I/O管脚及使用方法ICETEK—LF2407—A板使用了一些I/O管脚对DSP进行控制。
例如:跳线JP6连接DSP上MP/MC 管脚,在DSP复位时,DSP可读回这一管脚的设置,当管脚接高电平是,DSP采用微处理器(MP)方式工作,否则设置成微控制器(MC)方式。
ICETEK—LF2407—A板载扩展插头上将未使用的I/O 引脚接出,提供给用户连接使用。
电机与控制实验报告

一、电机与控制1、长动、点动控制电路(1)电路图:(2)工作原理:按下按钮SB2,KM线圈得电,由它控制的KM常开触点将闭合。
放开SB2按钮后,在KM2常开触点吸合的这条支路导通,形成自锁,即SB2实现了长动功能,SB1为停止按钮。
当按下按钮SB3,SB3常开触点闭合,KM线圈通电,线圈得电,它的常开触点吸合,但SB3的常闭触点在按下的时候会打开,KM的常开触点即使闭合也无法形成自锁。
要让线圈保持通电,只能一直按着SB3,即SB3按钮实现了点动功能。
(3)调试和结果:在接线时由于弄错了SB3常开和常闭的接法,改正后电路实现长动和点动的功能。
2、自动往复循环控制电路(1)电路图:(2)工作原理:当SB2按下以后,SB2常闭将断开,KM2线圈所在支路断电,而KM1线圈会吸合它的常开触点,形成自锁,保持电机的运转。
直到到达限位开关SQ2的位置,SQ2打开的瞬间,KM1线圈失电,不再向前运动,同时,与之相连的SQ2常开开关闭合会使得KM2线圈得电,电机会逆转。
当达到限位开关SQ1的位置,SQ1打开的瞬间,KM2线圈失电,不再向前运动,同时,与之相连的SQ1常开开关闭合会使得KM1线圈得电,电机会反转。
(3)调试和结果:这个电路比较简单,两个人一起连,没有出错。
3、顺启逆停(1)电路图:(2)工作原理:SB1按钮按下以后,KM1线圈得电,电机1开始转动,它的常开触点闭合形成了自锁,并且使得时间继电器KT1的线圈得电,时间继电器KT1的设置时间到了以后,它所控制的常开触点将闭合,会使得KM2线圈得电,电机1开始转动,这样就完成了SB1按钮控制的电机1先转,过一段时间电机2再转的功能。
SB2按钮按下以后,KV线圈得电,它的常开触点吸合,使得KV线圈得电并自锁,它的常闭触点断开,使得KM2线圈断电,电机2停转,使得时间继电器KT2线圈得电。
当时间继电器KT2设置的延时时间到了以后,KT2线圈控制的常开触点打开,KM1线圈失电,电机1停转。
I O口控制实验

单片机实验报告实验名称:I/O口控制姓名:学号:班级:时间:南京理工大学紫金学院电光系一、实验目的1、学习I/O口的使用;2、学习延时子程序的编写和使用;3、掌握单片机编程器使用和芯片烧写方法。
二、实验原理1、灯闪烁实验(1)在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
电路原理图如图(2)程序设计流程图2、广告流水灯实验(1)做单一灯的左移右移,硬件电路如图,八个发光二极管L1—L8分别接在单片机的P1.0—P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→…→P1.7→P1.6→…→P1.0亮,重复循环。
(2)程序设计流程图开始P1口赋初值延时1秒P1口的各位灯依次从右向左闪烁是延时1秒P1口的各位灯依次从左向右闪烁3、模拟开关实验(1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
如图所示。
(2)程序设计流程图三、实验内容1、灯闪烁利用单片机的I/O引脚控制一发光二极管,实现闪烁效果。
2、广告流水灯利用单片机的任一组I/O引脚控制八个发光二极管,实现广告流水灯效果。
3、模拟开关读取单片机的I/O引脚状态来控制发光二极管,引脚状态由外部开关控制。
四、小结与体会通过实验,了解了MCS-51单片机中定时器/计数器的基本结构、工作原理和工作方式,掌握工作在定时器和计数器两种方式下的编程方法。
由于定时器和计数器在不同的工作方式下有不同的性质,因此学会选取恰当的工作方式十分重要。
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。
可复制、编制,期待你的好评与关注)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned int GAFR0_y; // 0x40E0005C
unsigned int GAFR1_y; // 0x40E00060
unsigned int GAFR0_z; // 0x40E00064
unsigned int GAFR1_z; // 0x40E00068
} GPIO_REGS, *PGPIO_REGS (2)、GPIO 控制的宏定义 #define GPIO_81_PullHigh() v_pGPIOReg->GPSR_z|=GPIO_81
} else {
//set GPIO pin direction v_pGPIOReg->GPDR_z |= GPIO_81; v_pGPIOReg->GPDR_z |= GPIO_82; v_pGPIOReg->GPDR_z |= GPIO_83; v_pGPIOReg->GPDR_z |= GPIO_84; v_pGPIOReg->GPDR_y |=GPIO_53;
GPIO_53_PullLot;g_ZLDJPositive)
GPIO_84_PullLow(); else
GPIO_84_PullHigh(); while(pDlg->g_uPWMRunTimes) {
if(pDlg->g_uPWMRunTimes!=0xFFFFFFFF) pDlg->g_uPWMRunTimes--;
//用于直流电机
#define GPIO_81_PullLow() v_pGPIOReg->GPCR_z|=GPIO_81 #define GPIO_82_PullHigh() v_pGPIOReg->GPSR_z|=GPIO_82 //用于直流电机
#define GPIO_82_PullLow() v_pGPIOReg->GPCR_z|=GPIO_82 #define GPIO_83_PullHigh() v_pGPIOReg->GPSR_z|=GPIO_83 //用于产生步进电机脉冲
unsigned int GPSR_y; // 0x40E0001C
unsigned int GPSR_z; // 0x40E00020
unsigned int GPCR_x; // 0x40E00024 Pin Output Clear Registers
unsigned int GPCR_y; // 0x40E00028
图 7-1 步进电机接口控制电路
1
图 7-2 UCN4202 输出时序图 1.2 直流电机接口控制电路
XSBase270 的步进电机控制电路如图 7-3 所示,Q7、Q8、Q9、Q10 组成双稳态电路, 当 GPIO82 为逻辑低电平、GPIO82 逻辑高电平时,Q7、Q10 导通,Q8、Q9 截止,直流电 机的端口 1 为高,端口 2 为低,直流电机顺时针旋转;当 GPIO81 为逻辑低电平、GPIO81 逻辑高电平时,Q8、Q9 导通,Q7、Q10 截止,直流电机的端口 2 为高,端口 1 为低,直流 电机逆时针旋转;当 GPIO81、GPIO8 都为高电平时,Q7、Q8、Q9、Q10 全部截止,电机 停止运转。当 GPIO81、GPIO8 都为低电平时,双稳态电路进入随机状态。
图 7-3 直流电机接口控制电路 1.3 PXA270 通用寄存器 GPIO 的控制
2
PXA270 提供 121 个复用功能的通用 IO 口(GPIO),每个 GPIO 可以通过编程使其成为输 入、输出或双向 IO,PXA270 通过 GPIO 控制寄存器对 GPIO 口进行控制,主要包括 GPIO 状态 的寄存器 GPLRx(x=0~3)、GPIO 置位寄存器 GPSRx(x=0~3)、GPIO 清零寄存器 GPCRx(x =0~3)、设置 GPIO 方向的控制寄存器 GPDRx(x=0~3)、转换 GPIO 输入/输出功能的控制 寄存器 GPFRx(x=0~3)等(具体参考 PXA270 微处理器用户资料)。
【实验原理】
1、硬件接口 电路分析 1.1 步进电机控制接口:
XSBase270 的步进电机控制电路如图 7-1 所示,UCN4202 为四相步进电机控制器,其 控制逻辑如图 7-2 所示,在 XSBase270 目标板的步进电机控制电路中,步进电机的方向控 制信号和步进输入信号分别由 CPU 的通用 IO 口 GPIO84 和 GPIO83 控制,当方向控制信号 为逻辑低电平时,步进电机旋转输出相位时序为 A-B-C-D,当方向控制信号为逻辑高电平时, 步进电机旋转输出相位时序为 A-D-C-B;步进电机的步进输入时序由 GPIO83 控制,相应的 输入逻辑如图 7-2 所示;UCN4202 输出使能信号由 PXA270 微处理器的 GPIO53 控制,低电 平有效。
#define GPIO_83_PullLow() v_pGPIOReg->GPCR_z|=GPIO_83 #define GPIO_84_PullHigh() v_pGPIOReg->GPSR_z|=GPIO_84 //用于控制步进电机方向
#define GPIO_84_PullLow() v_pGPIOReg->GPCR_z|=GPIO_84
图 7-4 GPIO64~95 置位控制寄存器 GPSR2
图 7-5 GPIO64~95 清零控制寄存器 GPCR2 2、程序实现分析 (1)、寄存器结构体定义
#define GPIO_81 #define GPIO_82
( 1u << 17 ) ( 1u << 18 )
#define GPIO_83
unsigned int GEDR_y; // 0x40E0004C
unsigned int GEDR_z; // 0x40E00050
unsigned int GAFR0_x; // 0x40E00054 Alternate Function Registers
unsigned int GAFR1_x; // 0x40E00058
( 1u << 19 ) //0x00080000
#define GPIO_84 #define GPIO_53
( 1u << 20 ) //0x00100000 ( 1u << 21 )
3
#define GPIO_BASE_U_VIRTUAL 0x40E00000 // GPIO Virtual Base address
GPIO_REGS
retvalue=VirtualCopy((PVOID)v_pGPIOReg,(PVOID)(GPIO_BASE_U_VIRTUAL>>8),0x 1000,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
if(!retvalue) { VirtualFree((PVOID)v_pGPIOReg, 0, MEM_RELEASE); v_pGPIOReg = NULL; MessageBox(TEXT("VirtualCopy() failed!\r\n"),NULL,MB_OK); return FALSE;
本实验中主要涉及到对 GPIO 输入/输出方向、置位、清零等控制寄存器的操作。现以对 GPIO进行置位和清零进行操作为例介绍对控制寄存器进行操作的方法。图 7-4 为对GPIO64~ 95 进行置位的控制寄存器 GPSR2,当将置位的控制寄存器某一位(如 PS82)位置 1 时,相 应的通用 IO 引脚(GPIO82)输出高电平,将其置位低电平,对应的通用 IO 口(GPIO82)电 平无效。同样,如果想将通用 IO 引脚口(如 GPIO82)输出低电平,则应将清零控制寄存器 GPCRx(x=0~3)的相应位置 1(如将 PC82 位置 1),图 7-4 为 GPIO64~95 清零控制寄存器 GPCR2。
// GPIO definition start
typedef struct {
unsigned int GPLR_x; // 0x40E00000 Pin Level Registers
unsigned int GPLR_y; // 0x40E00004
unsigned int GPLR_z; // 0x40E00008
unsigned int GPCR_z; // 0x40E0002C
unsigned int GRER_x; // 0x40E00030 Rising Edge Detect Enable Registers
unsigned int GRER_y; // 0x40E00034
unsigned int GRER_z; // 0x40E00038
5
DWORD WINAPI CMotorDlg::StepMotorThread(LPVOID lpParam) //步进电机驱动 { CMotorDlg *pDlg=(CMotorDlg*)lpParam;
CWait waitTime; while(1) { if(WaitForSingleObject(pDlg->g_hPWMOpenEvent, INFINITE) == WAIT_OBJECT_0) {
unsigned int GFER_x; // 0x40E0003C Falling Edge Detect Enable Registers
unsigned int GFER_y; // 0x40E00040
unsigned int GFER_z; // 0x40E00044
unsigned int GEDR_x; // 0x40E00048 Edge Detect Status Registers
4
{ int retvalue; retvalue=0; if(!v_pGPIOReg){ if(!(v_pGPIOReg=(volatile