单片机实验 电机控制与综合实验

合集下载

单片机电机电磁阀控制实验报告

单片机电机电磁阀控制实验报告

单片机电机电磁阀控制实验报告1. 实验目的本实验旨在通过单片机控制电机和电磁阀,实现对电机和电磁阀的控制和调节。

2. 实验器材- 单片机开发板- 直流电机- 电磁阀- 杜邦线- 电池- 电源线3. 实验原理电机和电磁阀是常见的电子设备,通过改变电流的方向和大小来控制其转动和开闭。

通过单片机的GPIO引脚可以输出电平信号来控制电机和电磁阀的工作状态。

4. 实验步骤4.1 连接实验电路:将单片机开发板的GPIO引脚与电机和电磁阀的控制引脚连接,确保电路连接正确可靠。

4.2 编写控制程序:使用C语言编写控制程序,通过对单片机GPIO引脚的控制来实现对电机和电磁阀的控制。

根据具体需求,可以编写不同的程序来控制电机的转速和方向,以及电磁阀的开闭状态。

4.3 烧录程序:将编写好的程序通过烧录器烧录到单片机开发板上,确保程序能够正常运行。

4.4 实验测试:将电池连接到电路上,通过单片机的控制程序来控制电机的转动和电磁阀的开闭状态。

观察电机的转动情况和电磁阀的开闭情况,并记录实验数据。

4.5 实验结果分析:根据实验数据分析电机和电磁阀的控制效果,是否符合预期要求。

可以进行进一步的优化和改进。

5. 结论通过本实验,成功实现了通过单片机控制电机和电磁阀的功能。

根据实验结果分析,可以进一步优化和改进控制程序,以满足更复杂的控制需求。

6. 实验心得通过本次实验,我深入了解了单片机的控制原理和方法。

通过编写和烧录控制程序,我成功实现了对电机和电磁阀的控制,并对实验结果进行了分析和总结。

这次实验加深了我的电子控制方面的知识和实践能力,为以后的学习和研究打下了坚实的基础。

(字数:457)。

基于stm32单片机的步进电机实验报告

基于stm32单片机的步进电机实验报告

基于stm32单片机的步进电机实验报告步进电机是一种将电脑控制信号转换为机械运动的设备,常用于打印机、数码相机和汽车电子等领域。

本实验使用STM32单片机控制步进电机,主要目的是通过编程实现步进电机的旋转控制。

首先,我们需要了解步进电机的基本原理。

步进电机是一种能够按照一定步长精确旋转的电机。

它由定子和转子两部分组成,通过改变定子和转子的电流,使转子按照一定的角度进行旋转。

在本实验中,我们选择了一种四相八拍步进电机。

该电机有四个相位,即A、B、C、D相。

每个相位都有两个状态:正常(HIGH)和反向(LOW)。

通过改变相位的状态,可以控制步进电机的旋转。

我们使用STM32单片机作为控制器,通过编程实现对步进电机的控制。

首先,我们需要配置STM32的GPIO口为输出模式。

然后,编写程序通过改变GPIO口的状态来控制步进电机的旋转。

具体来说,我们将A、B、C、D相分别连接到STM32的四个GPIO口,设置为输出模式。

然后,通过改变GPIO口输出的电平状态,可以控制相位的状态。

为了方便控制,我们可以定义一个数组,将表示不同状态的四个元素存储起来。

通过循环控制数组中的元素,可以实现步进电机的旋转。

在实验中,我们通过实时改变数组中元素的值,可以实现不同的旋转效果。

例如,我们可以将数组逐个循环左移或右移,实现步进电机的正转或反转。

在实验过程中,我们可以观察步进电机的旋转情况,并根据需要对程序进行修改和优化。

可以通过改变步进电机的旋转速度或步进角度,来实现更加精确的控制。

总结起来,通过本次实验,我们了解了步进电机的基本原理,并通过STM32单片机控制步进电机的旋转。

通过编写程序改变GPIO口的状态,我们可以实现步进电机的正转、反转和精确控制。

这对于理解和应用步进电机技术具有重要意义。

电机转速控制实验报告

电机转速控制实验报告

