步进电机精度高,惯性小,在不失步的情况下没有步距误差积累,特别适用于数字控制的定位系统。传统的细分驱动电路由细分环行分配器、放大器和合成器等部分组成。这种电路应用复杂,灵活性差。本文利用A3967SLB作为步进电机微控芯片,简化了步进电机的控制实现。由于单片机资源没有PC丰富,人机界面也没有PC友好,因此,本文采用了主从式结构,即PC用于管理,单片机用于执行。

由A3967SLB构成步进电机的驱动部分

A3967SLB是美国Allegro公司生产的PWM恒流控制微步距驱动二相步进电机专用驱动器。它的工作电压可达30V,驱动电流达750mA,一个A3967SLB即可驱动一台二相步进电机,可实现8细分驱动。芯片内部的PWM电流控制电路可通过加在PFD的电压设置为慢、快、混合三种电流衰减模式,如果PFD端的电压高于0.6Vdd,则选择慢衰减方式。若低于0.21Vdd,则选择快衰减模式。处于两者之间为混合衰减模式。另外,A3967SLB还能提供完善的保护措施,包括抑制瞬态电压,过热保护、防止电流直通、欠电压自锁等功能。

A3967SLB和微处理器之间不需要附加其他的接口电路,该芯片采用Easy Stepper接口,将8条控制线减少了2条(步长和方向),只要简单地输入控制步进电机的脉冲,其内嵌的转换器就可以实现对步进电机的控制。A3967SLB还需要一些电阻、电容来调整其工作参数,整个驱动电路非常简单。

如图1所示,MS1和MS2是步进电机细分分辨率选择的逻辑输入口;DIR是电机运转方向的选择口;RESET用于重置芯片初始值,屏蔽所有外部输出;STEP为脉冲输入端口;OUT1A、OUT1B、OUT2A、OUT2B为H桥的两对输出端口;ENABLE为使能端;SLEEP为睡眠模式;SENSE1、SENSE2为H桥的电流检测电阻;REF为参考电压;GND为逻辑地和电源地;RC1、RC2为H桥固定截止时间模拟输入。最大限流Imax是由取样电阻Rs和取样比较器的输入参考电压Vref决定的:

Imax=Vref/8Rs

AT89C52具有8KB Flash,256B内部RAM,32个I/O口线,3个16位定时/记数器,一个6向量两级中断系统,一个全双工串行通信接口,同时片内还有振荡器和时钟电路。使用很方便。在这个系统中,单片机主要用来产生控制脉冲并与上位机进行串行通信。

通信电路

在最简单的RS-232直接传送通信系统中,只要发送和接受双方同时准备好,仅用信号发送端(TXD)、信号接收端(RXD)和信号地(GND)3根信号线就可以进行通信;若以应答方式进行数据通信,可使用请求发送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据装置准备(DSR)4个信号进行硬件握手。在AT89C52单片机系统中,分别从P3.0和P3.1引出串口线RXD和TXD,通过专用的电平转换芯片转换成RS-232接口标准的电平,这样,二者之间就可以通过RS-232接口进行数字信号的传送。单片机可以通过直接传送或应答握手的方式与主机进行数据通信,但由于握手方式占用其它端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式。通信电路如图2所示。

软件设计

软件部分的设计主要包括下位机按MCU的接收程序、脉冲控制程序以及上位机的串口发送程序。上位机与下位机之间进行数据通信。上位机的程序主要通过Windows可视化编程VC++实现。

下位机程序主要负责接受PC发来的数据,按照要求产生控制脉冲,具体流程为:首先对要使用的串口进行初始化,然后P2输出口清零,接着进入住程序的死循环,等待中断触发。接收一个字节的数据,RI=1,接着将RI清零。当单片机接收完数据后,标志位置1。将缓存中的数据存入控制的变量中,以便控制时使用(具体操作时先法数据帧再发启动帧)。软件控制流程如图3所示。

结语

结合以上介绍的基于A3967SLB的步进电机控制系统,在VC++环境下,利用MSComm控件实现了PC与单片机之间的串行通信。实验结果表明,用这种方式实现上位机对基于A3967SLB的步进电机的控制系统进行精确的驱动可行有效。

本系统中,利用PC的丰富软硬件资源和强大的系统功能,可进行一些数据处理、显示等工作;而从控制器AT89C52则用于实时控制。另外,该系统为开放式结构,便于系统升级。

a3967驱动_以A3967SLB为核心的步进电机控制系统设计相关推荐

  1. 英特尔x722网卡驱动_产品详情 | 从核心到边缘,英特尔加速5G网络基础设施建设...

    英特尔近期宣布推出无可比拟的5G基础设施芯片产品组合,包括一款面向无线基站的10纳米片上系统(SoC)英特尔凌动®P5900,和一款面向5G网络处理的结构化ASIC,一款针对5G网络优化.提供基于GP ...

  2. qt如和调用linux底层驱动_擅长复杂硬件体系设计,多核系统设计,以及基于RTOS或者Linux,QT等进行相关底层驱动。...

    双向可控硅在使用时,其触发限流电阻的阻值和封装应该怎么选取? (1)首先我们在进行TRIAC其驱动电路设计的时候,我们一般不直接进行驱动,而是通过DIAC或者Photo-TRIAC即光学的双向可控硅配 ...

  3. esp8266舵机驱动_使用Arduino和ESP8266通过网页控制舵机

    在本文中,我们将尝试通过网页来控制舵机,通过滑动网页上对应的滑块,促使舵机做相应地运动.这样的尝试在做一些远程开关或者远程控制的小设备时非常有用,比如把 宠物定时喂食器 改造成网页控制的也是可以实现的 ...

  4. python建模与仿真控制系统_清华大学出版社-图书详情-《MATLAB控制系统设计与仿真》...

    前言 MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化软件,它集数值计算.符号计算和图形可视化于一体,构成了一个方便且界面友好的用户环境.随着它的版本不断升级,其功能越来越强大, ...

  5. usb接口驱动_乾坤合一~Linux设备驱动之USB主机和设备驱动

    这一章从主机侧角度看到的USB 主机控制器驱动和设备驱动从主机侧的角度而言,需要编写的USB 驱动程序包括主机控制器驱动和设备驱动两类,USB 主机控制器驱动程序控制插入其中的USB 设备,而USB ...

  6. 二氧化碳传感器CCS811简单的测试驱动_基于Arduino

    二氧化碳传感器CCS811简单的测试驱动_基于Arduino 目的 简单介绍 由于MOX Sensor材料特性在使用过程中要注意的问题 IC的初始化过程 IC的读数据过程 可配置参数 完整程序代码 数 ...

  7. 重拾强化学习的核心概念_强化学习的核心概念

    重拾强化学习的核心概念 By Hannah Peterson and George Williams (gwilliams@gsitechnology.com) 汉娜·彼得森 ( Hannah Pet ...

  8. 魔百盒CM201-1、CM211-1朝歌ZG_支持UWE5621WiFi驱动_免拆卡刷固件包

    魔百盒CM201-1.CM211-1朝歌ZG_支持UWE5621WiFi驱动_免拆卡刷固件包 图片 刷机方法: 把下载的刷机包文件解压一次,复制到U盘根目录!update.zip升级包不能解压,原原本 ...

  9. 摄像头驱动_摄像头驱动程序必需的11个ioctl及摄像头数据的获取过程

    摄像头驱动_摄像头驱动程序必需的11个ioctl及摄像头数据的获取过程 根据虚拟驱动vivi的使用过程彻底分析摄像头驱动 // 1~2都是在v4l2_open里调用 1. open 2. ioctl( ...

最新文章

  1. java编写数字金字塔_用JAVA写数字金字塔
  2. STM32用keil5调试程序出现 Error:Flash Download Failed-Cortex-M3解决方案
  3. win10北通手柄没反应_《动物森友会》怎么玩出新花样?北通宙斯游戏手柄宏玩法了解下...
  4. One-Stage Visual Grounding论文汇总
  5. 今日直播 | 全国高校人工智能人才与科技莫干山论坛直播来袭!
  6. 【Java23】maven加强,分布式RPC框架Dubbo
  7. linux基础命令(-)
  8. mysql st_contains实现_MySQL实现树状所有子节点查询的方法
  9. 信号方面概念解释(笔记04)
  10. AcWing 1054. 股票买卖
  11. activiti的springboot模块
  12. poj3268(Silver Cow Party)最短路
  13. 使用rpm命令卸载程序
  14. 记录一下:调试了虹软的人脸识别sdk,存到数据库中
  15. LeetCode——二叉树的前中后序遍历
  16. linux6 64位,CentOS 6.0 X64官方正式版系统(64位)
  17. iPhone各种机型尺寸、屏幕分辨率
  18. 抖音上超火系列的透明头像是怎么弄的?操作原来如此简单
  19. AI+医疗如何商业破冰?6位一线专家这样说
  20. Oracle Number 精度坑

热门文章

  1. [C++] c language 23 keywords
  2. JVM虚拟机-Class文件之方法表集合
  3. 深度优先搜索及广度优先搜索
  4. 为了不被OUT,UC决定不再安静地做个浏览器了
  5. php函数积累第二弹(关于文件操作)
  6. Silverlight 属性样式、控件模板、视觉状态
  7. flex3+blazeds+spring+hibernate整合小结
  8. HTMLElement对象
  9. php软件开发--nginx服务器(待补充)
  10. html网页如何传递接收地址参数