根据8086的直流电机的控制

合集下载

单片机驱动直流电机原理

单片机驱动直流电机原理

单片机驱动直流电机原理
单片机驱动直流电机的原理是利用单片机的输出口来控制直流电机的启停、速度和转向。

具体实现的步骤如下:
1. 连接硬件:将单片机的输出口与直流电机的驱动模块连接。

驱动模块通常由一对电晶体三极管(BJT)或金属氧化物半导
体场效应管(MOSFET)构成。

2. 编写驱动代码:使用单片机的编程语言(如C语言)编写
程序,配置输出口的工作模式和控制寄存器,以便控制电平。

根据需要,编写控制逻辑,来实现电机启停、调速和转向控制。

3. 控制电平信号:根据控制逻辑,通过单片机的输出口给驱动模块发送控制信号。

根据不同的控制信号,驱动模块会相应地控制电机的工作状态。

4. 控制电流:驱动模块通过调节输出口的电平,来控制电机所需的电流。

当输出口为高电平时,驱动模块会导通电源与电机之间的通路,使电流流过电机,从而启动电机;当输出口为低电平时,驱动模块会断开通路,停止电流流动,从而停止电机。

5. 控制转向:通过控制输出口的电平,驱动模块可以控制电机的转向。

具体方法是交换电机两个端子的接线,使其转向相反。

通过以上步骤,单片机可以有效地控制直流电机的启停、调速和转向,并实现各种应用需求。

8086微机应用DAC0832控制小直流电机转速的设计

8086微机应用DAC0832控制小直流电机转速的设计

课程设计任务书2009~2010学年第1学期一、设计题目8086微机应用DAC0832控制小直流电机转速的设计二、设计目的巩固“微机原理”课程学过的知识,加强理论与实践的联系。

通过本课程设计,使学生初步了解8086系列微机系统的硬件设备,学会8086系列编程指令的基本功能。

三、设计内容与要求1、内容采用8086CPU构建微机系统,扩展4K EPROM和2K静态RAM作为存储系统,采用最小模式,利用DAC0832,编制程序输出双极性模拟电压驱动小直流电机,使电机能以不同转速正反向运行。

2、设计要求(1)、查阅文献资料,了解DAC0832双极性电压输出控制原理,并在报告书中综述之。

(2)、设计系统的硬件连接原理图,对原理图加以说明。

(3)、画出程序框图,并说明。

(4)、编写应用程序,并注解程序。

(5)、提交课程设计说明书。

四、设计资料与参数1、电机转速由8个按钮开关以补码形式给定输入,并以发光二极管形式显示出来。

电机的转速变化范围为反向500 rpm~正向500rpm;2、DAC0832双极性电压输出控制原理,控制小直流电机以不同转速运行。

3、小直流电机额定电压为5V。

电源:5V由外部提供。

五、设计前准备DAC0832双极性电压输出控制原理自学DAC0832 是电流形式输出,当需要电压形式输出时,必须外接运算放大器。

根据输出电压的极性不同,DAC0832 又可分为单极性输出和双极性输出两种输出方式。

(1) 单极性输出。

DAC0832 的单极性输出电路如图一所示。

VREF 可以接±5V 或±10V 参考电压,当接+5V 时,输出电压范围是0V~-5V;当接-5V 时,输出电压范围是0V~+5V;当接+10V 时,输出电压范围是0V~-10V ;当接-10V 时,输出电压范围是0V~+10V。

若输入数字为0~255 ,则输出为:Uout =-VREF×D/256。

式中D为输入DAC0832的十进制数,因为转换结果Ioutl 接运算放大器的反相端,所以,式中有一个负号。

基于8086的小型直流电机闭环调速系统PID控制设计

基于8086的小型直流电机闭环调速系统PID控制设计

微机原理课设报告目录一、需求分析与解决方案 (4)1.1 需求分析 (4)1.1.1实验题目 (4)1.1.2 实验题目问题分析 (4)1.2 解决问题的思路 (4)1.2.1 总体思路 (4)1.2.2 硬件设计器件选择 (4)1.2.3 软件整体思路 (6)二、硬件设计详解 (6)2.1 片选模块 (6)2.2 中断定时模块 (8)2.3 PWM发生模块 (9)2.4 调速模块 (10)2.5 测速模块 (11)2.6 参数显示模块 (11)2.7 电机驱动模块 (12)2.8 参数调整模块 (12)2.9串口通信模块 (13)三、软件设计详解 (13)3.1 下位机程序流程图 (13)3.2 下位机程序清单 (14)3.2.1宏定义 (14)3.2.2全局变量声明 (14)3.2.3 系统初始化 (15)3.2.4 主函数 (15)3.2.5 中断服务子程序 (16)3.2.6 显示子程序 (16)3.3 PID简介 (16)3.4 labview上位机制作 (17)3.5 辅助软件选择 (18)四、实验条件 (18)五、模块调试 (18)5.1 片选模块调试 (18)5.2 中断定时模块调试 (18)5.3 PWM发生模块调试 (19)5.4 调速模块调试 (20)5.5 测速模块调试 (20)5.6 参数显示模块调试 (21)5.7 电机驱动模块调试 (21)5.8 参数调整模块调试 (21)5.9 串口通信模块调试 (22)5.10 labview上位机的调试 (22)六、实验结果讨论及改进措施 (23)6.1实验结果讨论 (23)6.2 改进措施 (23)七、实验心得体会 (24)八、参考文献 (24)九、附录一(硬件电路图) (25)十、附录二(软件源代码) (25)小型直流电机闭环调速系统PID控制设计一、需求分析与解决方案1.1 需求分析1.1.1实验题目(1)、设计基于80x86微机接口控制电路;(2)、分别用C语言或汇编语言或VC++编程完成硬件接口功能设计;(3)、程序功能要求:电机速度由按键分段给定或电位器连续给定,计算机屏幕和数码管同步跟踪显示当前给定速度和电机实际运行速度,实现PID参数在线显示和修改。