电机转速控制实验报告
1. 实验目的
本实验旨在研究电机转速控制的原理和方法,通过实际操作和数据分析来加深对电机控制的理解,并验证控制算法的有效性。

2. 实验原理
电机转速控制是通过改变电机供电电压或者改变电机绕组的接线方式来控制电机的转速。

在本次实验中,我们将采用调制技术来实现电机转速的控制。

3. 实验设备与材料
- 电机:直流电机
- 控制器:单片机控制器
- 传感器:转速传感器
- 电源
- 连接线
4. 实验步骤
1. 搭建实验电路:将电机和传感器连接至控制器,并接通电源。

2. 编写控制程序:根据所选的控制算法,编写相应的控制程序,并将其烧录至控制器中。

3. 运行实验:根据预设条件,控制电机的转速并记录数据。

4. 数据分析:对实测数据进行分析,验证控制算法的有效性。

5. 实验结果与分析
在实验过程中,我们采用了调制技术来实现电机转速的控制。

通过对控制程序的设计和实验数据的分析,我们得出以下结论:
- 当调制信号的频率增加时,电机的转速也随之增加,说明控制算法的设计是成功的。

- 通过调整调制信号的占空比,我们可以实现对电机转速的精确控制。

6. 实验总结
通过本次实验,我们深入了解了电机转速控制的原理和方法。

实验结果表明,调制技术能够有效地实现电机转速的控制,并且可以通过调整参数来实现不同的控制效果。

在实验过程中,我们还学习了如何编写控制程序和分析实验数据。

这些都对我们进一步深入研究电机控制提供了良好的基础。

7. 参考文献
- 电机控制技术原理与应用教材
- 直流电机转速控制实验指导书。

步进电控制实验报告

步进电控制实验报告

一、实验目的1. 理解步进电机的工作原理及其应用领域。

2. 掌握单片机控制步进电机的技术方法。

3. 熟悉步进电机的驱动电路设计。

4. 通过实验验证步进电机控制系统的性能。

二、实验原理步进电机是一种将电脉冲信号转换为角位移的电机,具有精度高、响应快、控制简单等优点。

其工作原理是:当输入一定频率的脉冲信号时,步进电机按照一定的步距角转动。

步进电机的步距角与线圈匝数、绕组方式有关。

本实验采用单片机控制步进电机,通过编写程序实现步进电机的正转、反转、停止、转速调节等功能。

三、实验设备1. 单片机实验平台:包括51单片机、电源、按键、数码管等。

2. 步进电机驱动模块:用于驱动步进电机,包括驱动电路和步进电机本体。

3. 实验指导书。

四、实验步骤1. 搭建实验电路(1)连接单片机实验平台,包括电源、按键、数码管等。

(2)连接步进电机驱动模块,包括电源、控制线、步进电机本体等。

(3)检查电路连接是否正确,确保无误。

2. 编写控制程序(1)初始化单片机相关端口,包括P1口、定时器等。

(2)编写步进电机控制函数,包括正转、反转、停止、转速调节等功能。

(3)编写主函数,根据按键输入实现步进电机的控制。

3. 下载程序(1)将编写好的程序下载到单片机实验平台。

(2)检查程序是否下载成功。

4. 测试实验(1)观察数码管显示的转速挡次和转动方向。

(2)通过按键控制步进电机的正转、反转、停止和转速调节。

(3)观察步进电机的转动情况,验证控制程序的正确性。

五、实验结果与分析1. 实验结果(1)通过按键控制步进电机的正转、反转、停止和转速调节。

(2)数码管显示转速挡次和转动方向。

(3)步进电机按照设定的方向和转速转动。

2. 实验分析(1)通过实验验证了单片机控制步进电机的可行性。

(2)实验结果表明,控制程序能够实现步进电机的正转、反转、停止和转速调节等功能。

(3)实验过程中,需要对步进电机驱动模块进行合理设计,以确保步进电机的稳定运行。

应用步进电机的单片机综合设计性实验系统设计

应用步进电机的单片机综合设计性实验系统设计

