H-Bridge 1: Изградба на H-bridge моторен управувач на плоча за лемење користејќи TIP120 и TIP125 Дарлингтонови транзистори
Овој туторијал ќе ве води низ изградбата на H-bridge моторен управувач користејќи TIP120 и TIP125 Дарлингтон транзистори на breadboard. Оваа конфигурација е идеална за контрола на насоката и брзината на DC мотор, што е суштински за различни проекти во роботиката и автоматизацијата. До крајот на овој туторијал, ќе можете да контролирате мотор со часовникови и противч часовникови ротации, заедно со модулација на брзината.
Во оваа упатство, ќе користиме Arduino за контрола на моторот. H-бридната конфигурација овозможува обратна насока на моторот преку контрола на влезните сигнали испратени до транзисторите. Ова е клучен аспект за многу апликации, како што се роботски раце или мобилни роботи кои бараат прецизна контрола на моторот. За дополнително разјаснување, ве молиме погледнете го видеото (во видеото на 00:00).
Објаснување на хардверот
Главните компоненти на овој проект вклучуваат транзистори TIP120 и TIP125, кои се користат како прекинувачи за контрола на работата на моторот. TIP120 е NPN Дарлингтон транзистор, а TIP125 е PNP Дарлингтон транзистор. Заедно, тие формираат H-брид конфигурација, што ни овозможува да ја контролираме насоката на струјата што тече низ моторот.
Во оваа конфигурација, PWM (Модулација на ширина на пулс) сигналот се користи за контрола на брзината на моторот. Транзисторите брзо се вклучуваат и исклучуваат за да создадат просечен напон кој ја определува брзината на моторот. EN пиновите овозможуваат или онемогуќуваат транзисторите, осигурувајќи дека моторот работи само кога е потребно.
Технички лист детали
| Производител | Тексас Инструменти |
|---|---|
| Број на делови | TIP120 |
| Логика/IO напон | 5-15 V |
| Напон на напојување | 60 V |
| Излезна струја (по канал) | 5 А |
| Пиков тековен (по канал) | 30 А |
| Упатство за PWM фреквенција | 1 kHz макс |
| Влезни логички прагови | 2.5 V (високо), 0.8 V (ниско) |
| Напонска пад / RDS(on)/ заситеност | 1.2 В |
| Термални ограничувања | 175 °C |
| Пакет | ТО-220 |
| Забелешки / варијанти | Достапен како TIP125 |
- Осигурајте соодветно одведување на топлина за апликации со висок тек.
- Користете PWM сигнали за ефективно контролирање на брзината на моторот.
- Проверете ја ориентацијата на транзисторот за да се спречи оштетување на колото.
- Внимавајте на напонските оценки за да избегнете надминување на лимитите.
- Користете декуплирачки кондензатори за стабилизирање на напојувањето со напон.
Инструкции за поврзување