直流电机调速程序c语言,以及电路

直流电机调速程序c语言,以及电路

直流电机调速程序c语言,以及电路摘要:一、直流电机调速程序的概念和基本原理二、C 语言编写直流电机调速程序的步骤三、直流电机调速电路的设计和连接四、直流电机调速程序和电路的应用实例五、直流电机调速技术的发展趋势正文:一、直流电机调速程序的概念和基本原理直流电机调速程序是指通过改变电机供电电压或电流,从而实现直流电机转速调节的一种技术。

它主要基于电机转速与电压、电流之间的关系,通过改变电压或电流的大小,进而调整电机的转速。

这种技术广泛应用于各种电机控制系统中,具有重要的实用价值。

二、C 语言编写直流电机调速程序的步骤1.确定电机参数:首先需要了解电机的额定电压、额定电流、额定转速等参数。

这些参数可以从电机铭牌上获得,或者通过实验测量得到。

2.选择调速方式:直流电机调速方式主要有两种,一种是改变电压,另一种是改变电流。

可以根据实际需求和硬件条件选择合适的调速方式。

3.编写程序:根据所选调速方式,编写C 语言程序。

程序中需要包含对电机电压或电流的调节,以及对电机转速的检测和控制。

4.调试程序:将编写好的程序下载到控制器中,并连接到电机。

通过调整电压或电流,观察电机转速的变化,验证程序的正确性。

三、直流电机调速电路的设计和连接1.设计电路:根据所选调速方式,设计直流电机调速电路。

主要包括电源、电机、调速器等部分。

2.连接电路:将电源、电机、调速器等部分按照设计好的电路图连接起来。

注意接线顺序和极性,确保电路连接正确。

四、直流电机调速程序和电路的应用实例以改变电压调速为例,假设我们有一个额定电压为6V、额定电流为3A 的直流电机,可以通过以下步骤实现调速:1.根据电机参数,编写C 语言程序,实现对电机电压的调节。

2.设计电路,将电源、电机、调速器连接起来。

3.将编写好的程序下载到控制器中,并连接到电机。

4.通过调整控制器输出电压,观察电机转速的变化,实现对电机转速的控制。

五、直流电机调速技术的发展趋势随着科技的发展,直流电机调速技术也在不断进步。

直流电机的控制方法

直流电机的控制方法

直流电机的控制方法直流电机作为一种常见的电机类型,广泛应用于工业和家用电器中,其控制方法多种多样。

下面我将详细介绍主要的直流电机控制方法,包括直流电机的速度控制和转矩控制。

一、直流电机的速度控制方法:1. 电压控制法:直流电机的速度与电枢电压成正比,因此可以通过改变电枢电压来实现电机的速度控制。

常见的实现电压控制法的方法有以下几种:- 稳压变频:利用能量转换设备将电网的交流电转换为直流电,并通过逆变器将直流电转换为交流电,再将其输出到直流电机上。

通过改变逆变器的输出频率和电压大小来控制直流电机的转速。

- 变阻控制:通过改变电枢电路中的电阻来改变电枢电压,从而实现直流电机的速度控制。

这种方法简单易行,但效率较低,能耗较大。

- 自励电压反馈控制:利用自励电压的反馈信号将直流电机的转速控制在设定值范围内,采用PID控制或者模糊控制的方法进行调节。

2. 电流控制法:直流电机的速度与电枢电流成反比,因此可以通过改变电枢电流来实现电机的速度控制。

常见的实现电流控制法的方法有以下几种:- 稳流变频:通过改变逆变器输出电压的频率和幅值,从而控制直流电机的电流大小,从而达到控制速度的目的。

- 直流电机与电阻串联:通过在直流电机的电枢电路中串联一个可变电阻,调节电压大小以改变电枢电流,进而控制电机的速度。

- 直流电机与电压反馈:通过检测电机的电压,利用电压反馈控制方法调节输出的电流,从而实现速度控制。

二、直流电机的转矩控制方法:1. 电枢电压控制法:直流电机的转矩与电枢电压成正比,因此可以通过改变电枢电压来实现电机的转矩控制。

常见的实现电枢电压控制法的方法有以下几种:- 稳压变频:通过改变逆变器的输出频率和电压大小,从而控制直流电机的转矩。

- 电压比例控制:利用直流电机的转矩与电枢电压成正比的特性,在控制系统中设定一个电压转矩比例,根据系统的需求调节电枢电压。

2. 电流控制法:直流电机的转矩与电枢电流成正比,因此可以通过改变电枢电流来实现电机的转矩控制。

基于8086的计算机+步进电机控制

基于8086的计算机+步进电机控制

