Kā kontrolēt servomotoru, izmantojot kursorsviru

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā amatā mēs uzzināsim, kā vadīt servomotorus, izmantojot kursorsviru un Arduino. Mēs redzēsim pārskatu par kursorsviru, tās tapām, tā uzbūvi un darbību. Mēs iegūsim noderīgus datus no prieka nūjas, kas būs pamats servomotoru vadīšanai.

Ievads

Šī raksta devīze ir ne tikai kontrolēt servomotorus bet, lai uzzinātu, kā lietot a vadības svira kontrolēšanai daudzas citas perifērijas ierīces.



Tagad apskatīsim kursorsviru.

Kursorsvira ir ievades ierīce, kas sastāv no sviras, kas var pārvietoties vairākos virzienos X un Y asīs. Sviras kustību izmanto, lai kontrolētu motoru vai jebkādas perifērijas ierīces elektroniskas ierīces.



Kursorsviras tiek izmantotas no RC rotaļlietām līdz Boing lidmašīnām un veic līdzīgas funkcijas. Spēļu un mazākām prieka nūjām papildus ir Z ass spiedpoga, kuru var ieprogrammēt daudzu noderīgu darbību veikšanai.

Kursorsviras ilustrācija:

Kursorsviras ilustrācija:

Kursorsviras kopumā ir elektroniskas ierīces, tāpēc mums jāpielieto jauda. Sviras kustība rada sprieguma starpību pie izejas tapām. Sprieguma līmeņus apstrādā mikrokontrolleris, lai kontrolētu izejas ierīci, piemēram, motoru.

Ilustrētais kursorsvira ir līdzīgs, kuru var atrast PlayStation un Xbox kontrolieros. Lai glābtu vienu, jums nav jālauž šie kontrolieri. Šie moduļi ir viegli pieejami vietējos elektroniskajos veikalos un e-komercijas vietnēs.

Apskatīsim šīs kursorsviras uzbūvi.

Tam ir divi 10 Kilo omi potenciometrs novietots X un Y asīs ar atsperēm tā, lai tas atgrieztos sākotnējā stāvoklī, kad lietotājs atbrīvo spēku no sviras. Tam ir poga uz ON uz Z ass.

Tam ir 5 tapas, 5 voltu Vcc, GND, mainīgais X, mainīgais Y un SW (Z ass slēdzis). Kad mēs pieliekam spriegumu un atstājam kursorsviru sākotnējā sviras stāvoklī. X un Y tapas radīs pusi no pielietotā sprieguma.

Kad mēs pārvietojam sviru, spriegums mainās X un Y izejas tapās. Tagad praktiski saskarnēsim kursorsviru Arduino.

Shematiska diagramma:

Arduino servomotora vadība, izmantojot kursorsviru

Saspraudes savienojuma detaļas ir norādītas blakus ķēdei. Pievienojiet pabeigto aparatūras iestatīšanu un augšupielādējiet kodu.

Programma:

//---------------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--------------//

Atveriet sērijveida monitoru, kurā varat redzēt sprieguma līmeni X un Y ass tapās un Z ass statusu, t.i., spiedpogu, kā parādīts zemāk.

Šīs X, Y, Z asu vērtības tiek izmantotas, lai interpretētu sviras stāvokli. Kā redzat, vērtības ir no 0 līdz 1023.

Tas ir tāpēc, ka Arduino ir iebūvējis ADC pārveidotāju, kas spriegumu 0V - 5V pārveido no 0 līdz 1023 vērtībām.

No sērijveida monitora varat liecināt, ka tad, kad svira netiek skarta, svira paliek gan X, gan Y asu vidējā stāvoklī un uzrāda pusi no 1023 vērtības.

Varat arī redzēt, ka tā nav precīza puse no 1023, jo šo kursorsviru ražošana nekad nav bijusi perfekta.

Tagad jūs jau būtu ieguvis dažas tehniskas zināšanas par kursorsvirām.

Tagad redzēsim, kā vadīt vienu servomotoru, izmantojot vienu kursorsviru.

Ķēdes shēma:

Divus servomotorus kontrolē viena kursorsvira, kad jūs virzāt kursorsviru pa X asi, piespraudē # 7 savienotais servo kustas pulksteņrādītāja kustības virzienā un pretēji pulksteņa rādītājam atkarībā no sviras stāvokļa.

Servo izpildmehānismu var turēt arī pozīcijā, ja kursorsviru turat noteiktā pozīcijā.

Līdzīgi servomotoram, kas savienots ar tapu Nr. 6, sviru var pārvietot pa Y asi.

Nospiežot sviru gar Z asi, abi motori veiks 180 grādu slaucīšanu.

Varat vai nu savienot arduino ar 9v akumulators vai datorā. Pievienojot Arduino datoram, varat atvērt sērijveida monitoru un redzēt servopiedziņu leņķi un sprieguma līmeņus.

Servomotora vadības programma:

//---------------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--------------//

Ja jums ir kādi konkrēti jautājumi par šo projektu, nekautrējieties izteikties komentāru sadaļā, iespējams, saņemsit ātru atbildi.




Pāri: Digitālās kapacitātes mērītāja shēma, izmantojot Arduino Nākamais: Digitālā potenciometra MCP41xx izmantošana ar Arduino