Szervó motor kezelés

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Amaronn
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2017. január 12. csütörtök, 20:25

Szervó motor kezelés

Hozzászólás Szerző: Amaronn »

Sziasztok!

Még nagyon kezdő vagyok. A kérdésem az lenne, hogy van egy szervo motorom, amit tök szépen el is tudok indítani egy arduino uno segítségével, azonban amikor elöször áramot kap, autómatikusan fordul egyet. Nem tudom pontosan, hogy ez egy automatikus ellenörzés vagy micsoda, de mivel egy legóba szeretném beszerelni, ahol egy ilyen kis felesleges mozgás nem lehet. Ezt ki lehet valahogy kapcsolni? Tower pro kis mini szervóm van.

Előre is köszönöm!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Szervó motor kezelés

Hozzászólás Szerző: Robert »

A bekapcsoláskor a láb lebeg. Parazita jelet kap szerintem és arra áll be.
A tápját vedd el, és ha fut az UNO programja, akkor kapjon csak tápfeszt.
http://www.tavir.hu - a gazda :)
Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00

Re: Szervó motor kezelés

Hozzászólás Szerző: albinolynx »

GRBL servo-val szeretnék dűlőre jutni:

https://github.com/robottini/grbl-servo

Egy tower pro sg90 micro servo-t használnék, amiből egyet már sikerül tönkretennem.
Arduino uno r3, cnc shield (piros nyákos), külső stabilizált 5V táp a servo-nak. Úgy olvastam, hogy az uno 9gr-os méretű servo-t még képes az usb port 5V-ról hajtani, de nekem instabil volt.

Részlet a "spindle_control.c" nevű fájlból:
/* RC-Servo PWM modification: switch between 0.6ms and 2.5ms pulse-width at 61Hz
Prescaler 1024 = 15625Hz / 256Steps = 61Hz 64µs/step -> Values 15 / 32 for 1ms / 2ms
Reload value = 0x07
Replace this file in C:\Program Files (x86)\Arduino\libraries\GRBL
*/


#include "grbl.h"

#define RC_SERVO_SHORT 15 // Timer ticks for 0.6ms pulse duration (9 for 0.6ms)
#define RC_SERVO_LONG 32 // Timer ticks for 2.5 ms pulse duration (39 for 2.5ms)
//#define RC_SERVO_INVERT 1 // Uncomment to invert servo direction
A 15/32 értékek egyeznek az sg90 által igényelt 1-2ms kitöltési tényezővel.

A GRBL servo leírásból egy részlet:
GRBL 0.9i with servo motor support. Use the PIN D11 to drive the servo. Use the commands M03 Sxxx (xxx between 0 and 255) to rotate the servo between 0-180. The command M05 turn the servo to zero degrees.

you can change the pulse duration in the file spindle_control.c:

define RC_SERVO_SHORT 15 // Timer ticks for 0.6ms pulse duration (9 for 0.6ms)

define RC_SERVO_LONG 32 // Timer ticks for 2.5 ms pulse duration (39 for 2.5ms)

define RC_SERVO_INVERT 1 // Uncomment to invert servo direction

If you want to have the servo working from 0 --> 180 degrees change RC_SERVO_SHORT and put 9, RC_SERVO_LONG and put 39 If you want invert the servo direction uncomment the line above.
Az sg90 0-180fokos tartományban üzemel. -90 - 0 - +90 fok. Az elején azt írjta, hogy 0-255 értékkel be lehet pozicionálni ezen a tartományon belül. A leírás végén pedig, át kell írni a paramétereket.

Tudnátok tanácsot adni a paraméterezésben (short, long értékek) és a helyes üzemeltetésben M03 határértékeivel?
Félek már rákötni servo-t kísérletezni. Sajnos áramkorlátos táppal nem rendelkezem... Az első servo tönkremeneteléből mást nem vettem észre, mint végállásba csapódott és többet nem mozdult. M03 S100 paramétert küldtem.
Köszönöm!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Szervó motor kezelés

Hozzászólás Szerző: Robert »

A szervo _névleges_ végállása a 0...255. Nálam jellemzően (15..25)......(230...255) a tartomány.
Az USBről úgy viszi el a szervót, ha a szervohoz minél közelebb (pl. CNCShieldre) a GND/5V közé teszel egy 470...2200uF kondit. A gyors megrántást nem bírja az USB port, a kondi segít neki.
http://www.tavir.hu - a gazda :)
Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00

Re: Szervó motor kezelés

Hozzászólás Szerző: albinolynx »

Sajnos soha sem foglalkoztam még servokkal. A két végállást hogyan tudnám biztonsággal letapogatni?
Két állás kell üzem közben = fel, le.

Azt írja a szerző, hogy ebben a programban: http://jtechphotonics.com/?page_id=2012

a 6. lépésnél látható ablakban kell átírni a laser ON/OFF értékeket:
“Laser ON command” the value M03 Sxxx (xxx between 0 and 255) to rotate the servo between 0-180. In the field “Laser OFF command” use S05.
Tehát nekem csak annyi kellene, hogy az m03 S lehetséges értékét kiderítem biztonsággal.
Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00

Re: Szervó motor kezelés

Hozzászólás Szerző: albinolynx »

Sikerült, bár a másik műanyag fogaskerekes tower pro is beadta. Előkerült egy fém fogaskerekes: https://hobbyking.com/en_us/turnigytm-t ... c-11g.html

Ehhez nem találtam olyan adatlapot ahol szerepelne a kitöltési tényezőre vonatkozó ábra (vagy csak szimplán béna vagyok). A lényeg, hogy bénázva, ezt is sikerült párszor "falnak" csapni, de egyből lekapcsoltam a tápfeszültséget. Szerencsére ez túlélte és most vígan tudom 0-60fok között mozgatni.
Ha lesz időm megint, akkor vissza mérem szkóppal. Utána adatlappal lehet egyeztetni majd (feltéve ha lesz).

Gondolom, egy $1 kínai servo testerrel kipróbáltam volna a tartományt. Lemérem szkóppal a határokat. Servo nélkül kibogyózom az értékeket, utána rádugom a servot és kész.
Köszönöm!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Szervó motor kezelés

Hozzászólás Szerző: Robert »

Arduino alatt ott a szervo eljásáskönyvtár és minta.
Kipróba és kész is van a teszter....
http://www.tavir.hu - a gazda :)
Válasz küldése