课程设计课程名称题目名称步进电机的角度控制(1)学生学院专业班级学号学生姓名指导教师2009年 6 月25日题目1:按要求控制步进电机,使步进电机每转360度停5秒;程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar step[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--);}void main(){int,I,j;outp(CON,0x81);while(1){for(j=0;j<12;j++){for(i=0;i<8;i++){outp(PC,step[i]);delay(5);}delay(200);}delay(5000);}}题目2:按要求实现键盘显示程序设计的程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xfb}; uchar xuan[]={0x7f,0xbf,0xdf,0xef};uchar temp,flag,num,key;uchar jiou;uchar a1,a2,a3,a4;void delay(uint zz);void display(uchar w4,uchar w3,uchar w2,uchar w1);uchar keyscan();void main(){flag=0;jiou=0;outp(CON,0x81);while(1){display(a4,a3,a2,a1);key=keyscan();if(flag==1){flag=0;a4=a2;a3=a2;a2=a1;a1=key;}}}void display(uchar w4,uchar w3,uchar w2,uchar w1) {outp(PA,table[w1]);outp(PB,xuan[0]);delay(5);outp(PA,table[w2]);outp(PB,xuan[1]);delay(5);outp(PA,table[w3]);outp(PB,xuan[1]);delay(5);outp(PA,table[w4]);outp(PB,xuan[1]);delay(5);}uchar keyscan(){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=9;break;case 0x01:num=5;break;}while(temp!=0x03){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=0;break;case 0x01:num=6;break;}while(temp!=0x03){outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=1;break;case 0x01:num=7;break;}while(temp!=0x03){outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=2;break;case 0x01:num=8;break;}while(temp!=0x03){outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}return num;}void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--);}题目3:测试AD转换器的性能程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xfb}; uchar xuan[]={0x7f,0xbf,0xdf,0xef};uchar temp,flag,num,key;uchar jiou;uchar a1,a2,a3,a4;void delay(uint zz);void display(uchar w4,uchar w3,uchar w2,uchar w1);void main(){outp(CON,0x81);while(1){uint dat;outp(0x00,0x0d);dat=inp(0x00);a3=dat/16;a4=dat%16;display(0,0,a3,a4);dat=inp(0x00);}}void display(uchar w4,uchar w3,uchar w2,uchar w1){outp(PA,table[w1]);outp(PB,xuan[0]);delay(5);outp(PA,table[w2]);outp(PB,xuan[1]);delay(5);outp(PA,table[w3]);outp(PB,xuan[1]);delay(5);outp(PA,table[w4]);outp(PB,xuan[1]);delay(5);}void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--); }题目四:步进电机的角度控制(1)设计的程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar step[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};uchar table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xfb}; uchar xuan[]={0x7f,0xbf,0xdf,0xef};uchar temp,num,key;uchar jiou;int max;uchar set,clr,start;uchar ge,shi,bai;int ge1,shi1,bai1;int xianshi;int adc();void clear();void dianji(int degree);void delay(uint zz);void display(uchar w4,uchar w3,uchar w2,uchar w1);void keyscan();void main(){int tt,kk,chazhi;max=0;xianshi=0;tt=0;kk=0;chazhi=0;xianshi=0;jiou=0;ge=0;shi=0;bai=0;ge1=0;shi1=0;bai1=0;outp(CON,0x81);while(1){keyscan();if(set==1){ge=0;shi=0;bai=0;while(1){display(0,bai,shi,ge);keyscan();if(clr==1){clear();break;}if(start==1)break;}if(start==1){max=bai*100+shi*10+ge;while(clr!=1){kk=max/15*(adc())/0xff; //下一次的角度;tt=kk-(xianshi/15);//和上一次相差的度數;if(tt!=0)dianji(tt);keyscan();}clear();}}display(0,0,0,0);}}void display(uchar w4,uchar w3,uchar w2,uchar w1){bai1=xianshi/100;shi1=xianshi%100/10;ge1=xianshi%10;outp(PA,table[w1]);outp(PB,xuan[0]);delay(5);outp(PA,table[w2]);outp(PB,xuan[1]);delay(5);outp(PA,table[w3]);outp(PB,xuan[1]);delay(5);outp(PA,table[w4]);outp(PB,xuan[1]);delay(5);}void keyscan(){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:set=1;break;case 0x01:break;}while(temp!=0x03){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;if(set==1){switch(temp){case 0x02:clr=1;break;case 0x01:if(start==0){shi++;if(shi>9)shi=0;}break;}}while(temp!=0x03){outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;if(set==1){switch(temp){case 0x02:if(start==0){ge++;if(ge>9)ge=0;}break;case 0x01:start=1;break;}}while(temp!=0x03){outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;if(set==1){switch(temp){case 0x02:break;case 0x01:if(start==0){bai++;if(bai>9)bai=0;}break;}}while(temp!=0x03){outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}}void dianji(int degree) //电机程序,精度为15度{int i,j,k,l;if(degree>0){for(i=degree;i>0;i--){if(jiou==0){for(j=0;j<4;j++){outp(PC,step[j]);display(0,bai1,shi1,ge1);}jiou=1;goto loop_1;}if(jiou==1){for(k=4;k<8;k++){outp(PC,step[k]);display(0,bai1,shi1,ge1);}jiou=0;goto loop_1;}loop_1: xianshi=xianshi+15;display(0,bai1,shi1,ge1);}}if(degree<0){for(i=-(degree);i>0;i--){if(jiou==0){for(j=7;j>3;j--){outp(PC,step[j]);display(0,bai1,shi1,ge1);}jiou=1;goto loop_2;}if(jiou==1){for(k=3;k>-1;k--){outp(PC,step[k]);display(0,bai1,shi1,ge1);}jiou=0;goto loop_2;}loop_2: xianshi=xianshi-15;display(0,bai1,shi1,ge1);}}}void clear(){int huiwei;huiwei=-xianshi;huiwei=huiwei/15;if(huiwei!=0)dianji(huiwei);ge=0;bai=0;shi=0;xianshi=0;start=0;set=0;clr=0;}int adc() //ad转换函数{uint dat;outp(0x00,0x0d);dat=inp(0x00);display(0,bai1,shi1,ge1);dat=inp(0x00);return dat;}void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--);}系统设计说明:此系统运行后,如果没有按set键,按其他键不起任何作用;当按下set后,可以由相应的个位键、十位键、百位键,以每按一次加一的形式输入任意三位数。

单片机直流电机控制

单片机直流电机控制

单片机直流电机控制直流电机是一种常见的电机类型,广泛应用于各种工业和消费电子设备中。

而单片机作为一种集成电路,可以通过编程控制直流电机的运转。

本文将介绍单片机直流电机控制的基本原理和实现方法。

一、直流电机的工作原理直流电机是一种将直流电能转化为机械能的电动机。

它由电枢、电磁铁和换向器组成。

电枢是直流电机的转子,由通电的线圈组成。

电磁铁则是直流电机的定子,也是由线圈组成。

换向器负责调整电流的流向,使电枢在不同的位置上受到不同的磁极引力,从而实现电机的运转。

二、单片机控制直流电机的方法单片机控制直流电机的基本原理是通过改变电机电源的电压和极性来控制电机的运转方向和速度。

具体的控制方法有以下几种:1. 接口电路控制法通过使用单片机的IO引脚和一些外部元件(如晶体管、继电器等),可以实现对电机的启动、停止和转向控制。

通过改变IO口的电平状态,控制外部元件的通断来控制电机的运转。

2. PWM控制法脉宽调制(PWM)是一种通过改变电源的占空比来控制电机转速的方法。

单片机可以产生一定频率的PWM信号,并通过控制占空比的大小来控制电机转速。

较大的占空比可以使电机产生较大的平均电压,从而提高电机的转速。

3. PID闭环控制法PID控制是一种根据反馈信号调整输出的控制方法。

通过接入编码器等反馈装置,单片机可以实时获取电机的转速反馈信号,并与设定值进行比较,通过调整PWM信号来控制电机的转速,使其达到设定值。

三、单片机直流电机控制的应用单片机直流电机控制技术在自动化控制系统中有着广泛的应用。

以下是一些常见的应用场景:1. 工业生产线中的自动化机械设备,如流水线、机械臂等,通过使用单片机直流电机控制技术可以实现对设备的精准控制和调节。

2. 智能家居中的窗帘、门锁等设备,可以通过单片机直流电机控制实现对它们的开闭和转动。

3. 机器人和智能车辆中的运动控制系统,通过单片机直流电机控制技术可以实现对机器人的移动和动作的精确控制。

单片机控制直流电机调速汇编

单片机控制直流电机调速汇编

单片机控制直流电机调速汇编单片机是一种集成电路芯片,具有微处理器的所有功能,并可用于嵌入式系统中。

直流电机是一种常见的电动机,其转速与电压成正比。

通过单片机控制直流电机调速可以实现对电机转速的精确控制,广泛应用于机械、电子、自动化等领域。

单片机控制直流电机调速的基本原理是通过改变电压和脉宽调制(PWM)信号的占空比来控制直流电机的电压和转速。

实现这一控制的关键是编写相关的汇编程序。

编写汇编程序前,首先需要了解单片机的输入输出口、定时器和中断控制等相关知识。

使用合适的端口初始化函数,将所需的引脚配置为输出模式。

接下来,需要使用定时器来产生所需的PWM信号。

可以选择合适的定时器模式,并设置相关的定时器计数值和预分频系数,以得到所需的PWM频率和占空比。

通过改变PWM信号的占空比,可以控制直流电机的电压和转速。

占空比为高电平时间占总周期时间的比例。

通过改变占空比的大小,可以调整输出电压的大小,进而控制电机转速。

编写汇编程序时,可以使用定时器中断来控制PWM信号的占空比改变。

在中断服务子程序中,可以根据所需的转速和占空比设定,改变输出口的状态,从而改变PWM信号的占空比。

为了实现精确的调速控制,还可以在汇编程序中加入PID控制算法。

PID控制是一种经典的控制算法,可以根据实际转速和目标转速之间的差异,自动调整PWM信号的占空比,实现闭环控制。

在编写汇编程序时,需要仔细考虑程序执行的时间和顺序。

可以使用延时循环来控制程序的执行时间,以保证定时器和PWM信号的稳定性。

总之,单片机控制直流电机调速的汇编程序编写需要对单片机的输入输出口、定时器和中断控制等相关知识有一定的了解。

通过合理设置定时器和PWM信号的占空比,以及加入PID控制算法,可以实现精确的调速控制。

直流电机调速程序c语言,以及电路

直流电机调速程序c语言,以及电路

直流电机调速程序c语言,以及电路(实用版)目录1.直流电机调速程序概述2.C 语言编程基础3.直流电机调速电路设计4.直流电机调速程序的编写5.程序的实际应用与效果正文一、直流电机调速程序概述直流电机调速技术是一种广泛应用于工业自动化领域的技术,它能够实现直流电机的精确、平滑的速度控制。

其中,利用 C 语言编写直流电机调速程序,通过电路实现对直流电机速度的控制,具有操作简便、效果显著等优点。

二、C 语言编程基础C 语言是一种通用的、过程式的计算机程序设计语言,具有语法简洁、执行效率高、可移植性强等特点。

C 语言编程基础主要包括数据类型、运算符、控制结构、函数、数组等。

熟练掌握 C 语言编程基础,是编写直流电机调速程序的前提。

三、直流电机调速电路设计直流电机调速电路主要包括电源、电机、调速器等部分。

调速器是实现电机调速的核心部分,其主要功能是接收控制信号,将其转换为实际的电机驱动信号。

调速器的选型和电路设计对电机调速效果具有重要影响。

四、直流电机调速程序的编写在 C 语言编程环境下,编写直流电机调速程序主要包括以下几个步骤:1.定义变量和常量:定义与电机调速相关的变量和常量,如电机转速、电压等。

2.初始化:初始化相关硬件设备,如调速器、电机等。

3.获取控制信号:从操作面板或其他设备获取调速控制信号,如速度设定值等。

4.计算电机驱动信号:根据控制信号和电机参数,计算电机驱动信号,如电压、电流等。

5.输出电机驱动信号:将计算得到的电机驱动信号输出给调速器,实现对电机的速度控制。

6.程序循环:根据需要,实现程序的循环运行,以实时响应控制信号变化。

五、程序的实际应用与效果将编写好的直流电机调速程序下载到硬件设备中,可以实现对直流电机的精确、平滑的速度控制。

通过对程序的实际应用,可以验证其效果,如调速范围、调速精度等,从而进一步优化程序和电路设计,提高电机调速性能。

单片机控制直流电机调速汇编

单片机控制直流电机调速汇编

单片机控制直流电机调速汇编单片机是一种以单个集成电路为基础、功能完善的微型计算机系统。

直流电机调速是利用单片机的控制能力,根据控制算法控制电机的转速。

下面,将介绍单片机控制直流电机调速的步骤和相关参考内容。

1. 硬件设计单片机控制直流电机调速的硬件设计包括电机驱动电路的设计和单片机与电机驱动电路的连接。

电机驱动电路一般包括电机驱动芯片、电源模块和电机。

单片机与电机驱动电路的连接一般通过IO口和PWM端口实现。

参考内容可以包括电机驱动芯片的选型、驱动电路的设计原理等。

2. 软件设计软件设计包括单片机的程序设计和调速算法设计。

单片机的程序设计一般使用汇编语言或高级语言进行,可以参考单片机的商业开发工具、单片机编程指南等。

调速算法设计可以采用PID控制算法、斜坡加速算法等,具体根据实际应用场景进行选择和优化。

参考内容可以包括单片机编程技巧、PID控制算法的原理和实现等。

3. 调试和测试在单片机控制直流电机调速的过程中,需要进行调试和测试,以确保电机调速的准确性和稳定性。

调试可以利用单片机的仿真功能、软件调试工具等进行。

测试可以采用实际电机加载的方式进行,观察电机转速、转速反馈信号等指标的变化。

参考内容可以包括单片机调试和测试的方法和技巧等。

4. 总结和优化在实际应用中,可能需要对单片机控制直流电机调速进行总结和优化。

总结可以从电路设计、程序设计、调速算法等方面进行,总结经验和教训,并形成文档或案例供参考。

优化可以针对实际应用场景进行,例如提高电机的效率、减少控制误差等,可以参考关于电机调速优化的文献和论文。

总之,单片机控制直流电机调速是一个涉及硬件设计、软件设计、调试和测试等方面的综合性工作。

参考内容主要包括电机驱动电路的设计和选型、单片机的程序设计和调速算法的选择、调试和测试的方法和技巧、总结和优化的经验和教训等。

只要掌握了这些参考内容,并根据实际应用场景进行合理的设计和调试,就能够实现单片机控制直流电机调速的目标。

基于8086的直流电机控制.

基于8086的直流电机控制.

图 图 4动模块 IN1 IN2
电机状态
0
1
顺时针转
1
0
逆时针转
1
1
停止 如图2-1
4
通过对IN1、IN2的状态改变来控制L293D芯片的输出, 从而实现电机的顺逆时针转动。如图2-1.
程序流程框图: 当按下按键时,检测A口是 否为01H,若是即跳转到子 程序MOT1,实现电机顺时 针旋转,否则检测A口是否 为02H,若是即跳转到子程 序MOT2,实现电机逆时针 旋转,否则检测A口是否为 04H,若是即跳转到子程序 MOT3,使电机停止转动。 再进入循环。

• • •
JE MOT1
TEST AL,04H JE MOT3 JMP MOT2
; MOT1顺时针旋转模式
;测试A口数据是否为04H, ; 若是则跳转到MOT3停止模式 ;否则跳转到MOT2继续进行逆时针旋转模式
9/24/2017
电机停止子程序
• • • MOT3: MOV AL,0FFH MOV DX,IOB ;向B端口输出11111111B=0FFH使电机停止

• • • • • • •
9/24/2017
OUT DX,AL
MOV DX,IOA IN AL,DX TEST AL,01H JE MOT1 TEST AL,02H JE MOT2 JMP MOT3 ;若不是则检测是否输入为02H则转到MOT2逆时针旋转 ;否则转到MOT3继续进行停止模式 ; 检测A口是否输入为01H若是则转到MOT1顺时针旋转 ;从A口读出数据
;检测总线系统
;当检测到A口输入为01H时顺时针旋转 ;当检测到A口输入为02H时逆时针旋转 ;当检测到A口输入为04H时停止

8086控制电机

8086控制电机

工程训练计划书
实验需求:
唐都仪器实验箱(小型直流电机),ST89C51RD单片机系统板、PC机、等等。

实验方案简介:
利用单片机产生脉冲信号作为控制量,采用PWM方式调制,经驱动电路驱动电机运转。

霍尔测速元件经端口HR得到输出的脉冲信号记录电机转速构成反馈量。

在参数给定的情况下,经PID计算,电机可在控制量作用下,按给定转速运转。

实验利用PC机0#定时器通道,设置输出为1ms方波,作为采样时钟,产生PWM脉冲计时。

由HR端口脉冲信号计算出电机实际转速,2#定时器转速累加,送至数码管显示及单片机,经PID运算产生输出控制量。

通过独立按钮单元手动控制电机增速、减速、正反转、停止。

通过LCD数码管显示给定转速和电机实际转速。

预期效果:
通过手动控制控制电机运行状态,PID控制使电机实际转速跟随给定转速变化,按特定速度运行。

第12组组员简晟、周朋、张腾。

单片机控制直流电机调速汇编

单片机控制直流电机调速汇编

单片机控制直流电机调速汇编单片机控制直流电机调速汇编是一种非常有用的技术,它可以帮助我们实现对直流电机的精准控制,从而满足不同工况下的需求。

在介绍单片机控制直流电机调速汇编之前,我们需要了解一些基本概念。

首先,直流电机是一种将电能转换为机械能的装置,它由电枢、永磁体、电刷及换向器等几个部分组成。

在电机的运转过程中,电枢受到电流的驱动转动,从而带动电机的输出轴旋转。

其次,单片机是一种集成电路,它可以处理程序和数据,并通过不同的输出信号来控制外部设备的运行。

了解了这些基本概念之后,我们就可以开始探讨单片机控制直流电机调速汇编的原理了。

具体来说,这种技术主要是通过改变PWM占空比来控制直流电机的转速。

PWM占空比越大,直流电机承受的平均电压就越大,从而转速也就越快。

反之,PWM占空比越小,直流电机承受的平均电压就越小,从而转速也就越慢。

为了实现这种调速功能,我们需要编写一个通过单片机控制PWM 占空比的程序。

具体来说,这个程序需要使用到以下几个模块:1. 定时器模块:用于产生一定的频率和占空比的PWM波形信号;2. AD转换模块:用于测量直流电机的实际转速,并将转速值反馈给控制程序;3. 中断模块:用于实现定时器中断和AD转换中断等功能。

在实现这个程序时,我们需要注意以下几个方面:1. 合理选择PWM的频率和占空比,以满足不同场合下的转速需求;2. 及时更新直流电机的转速反馈数据,以保证控制精度;3. 尽可能减小控制延迟和误差,以提高系统的可靠性和稳定性。

总的来说,单片机控制直流电机调速汇编是一种非常实用的技术,它可以为不同领域的工程师提供方便快捷的解决方案。

如果您正在进行相关领域的研究和开发工作,建议加深对这个技术的理解和应用。

基于8086的直流电机的控制

基于8086的直流电机的控制

目录一、直流电机控制的设计思路: (2)二、直流电机控制的硬件框图: (2)2.1并行I\O口输入、输出 (3)2.2输出锁存 (3)2.3电机驱动模块 (4)2.4仿真模拟图 (5)三、软件设计 (6)3.1程序流程图 (6)3.2程序代码 (7)四、项目体会 (9)一、直流电机控制的设计思路:1)通过按键改变电动机的启动与停止,当启动后再由按键选择工作方式。

2)通过改变pwm的极性从而改变电机的转向,实现正反转。

3)可实现顺、逆旋转的直接切换,不用按下停止后再启动反向运转。

二、直流电机控制的硬件框图:通过按钮来控制电机的顺、逆时针转,并且可以实现顺、逆旋转直接切换,无需中间停顿。

2.1并行I\O口输入、输出采用8255A作为信号的输入与输出接口,使用前需设置芯片的控制字来确定其工作方式,以及端口的使用。

本次采用的控制字为90H,即A组工作在方式0,作为输入接口,连接按钮,B组工作在方式0,作为输出接口连接电机驱动模块。

8255AI\O接口使用2.2输出锁存使用常见的74HC373芯片来实现输出锁存,由于按钮具有复位功能,当按钮按下后的一瞬间才产生输入,所以需要输出锁存来保持电机的连续运转,本次采用两块74HC373,一块与8255A的A0、A1口连接作为电机运行信号的控制,另一块与3-8译码器74H138相连,接入8255A的片选信号输入端,选中8255A运行。

74H373接口使用2.3电机驱动模块通过对IN1、IN2的状态改变来控制L293D芯片的输出,从而实现电机的顺、逆时针转动电机驱动模块2.4仿真模拟图三、软件设计3.1程序流程图当按下按键时,检测A口是否为01H,若是即跳转到子程序MOT1,实现电机顺时针旋转,否则检测A口是否为02H,若是即跳转到子程序MOT2,实现电机逆时针旋转,否则检测A口是否为04H,若是即跳转到子程序MOT3,使电机停止转动。

再进入循环。

3.2程序代码CODE SEGMENT 'CODE'ASSUME CS:CODE,SS:STACK,DS:DATA ;定义数据段IOCON EQU 8006HIOA EQU 8000HIOBEQU 8002H 定义端口的地址 IOC EQU 8004HSTART:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV AX, TOP1MOV SP, AXMOV AL,90H A 口为输入,B 口为输出 MOV DX,IOCON 控制字设置,AB 端口为“0”方式下,控制字10010000B OUT DX,AL NOP NOP TEST_BU:MOV DX,IOA IN AL,DX 检测总线系统 MOV DX,IOA IN AL,DX NOP test_1: TEST AL,01HJE MOT1 test_2: TEST AL,02HJE MOT2 test_3: TEST AL,04HJE MOT3 JMP TEST_BU MOT1:MOV AL,0FEHMOV DX,IOB 往B 端口中输出1111 1110B=0FEH 使电机顺时针旋转OUT DX,AL MOV DX,IOA IN AL,DX ;从A 口读入数据 TEST AL,02H ;测试是否等于0000 0010即按下逆时针按钮 JE MOT2 ;如果是按下逆时针按钮,则跳转到MOT2 TEST AL,04H JE MOT3 JMP MOT1 MOT2:MOV AL,0FDHMOV DX,IOB向B 端口中输入1111 1101B=0FDH使电机逆时针旋转 OUT DX,AL MOV DX,IOA IN AL,DX ;从A 口读入数据 TEST AL,01H 测试A 口数据是否为01H ,若是则跳到 JE MOT1 MOT1顺时针旋转模式 TEST AL,04H 测试A 口数据是否为04H,JE MOT3 若是则跳转到MOT3停止模式JMP MOT2 ;否则跳转到MOT2逆时针旋转模式 MOT3:MOV AL,0FFHMOV DX,IOB 向B 端口输出11111111B=0FFH 使电机停止 OUT DX,AL MOV DX,IOAIN AL,DX TEST AL,01H JE MOT1TEST AL,02H JE MOT2JMP MOT3CODE ENDSSTACK SEGMENT 'STACK' STA DB 100 DUP(?) TOP1 EQU LENGTH STA STACK ENDS DATA SEGMENT 'DATA' DATA ENDSEND START四、项目体会微机原理与接口技术的课程历时一个学期,通过自己编写、运行程序,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

基于8086的步进电机控制课程设计论文

基于8086的步进电机控制课程设计论文

目录1 课程设计的目的 (1)2课程设计的任务与要求 (1)3设计方案与论证 (1)4 设计原理及功能说明 (2)4.1励磁线圈及其励磁顺序 (3)4.2工作原理 (3)4.3 8086 CPU (5)4.4 8255工作方式选择 (6)4.5 ULN2003A (6)4.6 74LS273 (6)4.7 74LS138 (6)5单元电路的设计(计算与说明) (8)6硬件的制作与调试 (10)7总结 (11)参考文献 (12)附录1:总体电路原理图 (13)附录2:元器件清单 (13)附录3:源程序代码 (14)1 课程设计的目的培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。

要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。

让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。

通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,了解步进电机控制的基本原理,掌握控制步进电机转动的编程方法,进一步熟练掌握8255A并行I/O口的工作方式以及编程方法,熟练应用8086以及汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。

体会系统整体设计的流程与方法,为以后系统级设计积累经验。

培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。

2 课程设计的任务与要求01.通过开关K1实现步进电机的开始与停止;02. 通过开关K2来选择步进电机的正转与反转;03. 通过开关K3,K4组成(2-4译码)四档电机转速选择;04. 对每只开关的选择情况同时通过4位8段数码管来显示;05. 扩展设计:可以在以上功能基础上,增加控制步进电机单步转动的开关;增加控制电机加速转动的开关;增加控制电机减速的开关。

基于8086的步进电机控制系统设计2说明书内容

基于8086的步进电机控制系统设计2说明书内容

目录一、电路总体设计 (2)1.1系统功能与实现方式 (2)1.2系统的总体组成 (2)二、各部分电路原理图设计 (3)2.1 8086最小方式系统 (3)2.2存储器的设计 (4)2.3步进电机控制电路 (6)2.4键盘和显示电路 (8)三、设计心得与总结 (9)四、参考资料 (9)一、电路总体设计1.1系统功能与实现方式该系统采用8086最小方式,用8255作为接口芯片,用于连接控制步进电机的变频控制器,芯片62256和2764分别作为数据存储扩展芯片和程序存储扩展芯片,步进电机的工作时间控制由82C54芯片来确定,步进电机的工作方式由按键板块接收操作信号,然后由程序判定并执行操作。

1.2系统的总体组成1)处理器芯片选用8086,当8086的MN/MX引脚接+5V电压时,8086工作在最小方式下:时钟发生器采用82C54芯片主微处理器CPU选用8086芯片数据收发器用来对数据进行缓冲和驱动,并控制数据发送和接收方向,向CPU传送I/O的数据或向IO传送CPU提供的数据。

同样由于8086中数据线只有8条,所以数据收发器只要一个8286就可以了。

地址译码器用74LS138,用地址线直接控制。

在最小方式下,8086CPU会直接产生全部总线控制信号。

2)只读存储器采用ROM芯片2764,随机存储器62256。

