历史上的今天
今天是:2025年12月09日(星期二)
2022年12月09日 | 教你如何用51单片机驱动步进电机
2022-12-09 来源:zhihu
前言
步进电机是一种无刷电机,可将电脉冲转换为机械旋转。顾名思义,它根据输入脉冲逐步旋转,是现代数字程序控制系统中的主要执行元件。
步进电机相比其他电机来说,一般具有5个比较明显的特征:
第一,可实现精细,正确的定位
第二,可通过脉冲信号简单控制
第三,体积小型,高转矩
第四,可自行保持停止位置
第五,可进行大惯性负载
广泛应用于工业、医疗、消费电子应用。简而言之,用于任何需要精确旋转或定位对象的地方。
在单片机领域应用比较广泛,在此和大家分享一个小项目。
-操作
步进电机内部线圈原理图:

步进电机通常具有多个励磁线圈(相)和一个带齿转子。电机的步长由相数和转子上的齿数决定。步长是转子一步的角位移。比如一个步进电机有 4 相 50 个齿,则转一圈需要 50×4=200 步。因此步距角为 360/200=1.8°。
本次使用的步进电机有 4 极和一个 1/64 减速齿轮机构,用于增加扭矩。电机的步距角为 5.64°。但在考虑减速齿轮,输出轴的步距角为5.64/64°。

电路原理图:

将步进电机按照电路图连接到 8051 的P1.0、P1.1、P1.2 和 P1.3 引脚分别用于控制步进电机的 A1、A2、A3 和 A4 相。ULN2003 用于驱动步进电机的各个相位。
ULN2003 是一种达林顿晶体管阵列,用于驱动继电器和电机等大电流负载。ULN2003 有 8 个单独的通道,每个通道的容量为 1A,通道可以并联以增加电流容量。每个通道都配有单独的续流二极管,通道通过提供逻辑低电平来激活。例如,我们将 ULN2003 的引脚 1 设为低电平,则步进电机的 A1 接通。
程序设计

按照上图的引线顺序,按时序循环给A1、A2、A3、A4相应的控制。


程序首先将 P1.0 清零以启动步进电机(A1),此状态保持 65ms,然后设置 P1.0 为1以停用电机的第 1 相。然后对 P1.1 到 P1.3 重复相同的过程,并一遍又一遍地重复整个循环,使电机沿顺时针方向旋转。
将定时器 0 配置为模式 1,用于产生 65 毫秒的延迟。65ms 是每个控制脉冲的宽度。
结束
这个小项目非常简单,主要是电机控制在单片机项目中太常见了,很有必要掌握。希望通过这个分享能帮助到有需要的同学。
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 报名截止日期是:2010.04.02 一、参赛资格 1. 凡国家教育部承认的具有正式学籍高等院校在校学生(研究生、本科生及专科生)均有资格参加比赛; 2. ADI公司及其分支机构、代理商、第 ...… 查看全部问答> |
|
系统很慢,提示CPL: Failed to load '\Windows\system.cpl' 系统很慢,提示CPL: Failed to load \'\\Windows\\system.cpl\',有谁遇到过么? … 查看全部问答> |
|
我读出的转换结果始终是0,而且超限报警一直为高电平,用电位器模拟输入,无论怎样更改输入电压,都是如此…… 这会是什么原因呢? 我的程序逻辑应该没有错,读出的数据只有位码,而对应的BCD码却都为零,这说明寻址正确了…… 等待解答..... … 查看全部问答> |
|
【注意】折腾一晚上,得出这样一个结论:IAR提供的标准库函数<math.h>有BUG? 请大家看看,两个功能相同的程序,最后的执行结果有很大误差! 恳请版主及各路大侠帮我分析一下,给个合理的解释。谢谢!! 程序设计目的:将1个以4字节(紧缩)BCD码格式连续存放的数组,转换为无符号长整数。 {0x10,0x32,0x54, ...… 查看全部问答> |
|
本程序试图在输入信号去抖动后转换为程序中中的复位、开启信号,en信号合适,但是reset信号转换后一直是高电平,不合适,望高手不吝赐教,在下感激不尽library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_log ...… 查看全部问答> |




