智能小车电机驱动代码电路

智能小车电机驱动代码电路
智能小车电机驱动代码电路

驱动两路电机,可以实现电机的正转,反转,开始,停止,左拐,右拐,加速,减速。

代码

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit ma1=P2^5; //电机控制位

sbit mb1=P2^4;

sbit pwm1=P2^6;

sbit key1=P3^0; //减速

sbit key2=P3^1; //加速

sbit key3=P3^2; //前进后退

sbit key4=P3^3; //停止

sbit key5=P3^4; //左拐

sbit key6=P3^5; //右拐

sbit ma2=P2^2;

sbit mb2=P2^1;

sbit pwm2=P2^3; //占空比控制位

bit flag=0,flag0=0,flag1=0,flag2=0; //电机转动控制标志位。

uchar num=0;

void delay(uchar xms) //简单的延时

uint i;

uchar j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void turn_around() //电机转动占空比控制函数{

pwm1=0;

pwm2=0;

delay(num);

pwm1=1;

pwm2=1;

delay(100-num);

}

void Rotational_mode() //电机转动模式选择,正转,反转,停止,开启

{

if(flag0==0)

{

if(flag==0) //flag用来控制电机的正反转,flag=0时电机正转,否则电机反转。

{

ma1=1;

ma2=1;

mb1=0;

mb2=0;

}

else

{

ma1=0;

ma2=0;

mb1=1;

mb2=1;

}

}

else //电机停止控制

{

ma1=0;

ma2=0;

mb1=0;

mb2=0;

}

}

void turn_left() //电机左转,使两个电机的占空比不同,电机就会有不同的转动模式。

{

pwm1=0;

pwm2=1;

delay(60);

pwm1=1;

pwm2=0;

delay(40);

}

void turn_right() //电机右转{

pwm1=0;

pwm2=1;

delay(40);

pwm1=1;

pwm2=0;

delay(60);

}

void keyscan() //按键检测部分

{

if(key1==0)

{

delay(5);

if(key1==0) //key1按下后,num++,电机减速。

{

while(!key1);

num+=20;

if(num>100)

num=100;

flag1=0;

flag2=0;

}

}

if(key2==0)

{

delay(5);

if(key2==0) //key2按下后,num--,电机加速。

while(!key2);

num-=20;

if(num<0)

num=0;

flag1=0;

flag2=0;

}

}

if(key3==0)

{

delay(5);

if(key3==0) //key3按下后,flag的值发生改变,从而,改变电机的转动放向。

{

while(!key3);

flag=~flag;

flag1=0;

flag2=0;

}

if(key4==0)

{

delay(5);

if(key4==0) //key4按下后电机停止工作,再次按下后电机开始工作。

{

while(!key4);

flag0=~flag0;

flag1=0;

flag2=0;

}

}

if(key5==0)

{

delay(5); //key5按下后电机左转。

if(key5==0)

{

while(!key5);

flag1=1; //flag1=1,按左转模式转动。

flag2=0;

}

}

if(key6==0)

{

delay(5); //key6按下后电机右转。

if(key6==0)

{

while(!key6);

flag2=1;

flag1=0; //flag2=1,按右转模式转动。然后每次按按完key5和key6后,

//要保证flag1,flag2都复位为0,因此每次有键按下后,

// 都有flag1,flag2为0。

}

}

}

void main()

{

// EA=1; //定时器的控制语句。// ET0=1;

// TMOD=0X01;

// TH0=-50000/256;

// TL0=-50000%256;

// TR0=1;

while(1)

{

keyscan();

Rotational_mode();

if(flag1==0&&flag2==0)

{

turn_around();

}

else if(flag1==1)

{

turn_left();

}

else if(flag2==1)

{

turn_right();

}

}

}

//void timer_0() interrupt 1 //定时器中断用来控制PWM的输出。

//{

// TH0=-50000/256;

// TL0=-50000%256;

// if(flag==0) //flag用来控制电机的正反转,flag=0时电机正转,否则电机反转。

// {

// ma1=1;

// ma2=1;

// mb1=0;

// mb2=0;

// }

// else

// {

//

// ma1=0;

// ma2=0;

// mb1=1;

// mb2=1;

// }

// pwm1=0;

// pwm2=0;

// delay(num);

// pwm1=1;

// pwm2=1;

// delay(100-num); //}

智能小车单片机课程设计报告

题目: 智能小车设计 打开命令行终端的快捷方式: ctr+al+t:默认的路径在家目录 ctr+shift+n:默认的路径为上一次终端所处在的路径. linux@ubuntu:~$ linux:当前登录用户名. ubuntu:主机名 :和$之间:当前用户所处在的工作路径. windows下的工作路径如C:\Intel\Logs linux下的工作路径是:/.../..../ ~:代表的是/home/linux这个路径.(家目录). ls(list):列出当前路径下的文件名和目录名. ls -a(all):列出当前路径下的所有文件和目录名,包括了隐藏文件. .:当前路径 ..:上一级路径 ls -l:以横排的方式列出文件的详细信息 total 269464(当前这个路径总计所占空间的大小,单位是K) drwxr-xr-x 3 linux linux 4096 Dec 4 19:16 Desktop 第一个位置:代表的是文件的类型. linux系统下的文件类型有以下几种. b:块设备文件 c:字符设备文件 d:directory,目录 -:普通文件. l:连接文件. s:套接字文件. p:管道文件. rwxr-xr-x:权限 r:读权限-:没有相对应的权限 w:写权限

