1.电机简介

电机是在IoT领域经常用到的一个重要模块,大到使用在农业中的水泵、电动大棚,小到机器人、甚至镜头中的微型马达,都需要使用到电机,可以说电机是为设备提供机械动力的重要来源之一。

而步进电机又是电机中较为复杂的一类,它是基于最基本的电磁铁原理,它接收外部的电脉冲信号,通过其内部的逻辑电路,控制步进电机的绕组以一定的时序正向或反向通电,从而产生电磁场,使得电机正向/反向旋转,或者锁定。步进电机的角位移量与输入的脉冲个数严格成正比,而且在时间上与脉冲同步。因而只要控制脉冲的数量、频率和电机绕组的相序,即可获得所需的转角、速度和方向。

本文就以时下最火的HaaS100开发板为例,描述一下如何控制步进电机。

2.核心模块

HaaS100核心板

HaaS100是一款物联网场景中的标准硬件,并配套嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设备高效开发服务。

HaaS100核心板有着丰富的外设接口,如下所示,足够用来控制电机,以及驱动器了。

步进电机

电机型号:42BYGH39-401A

电流:1.5A 输出力矩:0.4Nm(牛米)

机身长度:39mm 出轴长度:21mm

出轴轴径:5mm

出轴方式:单/双出轴(默认发单轴)

出线方式: 二相四根引出线 (黑色A+绿色A-红色B+蓝色B-)

电机驱动器

驱动器型号:TB6600升级版

脉冲信号:3.3v/5V/24V兼容,不需要窜电阻

输入电压: DC(直流)9~42V 适应恶劣的电网环境

电流:4A 的速度自适应电路,电流自动寻优

细分数:6400细分

3.硬件接线方法

电机和驱动器有两种接法,本文采用共阴极接法

HaaS100和驱动器接线如下:

HaaS100接口

驱动器接口

功能

PIN3(GND)

ENA-

接地

PIN10(GPIO_P2_2)

ENA+

电机使能

PIN4(GND)

DIR-

接地

PIN12(GPIO_P2_3)

DIR+

电机方向控制

PIN7(GND)

PUL-

接地

PIN9(GPIO_P2_5)

PUL+

PWM脉冲信号输出

4.软件开发

4.1 首先根据https://help.aliyun.com/document_detail/184184.html?spm=a2c4g.11186623.6.701.d706566froCbj8的快速开始搭建好HaaS100的软件开发环境。

4.2 在solution/helloworld_demo.c中添加gpio和pwm的依赖:

## 第二部分:依赖信息
depends:- cli: dev_aos- osal_aos: dev_aos- haas100: dev_aos- gpio: dev_aos- pwm: dev_aos

4.3.在components/drivers/peripheral/gpio/gpio_example.c中增加电机相关控制代码

