m0_73802348 2022-12-07 09:07 采纳率: 100%
浏览 16
已结题

直流电机,直流电机控制……

两个电机同时启动,要求它转向相反,转速控制在100转每秒。在这个基础上呢,摁下外部中断控制键后,要求10秒,两个电机同时停止。

  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-07 10:08
    关注

    要实现这个控制方案,需要使用直流电机驱动器和相关的控制电路。首先,通过调节电机驱动器的输入电压和电流来控制电机的转速,以达到 100 转每秒的要求。然后,通过控制电机驱动器的方向控制引脚来实现两个电机的转向相反的控制。

    摁下外部中断控制键后,可以通过计时器或计数器来计算 10 秒的时间,然后通过断开电机驱动器的电源来停止两个电机的运转。

    此外,还可以通过使用编码器或传感器来检测电机的转速和转向,并通过微控制器或专用的控制器来实现对电机的更精细的控制。

    #include <stdio.h>
    #include <stdlib.h>
    #include <wiringPi.h>
    
    // 定义电机驱动器和相关参数
    #define MOTOR_DRIVER_1 1
    #define MOTOR_DRIVER_2 2
    #define ROTATION_SPEED 100
    
    // 函数声明
    void start_motors();
    void stop_motors();
    void external_interrupt_handler();
    
    // 全局变量
    bool stop_motors_flag = false;
    
    int main() {
      // 启动电机
      start_motors();
    
      while (1) {
        // 检查外部中断控制键是否摁下
        if (is_external_interrupt_triggered()) {
          // 如果摁下,则调用处理函数
          external_interrupt_handler();
        }
    
        // 检查停止电机的标志是否被设置
        if (stop_motors_flag) {
          // 如果被设置,则停止电机
          stop_motors();
          break;
        }
      }
    
      return 0;
    }
    
    void start_motors() {
      // 为两个电机分别设置转速
      set_rotation_speed(MOTOR_DRIVER_1, ROTATION_SPEED);
      set_rotation_speed(MOTOR_DRIVER_2, -ROTATION_SPEED);
    
      // 启动两个电机
      start_motor(MOTOR_DRIVER_1);
      start_motor(MOTOR_DRIVER_2);
    }
    
    void stop_motors() {
      // 停止两个电机
      stop_motor(MOTOR_DRIVER_1);
      stop_motor(MOTOR_DRIVER_2);
    }
    
    void external_interrupt_handler() {
      // 停止电机
      stop_motors();
    
      // 等待10秒
      delay(10);
    
      // 设置停止电机的标志
      stop_motors_flag = true;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 已采纳回答 12月9日
  • 专家修改了标签 12月7日
  • 创建了问题 12月7日

悬赏问题

  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。