[创客交流] 基于纳瓦特MCU+步进电机驱动模块

[复制链接]
227|7
 楼主 | 2018-7-1 15:25 | 显示全部楼层 |阅读模式
      NV32F100开发板驱动的步进电机型号为28BYJ-48,由于其工作电流相对较大,故需要配相应的驱动芯片,这里选用的芯片为ULN2003,整体电路如图所示。

1.驱动芯片ULN2003
ULN2003驱动芯片由7组达林顿电路构成,其中的每一组达林顿电路都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。


2. 4相5线制步进电机
    28BYJ-48是4相5线制减速步进电机,它共有5条引线,其中VCC接电机的中心抽头线(一般为红色),其它4条接电机的A,B,C,D相。该电机的直径为28mm,电压:5V,步进角度:5.625 x 1/64,减速比:1/64。


3.步进电机控制
为使开发板控制步进电机的转动,其相应引脚的定义如下:
A -- PH1
B -- PH0
C -- PE0
D -- PE1
步进电机正反转的程序如下:
  1. #include "common.h"
  2. #include "ics.h"
  3. #include "rtc.h"
  4. #include "uart.h"
  5. #include "gpio.h"
  6. #include "sysinit.h"
  7. #include "start.h"
  8. #include "adc.h"

  9. #define MAH           GPIO_PinSet(GPIO_PTH1);
  10. #define MAL            GPIO_PinClear(GPIO_PTH1);
  11. #define MBH             GPIO_PinSet(GPIO_PTH0);
  12. #define MBL            GPIO_PinClear(GPIO_PTH0);
  13. #define MCH        GPIO_PinSet(GPIO_PTE0);
  14. #define MCL              GPIO_PinClear(GPIO_PTE0);
  15. #define MDH        GPIO_PinSet(GPIO_PTE1);
  16. #define MDL               GPIO_PinClear(GPIO_PTE1);

  17. long int delay_1us(void)
  18. {
  19.         long int count=2;
  20.         while(count--);
  21.         return 0;
  22. }

  23. void delay_ms(uint16_t nms)
  24. {         
  25.   uint16_t n,m;       
  26.         n=nms;
  27.         while(n)
  28.         {
  29.         for(m=0;m<1000;m++) delay_1us();
  30.         n--;       
  31.         }              
  32. }

  33. int main (void)
  34. {
  35.     uint16_t X,Y;       
  36.     sysinit();
  37.     cpu_identify();
  38.     //步进电机控制引脚初始化
  39.     GPIO_Init(GPIOB, GPIO_PTE7_MASK, GPIO_PinOutput);
  40.     GPIO_Init(GPIOB, GPIO_PTE7_MASK, GPIO_PinOutput);
  41.     GPIO_Init(GPIOB, GPIO_PTE0_MASK, GPIO_PinOutput);
  42.     GPIO_Init(GPIOB, GPIO_PTE1_MASK, GPIO_PinOutput);
  43.     GPIO_Init(GPIOB, GPIO_PTH0_MASK, GPIO_PinOutput);
  44.     GPIO_Init(GPIOB, GPIO_PTH1_MASK, GPIO_PinOutput);
  45.     //正转2周
  46.     MAL;
  47.     MBL;
  48.     MCL;
  49.     MDL;
  50.     for(X=0;X<192;X++)
  51.     {
  52.       for(Y=0;Y<8;Y++)
  53.       {
  54.          MDL;
  55.          MAH; //A
  56.          delay_ms(1);
  57.          MBH; //AB
  58.          delay_ms(1);
  59.          MAL; //B
  60.          delay_ms(1);
  61.          MCH; //BC
  62.          delay_ms(1);
  63.          MBL; //C
  64.          delay_ms(1);
  65.          MDH; //CD
  66.          delay_ms(1);
  67.          MCL; //D
  68.          delay_ms(1);
  69.          MAH; //DA
  70.          delay_ms(1);
  71.        }               
  72.     }   
  73.     delay_ms(100);       
  74.     //反转2周       
  75.     for(X=0;X<192;X++)
  76.     {
  77.       for(Y=0;Y<8;Y++)
  78.       {
  79.          MDH;
  80.          MAH; //A
  81.          delay_ms(1);
  82.          MAL; //AB
  83.          delay_ms(1);
  84.          MCH; //B
  85.          delay_ms(1);
  86.          MDL; //BC
  87.          delay_ms(1);
  88.          MBH; //C
  89.          delay_ms(1);
  90.          MCL; //CD
  91.          delay_ms(1);
  92.          MAH; //D
  93.          delay_ms(1);
  94.          MBL; //DA
  95.          delay_ms(1);
  96.        }               
  97.     }
  98.     while(1);       
  99. }
复制代码
若利用板上的K1K2调用正反转程序,则可控制电机的双线运转。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-7-2 10:56 | 显示全部楼层


OB38S003  推荐选择 QQ:1529637660
| 2018-7-2 14:45 | 显示全部楼层
请问楼主您这个需要的功率是多大的啊
 楼主 | 2018-7-2 15:56 | 显示全部楼层
heimaojingzhang 发表于 2018-7-2 14:45
请问楼主您这个需要的功率是多大的啊

据说每项的驱动电流是25mA,电压是5V。
| 2018-7-2 16:05 | 显示全部楼层
那驱动绝对够用了
 楼主 | 2018-7-4 09:13 | 显示全部楼层

是的没问题。
| 2018-7-4 13:03 | 显示全部楼层
再请教一个问题 如果想要电机回归原始位置 其pwm如何控制呢
 楼主 | 2018-7-5 09:53 | 显示全部楼层
本帖最后由 jinglixixi 于 2018-7-6 09:00 编辑
heimaojingzhang 发表于 2018-7-4 13:03
再请教一个问题 如果想要电机回归原始位置 其pwm如何控制呢

由于步进电机是靠脉冲行进的,故起始位置就是原始位置,要想回归原始位置,只好添加一个计数器的变量,对每次的步进情况进行跟踪,然后以一圈的步进数为模进行计算,再按计算值反向转动即可。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

分享 快速回复 返回顶部 返回列表