Силова верига за управление на двигателя с използване на Arduino

Опитайте Нашия Инструмент За Премахване На Проблемите





В този проект ние обсъждаме как да контролирайте скоростта на двигателя използване на Arduino PWM верига и как да се приложи управление на заден ход назад или посока в DC двигател, използвайки Arduino чрез няколко бутони. Всеки мотор с висока сила на тока до 30 ампера може да се управлява с помощта на тази настройка

ОтАнкит Неги



Двигателят е много важен компонент в електричеството и електрониката, тъй като те се използват като задвижващи механизми в много области.

Нуждаем се от двигатели за малки приложения като роботика, както и в области, където се използват тежки двигатели (промишленост и др.).



Сега двигателите, които се използват за малки приложения, могат да се управляват лесно, тъй като не поемат много ток (по-малко от 2amp).

И тези двигатели могат лесно да се управляват с помощта на микроконтролер като arduino с моторни драйвери като L298 или L293D .

Но двигателите, които се използват за тежки цели (по-големи от 10amp), не могат да бъдат контролирани използвайки тези ic тъй като те могат да доставят ограничен ток (макс. 2amp). И така, как се управляват тези двигатели?

Отговорът е прост: използване на релета , който действа като ключове, т.е. превключва голям ток с помощта на малък ток. По този начин могат да се постигнат две неща:

1. Пускане на самия ни мотор с голям ток.

2. Изолиране на веригата, като по този начин се предотвратяват всякакви удари.

Сега всеки микроконтролер може да се използва за превключване на тези релета. Тук ще използваме arduino UNO.

КОМПОНЕНТИ, ИЗИСКВАНИ ЗА ТОЗИ ПРОЕКТ:

1. ARDUINO UNO: да даде логика за въвеждане на основната страна на релето.

2. SPDT RELAY -2: две релета са необходими за въртене в двете посоки. Контактите трябва да бъдат класифицирани, за да се справят със спецификациите на двигателя с висок ток

Релейно изображение син цвят реле, показващо N / O N / C и детайли на полюса3. Power Mosfet: Можете да използвате IRF1010 MOSFET бутон микропревключвател

4. БАТЕРИЯ (12v): за захранване на двигателя.

5. ДВЕ ТЪПАЩИ БУТОНИ: за даване на входове за arduino (т.е. когато е натиснат и когато не е натиснат)

10k 1/4 ватен резистор

6. ДВЕ 10K РЕЗИСТОРА: за деблокиране (обяснено по-долу)

Силова верига за управление на двигателя с използване на Arduino

7. СВЪРЗВАЩИ ЖИЛИ: за осъществяване на връзки.

СХЕМА:

ШИМ Arduino верига за управление на двигателя

Направете връзки, както е показано на фигурата.

1. Свържете нормално отворения терминал на двете релета към положителния терминал на акумулатора и нормално затворения терминал към отрицателния терминал на акумулатора.

2. Свържете двигателя между останалите клеми (от три) на всяко реле.

3. Свържете един терминал на първичната страна на релетата към изходните щифтове на arduino, както е посочено в кода, и друг терминал към земята.

4. Свържете един терминал от двата бутона към 5v щифт на arduino и друг терминал към входни щифтове, както е посочено в кода.

4. ** Не забравяйте да свържете резистори, тъй като те са много важни за правилното функциониране на тази схема, както е обяснено по-долу:

ЗАЩО РЕЗИСТОРИТЕ СА СВЪРЗАНИ?

Може да откриете, че изобщо няма нищо свързано с входни щифтове на Arduino, но това не означава, че тези изводи могат да бъдат логическа нула, когато посоченият превключвател е отворен

По-скоро това предполага, че когато превключвателят е отворен, arduino може да приеме произволна стойност между логика 0 и логика 1, което изобщо не е добро (това се нарича подскачане).

И така, това, което искаме тук е, че когато нищо не е свързано към входния щифт, т.е.бутонът е отворен, arduino взема 0 въвеждане от щифта.

И за да се постигне това, щифтът е директно свързан към земята преди бутона чрез резистор. Ако е директно свързан към земята без резистор, има големи шансове той да изгори, тъй като щифтът ще бъде късо заземен и ще изтече огромно количество ток. За да се предотврати това, между тях е свързан резистор.

Този резистор се нарича изтеглящ резистор, тъй като издърпва логиката на щифта до 0. И този процес се нарича оттегляне.

КОД:

Запишете този код във вашия arduino.

