کنترل ماجیول درایور موتور DC BTS7960 با استفاده از آردوینو
در این آموزش، یاد خواهیم گرفت که چگونه میتوانیم ماجیول درایور موتور DC BTS7960 را با استفاده از یک آردوینو کنترل کنیم. این تنظیم به شما امکان میدهد که جهت و سرعت یک موتور DC را با استفاده از مدولاسیون عرض پالس (PWM) کنترل کنید. در پایان این آموزش، شما یک سیستم کنترل موتور کارامد خواهید داشت که میتوانید به راحتی آن را برای پروژههای خود تغییر دهید. برای راهنمایی بصری دقیقتر، حتماً ویدئو را در (در ویدئو در 00:00) مشاهده کنید.
سختافزار توضیح داده شده است
BTS7960 یک درایور موتور DC با جریان بالا است که قادر به تحمل تا 43 آمپر میباشد. این درایور از دو مدار مجتمع (IC) تشکیل شده است که امکان کنترل یک موتور در دو جهت عقربههای ساعت (CW) و خلاف عقربههای ساعت (CCW) را فراهم میکند. این درایور از سیگنالهای PWM برای تغییر سرعت موتور استفاده میکند که برای برنامههای نیازمند کنترل دقیق ضروری است.
جنبهی دیگری از این ماجیول ویژگیهای داخلی تشخیص جریان و حفاظت در برابر دماهای بالا است. این ویژگی به جلوگیری از آسیب به موتور و درایور در حین کار کمک میکند. ماجیول از یک منبع خارجی برق میگیرد و همچنین به یک منبع جداگانه ۵ ولتی برای مدارهای منطقی خود نیاز دارد.
جزئیات برگه داده
| سازنده | اینفینئون تکنولوژیها |
|---|---|
| شماره قطعه | BTS7960 |
| ولتاژ منطق/ورودی-خروجی | ۵ ولت |
| ولتاژ تغذیه | ۶-۲۷ وی |
| جریان خروجی (برای هر کانال) | ۴۳ A حداکثر |
| جریان اوج (به ازای هر کانال) | ۶۰ آ |
| راهنمایی فرکانس PWM | ۲۵ کیلوهرتز |
| آستانههای منطقی ورودی | 0.8 ولت (بالا)، 0.3 ولت (پایین) |
| کاهش ولتاژ / RDS(on)/ اشباع | 16 میلی اهم |
| محدودیتهای حرارتی | حداکثر 125 درجه سانتیگراد |
| بسته | PTO-263-7 |
| یادداشتها / انواع | پیکربندی دوگانه H-Bridge |
- اطمینان حاصل کنید که برای کاربردهای با جریان بالا، پراکندگی گرما به درستی انجام شود.
- از گام مناسب سیم برای مدیریت حداکثر جریان استفاده کنید.
- فرکانس PWM را در محدودههای مشخص شده نگهدارید تا عملکرد بهینه باشد.
- خازنهای جداساز را نزدیک پایههای تغذیه پیادهسازی کنید تا ولتاژ را تثبیت کنید.
- در حین عملیات دما را تحت نظر داشته باشید تا از گرم شدن بیش از حد جلوگیری شود.
دستورالعملهای سیمکشی

