Olá Garagistas,

Estou enfrentando um problema em controlar um servo CYS-S8218 de 6-7.2V com o arduino.

Estou utilizando um LM317 para entregar a tensão pro servo e o regulador é alimentado com uma bateria de 12V de Nobreak.. Depois de muito brigar com esse sistema, consegui fazer o servo se movimentar usando um transistor (BC338) para aumentar o sinal que o arduino envia para mesma tensão de alimentação do servo(tentei ligar direto mas o servo não respondia, mesmo regulando a tensão pra 6V) nessa ligação coloquei o sinal do arduino na base do transistor com um resistor de 1k, liguei o emissor no pino de sinal do servo e o coletor no Vout do LM317. Porém não consigo controlar esse movimento do servo, e o LM317 está cheirando queimado, mesmo tendo colocado um dissipador nele.

Espero que consigam me ajudar. Estou com prazo apertadíssimo para terminar esse sistema

Exibições: 1810

Responder esta

Respostas a este tópico

É um servo digital, alto torque, não sei o valor, mas a corrente nestes servos é alta, passa fácil de 1 amper.

Meça a tensão de alimentação do servo sem carga, mas sendo controlado pelo Arduino. 

Tem que medir 6V. Se estiver abaixo disso, é porque a corrente esta maior que o possivel do LM317.

Mximo 1,5A => http://www.fairchildsemi.com/ds/LM/LM317.pdf

O sintoma é de sobrecarga - tente alimentar o servo com uma bateria de 6V e meça a corrente de consumo.

Não sei o consumo de corrente desse servo, mas deve ser alto.

http://www.cysmodel.hk/en/ProductView.asp?SortID=64&ID=235

Nossa, a corrente maxima desse motor é 7,5A alimentando com 6V !!

http://www.yuki-model.de/SERVOS/CYS-S8218-Digital-Kunststoffgehaeus...

olá amigo, eu não consegui controlar direto com arduino.... ele não se movimentava ligando o sinal do arduino direto, mesmo alimentando o servo com 6V, ele se movimentou quando usei o transistor, porém sem sentido algum, simplesmente girando aleatoriamente, com isso eu medi a corrente que teve como pico 1,3A não vi neste link que vc mandou que a corrente máxima é de 7,5A, onde você viu isso?

Obrigado pelas respostas

Veja na aba Product data :

Technical data

Control electronics: Digital
Gearing: Metall
Speed @ 6,0 V: 0,20 s/60 °
Speed @ 7,4 V: 0,18 s/60 °
Torque @ 6,0 V: 36,0 kg/cm
Torque @ 7,4 V: 38,0 kg/cm
Dead band: 2 µs
Operating voltage: 6,0-7,4 V
Running current @ 6,0 V: 0,7 A
Running current @ 7,4 V: 0,9 A
Stall current @ 6,0 V: 7,5 A
Stall current @ 7,4 V: 8,6 A
Idle current @ 6,0 V: 20 mA
Idle current @ 7,4 V: 20 mA
Housing: Kunststoff, Aluminium
Motor: Standard
Dimensions: 59,5 x 29,0 x 55,2 mm
Weight: 164 g
Connection: UNI

Algumas dúvidas que espero que você possa me sanar. A primeira é sobre o Stall Current, que pelo meu fraco conhecimento adquirido na universidade( curso engenharia mecânica ) é o máximo de corrente para as especificações de torque, estou certo? A segunda é quanto ao Running current, que ele diz ser 0,9A, porém presenciei pico de 1,3A com o servo sem carga. 

Amanhã irei usar o laboratório da minha universidade e colocar o servo em uma fonte de tensão e analisar o sinal que sai do transistor com um osciloscópio, acho que terei uma resposta pra ele girar aleatóriamente e saber se o problema é realmente o LM.

http://robotics.stackexchange.com/questions/613/what-is-stall-curre...

Stall current - corrente máxima com carga - motor parado

