实验五:串口通讯与步进电机
- 格式:pdf
- 大小:458.05 KB
- 文档页数:7
第1篇一、实验目的1. 熟悉步进电机的工作原理和特性。
2. 掌握步进电机的驱动方式及其控制方法。
3. 学会使用常用实验设备进行步进电机的调试和测试。
4. 了解步进电机在不同应用场景下的性能表现。
二、实验设备1. 步进电机:选型为双极性四线步进电机,型号为NEMA 17。
2. 驱动器:选型为A4988步进电机驱动器。
3. 控制器:选型为Arduino Uno开发板。
4. 电源:选型为12V 5A直流电源。
5. 连接线、连接器、电阻等实验配件。
三、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机。
它具有以下特点:1. 转动精度高,步距角可调。
2. 响应速度快,控制精度高。
3. 结构简单,易于安装和维护。
4. 工作可靠,寿命长。
步进电机的工作原理是:通过控制驱动器输出脉冲信号,使步进电机内部的线圈依次通电,从而产生步进运动。
四、实验步骤1. 搭建实验电路(1)将步进电机连接到驱动器上,确保电机线序正确。
(2)将驱动器连接到Arduino Uno开发板上,使用连接线连接相应的引脚。
(3)连接电源,确保电源电压与驱动器要求的电压一致。
2. 编写控制程序(1)使用Arduino IDE编写程序,实现步进电机的正转、反转、调速等功能。
(2)通过串口监视器观察程序运行情况,调试程序。
3. 调试步进电机(1)测试步进电机的正转、反转功能,确保电机转动方向正确。
(2)调整步进电机的转速,观察电机运行状态,确保转速可调。
(3)测试步进电机的步距角,确保步进精度。
4. 实验数据分析(1)记录步进电机的正转、反转、调速等性能参数。
(2)分析步进电机的运行状态,评估其性能。
五、实验结果与分析1. 正转、反转测试步进电机正转、反转功能正常,转动方向正确。
2. 调速测试步进电机转速可调,调节范围在1-1000步/秒之间。
3. 步距角测试步进电机的步距角为1.8度,与理论值相符。
4. 实验数据分析步进电机的性能指标符合预期,可满足实验要求。
实验5_28步进电机驱动
本实验是演示28步进电机实验。
本实验主要演示步进电机的控制原理,28步进电机是5线4相步进电机,常用4线8拍的方式驱动,也就是按照A->AB->B->BC->C->CD->D->DA的顺序给电机通电,使电机可以转动。
1.1 跳线帽情况
/******* 为保证例程正常运行,必须插入以下跳线帽**********/
1.2 接线说明
连接串口屏与F4主控板,步进电机需要使用驱动器ULN2003来提供提供电流,接线使用下面表格的接线方式。
图 1 接线实物
1.3 操作与现象
1.打开实验箱电源。
2.串口屏上按照以下顺序点击进入步进电机控制页面
实验选项->28步进电机->实验1
3.点击启动,电机按照默认的通电顺序给电机通电,使电机可以转动。
4.点击正转和反转,可以控制电机转动方向。
键控步进电机系统
一实验目的
1. 熟悉A VR-atmega128单片机串口通信功能;
2. 掌握步进电机控制方法。
3. 初步掌握GCC的一般编程技巧。
4. 掌握A VR单片机中断、时钟的设置方法。
二实验内容::
本试验通过微机串行口和ATmega128-100试验系统进行通信,达到控制步进电机的目的。
在PC机的超级终端中,按照界面的提示,可以控制电机的正转,逆转;正转和逆转时都可以达到六级固定转速的调速;同时,可以给定任意的小于1000的参数来控制电机的正逆转速;在本试验中,若需要让步进电机在一定的时间后开始工作,则可以设置24小时内的任意时间,同时在TEXT_LCD显示,当时间倒计时到00:00:00时,电机开始转。
三硬件原理
串行通信模块:
USART 框图
TEXT-LCD显示模块:
步进电机模块:
四程序流程
说明:流程图中带有标号①的箭头连接在一起,带有标号②的箭头连接在一起。
接收和发送中断服务程序:
以下是溢出中断0和3的中断服务程序,二者的差别就在于将其中的电机转动转换为电机正转和反转就可以了。
实验五 步进电机驱动实验一、实验目的1.学习步进电机工作原理。
2.学习步进电机与单片机的接口电路设计和编程。
二、实验设备1.USB 线2.单片机最小系统系统教学实验模块 3.步进电机实验模块 三、实验要求1.要求采用4相8拍的工作方式通过按键控制步进电机的正转、反转和停止。
2.用Proteus 仿真软件画出实验电路图,将在uVision3 IDE 软件中生成*.hex 下载到Proteus 仿真电路图中的单片机芯片中,观察实验现象。
四、实验原理步进电机可以通过给相应磁极加以脉冲,来对旋转角度和转动速度进行高精度的控制。
采用单片机来进行步进电机的控制,接口电路简单,控制灵活,因此有比较广泛的应用。
1. 步进电机的控制实验装置上采用的步进电机为四相6线制混合型步进电机,电源+12VDC ,如图8-1所示。
通过单片机口线按顺序给A 、B 、C 、D 绕相组施加有序的脉冲直流,就可以控制电机的转动,从而完成了数字→角度的转换。
转动的角度大小与施加的脉冲数成正比,转动的速度与脉冲频率成正比,而转动方向则与脉冲的顺序有关。
2. 步进电机的驱动电路ULN2003是一个大电流驱动器,为达林顿管阵列电路,可输出500mA 电流,同时起到电路隔离作用,各输出端与COM 间有起保护作用的反相二极管。
步进电机与单片机的接口电路如图5-1所示。
P1.0P1.1P1.2P1.3P3.0P3.1P3.2k1k3k2图5-1 步进电机的驱动电路3. 步进电机的工作方式 四相步进电机的工作方式:单相四拍工作方式:电机控制绕组A、B、C、D相的正转通电顺序为A→B→C→D→A;反转的通电顺序为:A→D→C→B→A;4相8拍工作方式:正转绕组的通电顺序为A→AB→B→BC→C→CD→D→DA;反转绕组的通电顺序为DA→D→DC→C→CB→B→BA→A。
双4拍的工作方式:正转绕组通电顺序为AB→BC→CD→DA;反转绕组通电顺序为AD→CD→BC→AB。
串口控制步进电机方向和转速一、项目目标:单片机1 单片机2发送机不断扫描独立按键,当判断到某键按下,通过串口发送控制代码给接收机,接收机收到信号,判断相应的代码,并执行相应的动作(正转,反转,加速,停止),同时显示步进机的延时速度。
二、硬件设计1键盘模块设计步进电机控制系统具有正转、反转、加速和停止4个功能,采用独立键盘使得程序简单,电路易实现。
这4个按键分别接到P2口的P2.0,P2.1,P2.2和P2.3引脚,为正转按键,反转按键,加速按键,和停止按键。
如下图所示。
2步进电机驱动模块设计由于步进电机的功率较大,步进电机驱动电路设计采用高电压、大电流的ULN2003A.芯片,P1口的P1.0、P1.1、P1.2和P1.3四个引脚通过步进电机驱动电路分别接在步进电机的A、B、C、D。
如下图所示。
8显示模块设计显示模块采用7段共阳数码管显示,数码管的段选依次为P0口的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7,同时P0口需安装上拉电阻。
数码管的位选依次为P2口的P2.4、P2.5、P2.6、P2.7。
如下图所示。
电路图:三、程序设计单片机1 单片机2C语言程序:(1)发送机程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit key0=P2^0;sbit key1=P2^1;sbit key2=P2^2;sbit key3=P2^3;//独立按键定义void delay()//消抖子程序{uchar a;for(a=0;a<200;a++);}void trans()//代码发送子程序{key0=1;if(key0==0);delay();if(key0==0) { SBUF=0x00;while(!TI);TI=0;}while(!key0);key1=1;if(key1==0);delay();if(key1==0) {SBUF=0xff;while(!TI);TI=0;}while(!key1);key2=1;if(key2==0);delay();if(key2==0) {SBUF=0xfe;while(!TI);TI=0;}while(!key2);key3=1;if(key3==0);delay();if(key3==0) { SBUF=0xfd;while(!TI);TI=0;}while(!key3);}void main(){TMOD=0x20;//选择工作方式为T1:工作方式2 自动重装初值8位计数器TH1=0xE7;TL1=0xE7;//设置波特率为625bpsTR1=1;//开T1中断IE=0X90;//开串口中断,开总中断IP=0X02;//设置串口中断为高优先级0x10//设置T0中断为高优先级0X02SCON=0X40;//设置串口为方式1,不允许串口接收while(1){trans();}}(2)接收机程序#include<reg52.h>//头文件unsigned char step[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//步进机工作方式为四相八拍unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xa4,0x8e,0xbf};//0-9加Z,F,----显示void delay()//延时子程序{unsigned char i,o;for(o=0;o<20;o++)for(i=0;i<200;i++);}void delayc()//长延时{unsigned char i,o;for(o=0;o<250;o++)for(i=0;i<250;i++);}unsigned char k,zhi,getzhi;unsigned int temp,aa,l; //定义变量void xianshi();void main(){TMOD=0X20; //工作方式2TH1=0XE7;TL1=0XE7; //设置波特率为625bpsTR1=1; //开T1中断IE=0X90;//开总中断,开串口SCON=0X50;//设置串口工作方式1 ,允许串口接收temp=300;//设置初始变量while(1){aa=temp;if(zhi==1){for(k=0;k<8;k++){P1=step[k];for(l=0;l<aa;l++);}}//当接收到0x00时执行正转if(zhi==3){for(k=0;k<8;k++){P1=step[8-k];for(l=0;l<aa;l++);}}//当接收到0xff时执行反转if(zhi==5){P1=0XFF;}//停止延时时间根据接收到0xfe的次数每次加20;满3000,清零xianshi();//显示}}void xianshi()//显示子程序{P2=0X80;P0=table[temp%10];//个位delay();P2=0X40;P0=table[temp/10%10];//十位delay();P2=0X20;P0=table[temp/100%10];//百位delay();P2=0X10;P0=table[temp/1000];//千位delay();}void recevied() interrupt 4 //接收程序{if(RI==1){RI=0;getzhi=SBUF;if(getzhi==0x00){P0=table[10];P2=0x8f;delayc();zhi=1;}//接收到0x00数码管显示Z,赋值执行正转if(getzhi==0xff){P0=table[11];P2=0x8f;delayc();zhi=3;}//接收到0xff数码管显示F,赋值执行反转if(getzhi==0xfe){temp=temp+30;if(temp==3000){temp=0;}}//接收到0xfe,每接收到一次,延时加30,加到3000重新赋值if(getzhi==0xfd){P0=table[12];P2=0xff;delayc();zhi=5;}//接收到0xfd数码管显示----,赋值执行停止}}四、调试1、按设计的电路图接线,启动KEIL3分别建立两个工程项目,把相应程序拷贝进去,设置好参数,编译。
精心整理嵌入式原理考查项目报告题目通过串口控制电机转速通过串口控制电机转速吴赵崧林1、项目要求:串口发送SPEED0,电机停止;2个脉冲的间隔越短,步进电机就转得越快。
调整输送给步进电机的脉冲频率,就可以对步进电机进行调速。
3、程序流程图进行s3c2410初始化ARMTargetInit()进行电机初始化init_MotorPort();switch(x)//x的值由usb()提供出来;{case0:SetPWM(0);break;//停止转动case1:SetPWM(500);break;//电机低速运转;case2:SetPWM(700);break;//电机中等速度运转;case3:SetPWM(900);break;//电机高等速度运转;default:break;//默认处理方式}}}usb.h的代码:if(strcmp(table0,table)==0)//将接收到的数值和已存在的数值相比较{for(j=0;j<6;j++){Uart_SendByten(0,table0[j]);//如果相同,输出table1}{Uart_SendByten(0,table2[j]);//如果相同,输出table3}for(j=0;j<6;j++){table[j]='\0';//将接受的的数据清零}x=2;//电机中速转动标志位i=0;break;//跳出循环}elseif(strcmp(table3,table)==0)//接收到的数值和已存在的数值相比较{for(j=0;j<6;j++){Uart_SendByten(0,table3[j]);}//如果相同,输出table2这是输入‘SPEED2’时的截图照片6、项目总结我们这次选择的是通过‘串口控制电机转速’这个实验。
我通过本次试验我学到了好多东西,虽说用的时间很长但是感觉还是挺好—-有一种收获的感觉。
这次实验里面我全面的知道了步进电机用串口控制的方法,还有就是这次实验里面涉及。
串口通信控制电机方法串口通信控制电机通常涉及将控制命令通过串口发送到与电机控制相关的设备,这可能是一个微控制器、单片机或专用的电机控制器。
以下是一般的步骤和考虑事项:1. 选择串口通信协议:定义好串口通信的协议,包括数据帧格式、命令结构、起始和停止位等。
常见的串口通信协议包括UART,RS-232,RS-485等。
确保发送和接收端都按照相同的协议进行配置。
2. 编写控制程序:在电机控制设备上编写一个程序,该程序能够接收串口数据并解析控制命令。
这可能需要使用编程语言(例如C、C++、Python等),具体取决于你的控制设备。
3. 定义控制命令:定义一套控制命令,这些命令将触发电机的不同操作,例如启动、停止、改变速度或方向等。
确保这些命令在协议中有清晰的表示,并且控制设备能够正确地解释它们。
4. 串口通信设置:在控制设备和电机之间设置串口通信。
这可能包括波特率、数据位、停止位等参数的配置。
确保这些设置在发送和接收端是一致的。
5. 实现控制逻辑:在控制程序中实现电机的控制逻辑。
这可能包括使用PWM信号来调整电机的速度,控制电机的方向,处理启动和停止命令等。
6. 错误处理:考虑在串口通信中的错误处理机制。
例如,校验和检查、超时处理等。
这可以提高系统的稳定性和容错性。
7. 测试和调试:在实际的硬件上进行测试,并进行调试。
确保串口通信稳定,控制命令被正确解释,电机能够按预期进行操作。
请注意,具体的实现可能会因电机类型、控制器型号、编程语言和硬件平台而异。
在实际的项目中,你可能还需要查阅电机和控制器的技术文档以获取更详细的信息。
大连理工大学计算机原理实验报告实验五:步进电机实验学院(系):电子信息与电气工程学部专业:电气工程及其自动化学生姓名:陈阳学号:201381029指导教师:张仁杰评阅教师:完成日期:2015年12月15日大连理工大学Dalian University of Technology1实验目的掌握步进电机的控制方法。
2实验现象写入实验程序,利用8255A口控制观察到步进电机的运转。
步进电机型号为20BY20H04,电压5V,每转一圈需48步,每步旋转7.5度。
3分析实验结果本次的实验是通过延时程序,通过对于步进电机各个绕组的轮流通电,实现步进电机转动,同时通过8255作为缓冲锁存输出,增大了转动的带载能力。
其中延时程序如下:elay proc ;延时子程序push axpush cxpush dxmov dh,speedx1: mov cx,0f00hx2: loop x2dec dhjnz x1pop dxpop cxpop axretdelay endp上述语句是通过执行空语句实现的延时,此延时会占用CPU的,也可以通过定时器实现上述的延时功能。
4. 实验程序及框图1. 程序框图:图1 步进电机驱动流程图2. 源程序;*******************************************;;* 步进电机实验 *;;*******************************************;.model small.386io_address equ 200h data segmentspeed db 2data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,IO_ADDRESSadd dx,03mov al,80h ;输出8255控制字out dx,alspeedin:a1: mov dx,IO_ADDRESS ;输出步进代码顺序为1,3,2,6,4,c,8,9 mov al,01h out dx,al call delaymov al,03h out dx,al call delaymov al,02h out dx,al call delaymov al,06h out dx,al call delaymov al,04h out dx,al call delaymov al,0Ch out dx,al call delaymov al,08h out dx,alcall delaymov al,09hout dx,alcall delayjmp a1delay proc ;延时子程序 push axpush cxpush dxmov dh,speedx1: mov cx,0f00h x2: loop x2 dec dh jnz x1 pop dx pop cx pop ax retdelay endpcode endsend start5. 实验感想本次的实验超级简单,主要的时间放在了调试步进电机在定时器延时的时候的程序,花了很长的时间,在进行步进电机实验的时候,我发现,自己虽然对于实验的内容比较有所掌握,但是并没有完整的实现自己的程序编写,同时在上一节课的时候我的实验报告自己很认真的写了,花了一晚上的时间把整个8086的结构全都画了出来,老师很是认真的帮我检查了一下,提出了一些很重要的点,我自己没有意识到而错误的知识点,老师让我课下再次改正,通过这次的实验我了解到,自己虽然用心了,但是细节上面还是没有完全的把握,如果有时间的话,必须把既然做的东西做好,不能将就。
第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)根据需要调整程序,实现不同的控制效果。
关于串口的实验报告1. 实验目的本实验的目的是通过学习并实践串口通信的基本原理和方法,加深对串口通信的理解,掌握串口通信的使用技巧和开发工具。
同时,了解串口通信在实际应用中的重要性和应用场景。
2. 实验原理串口是一种用于计算机与外部设备之间进行数据通信的接口标准。
在计算机中,串口通常通过RS-232或RS-485等标准来实现。
串口通信采用的是异步通信方式,即接收方和发送方的时钟不同步,通过发送和接收的数据包中的控制信息来实现数据的传输。
串口通信的基本原理如下:- 串口通信通过一个物理接口连接计算机和外部设备。
- 通信数据被分为一个个字节进行传输,每个字节由一定的控制信息和实际数据组成。
- 发送方通过发送字节的方式将数据发送给接收方。
- 接收方通过接收字节的方式将数据接收并进行处理。
3. 实验步骤步骤一:准备实验环境为了进行串口通信的实验,我们需要准备以下工具和设备:- 一台计算机- 一个串口转USB转换器- 一个外部设备(如Arduino、传感器等)步骤二:安装串口驱动程序在开始实验之前,我们需要安装串口转USB转换器所需的驱动程序。
驱动程序的安装方式因不同的设备而有所差异,一般可以通过官方网站下载并按照说明进行安装。
步骤三:编写串口通信程序根据所使用的编程语言和开发工具,编写一个简单的串口通信程序。
该程序应包括以下功能:- 打开指定的串口端口- 配置串口的波特率、数据位、停止位等参数- 循环读取串口接收缓冲区中的数据,并进行处理- 将需要发送的数据写入串口发送缓冲区步骤四:测试串口通信将串口转USB转换器插入计算机,并将外部设备连接至串口转USB转换器。
运行编写好的串口通信程序,并观察实验结果。
测试串口通信的方法可以有很多,可以通过发送和接收数据包来验证通信是否正常。
步骤五:总结与分析根据实验结果,总结并分析串口通信的性能和应用场景。
可以考虑以下问题:- 串口通信在哪些领域得到了广泛应用?- 串口通信有哪些特点和优势?- 在实际应用中,串口通信可能遇到哪些常见问题,如何解决?4. 实验结论通过本实验,我们了解了串口通信的基本原理和实际应用方法。