x:可执行权限 修改权限: chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名 第一组:用户权限 第二组:用户组的权限 第三组:其他用户的权限. chmod 三个数(权限) 文件名 首先根据你想要的权限生成二进制数,再根据二进制数转换成十进制的三位数 rwxr-x-wx 111101011 7 5 3 chmod 753 文件名 rwx--xr-x 第二个位置上的数字:对应目录下的子文件个数,如果是非目录,则数字是1 第三个位置:用户名(文件创造者). 第四个位置:用户组的名字(前边的用户所处在的用户组的名字). 第五个位置:对应文件所占的空间大小(单位为b) 第六~八个位置:Dec 4 19:16时间戳(最后一次修改文件的时间) 最后一个位置:文件名 操作文件: 1.创建一个普通文件:touch 文件名 2.删除一个文件:rm(remove) 文件名 3.新建一个目录:mkdir(make directory) 目录名 递归创建目录:mkdir -p 目录1/目录2/目录3 4.删除一个目录:rmdir 目录名.//仅删除一个空目录 rm -rf 目录名//删除一个非空目录 5.切换目录(change directory):cd 路径 linux下的路径分两种 相对路径:以.(当前路径)为起点. 绝对路径:以/(根目录)为起点, 用相对路径的方式进入Music:cd ./Music 用绝对路径的方式进入Desktop:cd /home/linux/Desktop 返回上一级:cd ..

步进电机驱动电路设计

步进电机驱动电路设计 摘要 随着数字化技术发展,数字控制技术得到了广泛而深入的应用。步进电机是一种将数字信号直接转换成角位移或线位移的控制驱动元件, 具有快速起动和停止的特点。因为步进电动机组成的控制系统结构简单,价格低廉,性能上能满足工业控制的基本要求,所以广泛地应用于手工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,投影仪、数码摄像机、大型望远镜、卫星天线定位系统、医疗器件以及各种可控机械工具等等。直流电机广泛应用于计算机外围设备( 如硬盘、软盘和光盘存储器) 、家电产品、医疗器械和电动车上, 无刷直流电机的转子都普遍使用永磁材料组成的磁钢, 并且在航空、航天、汽车、精密电子等行业也被广泛应用。在电工设备中的应用,除了直流电磁铁(直流继电器、直流接触器等)外,最重要的就是应用在直流旋转电机中。在发电厂里,同步发电机的励磁机、蓄电池的充电机等,都是直流发电机;锅炉给粉机的原动机是直流电动机。此外,在许多工业部门,例如大型轧钢设备、大型精密机床、矿井卷扬机、市内电车、电缆设备要求严格线速度一致的地方等,通常都采用直流电动机作为原动机来拖动工作机械的。直流发电机通常是作为直流电源,向负载输出电能;直流电动机则是作为原动机带动各种生产机械工作,向负载输出机械能。在控制系统中,直流电机还有其它的用途,例如测速电机、伺服电机等。他们都是利用电和磁的相互作用来实现向机械能能的转换。 介绍了步进电机和直流电机原理及其驱动程序控制控制模块,通过AT89S52单片机及脉冲分配器(又称逻辑转换器) L298完成步进电机和直流电机各种运行方式的控制。实现步进电机的正反转速度控制并且显示数据。整个系统采用模块化设计,结构简单、可靠,通过按键控制,操作方便,节省成本。 关键词:步进电机,单片机控制,AT89S52,L297,L298目录

机器人智能小车电机选择直流电机 步进电机 舵机

常用于机器人的电机有直流电机,步进电机,伺服电机。 直流电机:用于驱动机器人的移动,加上电源后,电机将一直转动,颠倒电机的电源和地线就会改变电机的转动方向。价格便宜,适用于大多数机器人应用。 点击参见:直流电机的H桥驱动原理和驱动电路选择 步进电机:也是直流电机的一种,步进电机内部有多个线圈,同时给一个或两个线圈加电,电机将转过一定的角度,要想电机连续转动,就要依次给给个线圈加电,加电的过程就是给电机施加 脉冲电流的过程。改变脉冲的频率就改变了电机的转速,改变施加脉冲的顺序就改变了电 机的转动方向。用于机器人需要位置控制的场合,如机械臂。 点击参见:步进电机的驱动原理和驱动电路 步进电机分类和选择 伺服电机:一个连续转动的直流电机,加一个闭环反馈控制的回路,以实现精确的位置控制。舵机即是伺服电机的一种,常用于飞机模型中用于转向控制。可用于驱动机器人的腿,手臂,头部和 其他肢体。 点击参见:数码舵机的原理与故障分析 点击参见:舵机的原理与单片机的控制

