单片机控制电机转速PWM

合集下载

单片机中的PWM技术及相关应用

单片机中的PWM技术及相关应用

单片机中的PWM技术及相关应用PWM技术是一种常用的数字信号调制技术,能够通过改变信号的占空比来控制电路中的开关元件,实现对电路的调节和控制。

在单片机应用中,PWM技术被广泛应用于电机驱动、LED亮度调节、音频处理等方面,具有较大的实际意义和应用价值。

首先,PWM技术在电机控制和驱动中发挥着重要作用。

通过控制PWM信号的占空比,可以调节电机的转速和扭矩。

对于直流电机控制而言,可以通过改变PWM信号的占空比来改变电机的平均电压,从而实现对电机的转速控制。

而对于步进电机,通过改变驱动信号的频率和占空比,可以实现步进电机的准确位置控制。

此外,PWM技术还被广泛应用于无刷直流电机(BLDC)的驱动中,通过改变PWM信号的占空比和相位,可以实现对BLDC电机的转速和方向控制。

其次,PWM技术在LED照明领域中起到非常重要的作用。

由于LED的亮度和颜色是由电流大小和电压波形的调节来决定的,因此利用PWM技术可以实现对LED的亮度调节。

通过改变PWM信号的占空比,可以控制LED的闪烁频率,从而实现亮度的调节。

同时,利用PWM技术还可以实现多个LED灯的时序控制,例如交替闪烁、呼吸灯效果等。

此外,PWM技术还在音频处理中得到广泛应用。

通过PWM技术可以实现数字音频信号的模拟输出,并通过低通滤波器将PWM信号转换为模拟音频信号。

在数字音频播放器、音响系统等领域中,PWM技术可以实现高保真度的音频输出。

通过控制PWM信号的频率和占空比,可以实现对音频信号的调节,例如音量控制、音调调节等。

此外,PWM技术还有许多其他应用。

例如在温度控制系统中,可以利用PWM 技术实现对加热元件的温度控制,通过调节PWM信号的占空比,可以实现加热元件的温度变化。

在数码相机的曝光控制中,PWM技术可以实现对快门的控制,通过改变PWM信号的占空比和频率,可以控制快门的开启和关闭时间,从而实现曝光时间的调节。

总结而言,PWM技术在单片机中具有广泛的应用。

单片机控制直流电机的转速

单片机控制直流电机的转速

单片机控制直流电机的转速
单片机是一种集成了CPU、RAM、EPROM和GPIO等功能模块的微型计算机系统,广泛应用于控制、测量、仪表以及通讯等领域。

单片机控制直流电机的转速,是基于单片机的数字输出口产生的PWM波控制直流电机的转速。

直流电机是一种广泛应用的电机类型,其结构简单,控制相对容易。

控制直流电机的转速常常使用PWM技术,即变占空比的脉冲宽度调制技术。

PWM波的占空比与电机的转速成正比关系。

通过单片机的数字输出口产生PWM信号,调整占空比,可以控制直流电机的转速。

以下是单片机控制直流电机转速的具体实现步骤:
1.将电机的正极接到电源,负极接到单片机的数字输出口;
2.设置单片机的计时器,产生PWM波,定时器的频率可以根据电机的额定转速和电机的型号进行设置;
3.根据PWM波的占空比控制电机的转速,可以通过编程控制单片机数字输出口的输出电平,从而调整PWM波的占空比,进而改变电机的转速。

值得注意的是,单片机控制电机转速还需要特别考虑电机的供电和保
护措施。

单片机和电机的供电电压需要相同,并且还需要电源电压稳
定器,以保证电机转速的稳定性。

此外,还需要采取适当的保护措施,如反向保护二极管、电机短路保护电路等,以确保电机和单片机的安全。

总之,单片机控制直流电机的转速是一种基于PWM技术的控制方法,通过单片机的数字输出口产生PWM信号,调整占空比,可以实现对
电机的精确控制。

在实际应用中,我们需要根据电机的特性和实际需
要选择合适的单片机型号,并采取适当的保护和供电措施,以确保系
统的安全和稳定性。

单片机电机控制

单片机电机控制

单片机电机控制引言:单片机作为一种集成电路芯片,广泛应用于各个领域,尤其在电机控制方面发挥着重要作用。

本文将介绍单片机在电机控制中的应用及相关知识,以及常见的控制方法和技术。

一、单片机在电机控制中的应用单片机在电机控制中的应用广泛,包括直流电机控制、步进电机控制、交流电机控制等。

