程序员

玩转物联网外设之步进电机 -《神奇的物联网》

作者:admin 2021-08-20 我要评论

1.电机简介 电机是在IoT领域经常用到的一个重要模块 大到使用在农业中的水泵、电动大棚 小到机器人、甚至镜头中的微型马达 都需要使用到电机 可以说电机是为设备...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
1.电机简介

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

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

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


2.核心模块HaaS100核心板

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

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

步进电机

电机型号 42BYGH39-401A

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

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

出轴轴径 5mm

出轴方式 单/双出轴 默认发单轴

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

电机驱动器

驱动器型号 TB6600升级版

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

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

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

细分数 6400细分

image


3.硬件接线方法

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

image

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脉冲信号输出

image

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

? ? int fd

? ? int i

? ? int val

? ? 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_2

? ? ? ? config.config GPIO_IO_OUTPUT | GPIO_IO_OUTPUT_PP;

? ? ? ? config.data

? ? ? ? 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_3

? ? ? ? config.config GPIO_IO_OUTPUT | GPIO_IO_OUTPUT_PP;

? ? ? ? config.data

? ? ? ? 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百事通”

image


本文转自网络,原文链接:https://developer.aliyun.com/article/787510

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 玩转物联网外设之步进电机 -《神奇的物

    玩转物联网外设之步进电机 -《神奇的物

  • HaaS100 OTA之固件验签功能介绍

    HaaS100 OTA之固件验签功能介绍

  • 一篇搞懂什么是数据中台 | 开发者社区

    一篇搞懂什么是数据中台 | 开发者社区

  • 如何基于AliOS Things 3.3编译Python固

    如何基于AliOS Things 3.3编译Python固

腾讯云代理商
海外云服务器