电机的技术参数 1、电机的电压 电压是选择直流电机的一个重要参数,小型的趣味机器人用的直流电机一般为1.5v-6v, 在这个电压范围内电机都可以工作,电压越高,转速越高。也有采用固定电压的高质量的电 机,如12V,24V直流电机。一般情况下电机都可以在高于或低于其工作电压的情况下 运行,如12V电机,可以在8v下工作,但转速降低,输出转矩变小,电机无力。如果长 时间在高于其工作电压30%-40%的电压下工作,电机线圈会发热,可能使电机永久 损坏。 2、电机的电流 空载电流:指电机不加轮胎及其他任何负载的情况下的电流。 负载电流:指加上轮胎,和其他重物下电机工作的电流。 通常空载的电流很小,负载电流是其实际工作的电流,是选择驱动电路的依据。当电机的负 载超过了电机所能承受的最大值时,电机将停止转动,电流不再增加,这就是堵转。 3、电机的转速 指的是电机的主轴每分钟转过的转数。单位为转数/分钟(r/min),机器人需要的电机转速 一般在100-200转每分钟,甚至更低的转数,而一般的直流电机的转速在4000~7000转每 分钟,无法直接在机器人上使用,必须经过降速。可以自己设计齿轮比来降速,也可以采用 现成的减速齿轮箱。 4、转矩 就是电机能够带动多大的负载,转矩越大电机越有劲。额定转矩:电机在正常工作下能够驱动负载的大小。测量方法是在电机轴上固定一个杠杆,杠杆上挂上重物,让电机带动重物旋转。 单位为g/cm,单位厘米所能带动的重物克数越大,转矩也就越大。 文章网址: https://www.360docs.net/doc/8e8650110.html,/wqb_lmkj/blog/item/41249a100292d2195aaf5394.html?timeStamp=1316176239437

直流电机驱动电路设计

直流电机驱动电路设计 一、直流电机驱动电路的设计目标 在直流电机驱动电路的设计中,主要考虑一下几点: 1. 功能:电机是单向还是双向转动?需不需要调速?对于单向的电机驱动,只要用一个大功率三极管或场效应管或继电 器直接带动电机即可,当电机需要双向转动时,可以使用由4个功率元件组成的H桥电路或者使用一个双刀双掷的继电器。 如果不需要调速,只要使用继电器即可;但如果需要调速,可以使用三极管,场效应管等开关元件实现PWM(脉冲宽度调制)调速。 2. 性能:对于PWM调速的电机驱动电路,主要有以下性能指标。 1)输出电流和电压范围,它决定着电路能驱动多大功率的电机。 2)效率,高的效率不仅意味着节省电源,也会减少驱动电路的发热。要提高电路的效率,可以从保证功率器件的开关工作状态和防止共态导通(H桥或推挽电路可能出现的一个问题,即两个功率器件同时导通使电源短路)入手。 3)对控制输入端的影响。功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电路,这可以用高的输入阻抗或者光电耦合器实现隔离。 4)对电源的影响。共态导通可以引起电源电压的瞬间下降造成高频电源污染;大的电流可能导致地线电位浮动。 5)可靠性。电机驱动电路应该尽可能做到,无论加上何种控制信号,何种无源负载,电路都是安全的。 二、三极管-电阻作栅极驱动

1.输入与电平转换部分: 输入信号线由DATA引入,1脚是地线,其余是信号线。注意1脚对地连接了一个2K欧的电阻。当驱动板与单片机分别供电时,这个电阻可以提供信号电流回流的通路。当驱动板与单片机共用一组电源时,这个电阻可以防止大电流沿着连线流入单片机主板的地线造成干扰。或者说,相当于把驱动板的地线与单片机的地线隔开,实现“一点接地”。 高速运放KF347(也可以用TL084)的作用是比较器,把输入逻辑信号同来自指示灯和一个二极管的2.7V基准电压比较,转换成接近功率电源电压幅度的方波信号。KF347的输入电压范围不能接近负电源电压,否则会出错。因此在运放输入端增加了防止电压范围溢出的二极管。输入端的两个电阻一个用来限流,一个用来在输入悬空时把输入端拉到低电平。 不能用LM339或其他任何开路输出的比较器代替运放,因为开路输出的高电平状态输出阻抗在1千欧以上,压降较大,后面一级的三极管将无法截止。 2.栅极驱动部分: 后面三极管和电阻,稳压管组成的电路进一步放大信号,驱动场效应管的栅极并利用场效应管本身的栅极电容(大约 1000pF)进行延时,防止H桥上下两臂的场效应管同时导通(“共态导通”)造成电源短路。 当运放输出端为低电平(约为1V至2V,不能完全达到零)时,下面的三极管截止,场效应管导通。上面的三极管导通,场效应管截止,输出为高电平。当运放输出端为高电平(约为VCC-(1V至2V),不能完全达到VCC)时,下面的三极管导通,场效

STM32智能小车主程序

//#include "delay.h" #include "usart1.h" //#include "remote.h" #include "PWM_OUT.h" //#include "Ultrasonic.h" #include "esp8266.h" #include "usart3.h" #include "HXD.h" #include "main.h" int main(void) { u16 i=0,x; u16 k,j; SystemInit(); USART1_Init();//串口1初始化 USART3_Init();//串口3初始化用于WIFI USART1_ONOFF(1); USART3_ONOFF(1); // Remote_Init();//初始化红外接收 // ULT_Init();//超声波初始化 HXD_Init(); PWM_Init();//初始化PWM(电机) WiFi_Init(); x=0; i=300; while(1) { USART_Work(); PWM_MoTo_Work(); huxiLED(i);

