TShopping

 找回密碼
 註冊
搜索
查看: 550|回復: 0

[教學] ESP32 控制 TB6612FNG 直流馬達驅動∕控制板

[複製鏈接]
發表於 2020-7-10 17:17:41 | 顯示全部樓層 |閱讀模式
Push to Facebook Push to Plurk  
影片



TB6612FNG是東芝生產的馬達驅動與控制IC,內部包含兩組H橋式電路,可驅動和控制兩個小型直流馬達,或者一個雙極性步進馬達。

ESP32,TB6612,馬達驅動IC,Arduino,IOT

ESP32,TB6612,馬達驅動IC,Arduino,IOT

ESP32,TB6612,馬達驅動IC,Arduino,IOT

ESP32,TB6612,馬達驅動IC,Arduino,IOT


ESP32,TB6612,馬達驅動IC,Arduino,IOT

ESP32,TB6612,馬達驅動IC,Arduino,IOT

程式實現
在說明程式之前
必須提到PWM會用到analogWrite
但是ESP32並不支援
所以改用LEDChannel取代
  1. int PWMA = 13;
  2. int INA1 = 12;
  3. int INA2 = 14;
  4. int STBY = 27;
  5. int INB1 = 25;
  6. int INB2 = 26;
  7. int PWMB = 33;
  8. const int ledPin = 2;

  9. void setup() {
  10.   // put your setup code here, to run once:
  11.   Serial.begin(115200);
  12.   pinMode(ledPin, OUTPUT); //設定腳位為輸出
  13.   pinMode(INA1,OUTPUT);
  14.   pinMode(INA2,OUTPUT);
  15.   pinMode(PWMA,OUTPUT);
  16.   pinMode(STBY,OUTPUT);
  17.   pinMode(INB1,OUTPUT);
  18.   pinMode(INB2,OUTPUT);
  19.   pinMode(PWMB,OUTPUT);
  20.   //digital output test
  21.   digitalWrite(INA1,HIGH); //設定腳位HIGH LOW
  22.   digitalWrite(INA2,LOW);
  23.   digitalWrite(PWMA,LOW);
  24.   digitalWrite(STBY,HIGH);
  25.   digitalWrite(INB1,HIGH);
  26.   digitalWrite(INB2,LOW);
  27.   digitalWrite(PWMB,LOW);
  28.   delay(1000);
  29.   
  30.   //analog output(PWM) test 設定LED Channel PWM 頻率
  31.   ledcSetup(0, 10000, 8);
  32.   ledcSetup(1, 10000, 8);
  33.   ledcSetup(2, 10000, 8);
  34.   ledcSetup(3, 10000, 8);
  35.   ledcSetup(4, 10000, 8);
  36.   ledcSetup(5, 10000, 8);
  37.   ledcSetup(6, 10000, 8);
  38.   //設定腳位Channel
  39.   ledcAttachPin(INA1, 0);
  40.   ledcAttachPin(INA2, 1);
  41.   ledcAttachPin(PWMA, 2);
  42.   ledcAttachPin(STBY, 3);
  43.   ledcAttachPin(INB1, 4);
  44.   ledcAttachPin(INB2, 5);
  45.   ledcAttachPin(PWMB, 6);
  46.   
  47. }

  48. void loop() {
  49.   // 開始前先閃動ESP32板子上LED
  50.   digitalWrite(ledPin,LOW);
  51.   delay(500);
  52.   digitalWrite(ledPin,HIGH);
  53.   delay(500);
  54.   digitalWrite(ledPin,LOW);
  55.   //設定馬達1為正轉
  56.   ledcWrite(0, 255); //INA1
  57.   ledcWrite(1, 0);   //INA2
  58.   ledcWrite(2, 255); //PWMA
  59.   ledcWrite(3, 255); //STBY
  60.   //設定馬達2為正轉
  61.   ledcWrite(4, 255); //INB1
  62.   ledcWrite(5, 0); //INB2
  63.   ledcWrite(6, 255); //PWMB
  64.   delay(3000);
  65.   
  66.   digitalWrite(ledPin,LOW);
  67.   delay(500);
  68.   digitalWrite(ledPin,HIGH);
  69.   delay(500);
  70.   digitalWrite(ledPin,LOW);
  71.   //設定馬達1為反轉
  72.   ledcWrite(0, 0);   //INA1
  73.   ledcWrite(1, 255); //INA2
  74.   ledcWrite(2, 255); //PWMA
  75.   ledcWrite(3, 255); //STBY
  76.   //設定馬達2為反轉
  77.   ledcWrite(4, 0);   //INB1
  78.   ledcWrite(5, 255); //INB2
  79.   ledcWrite(6, 255); //PWMB
  80.   delay(3000);
  81. }
複製代碼




參考文章
https://swf.com.tw/?p=1066

文章出處:網頁設計,網站架設 ,網路行銷,網頁優化,SEO - NetYea 網頁設計


臉書網友討論

ESP32,TB6612,馬達驅動IC,Arduino,IOT

ESP32,TB6612,馬達驅動IC,Arduino,IOT
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2020-8-13 12:36 , Processed in 0.055812 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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