Error_016 2023-08-01 08:43 采纳率: 27.3%
浏览 14

Arduino连接hcsr04一直返回0

用的是nano板,单独连接一个hcsr04是正常的,但当我连接电机驱动板并输出控制信号就不正常了,总频率100Hz时返回的距离不时显示0cm,再高一点就一直返回0了,似乎这两个模块会互相干扰似的

img


附源码:


class Ultrasonic_ranging_module
{
public:
  int m_trigPin;
  int m_echoPin;
  Ultrasonic_ranging_module(int trigPin,int echoPin){
    m_trigPin = trigPin;
    m_echoPin = echoPin;
    pinMode(m_trigPin,OUTPUT);
    pinMode(m_echoPin,INPUT);
    Serial.println("超声波测距模块初始化完成");
  }
  int ranging_cm(){
    digitalWrite(m_trigPin,LOW);
    delayMicroseconds(5);
    digitalWrite(m_trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(m_trigPin,LOW);
    pinMode(m_echoPin,INPUT);
    return (pulseIn(m_echoPin,HIGH)*0.034) / 2;
  }
  int ranging_inches(){
    digitalWrite(m_trigPin,LOW);
    delayMicroseconds(5);
    digitalWrite(m_trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(m_trigPin,LOW);
    pinMode(m_echoPin,INPUT);
    return (pulseIn(m_echoPin,HIGH)*0.0135) / 2;
  }
};
long cm;
Ultrasonic_ranging_module u1(A0,A1);
float w1 = 1;
float w2 = 1;
int Int1 = 0;
int Int2 = 100;
int Int3 = 0;
int Int4 = 100;
int Pin1 = 3;
int Pin2 = 11;
int Pin3 = 5;
int Pin4 = 9;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(Pin1,OUTPUT);
  pinMode(Pin2,OUTPUT);
  pinMode(Pin3,OUTPUT);
  pinMode(Pin4,OUTPUT);
  
  Serial.println("设备正常");
}

void loop() {
  // put your main code here, to run repeatedly:
  cm = u1.ranging_cm();
  //if(cm <= 4){
    //Int1 = 0;
  //}
  analogWrite(Pin1,Int1);
  analogWrite(Pin2,Int2);
  analogWrite(Pin3,Int3);
  analogWrite(Pin4,Int4);
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
}
  • 写回答

1条回答 默认 最新

  • QvQ碎片 2023-08-02 21:32
    关注

    根据你的描述,当你连接 HC-SR04 超声波传感器和电机驱动板时,出现了信号干扰的问题。这种情况可能是因为电机的运转产生了噪声,干扰了 HC-SR04 传感器的测量信号。

    以下是一些建议来解决这个问题:

    1. 电源隔离: 确保 HC-SR04 和电机驱动板使用独立的电源供电。如果它们共用同一个电源,电机的高功率运转可能导致电源线上的噪声,进而影响到传感器的测量。

    2. 电源滤波: 在电机驱动板的电源输入端加入适当的电源滤波电路,以减少电机产生的电源噪声。

    3. 地线隔离: 确保 HC-SR04 的 GND(地线)与电机驱动板的 GND 是隔离的。不要直接将它们共地,避免传感器测量时受到电机回流干扰。

    4. 电缆绝缘: 使用屏蔽电缆来连接 HC-SR04 和电机驱动板,屏蔽层可减少干扰。

    5. 采样时间调整: 调整 HC-SR04 的采样时间,将采样时间设置得长一些,使得传感器能够在电机产生噪声后恢复正常测量。

    6. 使用低噪声电机: 如果可能,考虑使用低噪声的电机或增加电机控制的滤波措施。

    7. 物理隔离: 尽量将 HC-SR04 和电机模块物理隔离开,以减少干扰。

    8. 检查驱动电流: 确保电机驱动板对电机的驱动电流不会过大,过大的电流可能导致电机发生不稳定震动。

    9. 软件控制: 在控制电机运动时,考虑采用平滑的速度控制,避免急剧变化的速度。

    最后,建议根据你的实际硬件连接和控制需求,结合以上建议来调整硬件和软件设置,以减少传感器和电机之间的干扰,从而保证正常的测量和控制效果。如果问题仍然存在,可能需要更详细的调试和测试,或者考虑使用其他电机和传感器的组合来解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月1日

悬赏问题

  • ¥15 delphi indy cookie 有效期
  • ¥15 labelme打不开怎么办
  • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
  • ¥15 免费的电脑视频剪辑类软件如何盈利
  • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
  • ¥15 pycharm中导入模块出错
  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
  • ¥15 有关“完美的代价”问题的代码漏洞
  • ¥15 请帮我看一下这个简易化学配平器的逻辑有什么问题吗?
  • ¥15 暴力法无法解出,可能要使用dp和数学知识