通过单片机的控制,可以实现电机的启停、速度调节、方向控制等功能。

1. 直流电机控制:直流电机是一种常见的电机类型,广泛应用于各个领域。

单片机可以通过PWM信号控制直流电机的转速和方向。

通过改变PWM信号的占空比,可以控制直流电机的速度,通过改变PWM信号的正负脉冲,可以控制直流电机的正转和反转。

2. 步进电机控制:步进电机是一种精密控制的电机,常用于需要准确定位的应用中。

单片机可以通过控制步进电机驱动器的信号,实现步进电机的精确控制。

通过改变驱动器信号的频率和脉冲数,可以控制步进电机的转速和步距。

3. 交流电机控制:交流电机是一种常见的电机类型,广泛应用于各个领域。

单片机可以通过外部电路和传感器,获取交流电机的相关信号,从而实现对交流电机的控制。

常见的控制方法包括矢量控制、电流控制和速度控制等。

二、电机控制的常见方法和技术在单片机电机控制中,常见的方法和技术有PWM调速、PID控制、闭环控制等。

1. PWM调速:PWM调速是一种通过改变PWM信号的占空比来调节电机转速的方法。

通过改变占空比,可以改变电机的平均电压和平均功率,从而实现电机的调速功能。

PWM调速具有调速范围广、控制精度高的优点,在电机控制中被广泛应用。

2. PID控制:PID控制是一种比例、积分和微分控制的方法,常用于对电机速度和位置的控制。

通过测量电机的反馈信号和设定值,PID控制可以根据误差的大小来调整控制器的输出,从而实现电机的精确控制。

3. 闭环控制:闭环控制是一种通过反馈信号来调节电机控制器输出的方法。

通过测量电机的反馈信号,可以实时调整控制器的输出,从而实现对电机的精确控制。

单片机pwm控制步进电机原理

单片机pwm控制步进电机原理

单片机pwm控制步进电机原理单片机(Microcontroller)是一种集成了处理器、存储器和输入输出接口的微型计算机系统,它在现代电子技术中有着广泛的应用。

而步进电机(Stepper Motor)是一种特殊的电机,通过控制电流的方向和大小,可以使电机按照一定的步进角度进行旋转。

那么,如何利用单片机的PWM(Pulse Width Modulation)功能来控制步进电机呢?本文将从基本原理、控制方法以及相关应用方面进行介绍和分析。

我们来了解一下PWM的基本原理。

PWM是一种用脉冲信号来模拟模拟量的技术,通过改变脉冲信号的占空比(High电平的时间占整个周期的比例),可以实现对电压、电流等模拟量的精确控制。

在单片机中,PWM信号一般通过定时器/计数器模块来生成,通过改变定时器的计数值和比较值,可以控制PWM信号的频率和占空比。

接下来,我们介绍如何利用单片机的PWM功能来控制步进电机。

步进电机一般需要控制电流的方向和大小,以实现旋转。

通过控制步进电机的控制信号,我们可以实现电机的正转、反转、停止等动作。

而单片机的PWM功能可以通过改变输出的脉冲信号的频率和占空比,来控制步进电机的转速和转向。

在具体的控制步骤中,首先需要通过单片机的IO口来控制步进电机的驱动器。

驱动器一般包括多个MOS管和电流检测电阻,通过控制MOS管的导通和断开,可以实现电机的正转和反转。

而电流检测电阻可以用于检测步进电机的电流,以保护电机不被过载。

我们需要配置单片机的定时器/计数器模块,来生成PWM信号。

定时器/计数器模块一般有多个通道,每个通道可以独立生成一个PWM信号。

通过改变定时器的计数值和比较值,可以调整PWM 信号的频率和占空比。

需要注意的是,步进电机的驱动器一般有两个输入端口,一个用于控制正转,一个用于控制反转。

因此,我们需要至少两个PWM信号来控制步进电机的转向。

我们需要在单片机的程序中编写相应的控制算法。

通过改变PWM 信号的频率和占空比,可以实现步进电机的转速和转向控制。

51单片机控制直流电机PWM调速

51单片机控制直流电机PWM调速

51单片机控制直流电机PWM调速
实验目的
1.掌握脉宽调制(PWM) 的方法。

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

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

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

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

实验思考题
本实验中是通过改变脉冲的占空比,周期T 不变的方法来改变电机转速的,还有什么办法能改变电机的转速,应该怎么实现?
附件:
L298简介:
L298N 为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。

PWM电机调速原理及51单片机PWM程序经典

