Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 5926|回復: 9
打印 上一主題 下一主題

如何隨著電阻大小改變直流馬達速度

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-3-7 17:54:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問一下如何隨著推動搖桿的角度增加行走速度
我是給車子固定值
不曉得如何隨著電阻大小改變而改變速度
void loop () {
  x_direction = 0;
  y_direction = 0;
  x_position = analogRead(PIN_ANALOG_X);
  y_position = analogRead(PIN_ANALOG_Y);

  if (x_position > X_THRESHOLD_HIGH) {
    x_direction = 1;
   
  } else if (x_position < X_THRESHOLD_LOW) {
    x_direction = -1;
   
  }
  if (y_position > Y_THRESHOLD_HIGH) {
    y_direction = 1;
    digitalWrite(dir_a, HIGH);  
        
  } else if (y_position < Y_THRESHOLD_LOW) {
    y_direction = -1;
   
  }
   
  if (x_direction == -1) {
      if (y_direction == -1) {
        //Serial.println("left-down");
        digitalWrite(dir_a, LOW);  
        digitalWrite(dir_b, LOW);  
        delay(100);
        analogWrite(pwm_a, 50);  
        analogWrite(pwm_b, 255);
        delay(100);
      } else if (y_direction == 0) {
        //Serial.println("left");
        digitalWrite(dir_a, HIGH);  
        digitalWrite(dir_b, HIGH);  
        delay(100);
        analogWrite(pwm_a, 0);  
        analogWrite(pwm_b, 255);
        delay(100);
      } else {
        // y_direction == 1
        //Serial.println("left-up");
        digitalWrite(dir_a, HIGH);  
        digitalWrite(dir_b, HIGH);  
        delay(100);
        analogWrite(pwm_a, 50);  
        analogWrite(pwm_b, 255);
        delay(100);     
      }  
  } else if (x_direction == 0) {
      if (y_direction == -1) {
        //Serial.println("down");
        digitalWrite(dir_a, LOW);  
        digitalWrite(dir_b, LOW);  
        delay(100);
        analogWrite(pwm_a, 255);  
        analogWrite(pwm_b, 255);
        delay(100);
      } else if (y_direction == 0) {
        //Serial.println("centered");
        digitalWrite(dir_a, HIGH);  
        digitalWrite(dir_b, HIGH);  
        delay(100);
        analogWrite(pwm_a, 0);  
        analogWrite(pwm_b, 0);
        delay(100);
      } else {
        // y_direction == 1
        //Serial.println("up");
        digitalWrite(dir_a, HIGH);  
        digitalWrite(dir_b, HIGH);  
        delay(100);
        analogWrite(pwm_a, 255);  
        analogWrite(pwm_b, 255);
        delay(100);      
      }
  } else {
      // x_direction == 1
      if (y_direction == -1) {
        //Serial.println("right-down");
        digitalWrite(dir_a, LOW);  
        digitalWrite(dir_b, LOW);  
        delay(100);
        analogWrite(pwm_a, 255);  
        analogWrite(pwm_b, 50);
        delay(100);
      } else if (y_direction == 0) {
        //Serial.println("right");
        digitalWrite(dir_a, HIGH);  
        digitalWrite(dir_b, HIGH);  
        delay(100);
        analogWrite(pwm_a, 255);  
        analogWrite(pwm_b, 0);
        delay(100);
      } else {
        // y_direction == 1
        //Serial.println("right-up");
        digitalWrite(dir_a, HIGH);  
        digitalWrite(dir_b, HIGH);  
        delay(100);
        analogWrite(pwm_a, 255);  
        analogWrite(pwm_b, 50);
        delay(100);      
      }
  }
2#
發表於 2012-3-8 12:09:51 | 只看該作者
回復 1# asd456


    改變pwm,也不能改變直流馬達速度,
至少不明顯,
只能改變給直流馬達的電壓,去改變速度,
3#
發表於 2012-3-9 14:26:58 | 只看該作者
請問該如何改比較好 有點卡關
4#
發表於 2012-3-12 02:17:12 | 只看該作者
回復 2# vegewell


    可PWM不就是利用改變平均電壓來控制馬達轉速的嗎?
5#
發表於 2012-3-12 20:01:06 | 只看該作者
回復 4# s890916


    PWM只是脈衝的變化,沒有改變電壓.
6#
發表於 2012-3-12 20:24:45 | 只看該作者
回復 3# mjm2246


   有人稍為改一下 就好了.
7#
發表於 2012-3-20 12:48:03 | 只看該作者
回復  s890916


    PWM只是脈衝的變化,沒有改變電壓.
vegewell 發表於 2012-3-12 20:01


以長一點的時間來看,duty cycle 變小,平均電壓就會變低,馬達速度就會變慢,很多馬達控速都是用PWM方式的,要真的改變電壓太麻煩了。
Arduino的 analogwrite不也是用PWM方式模擬的嗎?
nichal 該用戶已被刪除
8#
發表於 2012-3-20 16:17:28 | 只看該作者
你的搖桿是類似可變電阻的嗎?
一般常見的搖桿是接點信號

如果要用角度去改變速度
可以把AD的滿刻度跟PWM的滿刻度做匹配
直接把AD值餵給PWM當duty
這樣就可以改變速度了

不過
PWM的頻率要稍微修正一下
找一個最適合你的馬達的頻率
頻率太高切換損會很大(馬達比較沒力)
頻率太低輸出會振盪(馬達會跟著震動)
試一下看看吧
9#
發表於 2012-3-20 16:45:05 | 只看該作者
你的搖桿是類似可變電阻的嗎?
PWM的頻率要稍微修正一下
nichal 發表於 2012-3-20 16:17


Arduino的PWM似乎不能改頻率....
剛接觸沒多久而已,有誤請多包涵指正
10#
發表於 2012-3-21 15:50:59 | 只看該作者
用PWM的方法怎麼不能改變啊, 應該是PWM沒有足夠大吧,
你可以嘗試一下PWM占空比比較大的時候與比較小的時候的
卻別就知道了。
大家有時間看看http://gdrobots.taobao.com
QQ:285093027
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-2 17:24 , Processed in 0.229441 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表