Obwód sterowania silnikiem wysokoprądowym wykorzystujący Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym projekcie omawiamy, jak to zrobić kontrolować prędkość silnika za pomocą obwodu Arduino PWM i jak zaimplementować sterowanie wstecz lub kierunkiem w silniku prądu stałego za pomocą Arduino za pomocą kilku przełączników przyciskowych. Za pomocą tej konfiguracji można sterować dowolnym silnikiem wysokoprądowym do 30 A

PrzezAnkit Negi



Silnik jest bardzo istotnym elementem w elektrotechnice i elektronice, ponieważ są używane jako siłowniki w wielu obszarach.

Potrzebujemy silników do małych zastosowań, takich jak robotyka, a także w obszarach, w których używane są ciężkie silniki (przemysł itp.).



Teraz silniki, które są używane do małych aplikacji, mogą być łatwo sterowane, ponieważ nie pobierają dużego prądu (mniej niż 2 A).

A tymi silnikami można łatwo sterować za pomocą mikrokontrolera, takiego jak arduino układ sterownika silnika jak L298 lub L293D .

Nie można jednak sterować silnikami, które są używane do ciężkich celów (powyżej 10 A) używając tych układów scalonych ponieważ mogą dostarczać ograniczony prąd (max 2 amper). Jak więc steruje się tymi silnikami?

Odpowiedź jest prosta: za pomocą przekaźników , który działa jak przełączniki, tj. przełącza duży prąd za pomocą małego prądu. W ten sposób można osiągnąć dwie rzeczy:

1. Uruchomienie samego naszego silnika wysokoprądowego.

2. Izolowanie obwodu, zapobiegające w ten sposób wstrząsom.

Teraz do przełączania tych przekaźników można użyć dowolnego mikrokontrolera. Będziemy tutaj używać arduino UNO.

KOMPONENTY WYMAGANE DO TEGO PROJEKTU:

1. ARDUINO UNO: do podania logiki wejściowej po stronie pierwotnej przekaźnika.

2. PRZEKAŹNIK SPDT -2: wymagane są dwa przekaźniki do obracania się w obu kierunkach. Styki muszą być przystosowane do pracy z wysokoprądowymi specyfikacjami silnika

Obraz przekaźnika w kolorze niebieskim przekaźnik pokazujący N / O N / C i szczegóły biegunów3.Power Mosfet: Możesz użyć mosfetu IRF1010 przycisk mikroprzełącznik

4. BATERIA (12v): do zasilania silnika.

5. DWA PRZYCISKI: do wprowadzania danych wejściowych do arduino (tj. Po naciśnięciu i nie naciśnięciu)

Rezystor 10k 1/4 W.

6. DWA REZYSTORY 10K: do odbijania (wyjaśnione poniżej)

Obwód sterowania silnikiem wysokoprądowym wykorzystujący Arduino

7. PRZEWODY ŁĄCZĄCE: do wykonywania połączeń.

SCHEMATYCZNY:

Obwód sterowania silnika PWM Arduino

Wykonaj połączenia, jak pokazano na rysunku.

1. Podłączyć normalnie otwarty zacisk obu przekaźników do dodatniego zacisku akumulatora, a normalnie zamknięty zacisk do ujemnego zacisku akumulatora.

2. Podłączyć silnik między pozostałe zaciski (z trzech) każdego przekaźnika.

3. Podłączyć jeden zacisk strony pierwotnej przekaźników do styków wyjściowych arduino zgodnie z kodem, a drugi zacisk do masy.

4. Podłącz jeden zacisk obu przycisków do pinu 5v arduino, a drugi zacisk do pinów wejściowych, jak określono w kodzie.

4. ** Nie zapomnij podłączyć rezystorów, ponieważ są one bardzo ważne dla prawidłowego funkcjonowania tego obwodu, jak wyjaśniono poniżej:

DLACZEGO REZYSTORY SĄ PODŁĄCZONE?

Może się okazać, że nic nie jest podłączone do pinów wejściowych Arduino, ale to nie znaczy, że te wyprowadzenia mogą być logicznym zerem, gdy wskazany przełącznik jest otwarty

Oznacza to raczej, że gdy przełącznik jest otwarty, arduino może przyjąć dowolną wartość z zakresu logiki 0 i logiki 1, co wcale nie jest dobre (nazywa się to odbijaniem).

Chcemy tutaj, aby gdy nic nie jest podłączone do pinu wejściowego, tj. Przycisk jest otwarty, arduino pobiera wejście 0 z pinu.

Aby to osiągnąć, pin jest bezpośrednio połączony z masą przed przyciskiem poprzez rezystor. Jeśli jest bezpośrednio podłączony do masy bez rezystora, istnieje duże prawdopodobieństwo, że przepali się, ponieważ pin zostanie zwarty do masy i przepłynie ogromna ilość prądu. Aby temu zapobiec, pomiędzy nimi jest podłączony rezystor.

