You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Arduino Uno、电流传感器和直流电机搭建扭矩控制电路

基于Arduino Uno的直流电机双档位扭矩控制实现方案

核心原理

直流有刷电机的输出扭矩与电枢电流呈近似线性正相关,因此控制扭矩的本质是闭环控制电机的工作电流,你提到的DiodeZetex 5引脚电流传感器就是用来采样电机实时电流的核心器件,配合拨动开关切换目标电流阈值,就能实现两个预设扭矩的切换功能。

硬件连接说明

DiodeZetex 5引脚电流传感器(以常用的ZXCT1010型号为例)

5个引脚的定义与连接方式如下:

  • RS+、RS-:串联接入电机电源的正极回路,电流需从RS+流入、RS-流出,不要反接
  • VCC:接Arduino Uno的5V引脚
  • GND:接Arduino Uno的GND引脚,必须和电机驱动模块的GND共地
  • OUT:接Arduino Uno的A0模拟输入引脚,输出电压与采样电流成正比,ZXCT1010的默认比例为1V/A

其他元器件连接

  • 拨动开关:一端接Arduino Uno的D2数字引脚,同时串联10kΩ下拉电阻到GND;另一端接Arduino Uno的5V引脚,开关高低电平对应两个扭矩档位
  • 电机驱动模块(必须搭配H桥驱动,如DRV8871、L298N):PWM控制引脚接Arduino Uno的D9引脚,电源输入端接电机供电电源,输出端接直流电机,GND与Arduino共地

扭矩对应电流值设置方法

  1. 先完成电流校准:给电机通入已知数值的电流,读取A0引脚的电压值,计算出实际的电流-电压换算系数,写入代码
  2. 根据实际需要的两个扭矩值,换算得到对应的目标电流值,提前写入代码常量
  3. 代码中通过读取拨动开关的电平状态,切换当前生效的目标电流值,再通过闭环控制调整电机驱动的PWM占空比,让实际采样电流稳定在目标值即可

若对扭矩精度要求不高,可直接用简易比例控制代替PID控制,降低代码复杂度

示例代码框架

const int currentSensorPin = A0;
const int switchPin = 2;
const int motorPwmPin = 9;
// 两个档位对应目标电流,单位:mA,根据实际扭矩需求调整
const int targetCurrentLow = 500; 
const int targetCurrentHigh = 1200;
// 电流换算系数,单位:mV/mA,根据校准结果修改
const float currentCoeff = 1.0; 
int pwmValue = 0;

void setup() {
  pinMode(switchPin, INPUT);
  pinMode(motorPwmPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // 读取当前电机电流
  int sensorRaw = analogRead(currentSensorPin);
  float voltageMV = sensorRaw * 5000.0 / 1023.0; // 转换为毫伏单位
  float realCurrent = voltageMV / currentCoeff;

  // 切换目标电流
  int switchStatus = digitalRead(switchPin);
  float targetCurrent = (switchStatus == HIGH) ? targetCurrentHigh : targetCurrentLow;

  // 简易比例闭环控制调整PWM
  if(realCurrent < targetCurrent) {
    pwmValue = constrain(pwmValue + 3, 0, 255);
  } else if(realCurrent > targetCurrent) {
    pwmValue = constrain(pwmValue - 3, 0, 255);
  }
  analogWrite(motorPwmPin, pwmValue);

  delay(10);
}

内容的提问来源于stack exchange,提问作者Cesca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:39:03