实验:驱动步进电机。
参考链接:
参考1
参考2
首先看下做完的效果:
动态gif图:
晚上,看了下电路图,对步进电机的原理了解了下,发现步进电机是如此的简单,我所认为的简单是一个简单的驱动,具体到步进电机的设计什么的,肯定复杂的很,只不过我现在只是以一个菜鸟级别的身份去写个简单的驱动。步进电机主要是靠对A,B,C,D各个磁极进行通电,然后由于磁力作用,导致电机慢慢转动,转动原理如下,下图采用单三拍的方式,主要是原理弄清楚即可:
在开发板上,步进电机的原理图如下:
实现代码如下:
#include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit wela = P2 ^ 7; sbit dula = P2 ^ 6; uchar code ele[] = {0x20, 0x10, 0x08, 0x04};//顺时针 uchar code ele_v[] = {0x04, 0x08, 0x10, 0x20};//逆时针 void delay(uint time) { uint x, y; for (x = time; x > 0; x--) for (y = 110; y > 0; y--); } //对A,B,C,D口进行电平设置 void diplay() { uint i = 0; for (; i < 4; i++) { P0 = ele_v[i]; delay(5); } } void main() { //关闭数码管显示 wela = 1; P0 = 0xff; wela = 0; delay(50); dula = 1; P0 = 0x00; dula = 0; delay(50); while (1) { diplay(); } }
文章的脚注信息由WordPress的wp-posturl插件自动生成