项目描述:
用单片机(STC89C52RC)控制两个直流电机,从而实现各种运动形式。
本例中实现功能为:前进 后退 右转 左转。
C语言程序如下:
/*------------------------------------
FileName: main.c
Function: MCU控制两个直流电机组合运动
Description: 向前 向后 右转 左转
Author: Zhang Kaizhou
Date: 2019-6-9 17:28:42
------------------------------------*/
#include "ZKZ.h"
bit dirFlag = 0; // 前进方向标志 0-向前 1-向后
bit turnFlag = 0; // 转向方向标志 0-向右 1-向左
void main(){
while(1){
keyScan();
motorRun();
}
}
/*软件延时xms函数*/
void delay(uchar xms){
uchar i, j;
for(i = xms; i > 0; i--)
for(j = 110; j > 0; j--);
}
/*键盘扫描函数*/
void keyScan(){
if(!goAhead){
delay(5);
if(!goAhead){
while(!goAhead);
dirFlag = 0;
}
}
if(!goBack){
delay(5);
if(!goBack){
while(!goBack);
dirFlag = 1;
}
}
if(!turnRight){
delay(5);
if(!turnRight){
while(!turnRight);
turnFlag = 0;
}
}
if(!turnLeft){
delay(5);
if(!turnLeft){
while(!turnLeft);
turnFlag = 1;
}
}
}
/*直流电机运转函数*/
void motorRun(){
if(!dirFlag){
MLEn = 1;
ML1 = 1;
ML2 = 0;
MREn = 1;
MR1 = 1;
MR2 = 0;
}else{
MLEn = 1;
ML1 = 0;
ML2 = 1;
MREn = 1;
MR1 = 0;
MR2 = 1;
}
if(!turnFlag){
MLEn = 1;
MREn = 0;
}else{
MLEn = 0;
MREn = 1;
}
}
/*------------------------------------
FileName: ZKZ.h
Function: MCU控制两个直流电机组合运动
Description: 向前 向后 右转 左转
Author: Zhang Kaizhou
Date: 2019-6-9 17:28:42
------------------------------------*/
#include #define uchar unsigned char
#define uint unsigned int
/*直流电机驱动模块端口定义*/
sbit MLEn = P1^4; // 左边电机驱动端口
sbit ML1 = P1^2;
sbit ML2 = P1^3;
sbit MREn = P1^5; // 右边电机驱动端口
sbit MR1 = P1^6;
sbit MR2 = P1^7;
/*独立按键端口定义*/
sbit goAhead = P3^4; // 向前
sbit goBack = P3^5; // 向后
sbit turnRight = P3^6; // 向右转
sbit turnLeft = P3^7; // 向左转
/*主模块函数声明*/
void delay(uchar xms);
void keyScan();
void motorRun();
关键字:单片机控制 直流电机
引用地址:
单片机控制直流电机从而实现各种运动组合
推荐阅读最新更新时间:2024-11-07 23:00
无刷直流电机控制系统的设计方案
1.引言 $无刷直流电机(Brushless DC Motor,以下简称BLDCM)是随着电力电子技术及新型永磁材料的发展而迅速成熟起来的一种新型电机。以其启动转矩大、调速性能好、效率高、过载能力强、性能稳定、控制结构简单等优点,同时还保留了普通直流电机优良的机械特性,广泛应用于伺服控制、数控机床、机器人等领域。
随着BLDCM应用领域的不断扩大,对控制系统设计提出了更高的要求。为此,建立BLDCM控制系统的可视化仿真模型,可以有效的减少控制系统的设计时间,同时充分利用Simulink仿真的优越性,加入不同的扰动以及变化的参数,以便考察系统在不同控制条件下的动、静态特性。在分析了BLDCM数学模型的基础上,借助MATLAB的Si
[嵌入式]
微型无刷直流电机的无位置传感器控制
0 引言 在一些应用场合要求使用的电机体积小、效率高、转速高,微型永磁无刷直流电机能够较好地满足要求。因为电机体积较小,安装位置传感器困难,所以微型无刷直流电机的无位置传感器控制就显得尤为必要。 无刷直流电机的无位置传感器控制的难点在于转子位置信号的检测,目前国内外研究人员提出了诸多方法,其中反电动势法最为简单、可靠,应用范围最广泛。普遍采用的控制方案为基于DSP的控制和基于专用集成电路的控制等,但是其价格高、体积大,不利于用在微型电机控制器中。本文介绍基于C8051F330单片机、检测反电动势法的无位置传感器无刷直流电机的控制器,系统结构简单,体积超小型,价格低廉,运行性能良好。 1 无传感器无刷直流电机的控制方式
[工业控制]
基于AT89C51单片机控制LED显示屏的电路设计
LED显示屏广泛应用于工矿企业、学校、商场、店铺、公共场所等进行图文显示,广告宣传,信息发布。本文设计一种由4个16×16点阵LED模块组成的显示屏,由单片机作控制器,平滑移动显示任意多个文字或图形符号,本电路可级联扩展实现由任意多个16×16点阵LED模块组成的显示屏。 1 电路设计 控制电路由AT89C51单片机作控制器,显示屏由4个16×16点阵LED模块组成,每个16×16点阵LED模块由4个8×8点阵LED模块组成,用户可根据需要扩展增加任意多个16×16点阵LED模块。8×8点阵LED模块结构如图1所示,共8行8列,每个发光二极管放置在行线和列线的交叉点上,共64个发光二极管。当某一列为高电平,某一行为低电平时,则
[单片机]
单片机控制多个步进电机C语言程序设计
//程序说明:烧好程序,连接好控制线(步进电机1的控制线I1-I4连接到P2.0-P2.3,步进电机2的控制线I1-I4连接 // 到P2.4-P2.7。按S19可控制步进电机1的转动停止、加减速和正反转,按S20可控制步进电机2的转动停 // 止、加减速和正反转。 //**************************************************************************************************************** #include reg51.h //#include stdio.h sbit A1=P2^0; //步进电机1输出脚定义 sbi
[单片机]
基于51单片机控制可上下楼的电梯proteus仿真及程序
基于51单片机控制的可上下楼的电梯 仿真原理图如下: 单片机源程序如下: #include reg51.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar code table ={0x3f,0x06,0x5b,0x4f}; uchar num,temp,busy,flag,uf,df,ref,now,next,setf,floor; uint tn; sbit start=P1^0; sbit F1=P1^1; sbit F2=P1^2; sbit F3=P1^3; sbit UPI=P1^4; sbit DN
[单片机]
单片机PWM输出控制直流电机(89c51系列、stc12c5a60s2系列)
【pwm是如何控制电机转速】 在本科学习中,学生所做的小车多数为使用lm298n或者tb6612来驱动简单的直流电机,我们需要单片机输出pwm波来控制直流电机转速。 直流电机的PWM调速原理为:通过调节驱动电压脉冲宽度的方式,并与电路中一些相应的储能元件配合,改变了输送到电枢电压的幅值,从而达到改变直流电机转速的目的。 【89C51系列单片机产生pwm波】 89c51单片机没有自带pwm发生器,如果想要使用传统的51单片机产生pwm,只能通过软件模拟的方法来产生pwm。 软件模拟可以分为软件延时和定时器两种方法。 1、软件延时输出pwm 使用延时函数产生频率为1kHz的pwm方波(@12MHz晶振) #in
[单片机]
直流电机伺服驱动专用电源的设计
概述 该设计以DC-DC变换器为核心,实现220V市电至+60V/20A的电源转换。电源设计中采用功率因数校正技术,提高了有功功率;特别是电源设计了微机控制接口,与随动系统同步工作,并实现了上电时序控制,确保+60V电压相对低压输出滞后上电。采用多重滤波措施和双绞线输出方式,有效降低输出电压纹波,提高电源输出质量;具备完善的自保护功能和监控检测功能,提高了电源的安全性和可靠性。 电源设计 系统结构 220V交流电压经整流和滤波后得到320V左右的直流电压,加至电源模块输入端。单DC-DC模块的最高输出电压一般为+48V,要得到+60V的直流输出电压,必须采用模块串联的方法得到。设计采用两块PH600S280-28
[电源管理]
基于MCU的直流电机测试系统设计
1.系统的整体设计 本系统用于测试直流电机控制器的功能和性能。测试内容主要包括测试控制器的电流 值、速度值和PWM 输出的波形变化等。测试系统采集到这些值后,通过串口发送给PC 方显示,能够方便用户监看、分析。本系统可以实现测试直流串励电机控制器和直流他励电机控制器的性能和功能。 本测试系统硬件系统部分由主控芯片 MC68HC908GP32 最小系统电路、电源转换电路、 SCI 通信电路、光电隔离控制电路、A/D 转换电路和继电器驱动电路等部分组成。该系统能对多种模拟量进行采集,通过信号转换电路转换为0-5V 的电压信号,再将电压信号送入A/D 转换电路,实现数据的采集。为了节约I/O 口,本系统的A/D 转换芯片采用
[单片机]