难的东西学不会是因为简单的知识没学好
基础不牢,地动山摇
1.0直流电机
1.0.0什么是电机
(1)电机:就是电动机,有电能产生动能的一种装置。简称电机
1.0.1分类(不完全分类)
(1)交流电机:没有正负,
(2)直流电机:永磁 励磁
(3)步进电机(精度不是特别高)、伺服电机(精度高于步进电机):精确控制
1.0.1直流电机
(1)单片机IO口不能直接驱动直流电机。因为单片机的IO口的驱动能力很弱(一般20ma左右)
(2)单片机的IO口是数字的,
(3)直流电机没有正负之分,调换两个接线柱,电机的运行方向发生翻转,顺时针转动与逆时针转动的区别。
1.1步进电机
1.1.0
(1)特点:精确控制旋转角度。
(2)步距角:也可以说是步长,就是电机一次走多少距离。走的距离越小,那么说明精度越高。步进电机有一个固定的步距角,这个角度和步进电机本身有关。一般有1.8° 与 1.2°的。
(3)相数:步进电机中的绕组的个数。2 3 4相等,相数越多步距角度越小,控制越精确。
(4)细分:一般是控制芯片实现的,对于步进电机的固定步距角再进行细分。使得控制更加精确。
1.1.1
(1)极性:单极性和双极性
(2)拍数
单相四拍 A/ B A B/ 正转
双相四拍 A/B AB AB/ A/B/ 正转
半步八拍 A/ A/B B AB A AB/ B/ A/B/
时序:A/ B A B/
四根线上电平
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/B AB AB/ A/B/
四根线上电平
A A/ B B/
0 1 1 0 第1拍
1 0 1 0 第2拍
1 0 0 1 第3拍
0 1 0 1 第4拍
(3)要控制步进电机的运转:需要控制器 ,驱动器 步进电机本身三部分。
控制器一般就是MCU 驱动器就是专门的电机驱动芯片,具有强的驱动能力。
1.2代码实践
#include <reg51.h> /* 接线: A P1^0 B P1^1 C P1^2 D P1^3 OUTA对应A-、OUTB对应A+、OUTC对应B-、OUTD对应B+。 */ #define TIME 10 sbit APositive = P1^1; sbit ANegative = P1^0; sbit BPositive = P1^3; sbit BNegative = P1^2; void delay(unsigned char t); // 单相四拍 A/ B A B/ // 双相四拍 A/B AB AB/ A/B/ // 半步八拍 A/ A/B B AB A AB/ B/ A/B/ void main(void) { while(1) { // 单相四拍 A/ B A B/ ANegative = 1; BPositive = 0; APositive = 0; BNegative = 0; delay(TIME); ANegative = 0; BPositive = 1; APositive = 0; BNegative = 0; delay(TIME); ANegative = 0; BPositive = 0; APositive = 1; BNegative = 0; delay(TIME); ANegative = 1; BPositive = 0; APositive = 1; BNegative = 0; delay(TIME); ANegative = 0; BPositive = 0; APositive = 0; BNegative = 1; delay(TIME); /* // 双相四拍 A/B AB AB/ A/B/ ANegative = 1; BPositive = 1; APositive = 0; BNegative = 0; delay(TIME); ANegative = 0; BPositive = 1; APositive = 1; BNegative = 0; delay(TIME); ANegative = 0; BPositive = 0; APositive = 1; BNegative = 1; delay(TIME); ANegative = 1; BPositive = 0; APositive = 0; BNegative = 1; delay(TIME); */ /* // 单相八拍 A/ A/B B AB A AB/ B/ A/B/ ANegative = 1; BPositive = 0; APositive = 0; BNegative = 0; delay(TIME); ANegative = 1; BPositive = 1; APositive = 0; BNegative = 0; delay(TIME); ANegative = 0; BPositive = 1; APositive = 0; BNegative = 0; delay(TIME); //A/ A/B B AB A ANegative = 0; BPositive = 1; APositive = 1; BNegative = 0; delay(TIME); ANegative = 0; BPositive = 0; APositive = 1; BNegative = 0; delay(TIME); //AB/ B/ A/B/ ANegative = 0; BPositive = 0; APositive = 1; BNegative = 1; delay(TIME); ANegative = 0; BPositive = 0; APositive = 0; BNegative = 1; delay(TIME); ANegative = 1; BPositive = 0; APositive = 0; BNegative = 1; delay(TIME); */ } } void delay(unsigned char t) { unsigned char a,b; for(a=0;a<200;a++) for(b=0;b<t;b++); }
讯享网
留几个问题:
(1)单相四拍、双相四拍、半步八拍的之间的特点与差异?
除了每一个后者比前这的速度慢了,动力大了,还有那些差别。半步八拍控制的精度比前者高了。
(2)如果编程严格的按找节拍来,或者说是编程时有失误,假如中间某一个节拍错了,会发生什么情况?有什么隐患?(我代码简单实验了一下,感觉上还是正常转动。但是会不会发热或者什么的不太清楚。)
(3)也就是简单的了解下电机的基础知识而已,有相关的项目了再深入研究吧!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36506.html