下面上一些代码,是没有用任何库的.

仅仅是将步进点击链接到arduino不同的8, 9, 10 , 11口上的

Arduino 控制步进电机 2012-06-11 12:44:44
原帖:http://blog.chinaunix.net/uid-23686726-id-3238613.html
代码让我给改了改, 还是推荐装个motor shield吧.不然这样折腾 单片机肯定是不撑的.
看样子是4步8相的.
具体4步8相是啥,请看我上篇博客:http://www.cnblogs.com/spaceship9/archive/2013/04/10/3012552.html

分类: 嵌入式

        int Pin0 = 8;int Pin1 = 9;int Pin2 = 10;int Pin3 = 11;int _step = 0;boolean dir = true;//正反转的 flagint stepperSpeed = 1;//电机转速,1ms一步void setup(){pinMode(Pin0, OUTPUT);pinMode(Pin1, OUTPUT);pinMode(Pin2, OUTPUT);pinMode(Pin3, OUTPUT);}//用下面的代码仿照PWM输出,看看类不累..哈哈.._step 从0 加到7 再变成0, 就这样一直循环下去.void loop(){switch(_step){case 0:digitalWrite(Pin0, LOW);digitalWrite(Pin1, LOW);digitalWrite(Pin2, LOW);digitalWrite(Pin3, HIGH);break;case 1:digitalWrite(Pin0, LOW);digitalWrite(Pin1, LOW);digitalWrite(Pin2, HIGH);digitalWrite(Pin3, HIGH);break;case 2:digitalWrite(Pin0, LOW);digitalWrite(Pin1, LOW);digitalWrite(Pin2, HIGH);digitalWrite(Pin3, LOW);break;case 3:digitalWrite(Pin0, LOW);digitalWrite(Pin1, HIGH);digitalWrite(Pin2, HIGH);digitalWrite(Pin3, LOW);break;case 4:digitalWrite(Pin0, LOW);digitalWrite(Pin1, HIGH);digitalWrite(Pin2, LOW);digitalWrite(Pin3, LOW);break;case 5:digitalWrite(Pin0, HIGH);digitalWrite(Pin1, HIGH);digitalWrite(Pin2, LOW);digitalWrite(Pin3, LOW);break;case 6:digitalWrite(Pin0, HIGH);digitalWrite(Pin1, LOW);digitalWrite(Pin2, LOW);digitalWrite(Pin3, LOW);break;case 7:digitalWrite(Pin0, HIGH);digitalWrite(Pin1, LOW);digitalWrite(Pin2, LOW);digitalWrite(Pin3, HIGH);break;default:digitalWrite(Pin0, LOW);digitalWrite(Pin1, LOW);digitalWrite(Pin2, LOW);digitalWrite(Pin3, LOW);break;}if(dir){_step++;}else{_step--;}if(_step>7){        //请注意,这边_step> 7的时候,已经是在上面的那个判断里面从7加到8了.但是, 最后一次执行的时候,还是7 !!!_step=0;      //所以这里变成0 是必须的.
          }if(_step<0){       //同理_step=7;}delay(stepperSpeed);        //电机休息一下,用来调速用的.}

这里,还转了一些别人做过的一些实验. 对步进电机介绍的比较详细:

原帖地址:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=101

步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的 方向转动一个固定的角度(及步进角)。你可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时你也可以通过控制脉冲频率来控制电机转动的速 度和加速度,从而达到调速的目的。

下面这个就是本次实验使用的步进电机

工业使用的步进电机与本次实验使用的不同,下面图式两种不同款式的工业用步进电机

使用步进电机前一定要仔细查看说明书,确认是四相还是两相,各个线怎样连接,本次实验使用的步进电机是四相的,不同颜色的线定义如下图:

下面是电机的端口结构图,1,3为一组,2,4为一组,5号是共用的VCC。

因本次使用的步进电机功率很小,所以可以直接使用一个ULN2003芯片进行驱动,如果是大功率的步进电机,是需要对应的驱动板的。

ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。可以用来驱动步进电机。

其结构图如下

硬件连接图如下

把代码下载到arduino控制板中看看效果

    /** 步进电机跟随电位器旋转* (或者其他传感器)使用0号模拟口输入* 使用arduino IDE自带的Stepper.h库文件*/#include <Stepper.h>// 这里设置步进电机旋转一圈是多少步#define STEPS 100// attached to设置步进电机的步数和引脚Stepper stepper(STEPS, 8, 9, 10, 11);// 定义变量用来存储历史读数int previous = 0;void setup(){// 设置电机每分钟的转速为90步stepper.setSpeed(90);}void loop(){// 获取传感器读数int val = analogRead(0);// 移动步数为当前读数减去历史读数stepper.step(val - previous);// 保存历史读数previous = val;}

电流芯片文档下载地址:

http://www.ti.com/lit/ds/symlink/uln2003a.pdf

转载于:https://www.cnblogs.com/spaceship9/archive/2013/04/10/3012780.html

Arduino 各种模块篇 步进电机 step motor( 不用库,不用shield, 纯)相关推荐

  1. Arduino 各种模块篇 DHT11 温度湿度 数字模块 单总线

    ---恢复内容开始--- DHT11 以前用的是DS18B20也是但总线的,而且每个DS18B20都有一个特定的ROM,所以将许多单总线的温度计放在一根线上也行. 真是一个非常好的设计方案! 如果这里 ...

  2. arduino步进电机程序库_Arduino入门教程15(步进电机驱动库的使用):Arduino Uno R3+ULN2003+步进电机 使用Stepper驱动库,控制步进电机转动角度...

    本篇介绍步进电机驱动库的使用,通过读取电位器输入,控制步进电机转动相应角度. Stepper库是官方提供的驱动库,我们启动Arduino IDE,点击「文件」-「示例」就能找到Stepper库,官方提 ...

  3. Arduino 各种模块篇 motor shield

    根据arduino官方网站出的shield, 类似的情况有很多中motor shield 这里测试采用的是http://www.seeedstudio.com/wiki/Motor_Shield_V1 ...

  4. Arduino 各种模块篇 光敏感应器 简易光敏

    这一款是非常简单的光敏感应器 简单到,只对一定光强度有信号感应,输出TTL电平. 此款也是用电位器来调节的. 都是这么简单. 过段时间我为大家奉上数字版的光敏传感器. ---------------- ...

  5. Arduino 各种模块篇 舵机 Modules - Servo

    舵机 舵机是一种非常有意思的,多级齿轮增大扭力的widget.非常有用.在很多方面. Servo is very useful. Now Please check this out : What is ...

  6. Arduino 各种模块篇 震动模块 常开 震动传感器模块

    以下是店家提供的一部分资料 一共就需要3根线 ------------------分割线------------------------ 用途: 用于各种震动触发作用,报盗报警,智能小车,电子积木等. ...

  7. 用MATLAB程序控制伺服电机,使用MATLAB和Arduino开发板进行步进电机控制

    步进电机是一种无刷直流电机,可以分步旋转,是许多精密运动控制应用的最佳选择.此外,步进电机适用于定位.速度控制和低速需要大扭矩的应用. 在之前的MATLAB教程中,我们已经介绍了如何使用MATLAB来 ...

  8. arduino 步进电机驱动库_一文看懂arduino驱动uln2003操作步进电机的方法

    arduino驱动uln2003操作步进电机的方法 1.网上买的步进电机,很多接线顺序都不对.经过不懈努力查资料,终于找到了能用的接线方式: 电机上的12345针脚,对应着接线端子的42135. 2. ...

  9. 织女星开发板RISC-V核通过SPI协议驱动ARDUINO LCD模块(触屏)

    前言 之前写了一个通过SPI协议初始化LCD屏幕并显示字符串和图片的文章,这次再尝试一下触屏的功能. 准备工作 1,焊接织女星开发板J1,J2,J3,J4的双排母座,以便与LCD屏通信.前段时间免费申 ...

最新文章

  1. 小学计算机课计划,小学信息技术教学工作计划
  2. (LeetCode 92)Reverse Linked List II
  3. matlab硬接触,abaqus中的关于硬接触(Hard contact)、及其他接触
  4. 地方门户网站运营策略
  5. Python【每日一问】08
  6. JAVA语法基础 动手动脑及课后作业
  7. springboot listener_Springboot 全套面试提升宝典,为金三银四冲刺
  8. 博客园随笔添加自己的版权信息 [转]
  9. pandas计算时间的间隔天数
  10. 电视助手 Android,无屏助手TV版|无屏助手电视版 V4.0.3 安卓版 下载_当下软件园_软件下载...
  11. OpenCV 两张大小不同图片的叠加
  12. DateTime类型的12小时制与24小时制
  13. 递归算法删除某一链表指定节点为什么不会发生断链?(解析原因)
  14. windows下载安装配置Geany
  15. 基于java基于javaweb的管理系统设计与实现怎样选题思路分享
  16. 服装行业如何利用长尾关键词挖掘推广?
  17. 参加“灵狐公司”的技术年会,感受最新MS OFFICE 2007的应用价值!
  18. java学习之服务器第28天( --jsp--三个指令--六个动作标签--PageContext域--EL表达式--)
  19. 【Python-5】Conditionals Control Flow
  20. 201571030121《小学四则运算练习软件软件需求说明》结对项目报告

热门文章

  1. python去重复元素_python 去除单个list中的重复元素
  2. java与ios_JAVA和IOS区别是什么?
  3. 系统崩溃mysql怎么保存表_第09问:MySQL 莫名崩溃,如何保留现场?
  4. CentOS 6 rpm方式安装mysql
  5. JAVA复习5(集合——LinkedList)
  6. python全排列_全排列算法python实现
  7. c语言 读取一个文件 删除注释,C/C++ 源文件删除注释代码
  8. selenium java 断言_Java+Selenium+Testng自动化测试学习(三)— 断言
  9. midaspay能删除吗_midasPay返回90009错误
  10. 深度搜索问题c语言,C语言实现的图的深度搜索与广度搜索程序.doc