设 计 一 个 系 统 用 来 控 制 步 过 电 机 , 以 实 现 控 可 制 电机 的正 反 转 、 减 速 、 动 角 度 等 功 能 。本 实 验 加 转
提供基 于 S C 0 5 [ 的单 片机 最小 系 统板 , 进 T 9C 1 步
电机 , 求学 生通 过现 有 的实 验板及 元件 , 要 完善步 进
系 统 的 组 成 , 件 和软 件 设 计 以及 实 验 开设 情 况 , 系 统 与 专业 紧密 结 合 , 加 了学 生 在 实 验 过 程 中的 自主 性 和 实 战性 。实 践 表 明学 生 对 实 验 硬 该 增
的 兴趣 和 积极 性 高 , 果 良好 。 效
关 键 词 : 进 电机 ; 计 性 实 验 ; 片 机 ; 品课 程 ; 进 电机 步 设 单 精 步
求 。单纯 依靠 理论 教学 、 验证性 实验 等一般 实验 , 难 以培养 学 生对单 片 机 技术 综 合 利用 的能 力 , 必要 有 开设更 多综 合 、 计 性 的实 验 。 因此 我们 结 合 本校 设
单片机 精 品课程 建 设 开发 的实 验板 , 计 了一个 基 设 于步进 电机 L ] 1 控制 的设 计性实 验 , 目的为 了培养 学
De i n o m p e e s v sg i pe i e s S s e sg f Co r h n i e De i n ng Ex r m nt y t m
i i l i i r c m pu e t pp r M o o n S ng e Ch p M c o o t r by S e e - tr
1 4 7
电 气 电子 教 学 学 报
进 电机 的 单 片 机 综 合 设 计 性 实 验 系统 设 计

51单片机PID控制直流电机实验报告

51单片机PID控制直流电机实验报告
char code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, //0~7 对应数码 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; //8~F 对应数码 long int n=num; P0 = 0; P2 =0x7f; P0 = table[n % 1000/100]; delayms(2);//百位 加小数点 P0 = 0; P2 =0xbf; P0 = table[n % 100 / 10]; delayms(2);//十位
iError = sptr->SetPoint - NextPoint; //计算增加量
iIncpid = sptr->Proportion * iError //E[k]项
- sptr->Integral * sptr->LastError //E[k-1]项
+ sptr->Derivative * sptr->PrevError; //E[k-2]项
static PID *sptr = &sPID;
void IncPIDInit()
{
sptr->SumError = 0;
sptr->LastError =0; //Error[-1]
sptr->PrevError =0; //Error[-2]
sptr->Proportion =0.5; //比例系数
sptr->Integral =0.3; //积分系数
sptr->Derivative = 0.3; //微分系数
sptr->SetPoint =sudu_lilun; Nhomakorabea}

控制步进电机实验报告(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)根据需要调整程序,实现不同的控制效果。

单片机实验P3.3输入、P1口输出和步进电机控制实验

单片机实验P3.3输入、P1口输出和步进电机控制实验

单⽚机实验P3.3输⼊、P1⼝输出和步进电机控制实验南昌航空⼤学实验报告⼆0⼀⼀年⼗⽉⼀⼗七⽇课程名称:单⽚微型机实验名称:P3.3输⼊、P1⼝输出和步进电机控制实验班级: 080611 学⽣姓名:学号: 08061108 指导教师评定:签名:⼀、实验⽬的1、掌握P3⼝、P1⼝简单使⽤;2、学习延时程序的编写和使⽤;3、了解步进电机控制的基本原理;4、掌握步进电机转动编程⽅法。

⼆、实验内容及要求1、P3.3输⼊、P1⼝输出实验1)P3.3⼝做输⼊⼝,外接⼀脉冲,每输⼊⼀个脉冲,P1⼝按⼗六进制加⼀。

P1⼝做输出⼝,编写程序,使P1⼝接的8个发光⼆极管L1—L8按16进制加⼀⽅式点亮发光⼆极管。

2)P1⼝是准双向⼝,它作为输出⼝时与⼀般的双向⼝使⽤⽅法相同,由准双向⼝结构可知:当P1⼝作为输⼊⼝时,必须先对它置⾼电平,使内部MOS管截⽌,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输⼊产⽣影响。

