当前位置:网站首页>51单片机外设篇:电机
51单片机外设篇:电机
2022-07-25 08:40:00 【路溪非溪】
电机通常是将电能转化为动能的机械装置。一般可分为:交流电机、直流电机、步进电机、伺服电机等等。
直流电机
交流电机和直流电机通常有两个引脚,直接通交流电或者直流电的电源正负极即可转动,断电就停止。不能被精确控制。
使用时,将其通过电流放大芯片,接到单片机的两个引脚上,然后将这两个引脚分别置0和置1即可。
注意:直流电机不分正负,正反接对应的是正反转。
直流电机实验
直流电机直接接在开发板的主板的VCC和GND引出接口上看电机是否转动,还可以调换VCC和GND看电机是否反转了。
单片机的IO口是数字口,本身的驱动能力非常小(最多20mA级别),这个驱动能力是带不动电动机的。所以一般单片机需要使用专门的驱动芯片来驱动电机。驱动芯片的作用就是把单片机的小电流的控制信号转成逻辑上相同的大电流的驱动源。这就是所谓的弱电控制强电。用电机驱动芯片来驱动直流电机,具体的电路分析后面讲步进电机时会详细说。此处暂且略过。代码如下所示:
/************************************************************ 日期:2022年7月23日 作者:星辰 文件内容:电机演示 **************************************************************/ #include<reg51.h> sbit P30 = P3^0; sbit P31 = P3^1; /************************************************************* 函数入口 **************************************************************/ void main(void) { P30 = 1; P31 = 0; }
步进电机
步进电机较直流电机相对复杂。
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电机又称脉冲电动机。
现在使用的步进电机大部分用永磁转子。普遍使用永久磁铁的原因是效率高,分辨率高等优点。
步距角:步长
步进电机有一个固有步距角,这个参数和步进电机本身有关。步进电机一般情况下只能以固有步距角的整数倍来运动,这一个固有步距角的移动就叫一个节拍。
电机还有个可以比固有步距角更小的运动方法,这种方法叫细分,由电机驱动器来支持的。
相数:指的是电机有几个绕线组。常用的有二相、三相、四相、五相步进电机。
本文以2相步进电机为例。
极性:单极性、双极性。
拍数(重点):单向四拍、双相四拍、半步八拍。
单相四拍 A/ B A B/ 正转(反转倒序即可)
双相四拍 A/B AB AB/ A/B/ 正转(反转倒序即可)
半步八拍 A/ A/B B AB A AB/ B/ A/B/ 正转(反转倒序即可)单相四拍,让一个绕组通电,另一个绕组不通电,A和A/电平相反即可,不过通常当前时序属于谁,谁就是高电平。四根线上电平时序如下所示:
A A/ B B/
0 1 0 0 第1拍
0 0 1 0 第2拍
1 0 0 0 第3拍
0 0 0 1 第4拍
4个节拍加起来就是一个完整的周期,按照这个周期给步进电机供电,则步进电机就会转动1个步距角。
双相四拍,四根线上电平如下所示:
A A/ B B/
0 1 1 0 第1拍
1 0 1 0 第2拍
1 0 0 1 第3拍
0 1 0 1 第4拍4个节拍加起来就是一个完整的周期,按照这个周期给步进电机供电,则步进电机就会转动1个步距角。
双相四拍较单相四拍有更高负载,但是更耗电,需根据实际情况选择。
半步八拍是上面两种的折中方案。时序逻辑是一样的。
控制器和驱动器
一套步进电机的系统需要三部分:控制器+驱动器+步进电机
一般情况下:控制器就是单片机,驱动器一般是接在单片机的IO口上面的专用电机驱动芯片(譬如我们开发板上的TC1117)
控制器负责产生时序信号,驱动器负责将时序信号转成功率驱动信号给步进电机用。
查看原理图
可以将驱动芯片就看做一个电流放大器,只用将信号输入端接到单片机的引脚上,将信号输出接到步进电机上,然后根据时序提供步进信号即可驱动步进电机转动。
代码实现
我将输入端接到芯片的P3.0、P3.1、P3.2、P3.3四个引脚,然后通过放大芯片的输出端分别控制步进电机的A/ A B/ B。
使用单相四拍(A/ B A B/)来驱动,则这几个引脚一个周期的节拍为:
1000
0001
0100
0010
代码如下:
/************************************************************ 日期:2022年7月23日 作者:星辰 文件内容:电机演示 **************************************************************/ #include<reg51.h> /************************************************************* 函数入口 **************************************************************/ void main(void) { while(1) { P3 = 0x1; P3 = 0x8; P3 = 0x2; P3 = 0x4; } }时序这样写没什么问题,可是下载到开发板中,没有反应,反而里面有异响,并且是发热比较严重。咋回事呢?线接错了?检查了没问题。
网上查阅资料,看到如下说法:
排除第一条和第二条,那就是频率太快导致的。
于是我在每一周期前加了延时,如下:
while(1) { Delay(); P3 = 0x1; P3 = 0x8; P3 = 0x2; P3 = 0x4; }但还是没用。确认不是周期间延时后,我就在每次节拍之间都加了延时,如下:
/************************************************************ 日期:2022年7月23日 作者:星辰 文件内容:电机演示 **************************************************************/ #include<reg51.h> void Delay(int count); /************************************************************* 函数入口 **************************************************************/ void main(void) { while(1) { P3 = 0x1; Delay(5); P3 = 0x8; Delay(5); P3 = 0x2; Delay(5); P3 = 0x4; Delay(5); } } void Delay(int count) { int i = 0, j = 0; for(i; i < count; i++) { for(j; j < 100; j++); } }电机终于转动了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我想,加点延时是不是为了给电机响应时间,要不前一个节拍还没来得及产生对应的效果,下一个节拍就来了,太快起不了作用??????????????????
具体就不深入分析了,先记住吧。
更多的启动节拍,以及反向转动,由于比较简单,就不赘述了。
速率由节拍之间的延时来控制;反向转动倒过来即可;其它节拍同理。
边栏推荐
- Foundation 31: Selenium positioning dynamic ID element
- RTOS系列(13):汇编LDR指令、LDR伪指令、[Rn]寄存器间接引用 详细解析
- 【黑马程序员】Redis学习笔记005:企业级解决方案
- Tips for improving code sustainability, take connectto method as an example.
- Redis4.0.14 sentinel automatic failover failed
- [shader realizes shadow projection effect _shader effect Chapter 8]
- [Sesame Street family] & Bert Bart Roberta
- uni-app
- CentOS 8.2 MySQL installation (xshell6)
- A simple hotel background management system based on jsp+servlet+mysql
猜你喜欢

