Home
Prox / RFID
Verichips
Ladder Logic
[interfacing] †
Tube Joints
Key Code From Photo
SolveSpace (3d CAD)
SketchFlat (2d CAD)
Photographs
Miscellany
Resume / Consulting
Contact Me

LDmicro Forum - SG90

(you are viewing a thread; or go back to list of threads)

SG90 (by Zoran)
Is it possible to control small servo motor SG90
Sat Jan 20 2018, 15:22:57
(no subject) (by Ziggy)
Svakako Zorane.

Ja koristim PWM pristup kontroli servo motora.

Problem sa PWM metodom je taj shto PWM ima rezoluciju u procentima osnovnog perioda frekvencije PWM signala.


Bio sam pozvao Igora da prepravi kontrolu PWM modela tako da se voveca rezolucija koje je on prihvatio i preradio za sada samo u slichaju PIC mikro kontrolora.

Daklem coekupan pristup je da uspostavish PWM signal i da uspostavish PWM koeficijent na neku pristojnu vrednost gdeti je servo motor u nekoj prihvatljivoj pochetnoj poziciji. Za tim da ako je potrebno iskljuchish napajanje servo motoru ( dodatni spoljni prekidach ).

Kada toi je motor potreban menjash vrednost PWM koeficijenta i pokrecesh napajanje servo motora ... itd.

A sad za ono shto je malo komplikovanije.

a) servo motri tradicionalno funkcionishu us pomoch puls modulacije :

1.5mili sekundi je neka navodno centralna pozicija dok su 1 i 2 mili sekunde nominalno krajnje pozicije .

b) tradicionalno analogni servo motori rade pri nizhim frekvencijama puls signala, tipichno od dvadesetak do pedesetak herca.

c) moderni tzv digitalni servo motori mogu da rade pri puno vecim frekvencijama od stotinak herca.


Kada se sve ovo stavi na gomilu i pretrese dolazi se do shvatanja de je PWM funkcija koju LDmicro pruzha na rubu mogucnost.

Kao prvo rezolucija od 1% je veoma gruba rezolucija pri nizhim frekvencijama.

Da bi se to malo izoshtrilo potrebno je podesiti frekvenciju PWM signala da bude malo nizha nego period od 2 milisekunde.

To ce malo da zavisi od mikroprocesora i takta pri kojem mikro radi ( kristal ili rezonator).

A sada dolazi do pitanja da li ce servo moci da funkcionishe pri ovoj frekvenciji uprkos tome shto servo specifikacije ne ukazuju pri kojoj frekvenciji servo treba da funkcionishe. Ovo postaje pitanje "probaj sam".

Pozdrav
Sat Jan 20 2018, 18:37:41
(no subject) (by Zoran)
Hvala na odgovoru,
Sin mi pravi robot ruku ako si video na netu i koristi 4 motora ali mu je problem sto motor sape ne radi bas najsrecnije, To mu je prvi projekat pa zna nesto malo a ja se ne razumem u programiranje ili prepravljanja koda arduina a u LD se snalazim pa sam hteo da probam da se igram sa motorom. Ni meni nije bas najjasnije te pozicije motora kako mu zadajes da ide odredzeni broj stepeni levo desno da li je jedan stepen jedan impuls kao kod step motora (sa njima radim bez problema) ili se salju svo vreme impulsi do zeljene pozicije.
Pozdrav iz Vrsca
Sun Jan 21 2018, 04:21:26
(no subject) (by Ziggy)
steper motori su jedna vrsta zverke koja radi na principu za svaki puls odkoracnaj po jedan korak levo ili desno zavisno o signalu za pravac pokretanja.

Daklem dva signala su potrebna..pravac i korak odnosno broj koraka.

Analogni servo motori koji se koriste u ( avio)modelarstvu jesu motori koji rade u petlji.
Petlja se sastoji od strujnog kola koje uchitava kontrolni signal koji se sastoji od serije impulsachija je nominalna duzhina trajanja 1500 mikro sekundi a frekvencija ovih impulsa nije nekog odredjenog znachaja ali tipichno zna da bude oko dvadesetak herca,

informacija o poziciji se nalazi u duzhini trjanja pojedinachnog pulsa.
Duzhina trjanja pulsa mozhe biti u granicama 1500+/-500 mikrosekundi koje predstavlja poziciju koju motor zauzme od 0 +/- 60 stepeni odnosno 90 stepeni zavisno o samom modelu servo motora.

Daklem steper motor prima seriju impulsa i dokle god impulsi traju motor koracha po jedan kora za svaki impuls.

Servo motor prima seriju impulsa trajno i dokle god impulsi odredjene duzhine traju motor zauzima tu poziciju u kratkom roku i pokushava da odrzhi poziciju sve dok se rok trajanja impulosa ne menja.

Josh jedared Steper motor odrzhava rotaciju sa svakim impulsom dok Servo motor odrzhava poziciju sa svakim impulsom.
Sun Jan 21 2018, 08:07:56
(no subject) (by Ihor Nehrutsa)
to Ziggy
Please tell me your target processor for high-resolution PWM.
Sun Jan 21 2018, 08:14:15
(no subject) (by Zoran)
Hvala na pojasnjenju,
Moracu da proverim kod arduina kako mu generise te impulse za kontrolu od 1,5ms. samo jos jednom da li sam razumeo.
Motor od 180 stepeni:
0stepeni-1ms
90-1,5ms
180-2ms
da li je onda
45-1,25ms
135-1,75ms
Sun Jan 21 2018, 09:49:35
(no subject) (by MGP)
You need a PPM signal and LDmicro can't generate this with the PWM instruction because the MCU frequency must be below the 1MhZ otherwise you get an error.

I wrote e testprogram (servotest.ld) you can find in this thread.

http://cq.cx/ladder-forum.pl?action=viewthread&parent=3
Sun Jan 21 2018, 11:33:15
(no subject) (by Ihor Nehrutsa)
ATmega MCU's with 16MHz oscillator can give
61 Hz PWM with
62 motion steps from -90 to 90
with 2,88 degrees per step
Sun Jan 21 2018, 15:01:37, download attachment servo pwm.xls
(no subject) (by Ziggy)
Hello Ihor,

My referred processor is either Atmega8 or Atmega328.

Zorane uprovo tako. ROk trjanaj samog pulsa je merilo pozicije.


MGP I have achieved control over a srvo using PWM but in order to improve granularity of control ( make positional increment smaller per count ) i have juggled processor clock and PWM frequency.

With some degree of success ATmega8 is running as follows

internal clock 1 MHz
PLC cycle time 5mS
PWM frequency 488Hz ( period > 2mS )

This way the resolution of PWM modulation is maximised.

Once PWM settings for the Atmel chips become enhanced then perhaps the operating frequency can be reduced.

NOTE: only some of the servos will operate at this ( 488Hz ) frequency especially those intended for high speed response operation typically used in helicopter model work.
Sun Jan 21 2018, 16:36:00
Servo PWM (by Ihor Nehrutsa)
Sun Jan 21 2018, 17:49:45
Post a reply to this comment:
Your Name:
Your Email:
Subject:
(no HTML tags; use plain text, and hit Enter for a line break)
Attached file (if you want, 5 MB max):