За да се поврзе H-bridge моторниот управувач, прво поврзете го VCC пинот од TIP120 и TIP125 на 5V напојувањето на вашиот Arduino. Поврзете го GND пинот на земја. PWM контролните пинови,PWM1иPWM2, треба да бидат поврзани на дигиталните пинови 9 и 3 на Arduino, соодветно. Пиновите за овозможување,EN1иEN2, ќе се поврзе на дигитални пинови 8 и 2.
Следно, поврзете ги терминалите на вашиот мотор со колекторските пинови на транзисторите TIP120 и TIP125. Осигурајте се дека моторот е компатибилен со вашиот напојувач. Ако користите дополнителни компоненти како диоди за заштита од повратен EMF, поставете ги паралелно со терминалите на моторот за да спречите оштетување. Ако користите различни модели на Arduino, проверете ги мапирањата на пиновите за PWM и сигналите за вклучување.
Примери на код и водичка
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
Во поставувањето, ги дефинираме контролните пинови за PWM сигналите и пиновите за овозможување. ТhepinModeфункцијата ги поставува овие пинови како излез за контрола на транзисторите кои управуваат со моторот.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
Оваа функција на петелка демонстрира работа на моторот. Прво го вртат моторот во насока на стрелките на часовникот со брзина од 50% за 5 секунди, потоа застанува за 2 секунди.Motorфункцијата се повикува со параметри за насока и брзина, контролирајќи го однесувањето на моторот врз основа на тие влезови.
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
if(direction) {
analogWrite(PWM1, speedPWM); // Set speed for CW
} else {
analogWrite(PWM2, speedPWM); // Set speed for CCW
}
}
ТheMotorфункцијата зема булевска насока и цел број брзина. Таа мапира процентот на брзина на PWM вредност и користиanalogWriteда се постави соодветниот пин за контрола на моторот. Оваа функција е клучна за динамичка промена на насоката и брзината на моторот.
Демонстрација / Што да очекувате
По завршувањето на поврзувањето и преносот на кодот, треба да забележите дека моторот ротира во насока на стрелките на часовникот со 50% брзина во текот на 5 секунди, по што следи запирање. По кратко задоцнување, ќе ротира во насока спротивна на стрелките на часовникот со 80% брзина уште 5 секунди. Чести грешки вклучуваат неправилно поврзување и надминување на напонските рејтинзи, што може да ги оштети транзисторите или моторот.
Временски ознаки на видеото
- 00:00- Вовед
- 01:30- Преглед на хардверот
- 03:15- Упатства за поврзување
- 05:00- Преглед на кодот
- 08:45- Демонстрација
/*
This code is for:
Building an H-Bridge Motor driver using TIP120 and TIP125 on a breadboard and full PCB Design with Arduino
https://youtu.be/6ugrL5ziPn8
This code has been downloaded from Robojax.com
You can access the resources page and download the Gerber file to produce
the PCB or a fully assembled PCB from PCBX.com
Visit https://robojax.com/tutorial_view.php?id=392
to control a DC motor using TIP120 and TIP125 as an
H bridge
Written by Ahmad Shamshiri
26 Aug 2024
*/
const int PWM1= 9;//pin with ~
const int EN1= 8;
const int PWM2= 3;//pin with ~
const int EN2= 2;
const boolean CW =1;
const boolean CCW =0;
void Motor(boolean, int);//prototype
void brake();//prototype
void setup() {
Serial.begin(9600);
Serial.println("TIP120 H Bridge by Robojax");
pinMode(PWM1, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(EN2, OUTPUT);
}
void loop() {
Motor(CW, 50);//in CW at 50% speed
delay(5000);
stop();
delay(2000);
Motor(CCW, 80);//in CCW at 80% speed
delay(5000);
brake();
delay(2000);
for (int i=0; i<=100; i++)
{
Motor(CCW, i);
delay(25);
}
delay(5000);
brake();
delay(2000);
}
/*
stop()
stops the output
*/
void stop()
{
Serial.println ("=== Stop");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}
/*
brake()
*/
void brake()
{
Serial.println ("=== Brake");
digitalWrite(PWM1, HIGH);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, HIGH);
digitalWrite(EN2, LOW);
}
void Motor(boolean direction, int speed=0)
{
int speedPWM = map(speed, 0, 100, 0, 255);
Serial.print("Speed: "); Serial.print (speedPWM);
Serial.print ("(");Serial.print (speed);Serial.print ("%)");
if(direction){
Serial.print(" dir: ");Serial.println ("CW");
analogWrite(PWM1, speedPWM);
digitalWrite(EN1, HIGH);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}else{
Serial.print(" dir: ");Serial.println ("CCW");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
analogWrite(PWM2, speedPWM);
digitalWrite(EN2, HIGH);
}
}
Resources & references
-
External
-
External
-
External
-
External
Files📁
Gerber files
-
H-Bridge-TIP120-TIP125 Gerber file for PCBXIncludes H-Bridge-TIP120-TIP125.zip, H-Bridge-TIP120-TIP125-BOM.xls and H-Bridge-TIP120-TIP125-coor.xls files to place order easily.
H-Bridge-TIP120-TIP125 Gerber file.zip0.05 MB