int vfs_gpio_motor_test(){int ret = 0;int fd = 0;int i=0;int val=0;char buffer[16];struct gpio_io_config config;fd = open("/dev/gpio", 0);ddkc_info("open gpio %s, fd:%d\r\n", fd >= 0 ? "success" : "fail", fd);if (fd >= 0) {//驱动器是能端ENA+config.id = 18; //GPIO2_2config.config = GPIO_IO_OUTPUT | GPIO_IO_OUTPUT_PP;config.data = 0;ret = ioctl(fd, IOC_GPIO_SET, (unsigned long)&config);ddkc_info("gpio write %d return %d\r\n", config.data, ret);usleep(1000000);//驱动器是能端DIR+config.id = 19; //GPIO2_3config.config = GPIO_IO_OUTPUT | GPIO_IO_OUTPUT_PP;config.data = 1;ret = ioctl(fd, IOC_GPIO_SET, (unsigned long)&config);ddkc_info("gpio write %d return %d\r\n", config.data, ret);usleep(1000000);}
}struct cli_command vfs_gpio_cli_cmds[] = {{ "gpiot", "gpio test", vfs_gpio_cli_cmd, },{ "gpio_out_pp", "gpio test output pp", vfs_gpio_motor_test, },
};

4.4.在components/drivers/peripheral/gpio/package.yaml中添加example

source_file:- "src/*.c"- "example/gpio_example.c" //要打开注释

4.5.编译和烧录

4.6.启动板子在串口中输入:

#控制gpio口
gpio_out_pp
#控制pwm脉冲输出,3表示PWM3,100HZ频率,持续输出10s
pwm 3 100 10  

5.结语

至此,步进电机已经可以转动了,通过调节频率以及DIR的高低电平变可以控制电机的转速和方向。另外在开发过程中有任何问题,欢迎在我们的官网:

https://haas.iot.aliyun.com/

询问“HaaS百事通”

玩转物联网外设之步进电机相关推荐

  1. 开放下载!《深入浅出玩转物联网平台》

    简介:一书详解IOT必备要点,云运维工程师不可错过的匠心之作 物联网正在迅速发展.势不可当,企业或创业者该如何面对? 本书从实际需求出发,分为上下两卷,和读者一起从多角度认识物联网.作者从复杂的IoT ...

  2. 物联网外设学习笔记-摄像头(一)

    物联网外设学习笔记-摄像头(一) Camera 简介 摄像头(CAMERA)又称为电脑相机.电脑眼等,它作为一种视频输入设备,在过去被广泛的运用于视频会议.远程医疗及实时监控等方面.近年以来,随着互联 ...

  3. MicroPython玩转物联网之WIFI通信开发板

    互联网+.全民IoT等热词的兴起让物联网逐渐成为新一代信息技术的重要组成部分.思科首席未来学家.首席技术学家戴夫-埃万斯(DaveEvans)称,在未来十年内,物联网.云服务和虚拟人类等十大技术发展趋 ...

  4. 教你用华为云玩转物联网开发

    声明:本篇文章部分资料来自直播HCSD专家讲堂 <一节课玩转物联网开发>,本课程为直播课程 本篇文章将带大家了解物联网数据在华为云loT平台上端到端流转的过程,并指导大家基于华为云IoTD ...

  5. 玩转物联网:(2)语音控制开关灯

    玩转物联网:(2)语音控制开关灯 演示效果 第一步:所需器材及线路连接 所需器材:esp8266开发板1块.舵机1个.杜邦线3根.9V电池1个及供电线1条. 第二步:esp8266开发板程序烧录 ar ...

  6. 小团队如何玩转物联网开发?

    近几年来,物联网发展迅速:据中商产业研究院<2016--2021年中国物联网产业市场研究报告>显示,预计到2020年,中国物联网的整体规模将达2.2万亿元,产业规模比互联网大30倍. 与之 ...

  7. 为什么运营商玩不转物联网?

    为什么说几大运营商搞不了物联网,并非信口开河.很多人都记得09年末,物联网突然风靡,无锡知名度陡升,先是移动.联动.电信入驻,要开展物联网研究,后来广电.电力加入,国内五大网络运营商全来了,声势浩大, ...

  8. 51单片机怎么显示当前时间_51单片机玩转物联网基础篇06-LCD1602液晶显示器

    前言 本节我们开始学习LCD1602,LCD1602是字符型液晶显示屏,在实际项目中应用非常广泛,学完本节就可以逐步开发一些好玩的应用了. 一.基础知识 1.LCD1602简介 LCD1602是字符型 ...

  9. 干货分享丨玩转物联网IoTDA服务系列四-智能网关

    场景简介 已对接存量设备的网关,不用迁移就可以实现对既有设备和新设备的兼容控制. 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧 ...

最新文章

  1. CentOS 6.9下配置安装KVM
  2. SparkStreaming和Storm的区别
  3. 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)
  4. linux系统从开机到登录之前的启动流程
  5. 关于l ibrary not found for -lz.1.2.3 编译错误
  6. java jstat gc_分析JVM GC及内存情况的方法
  7. BeetleX实现HTTP协议详解
  8. 简单的c语言游戏编程打地鼠,少儿创意编程scratch初级游戏--打地鼠
  9. JS判断数组是否包含某个元素
  10. Docker 镜像批量导入导出脚本
  11. java安卓字体_Android中添加外部字体库和竖直排列字体
  12. 为什么我会性格懦弱?如何改变懦弱的性格?
  13. mysql 查询字母集合_使用MySQL查询查找所有以字母“ a”,“ b”或“ c”开头的名称?...
  14. ModuleNotFoundError: No module named ‘kombu.five‘
  15. android app内部打开word pdf .doc类型文件的两种方式
  16. 7-7 厘米换算英尺英寸 (10分)
  17. 基于有源钳位三电平的有源电力滤波器(ANPC-APF)MATLAB仿真,包括自建的DSOGI锁相模块和PQ谐波检测模块
  18. react生命周期学习
  19. SeAFusion:首个结合高级视觉任务的图像融合框架
  20. openGrok手动更新索引的方法

热门文章

  1. 通过wireshark抓取Lookback数据包
  2. VSTS for Database Professionals Sql Server Data-tier Application
  3. mac mysql dmg安装_mac上面MYSQL安装
  4. Thread地址(IPv6 and RLOC16)
  5. SA738GrB核电钢板
  6. aptio2018设置u盘启动_系统重装u盘启动怎么设置_重装系统设置U盘启动的步骤-win7之家...
  7. JS 是怎样运行起来的
  8. 谷歌的代码覆盖率最佳实践
  9. 计算机上的蜘蛛纸牌游戏打不开,win7系统系统笔记本打不开蜘蛛纸牌游戏的解决方法...
  10. 云上铺智能会员管理系统优惠券的设置及推广