若不先对它置⾼,且原来是低电平,则MOS管导通,读⼊的数据是不正确的。

3)延时⼦程序的延时计算问题。

对于延时程序:DELAY :MOV R6, #00HDELAY1:MOV R7, #80HDJNZ R7, $DJNZ R6, DELAY1查指令表可知MOV、DJNZ指令均需⽤两个机器周期,⽽⼀个机器周期时间长度为12/ 6.0MHZ,所以该段指令执⾏时间为:((80+1)×256+1)×2×(12÷6000000)=132.1ms。

图1 P3.3输⼊、P1图2 实验电路原理图2、步进电机控制实验1)从键盘上输⼊正、反转命令,转速参数和转动步数显⽰在显⽰器上,CPU再读取显⽰器上显⽰的正、反转命令,转速级数(16级)和转动步数后执⾏。

转动步数减为零时停⽌转动。

2)步进电机驱动原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。

驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,微电脑控制步进电机最适合。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LED = LEDBuf[i];//取段码
OUTSEG = LED;
OUTBIT =~Pos;//显示一位八段管
Delay(2);
Pos >>= 1;
}
}
void UART0_ISR(void) interrupt 4{//UART0中断服务子程序
unsigned char temp;
if(RI) {
3、键盘设计方法有几种,分别是什么,它们的原理是什么?
stop_flag=0;//运行8192/2=4096拍,步距角5.625°/64
//两者相乘,即运行360度
delay(8192);
stop_flag=1;//停止1秒
delay(2000);
turn=1;//转动方向=1
speedlevel=4;//转速参数=4,1拍2ms
stop_flag=0;//运行16384/4=4096拍
(3)将MCU的INT0连接到DC_MOTOR的SPEED,DC_MOTOR的DRV连接到ANOUT。
接收设备乙:
(1)将MCU的TXD、RXD、INT0(P3.2)分别连接到RS485的TXD、RXD、E485;
(2)IO1~IO8顺次连接LED_A~LED_DP,CAP0、SDA、SCL顺次连接LED_C1、LED_C2、LED_C3、LED_C4。
case 1: //0、1
P0_0=1;P0_1=1;P0_2=0;P0_3=0;break;
case 2: //1
P0_0=0;P0_1=1;P0_2=0;P0_3=0;break;
case 3: //1、2
P0_0=0;P0_1=1;P0_2=1;P0_3=0;break;
case 4: //2
delay(16384);
stop_flag=1;//停止1秒
delay(2000);
}while(1);
}
void timeint(void) interrupt 1{//定时器0中断处理
TH0=0xFE;TL0=0x0C;//重装0.5ms初值
count++;//每0.5ms计数加1
spcount--;//每0.5ms转速参数计数减1
6)、备注:在该RS485的通讯中,关键是设置RS485的E485端的状态,从而决定是接收回来数据还是发送出去数据。
结果:
3、将直流电机的转速直接显示在当前实验板的数码管上。
五、实验结果及误差分析:
六、讨论的问题及结论、改进实验的建议:
1、显示设计的方法有几种,分别是什么,它们的原理是什么?
2、LED显示接口电路为什么需要驱动?如何解决驱动的问题?
}
}
2、直流电机检测,并通信。
步骤:
1)、将甲、乙两个实验箱MCU模块的跳线帽JP2端都短接在上侧。甲做发送设备,乙做接收设备。
2)、连线:
发送设备甲:
(1)将MCU的TXD、RXD、IO1(P0.0)和INT0分别连接到RS485的TXD、RXD、E485和单脉冲输出P-孔。
(2)顺序连接甲、乙两个实验箱的RS485的UR1差分接口(A、B分别对接)。
for(t=0;t<120;t++);
}
}
void Display(){
unsigned char i;
unsigned char Pos;
unsigned char LED;
Pos = 0x08;//初始位选字,从左边开始显示
for (i = 0; i <4; i++) {
OUTBIT = 0;//关所有八段管
}
void gorun(){//控制步进函数
if (stop_flag==1){//如果停止标志=1,停止
P0_0=0;P0_1=0;P0_2=0;P0_3=0;
return;//返回
}
switch(step_index){//步进索引数,值为0-7
case 0: //0
P0_0=1;P0_1=0;P0_2=0;P0_3=0;break;
#include <reg51.h>
#define OUTBIT P1
#define OUTSEG P0
sbit EN = P3^2;
unsigned char LEDBuf[]={0,0,0,0};//显示缓冲区
code unsigned char LEDMAP[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f};
spcount=0;//转速参数计数=0
stop_flag=1;P0_0=0;P0_1=0;P0_2=0;P0_3=0;//停止
EA=1;ET0=1;TMOD=0x01;TH0=0xFE;TL0=0x0C;TR0=1;
//允许T0方式1中断定时0.5ms启动
do{
turn=0;//转动方向=0
speedlevel=2;//转速参数=2,每拍1ms
void init(void) {
PCON = 0x80;
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xfa;
TL1 = 0xfa;
TR1 = 1;
ES = 1;
EA = 1;
EN = 0;
}
void Delay(unsignedint x){
unsignedchar t;
while(x--){
实验箱步进电机28BYJ48,面板标注一周64格,每格5.625°。
28BYJ48基本参数及驱动方式:
5V,5线(含共电源线)4相,转子8齿,双拍步距角360/(4×8×2)=5.625°,减速比1/64。其中红色5号线,橙色4号线,黄色3号线,粉色2号线,蓝色1号线,由74LS07驱动。
四、实验内容与步骤(方法)、实验数据(表格)、数据处理:
static unsigned int count;//定时中断次数计数
static int step_index;//步进索引数,值为0-7,记录步进位置
static bit turn;//转动方向,为1逆时针,为0顺时针
static bit stop_flag;//停止标志,为1停止,为0运行
static int speedlevel;//转速参数,数值越大速度越慢,最小值为1,速度最快
P0_0=0;P0_1=0;P0_2=1;P0_3=0;break;
case 5: //2、3
P0_0=0;P0_1=0;P0_2=1;P0_3=1;break;
case 6: //3
P0_0=0;P0_1=0;P0_2=0;P0_3=1;break;
case 7: //3、0
P0_0=1;P0_1=0;P0_2=0;P0_3=1;
3
3
分析、解决问题及创新能力
2
4
实验结果、数据处理
2
5
讨论及建议
1
一、实验目的:
1、掌握电机的应用;
2、掌握综合系统的设计。
二、实验设备(名称、型号):
联想启天M710E计算机、连接导线等
Techshine® EL-NC800综合创新实验实训系统
三、实验(设计)原理概述:
步进电机相数:产生不同对极N、S磁场的激磁线圈对数。常用m表示。
3)、分别连接好仿真器,上电,在甲设备PC机上打开Keil C环境,编译如下程序,进入调试状态,即将程序下载到“发送设备甲”的仿真器中。
#include <reg51.h>
sbit EN=P0^0;
unsigned int speedNum=0;
unsigned char timerCounter=0;
EN = 1;
}
void Speed_ISR(void) interrupt 0 { //电机计数中断程序
speedNum ++;
}
void T0_ISR(void) interrupt 1 { //定时1s中断程序
timerCounter ++;
if(timerCounter==20){
timerCounter=0;
步进电机拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即A-B-C-D-A,四相双四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A。为提高步进电机负载能力和运行平稳,可使用四相八拍驱动方式。
if(spcount<=0){//如果转速参数计数<=0
spcount=speedlevel;//转速参数计数=转速参数
gorun();//每0.5ms步进
}
}
void delay(unsigned int endcount){
count=0;//定时中断计数=0,保证进入如下循环
do{}while(count<endcount);//如果定时中断计数<endcount循环
渤海大学学生实验报告
课程名称:单片机开课实验室:EDA技术实验室
实验室位置:理工3号楼707室完成实验时间:年月日
学院
新能源学院
专业/年级/班
微电子/2012/1
姓名
#####
实验题目
电机控制与综合实验
学号
#######
实验环境
指导教师
成绩
成绩评定标准:
序号
项目
满分成绩
备注
1
预习、实验原理
2
2
相关文档
最新文档