3)8255和82C54去控制步进电机4)键盘控电路5)时钟电路、加电复位和复位电路。

6)地址分配:8255: 00100---001FF2764: 01000---01FFF62256: 04000---07FFF键盘相关:100H—103H显示相关:140H—141H步进电机相关:200H—207H功能描述:在最小方式下,8086CPU产生全部总线控制信号,由2764和62256构成了8k的ROM和32KB 的RAM,在此基础上,分别实现接口逻辑。

本系统采用8086位处理器工作在最小方式系统下,采用8282、8286、8284构成了最小系统,形成总线逻辑。

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

目录
一、直流电机控制的设计思路: (2)
二、直流电机控制的硬件框图: (2)
2.1并行I\O口输入、输出 (2)
2.2输出锁存 (3)
2.3电机驱动模块 (4)
2.4仿真模拟图 (5)
三、软件设计 (6)
3.1程序流程图 (6)
3.2程序代码 (7)
四、项目体会 (9)
一、直流电机控制的设计思路:
1)通过按键改变电动机的启动与停止,当启动后再由按键选择工作方式。

2)通过改变pwm的极性从而改变电机的转向,实现正反转。

3)可实现顺、逆旋转的直接切换,不用按下停止后再启动反向运转。

二、直流电机控制的硬件框图:
通过按钮来控制电机的顺、逆时针转,并且可以实现顺、逆旋转直接切换,无需中间停顿。

