Kuidas juhtimiskangi abil servomootorit juhtida

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles postituses õpime juhtimiskangi ja Arduino abil juhtima servomootoreid. Näeme ülevaadet juhtkangist, selle tihvtidest, ehitusest ja toimimisest. Me võtame kasulikke andmeid rõõmupulgast, mis on aluseks servomootorite juhtimiseks.

Sissejuhatus

Selle artikli moto pole mitte ainult juhtida servomootoreid vaid selleks, et õppida a juhtnupp juhtimiseks paljud muud välisseadmed.



Vaatame nüüd juhtkangi.

Juhtkang on sisendseade, mis koosneb kangist, mis saab liikuda mitmes suunas X- ja Y-teljel. Kangi liikumist kasutatakse mootori või mis tahes lisaseadmete elektrooniliste seadmete juhtimiseks.



Juhtnuppe kasutatakse alates RC mänguasjadest kuni Boingi lennukiteni ja need täidavad sarnaseid funktsioone. Lisaks on mängudel ja väiksematel rõõmupulkadel Z-teljel nupp, mida saab programmeerida paljude kasulike toimingute tegemiseks.

Juhtkangi illustratsioon:

Juhtkangi illustratsioon:

Juhtkangid on üldiselt elektroonilised seadmed, seega peame rakendama energiat. Kangi liikumine tekitab väljundtappide pinge erinevuse. Pinge tasemeid töötleb mikrokontroller, et juhtida väljundseadet, näiteks mootorit.

Illustreeritud juhtnupp on sarnane, mida leiate PlayStationi ja Xboxi kontrolleritest. Nende päästmiseks pole vaja neid kontrollereid lõhkuda. Need moodulid on hõlpsasti kättesaadavad kohalikes elektroonilistes poodides ja e-kaubanduse saitidel.

Vaatame nüüd selle juhtkangi ehitust.

Sellel on kaks 10 Kilo oomi potentsiomeeter asetsevad vedrudega X- ja Y-telgedes nii, et see naaseb oma algasendisse, kui kasutaja vabastab kangist jõu. Sellel on Z-teljel nupp ON.

Sellel on 5 tihvti, 5 volti Vcc, GND, muutuja X, muutuja Y ja SW (Z-telje lüliti). Kui rakendame pinget ja jätsime juhtkangi algsesse hooba asendisse. X- ja Y-tihvtid tekitavad poole rakendatud pingest.

Kangi liigutamisel varieerub pinge X ja Y väljundtappides. Nüüd ühendame juhtnupu praktiliselt Arduinoga.

Skemaatiline diagramm:

Arduino servomootori juhtimine juhtkangi abil

Pistikühenduse üksikasjad on toodud vooluahela kõrval. Ühendage lõpetatud riistvara seadistamine ja laadige kood üles.

Programm:

//---------------Program Developed by R.Girish--------------//
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
void setup()
{
Serial.begin(9600)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
Serial.print('X axis = ')
Serial.println(x)
Serial.print('Y axis = ')
Serial.println(y)
Serial.print('Z axis = ')
if(z == HIGH)
{
Serial.println('Button not Pressed')
}
else
{
Serial.println('Button Pressed')
}
Serial.println('----------------------------')
delay(500)
}
//---------------Program Developed by R.Girish--------------//

Avage seeriamonitor, näete pinge taset X- ja Y-telje tihvtides ja Z-telje olekut, st vajutage nuppu, nagu allpool illustreeritud.

Neid X, Y, Z telje väärtusi kasutatakse kangi asendi tõlgendamiseks. Nagu näete, on väärtused vahemikus 0 kuni 1023.

Selle põhjuseks on asjaolu, et Arduino on sisse ehitanud ADC muunduri, mis teisendab pinge 0–5 V väärtuseks 0–1023.

Seeriamonitorilt saate tunnistada, et kui hoob jääb puutumata, jääb kang nii X- kui ka Y-telje keskasendisse ja näitab poolväärtust 1023.

Samuti näete, et see pole täpne pool 1023-st, sest nende juhtkangide tootmine pole kunagi olnud täiuslik.

Nüüdseks oleksite saanud juhtnuppude kohta tehnilisi teadmisi.

Vaatame nüüd, kuidas juhtida kahte servomootorit ühe juhtkangi abil.

Vooluahela skeem:

Kahte servomootorit juhitakse ühe juhtkangiga, kui liigutate juhtkangi mööda X-telge, liigub tihvti nr 7 ühendatud servo päripäeva ja vastupäeva sõltuvalt kangi asendist.

Samuti saate servoajamit hoida asendis, kui hoiate juhtnuppu teatud asendis.

Sarnaselt servamootoriga, mis on ühendatud tihvtiga nr 6, saate kangi liigutada mööda Y-telge.

Kui vajutate kangi piki Z-telge, teevad need kaks mootorit 180-kraadise pühkimise.

Arduino saate ühendada kas 9v aku või arvutisse. Kui ühendate Arduino arvutiga, saate avada seeriamonitori ja vaadata servoajamite nurka ja pingetasemeid.

Servomootori juhtimise programm:

//---------------Program Developed by R.Girish--------------//
#include
Servo servo_X
Servo servo_Y
int X_angleValue = 0
int Y_angleValue = 0
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
int pos = 0
int check1 = 0
int check2 = 0
int threshold = 10
void setup()
{
Serial.begin(9600)
servo_X.attach(7)
servo_Y.attach(6)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
if(z == LOW)
{
Serial.print('Z axis status = ')
Serial.println('Button Pressed')
Serial.println('Sweeping servo actuators')
for (pos = 0 pos <= 180 pos += 1)
{
servo_X.write(pos)
delay(10)
}
for (pos = 180 pos >= 0 pos -= 1)
{
servo_X.write(pos)
delay(15)
}
for (pos = 0 pos <= 180 pos += 1)
{
servo_Y.write(pos)
delay(10)
}
for (pos = 180 pos >= 0 pos -= 1)
{
servo_Y.write(pos)
delay(15)
}
Serial.println('Done!!!')
}
if(x > check1 + threshold || x {
X_angleValue = map(x, 0, 1023, 0, 180)
servo_X.write(X_angleValue)
check1 = x
Serial.print('X axis voltage level = ')
Serial.println(x)
Serial.print('X axis servo motor angle = ')
Serial.print(X_angleValue)
Serial.println(' degree')
Serial.println('------------------------------------------')
}
if(y > check2 + threshold || y {
Y_angleValue = map(y, 0, 1023, 0, 180)
servo_Y.write(Y_angleValue)
check2 = y
Serial.print('Y axis voltage level = ')
Serial.println(y)
Serial.print('Y axis servo motor angle = ')
Serial.print(Y_angleValue)
Serial.println(' degree')
Serial.println('------------------------------------------')
}
}
//---------------Program Developed by R.Girish--------------//

Kui teil on selle projektiga seoses konkreetseid küsimusi, väljendage neid kommentaaride jaotises, võite saada kiire vastuse.




Paar: Digitaalne mahtuvusmõõturi vooluring Arduino abil Järgmine: Digitaalse potentsiomeetri MCP41xx kasutamine Arduinoga