برای اتصال ماجیول درایور موتور BTS7960 به آردوینو خود، باید به درستی پایه های برق، زمین، کنترل و موتور را متصل کنید. ابتدا با متصل کردن منبع تغذیه به ماجیول شروع کنید.B+وB-پایهها، اطمینان حاصل میکنند که قطبیت صحیح است.B+پایه جایی است که منبع مثبت متصل میشود، در حالی کهB-به زمین متصل میشود.
بعدی، موتور را به... وصل کنیدM+وM-پایهها بر روی ماجیول. اینها جهت موتور را کنترل خواهند کرد. برای پایههای کنترل، پایههای آردوینو را به ماجیول به صورت زیر متصل کنید:RPWMبه پایه ۳،R_ENبه پایانه ۴،R_ISبه پایه ۵،LPWMبه پایه 6،L_ENبه پایه 7، وL_ISبه پایه ۸. مطمئن شوید که زمین آردوینو را نیز به زمین ماجیول متصل کنید.
کتابخانه مورد نیاز را نصب کنید
برای نصب therobojax_BTS7960_motor_driver_libraryدر محیط برنامهنویسی آردوینو، ابتدا فایل ZIP کتابخانه را از واصل ارائهشده دانلود کنید. پس از ذخیره فایل، محیط آردوینو خود را باز کرده و به بخش موردنظر برویدطرح > شامل کتابخانه > اضافه کردن کتابخانه .ZIP.... در کادر انتخاب فایل، به فایل ZIP دانلود شده بروید، آن را انتخاب کنید و روی "باز کردن" کلیک کنید. سپس IDE کتابخانه را نصب خواهد کرد. میتوانید با بررسی وضعیت نصب، موفقیتآمیز بودن نصب را تأیید کنید.فایل > مثالهامنو، جایی که یک دسته جدید به نام "کتابخانه درایور موتور Robojax BTS7960" باید ظاهر شود. شما اکنون میتوانید هدر کتابخانه را در شِفر (کود) خود بگنجانید با#include <RobojaxBTS7960.h>.
نمونههای شِفر (کود) و راهنما
شِفر (کود) آردوینو برای کنترل درایور موتور BTS7960 با تعریف پایههای لازم آغاز میشود. به عنوان مثال، پایه برای سیگنال PWM سمت راست تعریف شده است.RPWMو به پایه ۳ تنظیم شده است. علاوه بر این، پایه فعالسازی برای سمت راست به عنوان مشخص شده استR_ENو به پایه ۴ تنظیم شد.
#define RPWM 3 // define pin 3 for RPWM pin (output)
#define R_EN 4 // define pin 4 for R_EN pin (input)این تنظیمات اطمینان حاصل میکند که موتور بتواند بهطور دقیق کنترل شود. در setup()تابع، موتور باmotor.begin()که راننده را برای عملیات آماده میکند.
void setup() {
Serial.begin(9600);// setup Serial Monitor to display information
motor.begin(); // Initialize motor
}درloop()عملکرد، جهت و سرعت موتور با استفاده ازmotor.rotate(speed, direction)روش. به عنوان مثال، برای اجرای موتور با حداکثر سرعت در جهت عقربههای ساعت، شما باید ازmotor.rotate(100, CW);.
void loop() {
motor.rotate(100,CW); // run motor with 100% speed in CW direction
delay(5000); // run for 5 seconds
}برای مثالها و تنوعهای دقیقتر، حتماً شِفر (کود) کامل بارگذاری شده در زیر مقاله را بررسی کنید.
نمایشگاه / چه انتظاری داشته باشید
زمانی که همه چیز به درستی وصل و برنامهریزی شده باشد، باید انتظار داشته باشید که موتور بر اساس شِفر (کود) در هر دو جهت بچرخد. در ابتدا، موتور به مدت پنج ثانیه با سرعت کامل کار خواهد کرد، سپس به مدت سه ثانیه متوقف میشود و پس از آن به مدت مشابه در جهت مخالف میچرخد. این چرخه تکرار خواهد شد و به شما این امکان را میدهد که واکنش موتور به سیگنالهای PWM را ببینید.
اشتباهات رایج شامل معکوس بودن قطبیته هنگام اتصال موتور یا منبع تغذیه است که میتواند به قطعات آسیب برساند. علاوه بر این، اطمینان حاصل کنید که پایههای PWM به درستی در شِفر (کود) اختصاص داده شدهاند (در ویدیو در ساعت 12:34).
زمانبندی ویدئو
- ۰۰:۰۰ شروع
- ۰۰:۴۸ توضیح سختافزار
- 04:06ورقۀ اطلاعات مشاهده شد
- 07:07 توضیحاتی درباره سیمکشی
- شِفر (کود) توضیح داده شد :00
- ۱۴:۳۳ نمایش
- حداکثر امتحان جریان ۱۶:۴۷
- ۱۹:۲۵ تصویر حرارتی
- 19:27 امتحان شِفر (کود) مختلف
/*
* This is the Arduino code for the BTS7960 DC motor driver.
Using this code, you can control a motor to rotate in both directions: clockwise (CW)
and counter-clockwise (CCW).
Watch the video instructions: https://youtu.be/PUL5DZ9TA2o
📚⬇️ Download and resource page for this video https://robojax.com/RJT169
📚⬇️ Download and resource page https://robojax.com/RJT170
// Written by Ahmad Shamshiri for Robojax.com on
// June 22, 2019 at 14:08 in Ajax, Ontario, Canada.
Get this code and other Arduino codes from Robojax.com.
* BTS7960B
* Code is available at http://robojax.com/learn/arduino
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
//
#define RPWM 3 // define pin 3 for RPWM pin (output)
#define R_EN 4 // define pin 2 for R_EN pin (input)
#define R_IS 5 // define pin 5 for R_IS pin (output)
#define LPWM 6 // define pin 6 for LPWM pin (output)
#define L_EN 7 // define pin 7 for L_EN pin (input)
#define L_IS 8 // define pin 8 for L_IS pin (output)
#define CW 1 //do not change
#define CCW 0 //do not change
#define debug 1 //change to 0 to hide serial monitor debugging information or set to 1 to view
#include <RobojaxBTS7960.h>
RobojaxBTS7960 motor(R_EN,RPWM,R_IS, L_EN,LPWM,L_IS,debug);
void setup() {
// BTS7960 Motor Control Code by Robojax.com 20190622
Serial.begin(9600);// setup Serial Monitor to display information
motor.begin();
//watch video for details: https://youtu.be/PUL5DZ9TA2o
// BTS7960 Motor Control Code by Robojax.com 20190622
}
void loop() {
// BTS7960 Motor Control Code by Robojax.com 20190622
//watch video for details: https://youtu.be/PUL5DZ9TA2o
motor.rotate(100,CW);// run motor with 100% speed in CW direction
delay(5000);//run for 5 seconds
motor.stop();// stop the motor
delay(3000);// stop for 3 seconds
motor.rotate(100,CCW);// run motor at 100% speed in CCW direction
delay(5000);// run for 5 seconds
motor.stop();// stop the motor
delay(3000); // stop for 3 seconds
// slowly speed up the motor from 0 to 100% speed
for(int i=0; i<=100; i++){
motor.rotate(i,CCW);
delay(50);
}
// slow down the motor from 100% to 0 with
for(int i=100; i>0; i--){
motor.rotate(i,CCW);
delay(50);
}
//watch video for details: https://youtu.be/PUL5DZ9TA2o
motor.stop();// stop motor
delay(3000); // stop for 3 seconds
// BTS7960 Motor Control Code by Robojax.com 20190622
}// loop ends
++
/*
* This is the Arduino code for the BTS7960 DC motor driver.
Using this code, you can control more than one motor to rotate in both directions: clockwise (CW)
and counter-clockwise (CCW).
📚⬇️ Download and resource page for this video https://robojax.com/RJT169
📚⬇️ Download and resource page https://robojax.com/RJT170
Written by Ahmad Shamshiri for Robojax.com on
July 16, 2020 in Ajax, Ontario, Canada.
Watch video instructions for this code: https://youtu.be/PUL5DZ9TA2o
BTS7960B
If you found this tutorial helpful, please support me so I can continue creating
content like this. You can support me on Patreon: http://robojax.com/L/?id=63
or make a donation using PayPal: http://robojax.com/L/?id=64
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// pins for motor 1
#define RPWM_1 3 // define pin 3 for RPWM pin (output)
#define R_EN_1 4 // define pin 2 for R_EN pin (input)
#define R_IS_1 5 // define pin 5 for R_IS pin (output)
#define LPWM_1 6 // define pin 6 for LPWM pin (output)
#define L_EN_1 7 // define pin 7 for L_EN pin (input)
#define L_IS_1 8 // define pin 8 for L_IS pin (output)
// motor 1 pins end here
// pins for motor 2
#define RPWM_2 9 // define pin 9 for RPWM pin (output)
#define R_EN_2 10 // define pin 10 for R_EN pin (input)
#define R_IS_2 12 // define pin 12 for R_IS pin (output)
#define LPWM_2 11 // define pin 11 for LPWM pin (output)
#define L_EN_2 A0 // define pin 7 for L_EN pin (input)
#define L_IS_2 A1 // define pin 8 for L_IS pin (output)
// motor 2 pins end here
#define CW 1 //
#define CCW 0 //
#define debug 1 //
#include <RobojaxBTS7960.h>
RobojaxBTS7960 motor1(R_EN_1,RPWM_1,R_IS_1, L_EN_1,LPWM_1,L_IS_1,debug);//define motor 1 object
RobojaxBTS7960 motor2(R_EN_2,RPWM_2,R_IS_2, L_EN_2,LPWM_2,L_IS_2,debug);//define motor 2 object and the same way for other motors
void setup() {
// BTS7960 Motor Control Code by Robojax.com 20190622
Serial.begin(9600);// setup Serial Monitor to display information
motor1.begin();
motor2.begin();
// BTS7960 Motor Control Code by Robojax.com 20190622
}
void loop() {
// BTS7960 Motor Control Code by Robojax.com 20190622
motor1.rotate(100,CW);// run motor 1 with 100% speed in CW direction
delay(5000);//run for 5 seconds
motor1.stop();// stop the motor 1
delay(3000);// stop for 3 seconds
motor1.rotate(100,CCW);// run motor 1 at 100% speed in CCW direction
delay(5000);// run for 5 seconds
motor1.stop();// stop the motor 1
delay(3000); // stop for 3 seconds
motor2.rotate(100,CW);// run motor 2 with 100% speed in CW direction
delay(5000);//run for 5 seconds
motor2.stop();// stop the motor 2
delay(3000);// stop for 3 seconds
motor2.rotate(100,CCW);// run motor 2 at 100% speed in CCW direction
delay(5000);// run for 5 seconds
motor2.stop();// stop the motor 2
delay(3000); // stop for 3 seconds
// slowly speed up the motor 1 from 0 to 100% speed
for(int i=0; i<=100; i++){
motor1.rotate(i,CCW);
delay(50);
}
// slow down the motor 2 from 100% to 0
for(int i=100; i>0; i--){
motor2.rotate(i,CCW);
delay(50);
}
motor2.stop();// stop motor 2
delay(3000); // stop for 3 seconds
// BTS7960 more than 1 Motor Control Code by Robojax.com 20190622
}// loop ends
منابع و مراجع
-
خارجیBTS7960 اَمه زون ژاپنamzn.to
-
خارجیBTS7960 در اَمه زون اسپانیاamzn.to
-
خارجیBTS7960 در اَمه زون ایتالیاamzn.to
-
خارجیBTS7960 در اَمه زون فرانسهamzn.to
-
خارجی
-
خارجی
-
خارجیBTS7960، اَمه زون آلمانamzn.to
-
خارجیخرید BTS7960، اَمه زون بریتانیاamzn.to
فایلها📁
کتابخانههای آردوینو (zip)
-
robojax_BTS7960_کتابخانه_درایور_موتور
robojax_BTS7960_motor_driver_library.zip0.10 MB
برگه مشخصات (pdf)
-
BTS7960_datasheet
BTS7960_datasheet.pdf0.45 MB
فایل فریزینگ
-
BTS7960_راننده
BTS7960_driver.fzpz0.01 MB