PWM电机调速原理及51单片机PWM程序经典

PWM电机调速原理及51单片机PWM程序经典pwm电机调速原理对于电机的转速调整,我们是采用脉宽调制(pwm)办法,控制电机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。

不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端pe2和pd5上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。

此电路中用微处理机去同时实现脉宽调制,通常的方法存有两种:(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻辑状态去产生脉宽调制信号,设置相同的延时时间获得相同的充电电流。

(2)硬件实验自动产生pwm信号,不挤占cpu处置的时间。

这就要用到atmega8515l的在pwm模式下的计数器1,具体内容可参考相关书籍。

51单片机pwm程序产生两个pwm,要求两个pwm波形占空都为80/256,两个波形之间要错开,不能同时为高电平!高电平之间相差48/256,pwm这个功能在pic单片机上就存有,但是如果你就要用51单片机的话,也就是可以的,但是比较的麻烦.可以用定时器t0去掌控频率,定时器t1去掌控充电电流:大致的的编程思路就是这样的:t0定时器中断就是使一个i0口输入高电平,在这个定时器t0的中断当中再生制动定时器t1,而这个t1就是使io口输入低电平,这样发生改变定时器t0的初值就可以发生改变频率,发生改变定时器t1的初值就可以发生改变充电电流。

*程序思路说明:****关于频率和占空比的确定,对于12m晶振,假定pwm输出频率为1khz,这样定时中断次数**预设为c=10,即0.01ms中断一次,则th0=ff,tl0=f6;由于预设中断时间为0.01ms,这样**可以设定占空比可从1-100变化。

即0.01ms*100=1ms******************************************************************************* /#include#defineucharunsignedchar/******************************************************************************th0和tl0是计数器0的高8位和低8位计数器,计算办法:tl0=(65536-c)%6;**th0=(65536-c)/256,其中c为所要计数的次数即为多长时间产生一次中断;tmod就是计数器**工作模式挑选,0x01则表示采用模式1,它存有16十一位计数器,最小计数脉冲为65536,最久时**间为1ms*65536=65.536ms******************************************************************************* /#definev_th00xff#definev_tl00xf6#definev_tmod0x01voidinit_sys(void);/*系统初始化函数*/voiddelay5ms(void);unsignedcharzkb1,zkb2;voidmain(void){init_sys();zkb1=40;/*占空比初始值设定*/zkb2=70;/*占空比初始值设定*/while(1){if(!p1_1)//如果按了+键,减少充电电流{delay5ms();if(!p1_1){zkb1++;zkb2=100-zkb1;}}if(!p1_2)//如果按了-键,增加充电电流{delay5ms();if(!p1_2){zkb1--;zkb2=100-zkb1;/*对占空比值限定范围*/if(zkb1>99)zkb1=1;if(zkb1<1)zkb1=99;}}/*******************************************************函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/voidinit_sys(void)/*系统初始化函数*/{/*定时器初始化*/tmod=\th0=v_th0;tl0=v_tl0;tr0=1;et0=1;ea=\}//延时voiddelay5ms(void){unsignedinttempcyc=1000;while(tempcyc--);}/*中断函数*/voidtimer0(void)interrupt1using2{staticucharclick=\/*中断次数计数器变量*/th0=v_th0;/*恢复定时器初始值*/tl0=v_tl0;++click;if(click>=100)click=\if(click<=zkb1)/*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/p1_3=0;elsep1_3=1;if(click<=zkb2)p1_4=0;elsep1_4=1;}<1.下面就是avr的程序,51产生pwm波麻烦,可以用avr。

单片机pwm控制的基本原理

单片机pwm控制的基本原理
PWM(脉宽调制)是一种解决电动机或者其它负载的有效控制方式,它主要使用的是变化角度来控制电源电压,以达到控制电机的目的。

PWM的工作原理是,它把一个给定的输入信号(通常是一定频率的脉冲)按照定义的关系,转换成另一个信号,该信号的脉冲宽度被调制成需要的比例,然后通过一定的电路驱动给定的负载,实现调整电源电压的目的。

在PWM控制电动机的控制系统中,PWM的作用是把一个给定的脉冲调制成不同的脉冲宽度,从而改变电机的转速,从而实现电机的调速。

PWM角度调制可以使电机转速即时地响应调节信号,从而实现电机的调速功能。

PWM控制的原理很简单,就是通过不断地调整脉冲的开始时间、脉冲宽度和脉冲信号的重复频率,以达到控制电机的目的。

调整参数时,PWM都会发出一个所谓的“脉冲信号”,这个信号可以改变电机的转速,从而改变电机的转矩和控制电机的运行方向,以及电机的加速度。

PWM的优点在于,它能够有效地控制负载,能够对电机的转矩和转速进行精确的控制,而且可以使电源电压变化到接近极限,达到节能的目的,此外,PWM控制的运行稳定耐久,不易受外界因素的影响。

然而,PWM的缺点也很明显,首先,PWM控制的运行噪声大;其次,PWM控制的效率较低;并且,PWM控制的精确度很低,不能满足
高精度调节的要求。

总之,单片机PWM控制是一种有效的控制方式,能有效地控制电动机的转矩和转速。

在单片机控制系统中,PWM控制是一种非常有用的技术。

单片机产生PWM信号控制直流电机调速的源代码

单片机产生PWM信号控制直流电机调速的源代码本例程利用2051的T0产生双路PWM信号,推动L293D或L298N为直流电机调速,程序已通过调试。

接L298N时相应的管脚上最好接上10K的上拉电阻。

有什么不对的地方欢迎大家批评指正!/* =======直流电机的PWM速度控制程序======== *//* 晶振采用11.0592M,产生的PWM的频率约为91Hz */#include<reg51.h>#include<math.h>#define uchar unsigned char#define uint unsigned intsbit en1=P1^0; /* L298的Enable A */sbit en2=P1^1; /* L298的Enable B */sbit s1=P1^2; /* L298的Input 1 */sbit s2=P1^3; /* L298的Input 2 */sbit s3=P1^4; /* L298的Input 3 */sbit s4=P1^5; /* L298的Input 4 */uchar t=0; /* 中断计数器*/uchar m1=0; /* 电机1速度值*/uchar m2=0; /* 电机2速度值*/uchar tmp1,tmp2; /* 电机当前速度值*//* 电机控制函数index-电机号(1,2); speed-电机速度(-100—100) */void motor(uchar index, char speed){if(speed>=-100 && speed<=100){if(index==1) /* 电机1的处理*/{m1=abs(speed); /* 取速度的绝对值*/if(speed<0) /* 速度值为负则反转*/{s1=0;s2=1;}else /* 不为负数则正转*/{s1=1;s2=0;}}if(index==2) /* 电机2的处理*/{m2=abs(speed); /* 电机2的速度控制*/if(speed<0) /* 电机2的方向控制*/{s3=0;s4=1;}else{s3=1;s4=0;}}}}void delay(uint j) /* 简易延时函数*/{for(j;j>0;j--);}void main(){uchar i;TMOD=0x02; /* 设定T0的工作模式为2 */ TH0=0x9B; /* 装入定时器的初值*/TL0=0x9B;EA=1; /* 开中断*/ET0=1; /* 定时器0允许中断*/TR0=1; /* 启动定时器0 */while(1) /* 电机实际控制演示*/{for(i=0;i<=100;i++) /* 正转加速*/{motor(1,i);motor(2,i);delay(5000);}for(i=100;i>0;i--) /* 正转减速*/{motor(1,i);motor(2,i);delay(5000);}for(i=0;i<=100;i++) /* 反转加速*/{motor(1,-i);motor(2,-i);delay(5000);}for(i=100;i>0;i--) /* 反转减速*/{motor(1,-i);motor(2,-i);delay(5000);}}}void timer0() interrupt 1 /* T0中断服务程序*/{if(t==0) /* 1个PWM周期完成后才会接受新数值*/{tmp1=m1;tmp2=m2;}if(t<tmp1) en1=1; else en1=0; /* 产生电机1的PWM信号*/ if(t<tmp2) en2=1; else en2=0; /* 产生电机2的PWM信号*/ t++;if(t>=100) t=0; /* 1个PWM信号由100次中断产生*///4级速度可调:0、1、2、3;对应占空比:0、1/4、2/4、3/4#include<reg52.h>sbit key=P3^6;sbit motor=P2^4;unsigned char key_scan(void);void motor_set(unsigned char v) ;void motor_init(void);unsigned char PWM_H=0,n=0,i=0;void main(){motor_init();while(1){if (key_scan() == 1){motor_set(i%4);}}}//电机转动void motor_run() interrupt 3{if(n<PWM_H) motor=1;else motor=0;n++;if(n>=4) n=0;}//速度控制,4级速度可调:0、1、2、3;对应占空比:0、1/4、2/4、3/4 void motor_set(unsigned char v){if (v>3) v=3;if (v == 0) TR1 = 0;else{TR1 = 1;PWM_H = v;}}//电机初始化void motor_init(void){EA=1;ET1=1;TMOD=TMOD & 0X0F | 0x20;}//扫描按键unsigned char key_scan(void){unsigned char on = 0,i;while(1){if(key==0) //判断是否按下{for(i=0;i<100;i++); //软件延时if(key==0) //再次判断是否按下{on = 1;break; //跳出循环}}}while(key==0);return 1;}}。

基于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信号。

单片机课程设计PWM直流电动机调速控制系统方案

单片机原理及应用—— P W M直流电机调速控制系统概括直流电动机具有良好的启动性能和调速特性。

具有起动转矩大、调速平稳、经济大范围、调速容易、调速后效率高等特点。

本文设计的直流电机调速系统主要由51单片机、电源、H桥驱动电路、LED 液晶显示器、霍尔测速电路和独立按键组成的电子产品组成。

电源采用78系列芯片,采用PWM波方式实现电机+5V、+15V调速,PWM为脉宽调制,通过51单片机改变占空比实现。

通过独立的按键实现电机的启停、调速和转向的手动控制,LED实现测量数据(速度)的显示。

电机转速采用霍尔传感器检测输出方波,通过51单片机统计1秒内方波脉冲个数,计算电机转速,实现直流电机的反馈控制。

关键词:直流电机调速; H桥驱动电路; LED显示屏; 51单片机目录摘要2摘要错误!未定义书签。

目录3第 1 章引言41.1 概述41.2 国外发展现状41.3 要求51.4 设计目的及6第 2 章项目论证与选择72.1 电机调速模块72.2 PWM调速工作模式72.3 PWM脉宽调制方式错误!未定义书签。

2.4 PWM 软件实现错误!未定义书签。

第三章系统硬件电路设计83.1 信号输入电路83.2 电机PWM驱动模块电路9第 4 章系统的软件设计104.1 单片机选型104.2 系统软件设计分析10第 5 章 MCU 系统集成调试135.1 PROTEUS 设计与仿真平台错误!未定义书签。

18传统开发流程对比错误!未定义书签。

第一章简介1.1 概述现代工业的电驱动一般要求部分或全部自动化,因此必须与各种控制元件组成的自动控制系统相联动,而电驱动可视为自动电驱动系统的简称。

在这个系统中,生产机械可以自动控制。

随着现代电力电子技术和计算机技术的发展以及现代控制理论的应用,自动电驱动正朝着计算机控制的生产过程自动化方向发展。

以实现高速、高质量、高效率的生产。

在大多数集成自动化系统中,自动化电力牵引系统仍然是不可或缺的组成部分。

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

单片机控制电机转速(PWM)
[
课程设计任务书
目录
1课程设计的目的和要求 (2)
课程设计的目的 (2)
课程设计的基本要求 (2)
2总体设计 (2)
硬件总体方案设计 (2)
软件总体方案设计 (3)
3 硬件设计 (3)
]
主要芯片介绍 (3)
硬件电路设计 (5)
4、软件设计 (6)
5、结束语 (7)
附录 (8)
程序清单 (8)
1课程设计的目的和要求
课程设计的目的
?
1、了解直流电机PWM调速的原理。

2、学习ADC0809的工作原理,掌握其编程方法。

课程设计的基本要求
1、通过ADC0809采样0—5V的电压值(由电位器产生)。

2、根据采样值产生占空比不同的脉冲信号,控制电机转速。

2 总体设计
硬件总体方案设计

硬件方案设计的详细框图如图所示:
通过ADC0809采样由电位计产生的0—5V的电压值,经过A/D 转换后,输入给MCS-51单片机,并由单片机调节占空比,输出脉冲信号,进一步控制电机转速。


软件总体方案设计
直流电机转速的调节需要改变输出脉冲的占空比,因此需要编写一个能输出方波的子程序。

如先让PWM置1,延时一段时间后,再将PWM清零,再延时,如此反复就能达到输出方波的目的。

通过调节电位器的电压输出改变输出方波的占空比,达到调速的目的。

主要包括定时程序、A/D转换的读入程序、PWM的输出程序、以及延时程序。

|
3 硬件设计
主要芯片介绍
MCS-51芯片介绍:MCS-51系列单片机是美国Intel公司开发的8位单片机,又可以分为多个子系列。

MCS-51系列单片机共有40条引脚,包括32条I/O接口引脚、4条控制引脚、2条电源引脚、2条时
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
钟引脚。

引脚说明:~:P0口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时的地址/数据复用口。

~:P1口8位口线,通用I/O接口无第二功能。

~:P2口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时传送高8位地址。

~:P3口8位口线,第一功能作为通用I/O接口,第二功能作为为单片机的控制信号。

ALE/ PROG:地址锁存允许/编程脉冲输入信号线(输出信号)PSEN:片外程序存储器开发信号引脚(输出信号)EA/Vpp:片外程序存储器使用信号引脚/编程电源输入引脚
RST/VPD:复位/备用电源引脚。


ADC0809芯片介绍:ADC0809是一种比较典型的8位8通道逐次逼近式A/D转换器,CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100μs左右,采用双排28引脚封装,其引脚说明如下:

IN0~IN7:8路模拟量输入
ADDA~ADDC:地址线用于选择模拟量输入通道
ALE:地址锁存允许信号
START:转换启动信
D0~D7:数据输出线
OE:输出允许信号,低电平允许转换结果输出
.
CLOCK:时钟信号输入引脚,通常使用500KHz
EOC:转换结束信号,为0代表正在转换,1代表转换结
Vcc:+5V电压VREF(+)、VREF(-):参考电压
硬件电路设计
(1)PWM 调速电路原理及说明JUMP跳线为极性选择。

2、3脚短接(模块上选择D端)为双极性;1、2脚短接(模块上选择S 端)为单极性。

单极性时,PWM IN为高,电机两端无电压;PWM IN
为低,电机两端为正电压。

双极性时,PWM IN为高,电机两端为负电压;PWM IN为低,电机两端为正电压。

(2)PWM调速电路基本测试方法将CPU模块的~分别接至CPU挂箱的K1~K3,T0接PWM调速模块的PWM IN,模块的跳线1、2脚短接。

运行测试程序,改变K1~K3的值,电机转速应随之变化。


&
4 软件设计
由于电位器输出为模拟电压,而单片机所能处理的仅为数字信号,所以要经过ADC0809将电位器的输出装换为数字信号。

因此编程时要启动IN0,启动A/D转换,并用软件延时一段时间等待转换结
束,然后读取转换结果并将其存入指定的寄存器供调用。

直流电机转速的调节需要改变输出脉冲的占空比,因此需要编写一个能输出方波的子程序。

如先让PWM置1,延时一段时间后,再将PWM清零,再延时,如此反复就能达到输出方波的目的。

通过调节电位器的电压输出改变输出方波的占空比,达到调速的目的。

对应的程序框图如图所示:

>
5 结束语
通过一周的单片课程设计,学到了很多有用的东西,让我对单片机和汇编语言程序设计都有了新的理解。

首先,对MCS-51单片机
的工作原理和具体的功能实现有了一个更高的认识。

对于硬件电路,以前只是大概了解,实验后,对单片机的各个端口,寄存器都有了一个比较系统的认识。

其次,学会了汇编语言的程序编写。

汇编语言具有编写的程序效率高,占用的存储空间小,运行速度快等优点,相比于高级语言和机器语言都有一定的优势。

因此,掌握汇编语言的程序编写对于以后的学习都会有很大的帮助。

另外,汇编语言的学习还可以帮助理解单片机的硬件电路工作原理,一举两得。

再次,单片机的功能很强大,所能实现的功能并不仅限于这次课程设计。

单片机还能实现更多更实用的功能,应该学会触类旁通,举一反三,在课程设计的基础上创新,开发自己的创造力。

最后,感谢一周内老师们的悉心指导!
附录
程序清单
ADC EQU 35H
,
CLOCK BIT ;定义ADC时钟位
ST BIT
EOC BIT
OE BIT
PWM BIT
ORG 00H
SJMP START
ORG 0BH
LJMP INTT0
START: MOV TMOD,#02H

MOV TH0,#20
MOV TL0,#00H
MOV IE,#82H
SETB TR0
WAIT: CLR ST
SETB ST
CLR ST ;启动A/D转换
JNB EOC,$ ;等待转换结束
SETB OE
MOV ADC,P1 ;读A/D转换结果
&
CLR OE
SETB PWM ;PWM输出
MOV A,ADC
LCALL DELAY
CLR PWM
MOV A,#255
SUBB A,ADC
LCALL DELAY
SJMP WAIT
INTT0: CPL CLOCK ;提供ADC时钟信号RETI
DELAY: MOV R6,#1
D1: DJNZ R6,D1
DJNZ ACC,D1
RET
END。

相关文档
最新文档