for (k=0;k<720;k++) { for(j=0;j<100;j++); } if((i>0)&&(x==0)){ i++; if(i==800)//灭 x=1; } if((i<801)&&(x==1)) { i--; if(i==500)// 亮 x=0; } // if(i>10) i=10; // if(Remote_Rdy)//处理红外遥控// { // // Remote_Work(); // } // if(PWM_Rdy)//处理电机PWM // { // PWM_MoTo_Work(); // } } }

直流电机驱动电路设计

应用越来越广泛的直流电机,驱动电路设计 Source:电子元件技术| Publishing Date:2009-03-20 中心论题: ?在直流电机驱动电路的设计中,主要考虑功能和性能等方面的因素 ?分别介绍几种不同的栅极驱动电路并比较其性能优缺点 ?介绍PWM调速的实现算法及硬件电路 ?介绍步进电机的驱动方案 解决方案: ?根据实际电路情况以及要求仔细选择驱动电路 ?使用循环位移算法及模拟电路实现PWM调速 ?对每个电机的相应时刻设定相应的分频比值,同时用一个变量进行计数可实现步进电机的分频调速 直流电机驱动电路的设计目标 在直流电机驱动电路的设计中,主要考虑一下几点: 功能:电机是单向还是双向转动?需不需要调速?对于单向的电机驱动,只要用一个大功率三极管或场效应管或继电器直接带动电机即可,当电机需要双向转动时,可以使用由4个功率元件组成的H桥电路或者使用一个双刀双掷的继电器。如果不需要调速,只要使用继电器即可;但如果需要调速,可以使用三极管,场效应管等开关元件实现PWM(脉冲宽度调制)调速。 性能:对于PWM调速的电机驱动电路,主要有以下性能指标。 1。输出电流和电压围,它决定着电路能驱动多大功率的电机。 2。效率,高的效率不仅意味着节省电源,也会减少驱动电路的发热。要提高电路的效率,可以从保证功率器件的开关工作状态和防止共态导通(H桥或推挽电路可能出现的一个问题,即两个功率器件同时导通使电源短路)入手。 3。对控制输入端的影响。功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电路,这可以用高的输入阻抗或者光电耦合器实现隔离。

4。对电源的影响。共态导通可以引起电源电压的瞬间下降造成高频电源污染;大的电流可能导致地线电位浮动。 5。可靠性。电机驱动电路应该尽可能做到,无论加上何种控制信号,何种无源负载,电路都是安全的。 三极管-电阻作栅极驱动 1.输入与电平转换部分: 输入信号线由DATA引入,1脚是地线,其余是信号线。注意1脚对地连接了一个2K欧的电阻。当驱动板与单片机分别供电时,这个电阻可以提供信号电流回流的通路。当驱动板与单片机共用一组电源时,这个电阻可以防止大电流沿着连线流入单片机主板的地线造成干扰。或者说,相当于把驱动板的地线与单片机的地线隔开,实现“一点接地”。 高速运放KF347(也可以用TL084)的作用是比较器,把输入逻辑信号同来自指示灯和一个二极管的2。7V 基准电压比较,转换成接近功率电源电压幅度的方波信号。KF347的输入电压围不能接近负电源电压,否则会出错。因此在运放输入端增加了防止电压围溢出的二极管。输入端的两个电阻一个用来限流,一个用来在输入悬空时把输入端拉到低电平。

智能小车源代码

#include 令狐采学 #include //#include"lcd.h" sbit TX=P2^7; sbit RX=P2^6; sbit PWM=P1^4; sbit Beep=P3^7; sbit led1=P3^3; sbit led2=P3^4; sbit led3=P3^5; /***********蓝牙切换按键**********/ sbit k1=P3^6; /***自定义一些数据,注意这些数据对应“51智能车蓝牙无线遥控.exe”软件上的数据设置**/ #define leftdata 0x11 #define rightdata 0x22 #define forwarddata 0x33 #define backdata 0x44 #define stopdata 0x55 #define uchar unsigned char #define uint unsigned int

unsigned char receiveData,high_velosity,low_velosity; void UsartConfiguration(); /***********电机端口定义************************/ sbit IN1=P1^0; //为高电平时,左电机后转sbit IN2=P1^1; //为高电平时,左电机正转sbit IN3=P1^2; //为高电平时,右电机正转sbit IN4=P1^3; //为高电平时,右电机后转 /**************无线遥控模块定义****************/ sbit Key_A = P2^0; //B键信号端对应D0 sbit Key_B = P2^1; //D键信号端对应D1 sbit Key_C = P2^2; //C键信号端对应D2 sbit Key_D = P2^3; //C键信号端 void delay0(int a); void delay15us(void); void delay1ms(int z); void di(); //蜂鸣器函数声明 unsigned int time;//用于存放定时器时间值unsigned int S; //用于存放距离的值 char flag =0; //量程溢出标志位 char f1,f2,f3,f4,n0; int a; int n;//运行次数判断标志 int s_left,s_right;

步进电机驱动电路设计

https://www.360docs.net/doc/8e8650110.html,/gykz/2010/0310/article_2772.html 引言 步进电机是一种将电脉冲转化为角位移的执行机构。驱动器接收到一个脉冲信号后,驱动步进电机按设定的方向转动一个固定的角度。首先,通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;其次,通过控制脉冲顿率来控制电机转动的速度和加速度,从而达到涮速的目的。目前,步进电机具有惯量低、定位精度高、无累积误差、控制简单等特点,在机电一体化产品中应用广泛,常用作定位控制和定速控制。步进电机驱动电路常用的芯片有l297和l298组合应用、3977、8435等,这些芯片一般单相驱动电流在2 a左右,无法驱动更大功率电机,限制了其应用范围。本文基于东芝公司2008年推出的步进电机驱动芯片tb6560提出了一种步进电机驱动电路的设计方案 1步进电机驱动电路设计 1.1 tb6560简介 tb6560是东芝公司推出的低功耗、高集成两相混合式步进电机驱动芯片。其主要特点有:内部集成双全桥mosfet驱动;最高耐压40 v,单相输出最大电流3.5 a(峰值);具有整步、1/2、1/8、1/16细分方式;内置温度保护芯片,温度大于150℃时自动断开所有输出;具有过流保护;采用hzip25封装。tb6560步进电机驱动电路主要包括3部分电路:控制信号隔离电路、主电路和自动半流电路。 1.2步进电机控制信号隔离电路 步进电机控制信号隔离电路如图1所示,步进电机控制信号有3个(clk、cw、enable),分别控制电机的转角和速度、电机正反方向以及使能,均须用光耦隔离后与芯片连接。光耦的作用有两个:首先,防止电机干扰和损坏接口板电路;其次,对控制信号进行整形。对clk、cw信号,要选择中速或高速光耦,保证信号耦合后不会发生滞后和畸变而影响电机驱动,且驱动板能满足更高脉冲频率驱动要求。本设计中选择2片6n137高速光耦隔离clk、cw,其信号传输速率可达到10 mhz,1片tlp521普通光耦隔离enable信号。应用时注意:光耦的同向和反向输出接法;光耦的前向和后向电源应该是单独隔离电源,否则不能起到隔离干扰的作用。

智能循迹小车详细制作过程

(穿山乙工作室)三天三十元做出智能车 基本设计思路: 1.基本车架(两个电机一体轮子+一 个万向轮) 2.单片机主控模块 3.电机驱动模块(内置5V电源输出) 4.黑白线循迹模块 0.准备所需基本元器件 1).基本二驱车体一台。(本课以穿山乙推出的基本车体为 例讲解) 2).5x7cm洞洞板、单片机卡槽、51单片机、石英晶体、红 色LED、1K电阻、10K排阻各一个;2个瓷片电容、排针40 个。 3).5x7cm洞洞板、7805稳压芯片、红色LED、1K电阻各一 个;双孔接线柱三个、10u电解电容2个、排针12个、9110 驱动芯片2个。 4).5x7cm洞洞板、LM324比较器芯片各一个;红外对管三 对、4.7K电阻3个、330电阻三个、红色3mmLED三个。 一、组装车体

