2020年12月10日 星期四

MG996R 360度馬達+可變電阻轉速控制 with arduino nano

 因為某個專案開始要玩馬達

之前學會操控的是伺服馬達SG90,但這顆馬達只能轉動<180度,對於需要旋轉的機構還是有所限制

找了很多資料發現有可以360度旋轉的馬達MG996R360,今天參考2個網頁,終於寫出可以控制順時針轉動跟逆時針轉動,並運用可變電阻調整轉速,因為找到的中文資料都是MG996R180度的,摸索了一下終於完成這個程式,如果湊4顆就可以玩開車了

https://www.youtube.com/embed/YypeOdehXSE




下方是程式碼

/*--------------------------請複製分隔線下方的資料--------------------------
#include <Servo.h>

Servo MG996R360;  // 建立一個 servo 物件,最多可建立 12個 servo

int potPin = 17;  // 可變電阻連接的 pin 腳於A3
int R;            // 從可變電阻來的數值 
int MG_stop = 93; //每個馬達停止的值可能略有不同,如果無法停止可以微調這個值,此值應該是接近90

void setup() {
  Serial.begin(9600);
  MG996R360.attach(18);       // 將 servo 物件連接到 A4
  MG996R360.write(0);         // 順時針測試 
  delay(1000);                // 等待 1s 讓 servo 走到指定位置
  MG996R360.write(180);       // 逆時針測試
  delay(1000);                // 等待 1s 讓 servo 走到指定位置
  MG996R360.write(MG_stop);   // 停止
  }

void loop() {
  R = analogRead(potPin);  
  
  R = map(R, 0, 900, 0, 10);  // 將可變電阻0-900轉換為0-10
  Serial.print(R);

  //控制轉向與轉速
  if(R < 4){
    Serial.println(" Clockwise "); 
    MG996R360.write(MG_stop-4+R); 
  }else if(R >= 4 && R <= 6 ){
    Serial.println(" sent Stopped "); 
    MG996R360.write(MG_stop); 
  }else if(R > 6){
    Serial.println(" anti-clockwise "); 
    MG996R360.write(MG_stop-5+R); 
  }
  
  delay(15);
}
--------------------------請複製分隔線上方的資料--------------------------*/


參考資料
Arduino筆記(15):控制伺服馬達 Servo
https://atceiling.blogspot.com/2017/03/arduino.html
這網頁用的MG996R是180度的

How to use Continuous 360 Servo with Arduino
https://robojax.com/learn/arduino/?vid=robojax-servo-360

2 則留言:

  1. 可以請教一下 nano 下面那塊板子的型號嗎

    回覆刪除
    回覆
    1. arduino nano UNO多用 擴展板 (E006)
      應該用這個去找會找到,滿好用的

      刪除