2.1并行I\O口输入、输出
采用8255A作为信号的输入与输出接口,使用前需设置芯片的控制
字来确定其工作方式,以及端口的使用。

本次采用的控制字为90H,即A组工作在方式0,作为输入接口,连接按钮,B组工作在方式0,作为输出接口连接电机驱动模块。

8255AI\O接口使用
2.2输出锁存
使用常见的74HC373芯片来实现输出锁存,由于按钮具有复位功能,当按钮按下后的一瞬间才产生输入,所以需要输出锁存来保持电机的连续运转,本次采用两块74HC373,一块与8255A的A0、A1口连接作为电机运行信号的控制,另一块与3-8译码器74H138相连,接入8255A的片选信号输入端,选中8255A运行。

74H373接口使用
2.3电机驱动模块
通过对IN1、IN2的状态改变来控制L293D芯片的输出,从而实现电机的顺、逆时针转动
电机驱动模块
2.4仿真模拟图
三、软件设计
3.1程序流程图
当按下按键时,检测A口是否为01H,若是即跳转到子程序MOT1,实现电机顺时针旋转,否则检测A口是否为02H,若是即跳转到子程序MOT2,实现电机逆时针旋转,否则检测A口是否为04H,若是即跳转到子程序MOT3,使电机停止转动。

