原创 ULN2803驱动板驱动两路步进电机的方法(含源代码)

2012-5-6 22:59 7769 17 20 分类: MCU/ 嵌入式

        ULN2803是8路NPN达林顿连接晶体管系列,特别适用于低逻辑电平数字电路,如:TTL,COMS或PMOS/NMOS,和较高的电压/电流要求之间的接口,广泛应用与计算机、打印机、继电器、灯等类似负载中。所有器件具有集电极开路输出和续流箱位二极管,用于抑制跃变。ULN2803的设计与标准TTL系列兼容。

       28BYJ48是一款五线四相八拍步进电机,可以采用4-1-2相驱动。电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信 号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。 四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC- CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)

        具体驱动方式如下表,红色为电源引脚,始终接电源

 

 

 橙 

 黄

 粉

十六制 

 1

 0

 0

 0

 0x08

 1

 1

 0

 0

 0x0c

 0

 1

 0

 0

 0x04

 0

 1

 1

 0

 0x06

 0

 0

 1

 0

 0x02

 0

 0

 1

 1

 0x03

 0

 0

 0

 1

 0x01

 1

 0

 0

 1

 0x09

 

     电机和驱动板连接示意图:

unl2803连接图.jpg

 

AVR范例程序如下:

芯片使用ATMega16,晶振使用12M

#include   

unsigned char key=0; //按键控制步进电机的方向
unsigned char speed=5; //步进电机的转速
//八拍方式驱动,顺序为A AB B BC C CD D DA
unsigned char clockWise[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

void delay(unsigned char z)
{
 unsigned char x;
 unsigned int y;
 for(x=0;x  {
  for(y=0;y<750;y++)
  {
  } 
 }
}

void main(void)
{
 unsigned char i;
 DDRA=0xff;
 PORTA=0xff;
 
 DDRD = 0xff;
 PORTD = 0xff;
 
 DDRB = 0xfe;
 PINB = 0xff;
 
 key = 1;
 PORTA = 0x00;
 PORTD = 0x00;
 while(1)
 {
  for(i=0;i<8;i++)
  {
    key=PINB&0x01;
   if(key)       //按键未按下,正转
   {
    PORTA = clockWise;
    PORTD = clockWise;
    delay(speed);         
   }
   else     //按键按下,反转
   {
    PORTA = clockWise[8-i];
    PORTD = clockWise[8-i];
    delay(speed);
   }
  }
 }

} 

 

 

 

 

 

 

 

 

 

 

 

 

AVR和51的完整源代码可以在附件中下载。

如有需要的可以点这里http://item.taobao.com/item.htm?id=12767638056

文章评论3条评论)

登录后参与讨论

用户447500 2013-10-12 17:09

AVR和51 是什么意思?

用户132188 2012-12-20 10:57

有好几个软驱步进试试看

用户425037 2012-9-18 18:31

下载不了....T_T
相关推荐阅读
用户545978 2016-02-16 22:06
ATMega8熔丝位说明
        最近玩atmega8的arduino,镕丝位的设置总是记不住,所以记录下来备用,同时我也相信很多人也和我一样,有很多都没有关注过是什么功能 1、功能熔丝 熔丝  ...
用户545978 2012-11-17 22:49
赠送旧AVR的JTAG板一块
        今天翻东西的时候找到了一块以前参加竞赛时做的AVR的JTAG仿真器的板子,记得那个时候刚接触单片机,也没啥钱,几个同学在老师的指导下凑钱做了第一块PCB,那么大的一块PCB只实现了...
用户545978 2012-05-07 00:01
Arduino介绍
  Arduino是一款开源的,有一套易用的软件和硬件平台,Arduino可以通过各种外围传感器来感知所在的环境状况,来控制LED指示灯的变化,电机的运转或者作出其它一些交互动作。 开始认...
用户545978 2012-04-23 00:02
AVR通过串口给芯片烧录程序(ATMega16)
          相信大家都用过STC系列的51单片机,STC系列的单片机烧录程序都很简单,只需要通过串口就可以实现程序的烧录。于是就想让avr的芯片也能实现通过串...
用户545978 2012-02-12 22:16
Arduino使用方法/ATMega8最小系统使用方法
前边已经介绍过Arduino,已经了解了什么是Arduino,其实就是一个ATmega8/ATmega168的系统板,这篇文章主要介绍以下几个部分。        1、Arduino的硬件结构图 ...
我要评论
3
17
关闭 站长推荐上一条 /2 下一条