51单片机控制无刷直流电机程序
- 格式:docx
- 大小:13.18 KB
- 文档页数:2
51单片机直流电机正反转程序在工业自动化、机器人、电子设备等领域,直流电机是一种常见的电动机。
直流电机具有结构简单、转速范围广、转矩大、控制方便等优点,因此被广泛应用。
在直流电机的控制中,正反转是一种常见的操作。
本文将介绍如何使用51单片机控制直流电机的正反转。
1. 直流电机的原理直流电机是一种将电能转化为机械能的电动机。
它的基本结构由定子、转子、电刷和电枢组成。
当电枢通电时,电枢内部会产生磁场,与定子磁场相互作用,从而产生转矩,使转子转动。
电刷则用来改变电极的极性,使电极的磁场方向与定子磁场方向相互作用,从而使电机正反转。
2. 51单片机控制直流电机的原理51单片机是一种常用的微控制器,具有体积小、功耗低、易于编程等优点。
在控制直流电机时,我们可以使用51单片机来控制电机的正反转。
具体实现方法是通过控制电机的电极极性来改变电机的转向。
3. 51单片机直流电机正反转程序下面是一段使用51单片机控制直流电机正反转的程序:#include <reg52.h>sbit IN1 = P1^0; //定义IN1引脚sbit IN2 = P1^1; //定义IN2引脚void delay(unsigned int t) //延时函数 {unsigned int i, j;for(i=0; i<t; i++)for(j=0; j<125; j++);}void main(){while(1){IN1 = 1; //IN1引脚输出高电平 IN2 = 0; //IN2引脚输出低电平 delay(1000); //延时1秒IN1 = 0; //IN1引脚输出低电平 IN2 = 1; //IN2引脚输出高电平 delay(1000); //延时1秒}```上述程序中,我们使用了P1口的0、1引脚来控制电机的正反转。
当IN1引脚输出高电平、IN2引脚输出低电平时,电机正转;当IN1引脚输出低电平、IN2引脚输出高电平时,电机反转。
可以实现的功能是:按下左转键则开始向左转动按下右转键则向右转动按下停止键则开始逐渐停止转动按下调速键一次则会加速一档按下调速键二次则会加速二档按下调速键三次则会加速三档按下调速键四次则会加速四档按下调速键五次则会回到最初速度重新记档位设计思路:直流电机只要能提供一定的直流就可以转动,改变电压极性可以改变转动方向,可以通过给直流电机提供脉冲信号来驱动它,脉冲信号的占空比可以影响到直流电机的平均速度,因此可以通过调整占空比从而能实现调速的目的。
直流电机的驱动电路要有过流保护作用,图中的二极管就直到这个作用,另外电机的驱动电流是比较大的所以需要用三极管来放大电流。
程序的关键就是如何实现占空比的调整,这个可以通过对51单片机定时器重装初值进行改变,从而改变时间。
用51实现PWM信号的输出,相对麻烦点,要是AVR就可以方便地实现PWM信号,由见51单片机的局限性与AVR单片机的优势。
原理图详细程序:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit PW1=P2^0 ;sbit PW2=P2^1 ; //控制电机的两个输入sbit accelerate=P2^2 ; //调速按键sbit stop=P2^3 ; //停止按键sbit left=P2^4 ; //左转按键sbit right=P2^5 ; //右转按键#define right_turn PW1=0;PW2=1 //顺时针转动#define left_turn PW1=1;PW2=0 //逆向转动#define end_turn PW1=1;PW2=1 //停转uint t0=25000,t1=25000; //初始时占空比为50%uint a=25000; // 设置定时器装载初值 25ms 设定频率为20Hzuchar flag=1; //此标志用于选择不同的装载初值uchar dflag; //左右转标志uchar count; //用来标志速度档位void keyscan(); //键盘扫描void delay(uchar z);void time_init(); //定时器的初始化void adjust_speed(); //通过调整占空比来调整速度void main(){time_init(); //定时器的初始化while(1){keyscan(); //不断扫描键盘程序,以便及时作出相应的响应}}void timer0() interrupt 1 using 0{if(flag){flag=0;end_turn;a=t0; //t0的大小决定着低电平延续时间TH0=(65536-a)/256;TL0=(65536-a)%256; //重装载初值}else{flag=1; //这个标志起到交替输出高低电平的作用if(dflag==0){right_turn; //右转}else{left_turn; //左转}a=t1; //t1的大小决定着高电平延续时间TH0=(65536-a)/256;TL0=(65536-a)%256; //重装载初值}}void time_init(){TMOD=0x01; //工作方式寄存器软件起动定时器定时器功能方式1 定时器0TH0=(65536-a)/256;TL0=(65536-a)%256; //装载初值ET0=1; //开启定时器中断使能EA=1; // 开启总中断TR0=0;}void delay(uchar z) //在12M下延时z毫秒{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void keyscan(){if(stop==0){TR0=0; //关闭定时器0 即可停止转动end_turn;}if(left==0){TR0=1;dflag=1; //转向标志置位则左转}if(right==0){TR0=1;dflag=0; //转向标志复位则右转}if(accelerate==0){delay(5) ; //延时消抖if(accelerate==0){while(accelerate==0) ; //等待松手count++;if(count==1){t0=20000;t1=30000; //占空比为百分之60}if(count==2){t0=15000;t1=35000; //占空比为百分之70 }if(count==3){t0=10000;t1=40000; //占空比为百分之80 }if(count==4){t0=5000;t1=45000; //占空比为百分之90 }if(count==5){count=0;}}}}。
51单片机怎么驱动直流电机c语言有3种方案:第一种,通过PWM脉宽调制输出方法控制转速,控制占空比的大小可以实现调速!第二种,通过AD转换的方法控制直流电机的电压第三种,用xtr115程控电流源来控制直流电机(类似第二种方法)如果以上的驱动能力不够的话再加上一个电压跟随器!一下以L298电机驱动电路为例。
L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。
内部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 36 V;Vs 电压最大值也是 36 V。
L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。
当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;;IN1与IN2相同时,电机快速停止。
当使能端为低电平时,电动机停止转动。
在对直流电动机电压的控制和驱动中,半导体功率器件(L298)在使用上可以分为两种方式:线性放大驱动方式和开关驱动方式在线性放大驱动方式。
半导体功率器件工作在线性区优点是控制原理简单,输出波动小,线性好,对邻近电路干扰小,缺点为功率器件工作在线性区,功率低和散热问题严重。
开关驱动方式是使半导体功率器件工作在开关状态,通过脉调制(PWM)来控制电动机的电压,从而实现电动机转速的控制。
#include#include#define uchar unsigned char#define uint unsigned intsbit MOTOR_A_1=P3^6;sbit MOTOR_A_2=P3^7;sbit k1=P1^0; //定义k1为p1.0口sbit k2=P1^1; //定义k2为p1.1口sbit k3=P1^2; //定义k3为p1.2口sbit k4=P1^3; //定义k4为p1.3口uchar T=0; //定时标记uchar W=0; //脉宽值 0~100uchar A=0; //方向标记 0,1uchar k=0; //按键标记uchar i=0; //计数变量uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar code table2[]={0xfe,0xfb,0xfd,0xf7}; void delayms(uint t);void disp(void){P2=table2[3];P0=table1[W]; //显示占空比个位delayms(1); //延时1msP2=0xff; //P0清1P2=table2[2];P0=table1[W/100]; //显示占空比百位delayms(1); //延时1msP2=0xff; //P0清1P2=table2[1];P0=table1[W/10]; //显示占空比十位delayms(1); //延时1msP2=0xff; //P0清1P2=table2[0];P0=table1[A]; //显示方向delayms(1); //延时1msP2=0xff; //P0清1}void init(void){//启动中断TMOD=0x01;EA=1;ET0=1;TR0=1;//设置定时时间TH0=0xff;TL0=0xf6;}void timer0() interrupt 1{//重置定时器时间TH0=0xff;TL0=0xf6;T++; //定时标记加1disp(); //数码管显示if(k==0){if(T》W)MOTOR_A_1 =0;elseMOTOR_A_1 =1;}else{if(T》W)MOTOR_A_2 =0;elseMOTOR_A_2 =1;}if(T==100)T=0;}void delayms(uint t){uchar j;while(t--){for(j=0;j《250;j++) //循环250次{_nop_(); //系统延时_nop_(); //系统延时_nop_(); //系统延时_nop_(); //系统延时}}}void key(void) //按键判断程序{if(k1==0) //按键1按下{while(k1==0); //按键1抬起if(W==100) //如果脉宽为100 W=0; //脉宽置0elseW+=1; //否则加1}else if(k2==0) //按键2按下{while(k2==0); //按键2抬起if(W==0) //如果脉宽为0W=100; //脉宽设置成100elseW-=1; //否则减1}else if(k3==0) //按键3按下{while(k3==0); //按键3抬起A=!A; //方向标记取反k=!k; //按键标记取反}else if(k4==0) //按键4按下{while(k4==0); //按键4抬起W=0; //脉宽清0}}void main(void){init(); /////////系统初始化while(1){if(k==0)MOTOR_A_2=0;elseMOTOR_A_1=0;key(); ////////查询按键}}。
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端口来提供模拟时序信号。
一个基于51单片机控制直流电机的设计1.引言直流电机是一种常见的电机类型,广泛应用于工业自动化、机械设备和家电等领域。
其具有结构简单、可靠性高、调速性能好等特点,在控制方面也较为简单。
本文将介绍一种基于51单片机控制直流电机的设计方案。
2.设计原理2.1直流电机控制原理直流电机的转速和转向可以通过调整电机的电流和极性来实现。
通常,通过PWM信号来控制电机的转速,通过电机驱动芯片来控制电机的转向。
2.251单片机51单片机是一种广泛应用的8位单片机,具有强大的计算和控制能力。
其可以通过IO口产生PWM信号,以控制电机的转速,同时还可以通过IO口控制电机驱动芯片的输入信号,实现电机的转向控制。
3.系统设计3.1硬件设计3.1.1主控板设计主控板采用51单片机作为核心控制器,通过IO口输出PWM信号控制电机的转速,并通过IO口输出电机方向控制信号。
主控板还需要提供电源输入、串口通信接口等。
3.1.2电机驱动设计电机驱动采用专用的直流电机驱动芯片,通过控制其输入信号,实现对电机的转向控制。
电机驱动芯片还需要提供输入信号的滤波、保护等功能。
3.2软件设计3.2.1PWM信号生成通过51单片机的定时器/计数器模块,可以生成PWM信号。
根据所需的转速,可以调整定时器的计数周期和占空比,控制PWM信号的频率和占空比。
3.2.2方向控制通过控制51单片机的IO口输出电平,可以控制电机驱动芯片的输入信号,实现电机的正转或反转。
具体的电平和控制方式可通过电机驱动芯片的手册进行确定。
3.3系统测试在完成硬件和软件设计后,需要对整个系统进行测试。
首先可以通过示波器检查PWM信号的频率和占空比是否符合要求;其次,通过改变指令,测试电机的转向控制是否正常工作;最后,可以通过改变PWM信号的占空比,测试电机的转速控制是否准确。
4.结论本文介绍了一种基于51单片机控制直流电机的设计方案,通过生成PWM信号控制电机转速和通过IO口输出电平来控制电机的转向。
基于MCS-51单片机控制直流无刷电动机学号:3100501044班级:电气1002姓名:王辉军摘要直流无刷电机是同步电机的一种,由电动机本体、位置传感器和电子开关线路三部分组成。
其定子绕组一般制成多相(三相、四相、五相不等),转子由永久磁钢按一定极对数(2p=2,4,…)组成。
电机转子的转速受电机定子旋转磁场的速度及转子极数(P)影响:N=120.f / P。
在转子极数固定情况下,改变定子旋转磁场的频率就可以改变转子的转速。
直流无刷电机即是将同步电机加上电子式控制(驱动器),控制定子旋转磁场的频率并将电机转子的转速回授至控制中心反复校正,以期达到接近直流电机特性的方式。
也就是说直流无刷电机能够在额定负载范围内当负载变化时仍可以控制电机转子维持一定的转速。
MCS-51单片机是美国英特尔公司生产的一系列单片机的总称,是一种集成电路芯片,采用超大规模技术把具有数据处理能力的微处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、输入输出接口电路、定时计算器、串行通信口、脉宽调制电路、A/D转换器等电路集成到一块半导体硅片上,这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
本论文将介绍基于MCS-51单片机控制直流无刷电动机的设计,它可以实现控制直流无刷电动机的启动、停止、急停、正反转、加减速等功能。
关键词:单片机,直流无刷电动机,控制系统直流无刷电动机是在直流电动机的基础之上发展而来的,它是步进电动机的一种,继承了直流电动机的启动转矩大、调速性能好等特点克服了需要换向器的缺点在交通工具、家用电器及中小功率工业市场占有重要的地位。
直流无刷电动机不仅在电动自行车、电动摩托车、电动汽车上有着广泛的应用,而且在新一代的空调机、洗衣机、电冰箱、吸尘器,空气净化器等家用电器中也有逐步采用的趋势,尤其是随着微电子技术的发展,直流无刷电动机逐渐占有原来异步电动机变频调速的领域,这就使得直流无刷电动机的应用范围越来越广。
xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:基于51单片机的直流电机控制院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1课程设计的内容和要求 (1)1.2课程设计原理 (1)1.3课程设计思路 (1)1.3.1 提出方案 (1)1.3.2 方案阐述 (2)1.4实验环境 (2)第2章详细设计方案 (3)2.1实现方法 (3)2.2模块设计 (3)2.2.1 主函数模块 (3)2.2.2 外中断模块 (4)2.2.3 数码管显示函数模块 (6)2.3实验箱连线图 (6)第3章结果测试及分析 (8)3.1调试步骤及方法 (8)3.2结果分析 (8)参考文献 (9)附录1(源程序) (10)附录2(电路图) (13)附录3(器件清单) (14)第1章总体设计方案1.1 课程设计的内容和要求(1) 课程设计内容利用MCS-51单片机控制PWM信号从而实现对直流电机转速进行控制,具体内容如下:①能够控制直流电机的正反转;②能够控制电机的加速和减速;③能够控制电机的启动和停止;④直流电机的运行状态,速度等级显示在数码管上。
(2) 设计要求:①立完成课程设计任务;②过老师现场验收;③出完整的课程设计报告。
1.2 课程设计原理根据题目要求通过控制占空比的改变,从而改变直流电机的转速,再将速度的等级显示在数码管上。
用户通过控制查询自定义位变量的改变而控制直流电机启动和停止,又通过两个外中断函数和一个延时函数改变占空比的值,来实现对直流电机的加速和减速。
再选取一个数码管来显示转速的等级。
1.3 课程设计思路1.3.1 提出方案由于是控制PWM信号实现对直流电机的控制,PWM是脉冲宽度调制,产生的方波高电平时间跟周期的比例叫占空比,所以就要用占空比的改变实现电机的加速和减速。
通过调用外中断函数改变方波高电平的时间,再控制周期不变就会使电机的转速改变。