Chapter 3 business function development (realize the real-time response of the select all button)

【黑马程序员】Redis学习笔记004:主从复制+哨兵模式+集群

Wechat Reservation Reservation of applet completion works applet graduation project (8) graduation project thesis template

uni-app

JD cloud and Forrester consulting released a hybrid cloud report that cloud Nativity has become a new engine driving industrial development

【黑马程序员】Redis学习笔记002:持久化:RDB 和 AOF

JS typewriter animation JS special effect plug-in autotyperjs

记录两次多端排查问题的过程

Graduation design of wechat small program ordering system of small program completion works (3) background function

This week's big news | FCC exposed Pico 4 VR all-in-one machine, and leipeng's parent company established a smart glasses laboratory
随机推荐
Force buckle - 1046. Weight of the last stone
Summary of SQL skills in data warehouse development
Idea reads configuration files such as validationmessages.properties Chinese garbled
Foundation 32: page element positioning method XPath --- axis positioning method
Message Oriented Middleware
25 Ph.D. degrees revoked
[dark horse programmer] redis learning notes 001: introduction to redis + five basic data types
Wechat reservation applet graduation project (7) mid term inspection report of applet completion works
提高代码可续性的小技巧,以connectTo方法为例。
PHP reports an error: classes\phpexcel\cell php Line(594) Invalid cell coordinate ESIGN1
[ten thousand words long text] Based on LSM tree thought Net 6.0 C # realize kV database (case version)
CentOS 8.2 MySQL installation (xshell6)
Recursive call to print every bit of an integer
A simple hotel background management system based on jsp+servlet+mysql
JD cloud and Forrester consulting released a hybrid cloud report that cloud Nativity has become a new engine driving industrial development
记录两次多端排查问题的过程
[untitled]
Network solutions for Alibaba cloud services
[shader realizes shadow projection effect _shader effect Chapter 8]
@Use of Autowired