Ten rezystor jest nazywany rezystorem pulldown, ponieważ ciągnie on logikę na pinie do 0. Proces ten nazywa się odbijaniem.

KOD:

Wypal ten kod w swoim 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)
}
}

Praca (zrozumienie kodu):

• KONTROLA KIERUNKU:

A. Gdy oba przyciski nie są wciśnięte:

W tym stanie arduino pobiera 0 wejść z obu pinów. Jak określono w kodzie, w tym stanie oba piny wyjściowe dają logikę 0 (LOW):

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

digitalWrite (9, LOW)}

Ponieważ napięcie wejściowe do obwodu pierwotnego obu przekaźników jest zerowe, zacisk wtórny obu przekaźników pozostaje w pozycji normalnie zamkniętej. Zatem na obu zaciskach silnika występuje zero woltów, co nie powoduje obrotu.

B. Gdy przycisk X jest wciśnięty, ale Y nie jest wciśnięty:

W tym stanie arduino pobiera 0 wejść z pinu 4, ale wejście 1 z pinu 3. Jak określono w kodzie w tym stanie, pin 6 powinien być w logice 1 (WYSOKI), podczas gdy pin 9 w logice 0 (NISKI):

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

digitalWrite (9, LOW)}

Ponieważ napięcie wejściowe przekaźnika nr 1 jest wysokie, przełącznik tego przekaźnika jest przełączany do stanu normalnie otwartego, podczas gdy napięcie wejściowe do przekaźnika 2 jest niskie, przełącznik tego przekaźnika pozostaje w stanie normalnie zamkniętym, powodując odpowiednio 12 V i 0 V na zaciskach silnika, powodując obrót silnika w jednym kierunku.

C. Gdy przycisk Y jest wciśnięty, ale X nie jest wciśnięty:

W tym stanie arduino pobiera 1 wejście z pinu 4, ale wejście 0 z pinu 3. Jak określono w kodzie w tym stanie, pin 6 powinien być w logice 0 (LOW), podczas gdy pin 9 w logice 1 (HIGH):

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

digitalWrite (9, WYSOKI)}

Ponieważ napięcie wejściowe do przekaźnika nr 2 jest tym razem wysokie, przełącznik tego przekaźnika jest przełączany do stanu normalnie otwartego, podczas gdy napięcie wejściowe do przekaźnika nr 1 jest niskie, przełącznik tego przekaźnika pozostaje w stanie normalnie zamkniętym, powodując odpowiednio 12 V i 0 V na silniku zaciski, powodując obrót silnika w innym kierunku.

D. Po naciśnięciu obu przycisków:

W tym stanie arduino pobiera 1 wejście z obu pinów. Jak określono w kodzie, w tym stanie oba piny wyjściowe dają logikę 0 (LOW):

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

digitalWrite (9, LOW)}

Ponieważ napięcie wejściowe do obwodu pierwotnego obu przekaźników jest równe zeru, zacisk wtórny obu przekaźników pozostaje w pozycji normalnie zamkniętej. W związku z tym na obu zaciskach silnika występuje zero woltów, co nie powoduje obrotu.

• KONTROLA PRĘDKOŚCI:

Powiedzmy, że potencjometr jest w takim położeniu, gdy podaje napięcie wejściowe 0 V na pin A0 arduino. Z tego powodu arduino mapuje tę wartość jako 0, a tym samym daje 0 jako wyjściowe PWM na pinie # 10, tj.

analogWrite (10,0) // zapisz zmapowaną wartość na 10. pin jako wyjście

Stąd bramka mosfetu pobiera prąd zerowy przez co pozostaje wyłączony a silnik jest w pozycji wyłączonej.

Jednak w miarę obracania się potencjometru i zmiany wartości potencjometru zmienia się również napięcie na pinie A0, a wartość ta jest odwzorowywana na pinie nr 10 z proporcjonalnie zwiększającą się szerokością PWM, powodując przepływ większego prądu przez silnik i mosfet dren, co z kolei pozwala silnikowi na proporcjonalne zwiększenie prędkości i to samo dzieje się odwrotnie.

Tak więc z powyższej dyskusji możemy zobaczyć, jak Arduino może być używane do kontrolowania prędkości i kierunku (do tyłu do przodu) silnika prądu stałego o wysokim prądzie, po prostu poprzez regulację określonego potencjometru i za pomocą kilku przycisków.

Aktualizacja : W przypadku silnika wysokoprądowego należy użyć przekaźników 12 V / 30 A i stopni sterownika BJT do obsługi tych przekaźników dużej mocy, jak pokazano na poniższym zmodyfikowanym schemacie:




Poprzedni: Obwód czujnika cofania samochodu z alarmem Dalej: Obwód generatora sygnału Arduino PWM