(图中显示的很清晰吧,照着上螺丝就行了) 二、制作单片机控制模块 材料:5x7cm洞洞板、单片机卡槽、51单片机、石英晶体、红色LED、1K电阻、10K排阻各一个;2个瓷片电容、排针40个。 电路图如下,主要目的是把单片机的各个引脚用排针引出来,便于使用。我们也有焊接好的实物图供你参考。(如果你选用的是STC98系列的单片机在这里可以省掉复位电路不焊,仍能正常工作。我实物图中就没焊复位)

三、制作电机驱动模块 材料:5x7cm洞洞板、7805稳压芯片、红色LED、1K电阻各一个;双孔接线柱三个、10u电解电容2个、排针12个、9110驱动芯片2个。 电路图如下,这里我们把电源模块与驱动模块含在了同一个电路板上。因为电机驱动模块所需的电压是+9V左右(6—15V 均可),而单片机主控和循迹模块所需电压均为+5V。 这里用了一个7805稳压芯片将+9V电压稳出+5V电压。

步进电机控制驱动电路设计.

实习名称:电子设计制作与工艺实习 学生姓名:周文生 学号:201216020134 专业班级:T-1201 指导教师:李文圣 完成时间: 2014年6月13日 报告成绩:

步进电机控制驱动电路设计 摘要: 本设计在根据已有模电、物电知识的基础上,用具有置位,清零功能的JK 触发器74LS76作为主要器件来设计环行分配器,来对555定时器产生的脉冲进行分配,通过功率放大电路来对步进电机进行驱动,并且产生的脉冲的频率可以控制,从而来控制步进电机的速度,环形分配器中具有复位的功能,在对于异常情况可以按复位键来重新工作。 关键字:555定时器脉冲源环行分配器功率放大电路 一、方案论证与比较: (一)脉冲源的方案论证及选择: 方案一:采用555定时器产生脉冲,它工作频率易于改变从而可以控制步进电机的速度并且工作可靠,简单易行。 C2 10uF 图一 555定时器产生的方法 方案二:采用晶振电路来实现,晶振的频率较大,不利于电机的工作,易失步,我们可以利用分频的方法使晶振的频率变小,可以使电机工作稳定,但分频电路较复杂,并且晶振起振需要一定的条件,不好实现。

X1 1kohm 1kohm 图二晶振产生脉冲源电路 综上所述,我们采用方案一来设计脉冲源。 (二)环形分配器的设计: 方案一:采用74ls194通过送入不同的初值来进行移位依此产生正确的值使步进电机进行转动。但此方案的操作较复杂,需要每次工作时都要进行置位,正反转的操作较复杂,这里很早的将此方案放弃。 方案二:使用单独的JK 触发器来分别实现单独的功能。 图三双三拍正转 图四单三拍正转

图五三相六拍正转 利用单独的做,电路图较简单,单具体操作时不方便,并且不利于工程设计。块分的较零散,无法统一。 方案三:利用JK触发器的自己运动时序特性设计,利用卡诺图来进行画简。 图六单,双三拍的电路图 单,双三拍的正,反转主要由键s1,s2的四种状态来决定四种情况的选择。

智能小车源代码

#include #include //#include"lcd.h" sbit TX=P2^7; sbit RX=P2^6; sbit PWM=P1^4; sbit Beep=P3^7; sbit led1=P3^3; sbit led2=P3^4; sbit led3=P3^5; /***********蓝牙切换按键**********/ sbit k1=P3^6; /***自定义一些数据,注意这些数据对应“51智能车蓝牙无线遥控.exe”软件上的数据设置**/ #define leftdata 0x11 #define rightdata 0x22 #define forwarddata 0x33 #define backdata 0x44 #define stopdata 0x55 #define uchar unsigned char #define uint unsigned int unsigned char receiveData,high_velosity,low_velosity; void UsartConfiguration(); /***********电机端口定义************************/ sbit IN1=P1^0; //为高电平时,左电机后转 sbit IN2=P1^1; //为高电平时,左电机正转 sbit IN3=P1^2; //为高电平时,右电机正转 sbit IN4=P1^3; //为高电平时,右电机后转 /**************无线遥控模块定义****************/ sbit Key_A = P2^0; //B键信号端对应D0 sbit Key_B = P2^1; //D键信号端对应D1 sbit Key_C = P2^2; //C键信号端对应D2 sbit Key_D = P2^3; //C键信号端 void delay0(int a); void delay15us(void); void delay1ms(int z); void di(); //蜂鸣器函数声明

较大功率直流电机驱动电路的设计方案

1 引言 直流电机具有优良的调速特性,调速平滑、方便、调速范围广,过载能力强,可以实现频繁的无级快速启动、制动和反转,能满足生产过程中自动化系统各种不同的特殊运行要求,因此在工业控制领域,直流电机得到了广泛的应用。 许多半导体公司推出了直流电机专用驱动芯片,但这些芯片多数只适合小功率直流电机,对于大功率直流电机的驱动,其集成芯片价格昂贵。基于此,本文详细分析和探讨了较大功率直流电机驱动电路设计中可能出现的各种问题,有针对性设计和实现了一款基于25D60-24A 的直流电机驱动电路。该电路驱动功率大,抗干扰能力强,具有广泛的应用前景。 2 H 桥功率驱动电路的设计 在直流电机中,可以采用GTR 集电极输出型和射极输出性驱动电路实现电机的驱动,但是它们都属于不可逆变速控制,其电流不能反向,无制动能力,也不能反向驱动,电机只能单方向旋转,因此这种驱动电路受到了很大的限制。对于可逆变速控制, H 桥型互补对称式驱动电路使用最为广泛。可逆驱动允许电流反向,可以实现直流电机的四象限运行,有效实现电机的正、反转控制。而电机速度的控制主要有三种,调节电枢电压、减弱励磁磁通、改变电枢回路电阻。三种方法各有优缺点,改变电枢回路电阻只能实现有级调速,减弱磁通虽然能实现平滑调速,但这种方法的调速范围不大,一般都是配合变压调速使用。因此在直流调速系统中,都是以变压调速为主,通过PWM(Pulse Width Mo dulation)信号占空比的调节改变电枢电压的大小,从而实现电机的平滑调速。 2.1 H 桥驱动原理 要控制电机的正反转,需要给电机提供正反向电压,这就需要四路开关去控制电机两个输入端的电压。当开关S1 和S4 闭合时,电流从电机左端流向电机的右端,电机沿一个方向旋转;当开关S2 和S3 闭合时,电流从电机右端流向电机左端,电机沿另一个方向旋转, H 桥驱动原理等效电路图如图1 所示。

智能小车-电机使用

L298N模块介绍 L298N是专用驱动集成电路,属于H桥集成电路,与L293D的差别是其输出电流增大,功率增强。其输出电流为2A,最高电流4A,最高工作电压50V,可以驱动感性负载,如大功率直流电机,(二相、三相、四相)步进电机,伺服电机,电磁阀等,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。当驱动直流电机时,可以直接控制两路电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。 本模块具有体积小,控制方便的特点。采用此模块定会使您的电机控制自如,可以应对需要大功率直流电机的题目。 直流电机使用说明: 板上的EN1与EN2为高电平时有效,只有当EN1与EN2为高电平时,电机才旋转,否则电机不转,这里的电平指的是TTL电平。EN1为IN1和IN2的使能端,EN2为IN3和IN4的使能端。当EN1=1,IN1=1 INT2=0时电机1正转,EN1=1,IN1=0 IN2=1电机1反转。同理,当EN2=1,IN3=1 IN4=0电机2正转,EN2=1,IN3=0 IN4=1电机2反转。A-、B-接电机1,C-、D-接电机2。 步进电机使用说明: 板上的EN1与EN2为高电平时有效,这里的电平指的是TTL电平。EN1为IN1和IN2的使能端,EN2为IN3和IN4的使能端。 步进电机控制逻辑如下所示,其中A-、B-、C-、D-为步进电机的四个线圈,(以四相步进电机为例)。 L298N是SGS公司的产品,内部包含二个H桥的高电压大电流桥式驱动器,接收标准TTL逻辑电平信号,可驱动46伏、2安培以下的电机,工作温度范围从-25度到130度。其内部的一个H桥原理图如图1所示。EnA是控制使能端,控制OUTl和OUT2之间电机的停转, IN1、IN2脚接入控制电平,控制OUTl和OUT2之间电机的转向。当使能端EnA有效,IN1为低电平IN2为高电平时,三极管2,3导通,1,4截止,电机反转。当IN1和IN2电平相同时,电机停转。表1是其使能引脚,输入引脚和输出引脚之间的逻辑关系。

电机驱动电路的设计

《电子线路CAD》课程论文题目:电机驱动电路的设计

1 电路功能和性能指标 此电路是用MCU发出的PWM波来控制电机的转速的电路,电路输入电压是7.2V。 2 原理图设计 2.1原理图元器件制作 元器件截图: 图1 这个是图中的BTN7971的原理图,是一款电机驱动半桥芯片。 制作步骤: 1.点击菜单栏的放置,然后点击弹出的窗口中的矩形,如下图: 图2 2.然后鼠标光标下就会出现一个黄色的矩形边框,自己就可以随意设置边框的大小,之后框图的大小可以拖动修改,如下图:

图3 3.框图定好后,点击下图的图标,可以进行画引脚: 图4 4.放引脚时可以按table键设置引脚属性: 图5 2.2 原理图设计 ①原理图设计过程: 首先简历里一个PCB工程项目,保存命名为BTN驱动,然后在这个工程下面

建立一个原理图文件和一个PCB文件,并将其保存并重命名为BTN在与工程相同的目录下面,然后开始绘制原理图了,将所有设置默认为初始状态不需要更改,然后开始画原理图了,将其模块化绘图比较方便好看。 ②下面就是绘制成功后的原理图: 图6 ③下图为massage框图: 图7 其操作步骤为: 1.点击system中的message, 2.然后点击下图中高亮部分 图8

3.最后打开message就可以看见编译信息了 4.之后根据错误提示进行查找修改,直至没有错误和警告,如下图: 图9 ④该项目的元器件库截图如下: 图10 图11

生成原理图库的步骤为: 1.点击界面右下角的design compiler,然后点击如图高亮部分: 图12 2.点击界面上面的工具栏中的设计,然后点击高亮部分: 图13 3.最后可以查看刚才打开的navigater,如图:

简易智能小车_源程序

简易智能小车——2003年全国大学生电子设计竞赛, c51源程序系统的单片机程序 #include "" #define det_Dist */ void ctrMotor_Dist(float dist,unsigned char type) {unsigned char t=0; mType=type; P2=((P2&240)|15); cntTime_Plues=(int)(dist/det_Dist); while(cntTime_Plues) { if(Inter_EX0==1&&StartTask==0) { cntTime_Plues=0; break; } if(Light_Flag==1) t=LightSeek(); if(type==0) 0为A仓库,1为B仓库,2为停车场*/ void fndIorn(void) interrupt 0 { unsigned char i; P10=1; P2=((P2&240)|15); //停车 P07=1; delay(1000);//刹车制动 P07=0; Inter_EX0=1; cntIorn++; Display(cntIorn); for(i=0;i<40;i++) { P2=P2&249; delay(2);

P2=((P2&240)|15); delay(2); } P2=P2&249; delay(100); P2=((P2&240)|15); //停车 IornColor(); //判断铁片黑白,设置bkAim for(i=0;i<95;i++) { P2=P2&249; delay(3); P2=((P2&240)|15); delay(2); } P2=((P2&240)|15); //停车 delay(4000); //把铁片吸起来 EX0=0; } /*外部中断1中断程序: */ /*对霍尔开关的脉冲记数,对小车的位置进行记录,以便对小车进行定位*/ void stpMove(void) interrupt 2 { cntTime_Plues--; if(Direction==0) //向上 { if(mType==0) sY+=det_Dist; else if(mType==2) sY-=det_Dist; } else if(Direction==1) //向左 { if(mType==0) sX+=det_Dist; else if(mType==2) sX-=det_Dist; }

智能小车-电机源代码

直流电机控制Keil c51源代码 直流电机的开环控制Keil c51源代码 //-----------------------函数声明,变量定义-------------------------------------------------------- #include #include #include //-----------------------定义管脚-------------------------------------------------------- sbit PWM=P1^0; //PWM波形输出 sbit DR=P1^1; //方向控制 #define timer_data (256-100) //定时器预置值,12M时钟是,定时0.1ms #define PWM_T 100 //定义PWM的周期T为10ms unsigned char PWM_t; //PWM_t为脉冲宽度(0~100)时间为0~10ms unsigned char PWM_count; //输出PWM周期计数 unsigned char time_count; //定时计数 bit direction; //方向标志为 //-------------------------------------------------------------------------------------------------- // 函数名称:timer_init // 函数功能:初始化设施定时器 //-------------------------------------------------------------------------------------------------- void timer_init() { TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装) */ PCON=0x00; TF0=0; TH0=timer_data; //保证定时时长为0.1ms TL0=TH0; ET0=1; TR0=1; //开始计数 EA=1; //中断允许 } //-------------------------------------------------------------------------------------------------- // 函数名称:setting_PWM // 函数功能:设置PWM的脉冲宽度和设定方向 //-------------------------------------------------------------------------------------------------- void setting_PWM() { if(PWM_count==0) //初始设置 { PWM_t=20;

智能循迹小车详细源代码程序MSPID

巡线车程序(完整版) 1 #ifndef _Macro.h_ 2 #define _Macro.h_ 3 #include 4 #include 5 #define uchar unsigned char 6 #define uint unsigned int 7 #define one 11.11 8 #define LMAX 1999 9 #define RMAX 3999 10 #define CPU_F ((double)8000000) 11 #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 12 13 #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) 14 #define PC 20 // 比例放大系数 15 #define IC 0 //积分放大系数 16 #define DC 85 //大系数 17 #define LEFTOUT TACCR1 18 #define RIGHTOUT TACCR2 19 #define SensorIn P5IN 20 #define F 5000//5000hz 21 #define Period (8000000/F) 22 #define EnableLeftPos P3OUT|=BIT1 23 #define UnenableLeftPos P3OUT&=~BIT1 24 25 #define EnableLeftNeg P3OUT|=BIT0 26 #define UnenableLeftNeg P3OUT&=~BIT0 27 28 #define EnableRightPos P3OUT|=BIT2 29 #define UnenableRightPos P3OUT&=~BIT2 30 31 #define EnableRightNeg P3OUT|=BIT3 32 #define UnenableRightNeg P3OUT&=~BIT3 33 34 #define Basic_Left 100//百分之八十 35 #define Basic_Right 100//Basic_Left 36 #define MAX (100) 37 #define MIN (-100) 38 #define foreward 1 39 #define backward 0

电机及电机驱动模块设计

电机及电机驱动模块设计 1.电机选择 通过对各种电机性能的初步查询和在单片机开发板上对于步进马达和PWM直流电机的实验,我们了解到:步进电机的优点是可以精确定位,但缺点是耗电量大,若采用电池供电,可能不能长时间工作,此外,采用步进电机需要两块驱动板,控制复杂。而直流电机的缺点是不能实现精确定位,但是可以通过调节PWM波实现调速,但在电源相同的条件下,速度较慢;优点是耗电小。由于设备有限,我们无法精确测量两种电机工作时的实际工作电流,上述比较出自文献[1]与产品参数的分析。结合我们的需求,最终决定选择普通直流电机。2.增加驱动、实现换向、实现调速 由于电机属于大功率的器件,而单片机的I/O口所提供的电流往往十分有限,所以必须外加驱动电路来增大驱动;由于我们小车中即将使用的直流电机没有电刷,且供电电源为单电源,所以需要设计一个电子开关以实现换向功能。通过对电机驱动原理的研究得知使用H 桥电路可以实现这两个功能。 从图中可以看出,在上面电路由于内部采用了三极管,三极管本身起到放大的作用,即增大了驱动电流;假设开关A、D接通,电机正向转动,而开关B、C接通时,直流电机将反向转动,从而实现了电机的正反控制。 依据这个原理,我们决定直接使用结构较为简单、价格便宜且可靠性高的电机驱动芯片来连接单片机与电机以减少电路搭建的麻烦和硬件设计的复杂性。电机驱动芯片L298N内部的组成其就是H桥驱动电路,其内部电路图如下:

各引脚功能以及性能参数再次不做赘述。因为小车中打算采用两个直流电机,而选择的L298的特点是工作电压高,输出电流大。因此决定设计单片机和电机独立供电,即控制电路和驱动电路双电源供电。优点是可以保证电源功率和电压大小满足需要,可提高系统的稳定性。缺点是电机驱动模块中独立电影的增加会使车体变重,可能影响小车的运行效果。 最后将L298的引脚正确连接到单片机PO口并拉上电阻,通过Keil对单片机编写程序让小车上的两个电机正反转即可实现小车前进。目前已经写出使两个电机正转的程序,等待测试。小车左右转向的程序设计还未完成。 结构框图

基于51单片机的智能小车控制源代码(毕业设计)

/****************************************************// //***************************************************// // 智能小车控制器基于51单片机实现前进后退转弯与智能采样控制功能#include #include unsigned int tata[8]; unsigned char flag=0,flag2=0,flag3=0,n,m; unsigned int Angle,q,length,temp1; sbit A1=P3^2; sbit A2=P3^3; sbit B1=P3^4; sbit B2=P3^5; sbit ENA=P3^6; sbit ENB=P3^7; sbit red1=P1^3; sbit red2=P1^6; void InitUART(void) { TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; ES = 1; TR1 = 1; EA = 1; ENA = 1; ENB = 1; } void delay(void) //直线延时延时函数 { unsigned char a,b; for(b=255;b>0;b--) for(a=38;a>0;a--); } void delay1(void) //转角延时函数 { unsigned char w,y,c; for(c=1;c>0;c--) for(y=97;y>0;y--)

相关文档
最新文档