/*=============================================================================
这个程序是想帮助更多的初学者掌握步进电机的使用,步进电机是一种控制精确的电机,
在个个场合中都有广泛的应用,他的控制非常简单,只要掌握脉冲时序就可以很好的控制。
可以控制它转一定的角度,可以当舵机使用,但它的成本很高,不太核算。
下面的程序是步进电机全步运行和1/2步运行。
==============================================================================*/
#include
#define uint unsigned int
#define uchar unsigned char
sbit a0=P1^0; //a相0
sbit a1=P1^1; //a相1
sbit en0=P1^2; //使能1
sbit b0=P1^3; //b相0
sbit b1=P1^4; //b相1
sbit en1=P1^5; //使能2
void yanshi(uint z); //延时函数
void zheng(uchar k,uchar j); //整步走
void xifen(uchar k1,uchar j1); //1/2步走
uchar b,num,n,num1,n1,h;
void main()
{
en0=1;
en1=1;
while(1)
{
xifen(10,100); //1/2步细分 延时10mS 100个脉冲 如果步距角是1.8度,则转动90度
yanshi(4000);
zheng(15,50); //全步走 延时15mS 50个脉冲 如果步距角是1.8度,则转动90度
yanshi(4000);
}
}
//全步走,k是延时时间,j是脉冲数
void zheng(uchar k,uchar j)
{
b=j/4; //一步要4个脉冲
b=b+1;
num=0; //计数器清0
for(b;b>0;b--)
{
if(num
{
a0=0;
a1=1;
b0=1;
b1=0;
yanshi(k);
num++;
n=1;
}
if(num
{
a0=0;
a1=1;
b0=0;
b1=1;
yanshi(k);
num++;
n=2;
}
if(num
{
a0=1;
a1=0;
b0=0;
b1=1;
yanshi(k);
num++;
n=3;
}
if(num
{
a0=1;
a1=0;
b0=1;
b1=0;
yanshi(k);
num++;
n=0;
}
}
}
// 1/2步 k1是延时时间 j1半步脉冲数
void xifen(uchar k1,uchar j1)
{
h=j1/8; //一步8个脉冲
h=h+1;
num1=0; //计数器清0
for(h;h>0;h--)
{
if(num1
{
a0=0;
a1=1;
b0=1;
b1=0;
yanshi(k1);
num1++;
n1=1;
}
if(num1
{
a0=0;
a1=1;
b0=0;
b1=0;
yanshi(k1);
num1++;
n1=2;
}
if(num1
{
a0=0;
a1=1;
b0=0;
b1=1;
yanshi(k1);
num1++;
n1=3;
}
if(num1
{
a0=0;
a1=0;
b0=0;
b1=1;
yanshi(k1);
num1++;
n1=4;
}
if(num1
{
a0=1;
a1=0;
b0=0;
b1=1;
yanshi(k1);
num1++;
n1=5;
}
if(num1
{
a0=1;
a1=0;
b0=0;
b1=0;
yanshi(k1);
num1++;
n1=6;
}
if(num1
{
a0=1;
a1=0;
b0=1;
b1=0;
yanshi(k1);
num1++;
n1=7;
}
if(num1
{
a0=0;
a1=0;
b0=1;
b1=0;
yanshi(k1);
num1++;
n1=0;
}
}
}
//延时函数
void yanshi(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
关键字:四线二相 步进电机 L298 驱动程序
引用地址:
四线二相步进电机L298驱动程序
推荐阅读最新更新时间:2024-03-16 15:16
步进电机驱动器拨码
步进电机驱动器拨码 步进电机驱动器(step driver)是指一类用于控制步进电机运转的电子设备,它一般采用拨码开关来设定步进电机驱动器的参数,以实现对步进电机的控制。 此驱动器采用交流伺服驱动器的电流环进行细分控制,电机的转矩波动很小,低速运行很平稳,几乎没有振动和噪音。高速时力矩也大大高于其它二相驱动器,定位精度高,广泛用于雕刻机,数控机床,包装机械等分辨率要求较高的设备上! 主要特点: 1、平均电流控制,两相正弦电流驱动输出 2、直流 18~50V 供电 3、光电隔离信号输入 /输出 4、有过压、欠压、过流、相间短路保护功能 5、十五档细分和自动半流功能 6、八档输出相电流设
[嵌入式]
基于Stm32F407的多路(6路)步进电机速度控制函数
应学弟们的要求特意将步进电机的速度控制函数完善。 重点:这里只是速度控制函数, 没有加减速曲线! 没有记录步数! 只是简单的把步进电机当成直流电机用! 很初级的一个程序! 程序的下载链接在这里 开发平台Keil5 单片机 Stm32F407 接下来 我就程序的实现过程给大家进行分享 第一部分是实现的机制介绍 详细链接 在这里!主要就是通过修改 PSC和ARR寄存器的值,我们可以修改 定时器的溢出频率!而我们的定时器模式设置成 PWM输出模式, CCR寄存器 我们设置一个较小的值*(我们要控制脉冲的频率 ,所以单个脉冲的宽度是我们不关心的!) 修改了 PSC 和ARR值之后 我们就可以实现对步进电机的速度进行控制
[单片机]
TPC单元及其在步进电机调速中的应用
步进电机在各种自动化控制系统中有着广泛的应用,是机电一体化装置中的关键部件。这是一种数字控制的电动机,是将电脉冲转化为角位移的执行机构,它通过控制脉冲个数和脉冲频率来控制电机的角位移量和转动速度,从而达到准确定位和调速的目的。 传统的步进电机所需的数字式电脉冲信号(即方波控制信号)一般都是借助数字逻辑电路来产生。随着嵌入式技术的不断发展,单片机的应用更为广泛,由单片机定时来产生这种脉冲信号的场合越来越多。单片机定时控制脉冲一般有软件定时和定时器定时两种方式。前一种方式占用了CPU的大部分工作时间,所以常用定时器定时中断来产生脉冲信号。由于一般的单片机系统中断响应时间大部分在10Us级以上,因而定时器定时中断来产生脉冲的精确度大致也
[工业控制]
mcu-stc12c5404ad单片机直流无刷电机驱动程序
//*****************************************************//* ***无刷电机控制器程序*** *//*===================================================* //* MCU-STC12C5404... //***************************************************** //* ***无刷电机控制器程序*** * //*===================================================* //* mcu-stc12c5404ad 8路ad转换,4
[单片机]
伺服电机与步进电机的选择
最好的电机是满足应用要求的电机。然而,当伺服电机和步进电机都满足定位应用的基本要求时,对这两种技术有更深入的了解以做出明智的决定就很重要了。 在这篇博文中,我们将总结伺服电机系统和步进电机系统之间的区别。 让我们从快速比较这两种电机技术开始。 步进电机 伺服电机 优点 优点 良好的低速扭矩 没有调整,没有狩猎 紧凑的电机尺寸 高性价比 良好的高速扭矩 可用的峰值扭矩 连续工作 功能齐全 缺点 缺点 高速扭矩小 有限的工作周期 无峰值扭矩 通常以开环方式运行 需要调整 仅适用于反馈 打猎 成本 虽然伺服电机和步进电机都在转子中使用永磁体,并且需要驱动电路才能运行,但它们的设计存在根本差异,从而导致性能差异。
[嵌入式]
嵌入式Linux技术在工业控制网络中的应用
随着Internet的飞速发展,网络应用越来越广泛,对各种工业控制设备的网络功能要求也越来越高。当前的要求是希望工业控制设备能够支持TCP/IP以及其它Internet协议,从而能够通过用户熟悉的浏览器查看设备状态、设置设备参数,或者将设备采集到的数据通过网络传送到Windows或Unix/Linux服务器上的数据库中。
这就要求工控系统必须具备两方面的功能:
一是要在现场完成复杂的测控任务,因为通常一些任务都具有一定的实时性要求;
二是要求测控系统能够与某一类型的控制网相连,以实现远程监控。在目前应用的大多数测控系统中,嵌入式系统的硬件采用的是8/16位单片机;软件多采用汇编语言编程,由于这些程
[嵌入式]
MSP430F1121与PCF8576驱动程序
#include MSP430x11x1.h #define uint unsigned int #define uchar unsigned char //器件地址 uchar PCF8576=0x70; //内存数据定义 uchar ByteCnt; //I2C 数据字节计数器 uchar SlvAdr; //被控器地址 uchar SubAdr; //被控器单元地址 uchar XmtDat ; //发送数据缓冲区 //uchar MODE1=0x45; uchar MODE2=0xCD; // uchar Bank_sel=0x78; uchar flag; uc
[单片机]
IR芯片在步进电机驱动系统的应用
电动机应用的日益广泛,使其驱动控制的研究也越来越成为人们研究的热点。随着功率VMOS器件以及绝缘栅双极晶体管(IGBT)器件的广泛运用,更多场合使用VMOS器件或IGBT器件组成桥式电路,例如开关电源半桥变换器或全桥变换器、直流无刷电机的桥式驱动电路、步进电机驱动电路,以及逆变器的逆变电路。IR(Inter—national Rectifier)公司提供了多种桥式驱动集成电路芯片,本文介绍了IR21844功率驱动集成芯片在直流无刷电机的桥式驱动电路中的应用。该芯片是一种双通道、栅极驱动、高压高速功率器件的单片式集成驱动模块,在芯片中采用了高度集成的电平转换技术,大大简化了逻辑电路对功率器件的控制要求,同时提高了驱动电路的可靠性。
[嵌入式]