使用电位器监控直流电机状态

该博客介绍了如何利用NodeMCU 32s作为I2C主机,Arduino Micro Pro和Adafruit Motor Featherwing作为从机,通过10k电阻电位器监控直流电机的状态。在MacOS环境下,使用VSCode和PlatformIO进行程序开发。I2C协议被用于主机和从机之间的通信,实现数据传输。文章还提到了多从机连接时的接线注意事项和代码示例。
摘要由CSDN通过智能技术生成

部分电机无法知道当前运行状态处于第几圈,通过加装电阻电位器简单实现电机的状态监控

实现思路:

使用nodemcu32s作为i2c主机,arduino pro micro和adafruit motor featurewing电机驱动板作为i2c从机,Arduino负责读取10k电阻电位器的值,通过i2c传输给主机;主机一边接收arduino数据,一边驱动电机运动

程序运行环境:

macOS+vscode+platformIO

I2C

简介:

和计算机的sata协议、nvme协议一样,是单片机数据传输的总线协议。

i2c包含一个主机master,一个或多个从机slave,SDA数据线,SCL时钟线。

特点:
  • 半双工,SDA线是可以双向传输的
  • 主机控制数据的接受和发送,切换
  • 通信速率由主机SCL线控制
  • 以字节byte(8位)传输
  • 多从机需要使用上拉电阻,抗干扰能力差

接线:

PS nodemcu32s arduiino pro micro 电位器 motor featherwing
SDA P21(GPIO21) 2 左上1
SCL P22(GPIO22) 3 左下2
21(A3) 2
vcc 1
gnd 3

各模块引脚图

NodeMCU-32s

在这里插入图片描述

aruidno micro pro

在这里插入图片描述

Adafruit Motor Featherwing

在这里插入图片描述

10k电阻电位器

在这里插入图片描述

DC直流电机

在这里插入图片描述

代码:

NodeMCU 32s(主机):

#include <Arduino.h>
#include <Wire.h>
#include <stdlib.h>
#include <Adafruit_MotorShield.h>

//定义esp32的i2c引脚、arduino的从机地址、电机驱动板的从机地址
#define SDA_PIN 21
#define SCL_PIN 22
#define ARDUINO_SLAVE_ADDR 0x04
#define MOTOR_SLAVE_ADDR 0x60

//创建线程任务句柄,esp32有两个核心,我准备使用核心0来控制电机,核心1接收arduino数据
TaskHandle_t Task1;

//初始化电机驱动板的地址和端口
Adafruit_MotorShield AFMS &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值