9. tēma: Aktuatori elektronikā un Servo motora precīza vadība

Tavs šīs stundas izaicinājums: Izprast Servo motora darbības principu, pievienot to mikrokontrolierim un uzrakstīt programmu, kas ļauj fiziski kontrolēt motora leņķi, izmantojot potenciometra kloķi.

Datorika 7. klase (D.7.1.1., D.7.4.2., D.7.6.1.)

Teorija: Kas ir Servo motors un kā ar to "sarunāties"?

Atšķirībā no parastajiem motoriem (kā ventilatoriem), kas griežas uz riņķi nepārtraukti, Servo motors ir īpašs – tam var pateikt precīzu leņķi (parasti no 0° līdz 180°), un tas turēs šo pozīciju. Tas ir ideāli piemērots robotu rokām, stūres mehānismiem un durvju slēdzenēm.

1. uzdevums: Virtuālā Servo motora pieslēgšana

Tinkercad vidē pievienojiet "Micro Servo" un pareizi savienojiet tā trīs vadus ar Arduino un maketo plati.

Izpildes soļi:

  1. Izveidojiet jaunu Tinkercad projektu. Pievienojiet Arduino un Breadboard (savienojiet 5V un GND).
  2. Atrodiet "Micro Servo" un novietojiet to darba laukumā.
  3. Pietuviniet peli motora vadiem, lai redzētu to nosaukumus: savienojiet "Ground" ar melno (-) līniju, "Power" ar sarkano (+) līniju.
  4. Trešo vadu, ko sauc par "Signal", savienojiet ar Arduino 9. portu. Iekrāsojiet šo vadu oranžu vai dzeltenu!

2. uzdevums: "Logu tīrītāja" algoritms

Uzrakstiet kodu, kas liek motoram automātiski pagriezties uz 0 grādiem, tad uz 90 grādiem un tad uz 180 grādiem, radot logu tīrītāja efektu.

Izpildes soļi:

  1. Atveriet koda logu. Pašā augšā (virs setup()) pievienojiet bibliotēku: #include <Servo.h> un izveidojiet motoru: Servo mansMotors;
  2. setup() pasakiet, pie kura pina motors pieslēgts: mansMotors.attach(9);
  3. loop() dodiet komandu pagriezties uz 0 grādiem: mansMotors.write(0); un pagaidiet sekundi: delay(1000);
  4. Pievienojiet vēl komandas, lai tas pagriežas uz 90 grādiem (pagaida) un uz 180 grādiem (pagaida). Nospiediet Start!

3. uzdevums: Analogo dzinēju vadība (Potenciometrs + Servo)

Apvienojiet iepriekšējās stundas zināšanas! Pievienojiet potenciometru un izmantojiet to kā "stūri", lai kontrolētu motora leņķi reāllaikā.

Izpildes soļi:

  1. Pievienojiet maketo platei potenciometru (ārējās kājas pie 5V un GND, vidējo pie A0 porta).
  2. Sadaļā loop() izdzēsiet iepriekšējo kodu. Izveidojiet mainīgo nolasīšanai: int kloķis = analogRead(A0);
  3. Pievienojiet rindiņu, kas pārveido 1023 uz 180 grādiem: int lenkis = map(kloķis, 0, 1023, 0, 180);
  4. Nosūtiet šo jauno leņķi uz motoru: mansMotors.write(lenkis); un pievienojiet īsu delay(15);, lai motors paspēj noreaģēt.
  5. Palaidiet simulāciju – griežot potenciometru ar peli, motoram ir precīzi jāseko jūsu kustībai!

4. uzdevums (Zvaigznītes izaicinājums): "Kodu atslēga" ar pogām

Ātrākajām komandām – noņemiet potenciometru un pievienojiet divas spiedpogas. Kreisā poga griež motoru pa kreisi (-10 grādi), labā – pa labi (+10 grādi).

Izpildes soļi:

  1. Pievienojiet divas pogas ar INPUT_PULLUP loģiku pie portiem (piem., 2 un 3).
  2. Izveidojiet globālu mainīgo int pozicija = 90; virs setup().
  3. Izmantojiet "If" loģiku: Ja nospiež 2. pogu, pozicija = pozicija - 10; (un obigāti delay(100);, lai nepārlektu pārāk ātri).
  4. Ja nospiež 3. pogu, pozicija = pozicija + 10;.
  5. Beigās nosūtiet pozicija vērtību uz motoru: mansMotors.write(pozicija);

Biežākās kļūdas (un kā tās labot):

Koda piemērs (Stūres mehānisms ar potenciometru)


#include <Servo.h> // Pievieno Servo bibliotēku

Servo mansMotors;   // Izveido motora objektu
int potPin = A0;    // Potenciometra ports

void setup() {
  // Pievieno motoru 9. portam
  mansMotors.attach(9); 
}

void loop() {
  // 1. Nolasa potenciometra stāvokli (0 līdz 1023)
  int klokaStavoklis = analogRead(potPin);
  
  // 2. Pārveido šos datus leņķu skalā (0 līdz 180)
  int motoraLenkis = map(klokaStavoklis, 0, 1023, 0, 180);
  
  // 3. Pasaka motoram fiziski pagriezties uz šo leņķi
  mansMotors.write(motoraLenkis);
  
  // 4. Pagaida, lai motors pabeidz kustību
  delay(15); 
}
        
Griežot potenciometra kloķi pa kreisi un pa labi, Servo motora rotējošā ass proporcionāli sekos jūsu pirksta/peles kustībām. Tas ir pamats, kā darbojas automašīnu tālvadības pulšu stūres mehānismi.
⬅ Iepriekšējā stunda Nākamā stunda ➡