User Tools

Site Tools


projektas_nr.8

Projektas Nr. 8. Vienas servo mechanizmas

Ką darome? Sukti motorą yra smagu, tačiau kai ateina metas daryti projektus, kur yra reikalinga judesio kontrolė, mums reikia kažko kito. Kas gi tai galėtų būti? Ogi servo varikliai, arba tiesiog liaudiškai vadinama „servas“. Jie yra masiškai gaminami, plačiai aptinkami ir kainuoja nuo kelių iki kelių šimtų dolerių.Viduje yra nedidelė pavarų dėžė, tam kad būtų stipresnis judesys, ir šiek tiek elektronikos, tam kad būtų lengviau kontroliuoti. Standartinė servo padėtis gali būti nuo 0 iki 180 laipsnių. Padėties kitimas yra kontroliuojamas per impulsą, pasikartojanti kas kažkiek laiko, tarp 1.25 milisekundės (0 laipsnių) ir 1.75 milisekundės (180 laipsnių) (1.5 milisekundės atitinka 90 laipsnių). Laikas skiriasi tarp skirtingų gamintojų. Jei pulsas yra siunčiamas kas 25-50 milisekundžių, servo mechanizmas veiks sklandžiai. Vienas iš didžiausių „Arduino“ pliusų yra tai, kad „Arduino“ turi programinės įrangos biblioteką, kuri leidžia kontroliuoti dvi servas(prijungtas į 9 ir 10 jungtis) viena kodo eilute.

Grandinės dalys

  • CIRC-04 Plokštė x1
  • 2 Jungtys x4
  • 3 Jungtys x1
  • Mini servas x1
  • Laidai

Grandininė schema

Grandinės šablonas

ardu_pro68.jpg

Surinkta grandinė

Šaltiniai Plokštės maketas Surinkimo video

Kodas

File > Examples > Servo > Sweep

(pavyzdys iš arduino.cc tinklalapio, pažiūrėk daugiau gerų idėjų)

// Sweep
// by BARRAGAN

#include <Servo.h>

Servo myservo;  // sukuria servo objektą kontroliuoti servo mechanizmui
                // max 9 servo objektai gali būti sukurti

int pos = 0;     // kintamasis servos pozicijai
void setup()
{
  myservo.attach(9);  // prijungia servo mechanizmą 9 jungtyje prie servo objekto
}

void loop()
{
  for(pos = 0; pos < 180; pos+=1)  // sukasi nuo 0 iki 180 laipsnių
  {                                // palengva, po 1 laipsnį
    myservo.write(pos);            // liepia servai suktis į kintamojo "pos" poziciją
    delay(15);                     // palaukia 15ms pasiekti pozicijai
  }
  for(pos = 180; pos>=1; pos-=1)   // sukasi nuo 180 iki 0 laipsnių
  {
    myservo.write(pos);            //  liepia servai suktis į kintamojo "pos" poziciją    
    delay(15);                       //  palaukia 15ms pasiekti pozicijai    
  }  
}

Neveikia? (trys dalykai kuriuos galime padaryti)

Nesisuka? Pažiūrėk, ar servo mechanizmas įjungtas teisinga puse.

Vis dar neveikia? Patikrink ar prijungei į maitinimą.

Fits and Starts Jei servas pradeda suktis, tačiau trūkčioja ir mirksi lemputė ant https://www.dropbox.com/sh/odq6i9nvq00vrja/AADuT-Uocgv5tiQg5496ybJ4a/Rinkinys%20-%20ARDUINO?dl=0 plokštės, reiškia energijos šaltinis yra per silpnas. Naudojant šviežią bateriją vietoj USB turėtų išspręsti problemą.

Nori dar? Potenciometro Kontrolė: Eik čia: File > Library-Servo > Knob. Tai naudoja potenciometrą (CIRC08) kontroliuoti servo mechanizmui. Instrukcijas gali rasti čia: http://ardx.org/KNOB

Laiko kontroliavimas: Nesunku servą valdyti naudojant „Arduino“ biblioteką, tačiau pabandykime „suprogramuoti“ kažką patys. Mes kontroliuojame impulsus tiesiogiai , taigi šis metodas tinka kontroliuot servo mechanizmams bet kurioje iš 20 „Arduino“ jungčių (reiktų gerai optimizuoti kodą prieš tai darant).

  int servoPin = 9;
void setup() {
  pinMode(servoPin,OUTPUT);
} 

void loop() {
  int pulseTime = 2100; //(pauzės laikas mikrosekundėmis (1500 90 laipsnių                                                       
                        // 900 0 laipsnių 2100 180 laipsnių)
  digitalWrite(servoPin, HIGH);
  delayMicroseconds(pulseTime);
  digitalWrite(servoPin, LOW);
  delay(25);
}

Puikios idėjos: Štai kelios puikios idėjos, kaip galima panaudoti servo mechanizmus:

Kalėdinis smūgių skaičiuotuvas http://ardx.org/XMAS

Atviro kodo robotinė ranka http://ardx.org/RARM

Vaikščiojantis robotas http://ardx.org/SEWA

Kitas projektas. Muzikos kūrimas Pjezo signalizatoriumi.

Atgal į projektus

projektas_nr.8.txt · Keista: 2015/12/14 16:23 vartotojo simonas