int x// initialise variables
int y
int z
int w
void setup() {
pinMode(6,OUTPUT)//initialise pin 6 as output to RL1
pinMode(9,OUTPUT)//initialise pin 9 as output to RL2
pinMode(3,INPUT)//initialise pin 3 as input
pinMode(4,INPUT)//initialise pin 4 as input
pinMode(10,OUTPUT)//initialise PWM pin 8 as output to gate of mosfet
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
Serial.begin(9600)
}
void loop() {
z=analogRead(A0)// read values from potentiometer in terms of voltage
w= map(z,0,1023,0,255)// map those values from 0 to 255
analogWrite(10,w)// write the mapped value to 10thpin as output
delay(1)//on time period of mosfet
analogWrite(10,w)
delay(1)//off time period of ,mosfet
Serial.println(z)//print value from pot to serial monitor
Serial.println(w)//print mapped value to serial monitor
x= digitalRead(3)
y= digitalRead(4)
if(x==0 && y==0){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)}
if(x==1 && y==0){digitalWrite(6,HIGH)// clockwise rotation of motor
digitalWrite(9,LOW)}
if(x==0 && y==1){digitalWrite(6,LOW)// anticlockwise rotation of motor
digitalWrite(9,HIGH)}
if(x==1 && y==1){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)
}
}

Работа (код за разбиране):

• КОНТРОЛ НА НАПРАВЛЕНИЕТО:

А. Когато и двата бутона не са натиснати:

При това състояние arduino взема 0 входа от двата извода. Както е посочено в кода в това състояние, и двата изходни щифта дават 0 логика (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Тъй като входното напрежение към първичното на двете релета е нула, вторичният терминал на двете остава в нормално затворено положение. По този начин има нула волта на двата извода на двигателя, което не води до въртене.

Б. Когато е натиснат бутон X, но Y не е натиснат:

В това състояние arduino взема 0 входа от пин 4, но вход 1 от пин3. Както е посочено в кода в това условие щифт 6 трябва да бъде на логика 1 (HIGH), докато щифт 9 на логика 0 (LOW):

if (x == 1 && y == 0) {digitalWrite (6, HIGH)

digitalWrite (9, LOW)}

Тъй като входното напрежение към реле # 1 е високо, превключвателят на това реле се прехвърля в нормално отворено състояние, докато входното напрежение към реле 2 е ниско, превключвателят на това реле остава в нормално затворено състояние, причинявайки съответно 12v и 0v през клемите на двигателя, причинявайки въртене на двигателя в една посока.

В. Когато е натиснат бутон Y, но X не е натиснат:

В това състояние arduino взема 1 вход от пин 4, но вход 0 от пин3. Както е посочено в кода в това условие щифт 6 трябва да бъде на логика 0 (LOW), докато щифт 9 на логика 1 (HIGH):

if (x == 1 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, HIGH)}

Тъй като входното напрежение към реле # 2 този път е високо, превключвателят на това реле се прехвърля в нормално отворено състояние, докато входното напрежение към реле # 1 е ниско, превключвателят на това реле остава в нормално затворено състояние, причинявайки съответно 12v и 0v през двигателя клеми, причиняващи въртене на двигателя в друга посока.

Г. Когато са натиснати и двата бутона:

При това състояние arduino взема 1 вход от двата извода. Както е посочено в кода в това състояние, и двата изходни щифта дават 0 логика (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Тъй като входното напрежение към първичното на двете релета е нула, вторичният терминал на двете остава в нормално затворено положение. По този начин има нула волта на двата извода на двигателя, което не води до въртене.

• КОНТРОЛ НА СКОРОСТТА:

Да предположим, че потенциометърът е в такова положение, когато дава 0 волта като вход към A0 извода на arduino. Поради това, arduino картографира тази стойност като 0 и по този начин дава 0 като изходен ШИМ на пин # 10, т.е.

analogWrite (10,0) // записваме нанесената стойност в 10-ти пин като изход

Следователно портата на MOSFET получава 0 ток, поради което той остава изключен и двигателят е в изключено положение.

Въпреки това, тъй като гърнето се върти и стойността на гърнето варира, напрежението на щифт A0 също варира и тази стойност се нанася на щифт # 10 с пропорционално увеличаваща се ширина на ШИМ, което води до по-голям ток, който тече през двигателя и MOSFET изтичане, което от своя страна позволява на двигателя да набира по-голяма скорост пропорционално и същото се случва обратно.

По този начин от горната дискусия можем да видим как Arduino може да се използва за контролиране на скоростта, както и посоката (назад напред) на мотор с постоянен ток, просто чрез регулиране на определената пота и чрез няколко бутони.

Актуализиране : За двигател с висок ток, моля, използвайте 12V / 30 ампер релета и BJT степени на драйвера за работа с тези релета с висока мощност, както е посочено в следната модифицирана диаграма:




Предишна: Схема на сензора за обратно паркиране на автомобил с аларма Напред: Схема на генератор на сигнали за Arduino PWM