目录
前言
最近又开始玩起舵机MG90S/SG90舵机。如果是控制一个舵机可以用单片机其中一个引脚输出PWM信号就可以了。但是多个舵机又如何解决,不仅增加了负载,还用去不少MCU资源。驱动板此时就起作用了PCA9685(这个应该便宜!)控制起来也很方便!。发现了比PCA9685还不便宜的驱动板LU9685,这个使用起来非常简单。具体使用方法往下看!
一、LU9685_20U?
驱动板原理图:
模块两种控制方式:1.I2C控制 ; 2.UART控制。本文主要使用I2C控制:
舵机供电V+:5v-12v(根据舵机供电调整电压)
模块通信供电DVCC:2.8v-5.5v(模块与舵机是独立供电)
LU9685输出PWM信号的频率是50H在,高电平0.5ms-2.5ms可调,高电平时间对应舵机的0-180度
通道0-15的舵机控制输出。
默认I2C地址:0x80(如果要更换地址请参考数据手册)。截图如下:
仅提供参考,还要实际调整!
在购买模块时,卖家会给你数据手册,文件里还有STM32的控制例程。
控制指令说明:
(1).I2C
(2).UART
二、使用步骤
1.硬件连接
ESP32: ---------------- LU9685模块:
D21 ------------------------ SDA
D22 ------------------------- SCL
RXD ----------------------- TX2
TXD ------------------------ RX2
GND ----------------------- GND (模块地跟舵机是共地)
3.3V ------------------------ DVCC
2.写入程序
代码如下(示例):I2C控制 ,程序由ArduinoIDE构建 ,如下
/*
* @file main.cpp
* @author jonnie Walker
* @brief ESP32_LU9685-20U-Test
* @version 0.1
* @date 2023-11-29
*
* @copyright Copyright (c) 2023
* -------------------------------------------------------------------/
LU9685-20U-Test
引入宏定义DEVICE_ADDRESS,以便更方便地修改设备地址。
创建了一个新的函数sendCommand,用于发送指令,避免了代码重复。
简化了每个指令的调用,将Wire.beginTransmission、Wire.write和Wire.endTransmission集成在一起
定义了四个函数
*/
#include <Wire.h>
#define DEVICE_ADDRESS 0x80 // 替换为设备的地址
void setup() {
Wire.begin(); // 初始化IIC总线
Serial.begin(115200); // 打开串口通信(用于调试输出)
}
void loop() {
resetDevice(); // 发送复位指令
controlChannel(1, 90); // 控制通道1的角度为90度
delay(1000); // 等待1秒
// controlChannel(14, 180);
// delay(1000);
controlAllChannels(30); // 同时控制所有通道的角度为30度
delay(1000); // 等待1秒
}
void sendCommand(byte command[], byte length) {
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(command, length);
Wire.endTransmission();
delay(10);
}
void resetDevice() {
byte command[] = {0xFB, 0xFB}; // 复位指令
sendCommand(command, sizeof(command));
}
void controlChannel(byte channel, byte angle) {
byte command[] = {channel, angle}; // 控制指令
sendCommand(command, sizeof(command));
}
void controlAllChannels(byte angle) {
byte command[] = {0xFD, angle}; // 同时控制所有通道的指令
sendCommand(command, sizeof(command));
}
LU9685控制舵机
总结
内容仅供参考!
如果文中没有你想得到的参数,那么去看他给的数据手册!
基本使用此模块就这几步,使用也方便。LU9685还具有两种控制方式(IIC,UART),舵机的速度控制就................! 。PCA9685与LU9685各有优缺点!根据自己的需求选择吧。共同特点可以同时控制多个舵机,通过IIC控制可以挂载多个驱动板来控制很多舵机。