下控

作者: huangyubin | 来源:发表于2020-01-16 17:36 被阅读0次

    RPM的计算

    • 周长:C= 2Pi*R =>
      • R = 15cm
      • C = 2 * 3.14 * 15 = 94.2cm ~ 100cm
    • 假设磁体作用长度:0.5,=> 干簧管闭合 1/200
    • 假设飞轮转速 60~600 RPM 即周期 ==> 1000ms~100ms
      • 干簧管闭合时间:5ms~0.5ms之间
      • 干簧管动作时间: 1ms
      • 干簧管释放时间: 0.4ms
    • 计算方法
      1. 开低电平中断,中断后开启50us定时器,检测两次均为低电平,则认为有效输入
      2. 中断时根据计数器值计算当前RPM,并清除计数器
      3. 滤除太小或太大的RPM值
      4. 当前RPM进入移动平均滤波数组,计算平均值
      

    PWM的计算

      1. 测得在 0.3~3.0A 下对应的PWM值,得到一张10个值的表
      1. 当电流设置值与当前的电流设置值修改幅度大于0.3A时,直接设置到对应区间
      1. PWM已50ms周期调整,分档:
      • 差值在0.2A以上时,每次调整20
      • 差值在0.1A以上时,每次调整5
      • 差值在0.05A以上时,每次调整2
      • 差值在0.01以上时,每次调整1
      • 差值小于0.01时,不调整
    • 程序
    uint16_t tab_cur_pwm[] = { // 数组下标是最大电流的1/10
        1,2,3,4,5,6,7,8,9,10
    };
    
    void on_cur_set_change(uint16_t new_val, uint16_t old_val) {
        if (new_val > old_val) {
            if ((new_val - old_val) > 300) {
                pwm_set = tab_cur_pwm[new_val/300];
            }
        } else if ((old_val - new_val) > 300) {
            pwm_set = tab_cur_pwm[new_val/300];
        }
    }
    
    void on_pwm_tick() {
    
    }
    

    相关文章

      网友评论

          本文标题:下控

          本文链接:https://www.haomeiwen.com/subject/fqxqzctx.html