Runing current - corrente com o motor em movimento  sem carga 

http://www.pololu.com/blog/16/electrical-characteristics-of-servos-...

Opa esse servo é digital e não analógico !

http://www.societyofrobots.com/actuators_servos.shtml

Traduzido com Google Tradutor:

Servos digitais, para o usuário final, são controlados de forma diferente do que servos analógicos. A diferença está em como o servo motor é controlado através da placa de circuito (amplificador).

O motor de um servo-analógico recebe um sinal proveniente do amplificador de 30 vezes por segundo ou a 30Hz. Este sinal permite que o amplificador para atualizar a posição do motor.

Servos digitais usam um amplificador de alta frequência que atualiza a posição do servo motor de 300 vezes por segundo ou em 300Hz. Ao atualizar a posição do motor com mais freqüência, o servo digital pode entregar torque total desde o início do movimento e aumenta o poder de fixação do servo. A atualização rápida também permite que o servo digital para ter uma banda morta mais apertado.

Você terá que usar provavelmente um outra biblioteca ou então criar uma nova com os tempos do servo digital :

A biblioteca servo.h é para servos analógicos.

http://www.sailservo.co.uk/anvdig.html

Biblioteca servo.h :

https://code.google.com/p/arduino/source/browse/trunk/libraries/Ser...

The methods are:

Servo - Class for manipulating servo motors connected to Arduino pins.

attach(pin ) - Attaches a servo motor to an i/o pin.
attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds
default min is 544, max is 2400  


write() - Sets the servo angle in degrees. (invalid angle that is valid as pulse in microseconds is treated as microseconds)
writeMicroseconds() - Sets the servo pulse width in microseconds (vai ter mudar)

Vai ter que mudar os parametros !


read() - Gets the last written servo pulse width as an angle between 0 and 180.
readMicroseconds() - Gets the last written servo pulse width in microseconds. (was read_us() in first release)
attached() - Returns true if there is a servo attached.
detach() - Stops an attached servos from pulsing its i/o pin.

#define MIN_PULSE_WIDTH       544     // the shortest pulse sent to a servo  
#define MAX_PULSE_WIDTH      2400     // the longest pulse sent to a servo
#define DEFAULT_PULSE_WIDTH  1500     // default pulse width when servo is attached
#define REFRESH_INTERVAL    20000     // minumim time to refresh servos in microseconds
 
#define SERVOS_PER_TIMER       12     // the maximum number of servos controlled by one timer
#define MAX_SERVOS   (_Nbr_16timers  * SERVOS_PER_TIMER)

olá amigo, lendo o link que me você me enviou, lá diz o seguinte:

Analog and Digital servos look similar, have the same purpose and both receiver the same input signal from the receiver. 

Pelo que entendi estes gráficos que você apresentou são os pulsos que o IC do servo manda para o motor DC e não o que ele recebe externamente do arduino. Por favor me corrija se eu estiver enganado.

Coloquei o servo na bancada do laboratório, consegui fazer ele funcionar, porém o posicionamento ainda continua aleatório. A corrente sem carga deu pico de 2.2A, por um curto espaço de tempo(acredito que tenha sido apenas na "partida") nos demais se manteve sempre em torno de 1A, mesmo aplicando carga ao braço do servo. 

Sempre que o servo se movimenta causa uma queda de tensão muito grande na fonte, chegando até a 3V, o que eu acredito que seja o motivo de o servo não conseguir chegar na posição mandada. Tem lógica esse pensamento?

Continuarei agora a tarde tentando desvendar os mistérios desse servo, qualquer atualização volto a postar aqui.

Obrigado pela ajuda

Sua fonte esta arreando.

Se estivesse num aeromodelo com essa queda de tensão já o teria derrubado pela desativação do RX por baixa tensão.

Tente trabalhar com ele em torno de 5,5V.

Outra coisa, tem certeza que este servo esta OK?

Abraços

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço