步进电机驱动PROTEL原理图Word文件下载.docx

上传人:b****7 文档编号:21844136 上传时间:2023-02-01 格式:DOCX 页数:8 大小:16.89KB
下载 相关 举报
步进电机驱动PROTEL原理图Word文件下载.docx_第1页
第1页 / 共8页
步进电机驱动PROTEL原理图Word文件下载.docx_第2页
第2页 / 共8页
步进电机驱动PROTEL原理图Word文件下载.docx_第3页
第3页 / 共8页
步进电机驱动PROTEL原理图Word文件下载.docx_第4页
第4页 / 共8页
步进电机驱动PROTEL原理图Word文件下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

步进电机驱动PROTEL原理图Word文件下载.docx

《步进电机驱动PROTEL原理图Word文件下载.docx》由会员分享,可在线阅读,更多相关《步进电机驱动PROTEL原理图Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。

步进电机驱动PROTEL原理图Word文件下载.docx

P2.2是用来控制电机的使能的,接在ENA上;

如要实现电机的正传、反转的加减速就要对P2.2即ENA脚给PWM信号比如还要设置两个按键key4和key5来控制直流电机的加速和减速;

比如有如下函数;

/*********************************************************/

ucharNUM0=600;

//全局变量

ucharFlag=0;

//清零标志位;

对Ms清零;

/*idtime0_init(void)

{

TMOD=0x01;

//16位计数器/定时器,定时器0;

TH0=(65536-1000)/256;

//AT89S52为12M晶振,计数1200才产生1ms

TL0=(65536-1000)%256;

EA=1;

//开启总中断

ET0=1;

//开启定时器1中断

TR0=1;

//开启定时器1,定时器一允许

}

voidtime0_int(void)interrupt1{

H0=(65536-1000)/256;

//AT89S52为12M晶振,计数1200才产生1ms

Ms=NUM0

*/

for(i=0;

i<

Ms;

i++)

ENA=1;

elseif(i=Ms;

=1200;

ENA=0;

Flag=1;

if(flag)

Ms=NUM0;

/*****************************************************************/

KEYADD_SUB()

if(key4==0)//加速按键

delayms

(2);

//while(key1==0);

Ms++;

//正脉宽加一

if(Ms>

=1200)

Ms=1200;

//最高速度

if(key5==0)//减速按键

//while(key2==0);

Ms--//脉宽减一

if(Ms<

=0)

Ms=0;

//停止

/***************************************************************/

下面是控制程序;

经现场调试,可行;

程序如下:

/************************************************************/

#include<

reg52.h>

#include"

delay.h"

#defineucharunsignedchar

#defineuintunsignedint

//*********************//

sbitENA=P2^2;

//驱动芯片使能,若为0则电机停止;

sbitIN1=P2^1;

//控制电机正转和反转

sbitIN2=P2^0;

sbitkey1=P1^0;

//此键按下,电机正转;

IN1=1;

IN2=0;

ENA=1sbitkey2=P1^1;

//此键按下,电机反转;

IN1=0,IN2=1;

ENA=1sbitkey3=P1^2;

//此键按下,电机刹停;

IN1=1,IN2=1;

ENA=1//*********************//

intmotor_change_mank=0;

//按键设置

//**********************//uintkeylogo()

if(key1==0)

motor_change_mank=1;

//正转标志位

if(key2==0)

motor_change_mank=2;

//反转标志位

if(key3==0)

//while(key3==0);

motor_change_mank=0;

//刹停标志位

return(motor_change_mank);

//**********************////控制驱动芯片函数

//**********************//voidexecute_motor(){

switch(motor_change_mank)

case0:

//刹停标志位

IN1=1;

IN2=1;

ENA=1;

}break;

case1:

//正转标志位

IN2=0;

case2:

//反转标志位

IN1=0;

default:

break;

//**********************//

voidmain()

while

(1)

keylogo();

execute_motor();

/**********************************************************************/

voiddelayms(uintn){

inti;

for(;

n>

0;

n--)

1;

i++);

#ifndefdelay_h

#definedelay_h

externvoiddelayms(uintn);

#endif

/***********************************************************************/

对如驱动芯片L298N的中文资料我这里有很多,你在论文中阐述时要抓住要点;

进行简短

的说明;

对于调速的问题也有第二种方法;

就是对驱动芯片的功率电源Vs进行改变电压;

可以用DAC进行控制,如用单片机控制DAC,是输出的模拟电压可通过按键来升高和降低;

这样在电机正传或者反转时只要Vs所给的电压升高或者降低则电机的转速就会增加或者减

少;

这样亦不失为一种好的控制直流电机转速的方法;

就是成本稍高而已~

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////或者用下面的一个程序略作修改即可;

/*

1、学习目的:

利用定时器产生PWM,了解原理和使用方法

2、硬件要求:

LED灯定时器

3、试验现象:

LED灯由亮到灭,由灭到亮逐步变化,也就是调光现象

#include<

sbitLED=P1^2;

unsignedcharCYCLE;

//定义周期该数字X基准定时时间如果是10则周期是10x0.1msunsignedcharPWM_ON;

//定义高电平时间

voiddelay(unsignedintcnt)

while(--cnt);

main()

bitFlag;

TMOD|=0x01;

TH0=(65536-100)/256;

//定时器设置0.1msin12Mcrystal

TL0=(65536-100)%256;

//定时0.1mS

IE=0x82;

//打开中断

CYCLE=10;

//时间可以调整这个是10调整8位PWM就是256步while(!

Flag)

delay(20000);

//延时时间,从一个亮度到下一个亮度的间隔时间,速度快就能看到连续效

PWM_ON++;

//这个使用较长延时,以便能看清楚变化过程

if(PWM_ON==CYCLE)

{//这个里可以添加其他程序如到最亮时候控制设备

while(Flag)//亮度递减同上,是个相反的过程

PWM_ON--;

if(PWM_ON==0)

Flag=0;

/********************************//*定时中断*//********************************/voidtim(void)interrupt1using1{

staticunsignedcharcount;

//TH0=(65536-100)/256;

if(count==PWM_ON)

LED=1;

//灯灭

count++;

if(count==CYCLE)

count=0;

if(PWM_ON!

=0)//如果左右时间是0保持原来状态

LED=0;

//灯亮

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1