再进入循环。

3.2程序代码
CODE SEGMENT 'CODE'
ASSUME CS:CODE,SS:STACK,DS:DATA ;定义数据段
IOCON EQU 8006H
IOA EQU 8000H
IOB
EQU 8002H 定义端口的地址 IOC EQU 8004H
START:
MOV AX, DA TA
MOV DS, AX
MOV AX, STACK
MOV SS, AX
MOV AX, TOP1
MOV SP, AX
MOV AL,90H A 口为输入,B 口为输出 MOV DX,IOCON 控制字设置,AB 端口为“0”方式下,控制字10010000B OUT DX,AL NOP NOP TEST_BU:
MOV DX,IOA IN AL,DX 检测总线系统 MOV DX,IOA IN AL,DX NOP test_1: TEST AL,01H
JE MOT1 test_2: TEST AL,02H
JE MOT2 test_3: TEST AL,04H JE MOT3 JMP TEST_BU MOT1:
MOV AL,0FEH
MOV DX,IOB 往B 端口中输出1111 1110B=0FEH 使电机顺时针旋转
OUT DX,AL MOV DX,IOA IN AL,DX ;从A 口读入数据 TEST AL,02H ;测试是否等于0000 0010即按下逆时针按钮 JE MOT2 ;如果是按下逆时针按钮,则跳转到MOT2 TEST AL,04H JE MOT3 JMP MOT1 MOT2:
MOV AL,0FDH
MOV DX,IOB
向B
端口中输入1111 1101B=0FDH 使电机逆时针旋转 OUT DX,AL MOV DX,IOA IN AL,DX ;从A 口读入数据 TEST AL,01H 测试A 口数据是否为01H ,若是则跳到 JE MOT1 MOT1顺时针旋转模式 TEST AL,04H 测试A 口数据是否为04H, JE MOT3 若是则跳转到MOT3停止模式
JMP MOT2 ;否则跳转到MOT2逆时针旋转模式 MOT3:
MOV AL,0FFH
MOV DX,IOB 向B 端口输出11111111B=0FFH 使电机停止 OUT DX,AL MOV DX,IOA
IN AL,DX TEST AL,01H JE MOT1
TEST AL,02H JE MOT2
JMP MOT3
CODE ENDS
STACK SEGMENT 'STACK' STA DB 100 DUP(?) TOP1 EQU LENGTH STA STACK ENDS DA TA SEGMENT 'DATA' DA TA ENDS
END START
四、项目体会
微机原理与接口技术的课程历时一个学期,通过自己编写、运行程序,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。

这次的课程设计,加深了我们对初学的汇编语言指令的熟悉和理解,汇编语言直接描述机器指令,比机器指令容易记忆和理解。

通过学习和使用汇编语言,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。

不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了我们的创造才能。

实验是使用8086微处理器芯片及其外设接口8255A,74HC373(373为三态输出的8D透明锁存器)、74HC138(3线-8线译码器)加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得
不够牢固。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在自己的思考以及和同学的讨论中,终于迎刃而解。

相关文档
最新文档