Pages: [1]   Go Down
Author Topic: Angulos negativos em Servo motor  (Read 2022 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tenho um servo motor de 9gr, um HXT900
queria saber se é possivel que ele execute valores negativo,
preciso que ele fica no angulo 0,
e se mova 45º e -45º

[]'s
Logged

Brasil
Offline Offline
Newbie
*
Karma: 0
Posts: 49
Existem três frases que vão levar sua vida em diante: "Não diga que fui eu", "Já estava assim quando cheguei" e "Oh que boa idéia chefe". (Homer Simpson)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bom dia,

Nunca vi angulos negativos em servo motores, mas ele nao poderia ficar no angulo 45, e mover para 0 e 90? assim ele teria os mesmos 45 graus de mobilidade para ambos os lados.
Logged

--
        Anthony M. Collucci
        (0xx31)9243-1690
      http://amcollucci.com.br
      http://astrobrasil.blogspot.com
      http://c

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bom dia,

Nunca vi angulos negativos em servo motores, mas ele nao poderia ficar no angulo 45, e mover para 0 e 90? assim ele teria os mesmos 45 graus de mobilidade para ambos os lados.

Exatamente smiley
havia pensado nisso, e até cheguei a testar, a lógica está certa
o centro dele seria 45º, para a direita colocaria 90º e esquerda 0º (ou vice-versa rs)

o problema é, toda vez que o sistema é desligado e é cortado a energia do servo, ele volta sozinho para um determinado angulo, não lembro exatamente qual angulo  smiley-confuse

(to pensando agora enquanto escrevo)...as vezes posso usar esse angulo que ele fica quando desligado para ser o centro né? e ai trabalhar adicionando ou retirando 45º dele
alguem sabe o angulo que ele fica quando desligado?

[]'s
Logged

Brasil
Offline Offline
Newbie
*
Karma: 0
Posts: 49
Existem três frases que vão levar sua vida em diante: "Não diga que fui eu", "Já estava assim quando cheguei" e "Oh que boa idéia chefe". (Homer Simpson)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Esse servo motor funciona como se fosse um servo motor de aeromodelo? pois eu tinha o mesmo problema...

se for, eu fiz o seguinte, joguei fora a servo.h..  e criei uma rotina que enviava os pulsos na largura correspondente ao angulo. e o ponto de partida era a largura do angulo que eu definia como inicial.

Se ele funcionar como um servo de aeromodelo eu posto aqui meu codigo pra ver se te ajuda...
Logged

--
        Anthony M. Collucci
        (0xx31)9243-1690
      http://amcollucci.com.br
      http://astrobrasil.blogspot.com
      http://c

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esse servo motor funciona como se fosse um servo motor de aeromodelo? pois eu tinha o mesmo problema...

se for, eu fiz o seguinte, joguei fora a servo.h..  e criei uma rotina que enviava os pulsos na largura correspondente ao angulo. e o ponto de partida era a largura do angulo que eu definia como inicial.

Se ele funcionar como um servo de aeromodelo eu posto aqui meu codigo pra ver se te ajuda...

Eita, rs
olha tenho quase 99% de certeza que é usado para aeromodelismo:
servo motor 9gr HXT900
http://www.hobbyking.com/hobbycity/store/uh_viewitem.asp?idproduct=662
http://www.servodatabase.com/servo/hextronik/hxt900

Tem uma gambiarra pra deixar ele em rotacao continua (360º)
http://starter-kit.nettigo.pl/2011/04/serwo-hxt900-z-continuous-rotation/

mais qual seria a diferenca?
opa! se puder postar smiley os creditos seram seus no meu código smiley

[]'s
Logged

Brasil
Offline Offline
Newbie
*
Karma: 0
Posts: 49
Existem três frases que vão levar sua vida em diante: "Não diga que fui eu", "Já estava assim quando cheguei" e "Oh que boa idéia chefe". (Homer Simpson)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

vou te mandar ele, hoje a noite, pois estou no trampo...

ja que e esse tipo de servo deixa eu te dar outra dica,

vc tem de usar um rele ou um "opto acoplador" esse ultimo eu nao testei.. pois quando o arduino boota, ele manda um codigo aleatorio para todas as portas.. isso e interpretado pelo servo e faz ele ficar maluco... quando eu estava tentando montar um hexapode, destrui ele todo, pois os servos se movimentavam loucamente, toda vez que eu ligava o arduino.

quanto a posição, e o seguinte, quando o servo vai se mover e enviado para ele um sinal para ele ir para determinado ponto. na biblioteca servo.h, parte do principio que ele esteja no inicio do seu movimento ou seja no grau 0, portanto quando vc envia o sinal ele volta para o grau 0 e começa a se deslocar de acordo com o passo configurado na biblioteca.

No que fiz, eu defino qual e o ponto inicial, a partir, da necessidade mecanica, por exemplo no meu braço mecanico precisava que o servo iniciasse em 93graus.

Vou te enviar o codigo e vc analiza, e veja se o seu problema e o mesmo que o meu.

att,
Logged

--
        Anthony M. Collucci
        (0xx31)9243-1690
      http://amcollucci.com.br
      http://astrobrasil.blogspot.com
      http://c

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

vou te mandar ele, hoje a noite, pois estou no trampo...

ja que e esse tipo de servo deixa eu te dar outra dica,

vc tem de usar um rele ou um "opto acoplador" esse ultimo eu nao testei.. pois quando o arduino boota, ele manda um codigo aleatorio para todas as portas.. isso e interpretado pelo servo e faz ele ficar maluco... quando eu estava tentando montar um hexapode, destrui ele todo, pois os servos se movimentavam loucamente, toda vez que eu ligava o arduino.

quanto a posição, e o seguinte, quando o servo vai se mover e enviado para ele um sinal para ele ir para determinado ponto. na biblioteca servo.h, parte do principio que ele esteja no inicio do seu movimento ou seja no grau 0, portanto quando vc envia o sinal ele volta para o grau 0 e começa a se deslocar de acordo com o passo configurado na biblioteca.

No que fiz, eu defino qual e o ponto inicial, a partir, da necessidade mecanica, por exemplo no meu braço mecanico precisava que o servo iniciasse em 93graus.

Vou te enviar o codigo e vc analiza, e veja se o seu problema e o mesmo que o meu.

att,

Po cara, é esse mesmo problema pelo que percebi rs
ele ficava meio malucao quando eu ligava o arduino, ta explicado entao rs

Entendi o lance dos graus, ficarei muito agradecido se compartilhar sua biblioteca,
estou no trabalho agora, só irei mexer nele anoite tambem hehehe

E seu hexapode ficou bom?
tem video, foto? queria ver smiley hehe

Abracos!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Fiquei esperando smiley-sad
rs


[]'s
Logged

Brasil
Offline Offline
Newbie
*
Karma: 0
Posts: 49
Existem três frases que vão levar sua vida em diante: "Não diga que fui eu", "Já estava assim quando cheguei" e "Oh que boa idéia chefe". (Homer Simpson)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Desculpe,

minha esposa esta doente, fui com ela no medico, e so agora estou lendo meus e-mails.. esto na faculdade, amanha cedo eu coloco o codigo sem falta.

att,
Logged

--
        Anthony M. Collucci
        (0xx31)9243-1690
      http://amcollucci.com.br
      http://astrobrasil.blogspot.com
      http://c

Brasil
Offline Offline
Newbie
*
Karma: 0
Posts: 49
Existem três frases que vão levar sua vida em diante: "Não diga que fui eu", "Já estava assim quando cheguei" e "Oh que boa idéia chefe". (Homer Simpson)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Veja o codigo, ele ainda nao esta generalizado, mas pretendo escrever uma versão como uma lib..

// define o pino em que o servo esta conectado
 
const unsigned int servobase = 6;
const unsigned int servoelev = 7;
const unsigned int servogarra = 8; 
// definem o maximo e o minimo em Microsegundos, da largura do pulso
// vou transforma isso em um array, para poder ter limites maximos diferentes para cada servo
unsigned int maximo = 2400;
unsigned int minimo = 70;
 
//Armazena o ultimo passo enviado para o servo, evitando que ele receba um comando para permanecer onde esta, evitando assim trepidação

//Criar uma variavel homeposition - para armazenar a posicaço inicial
unsigned int ultimopasso [12];
 
// intervalo em Milisegundos entre um pulso e outro
unsigned int interval = 15;
 
//velocidade com que o servo movimenta
unsigned int velocidade = 5;
 
void setup(){
 ultimopasso [servobase]=minimo + (maximo/180)*89;
 ultimopasso [servoelev]=minimo + (maximo/180)*90;
 ultimopasso [servogarrra]=minimo + (maximo/180)*90;
 pinMode (servobase, OUTPUT);
 pinMode (servoelev, OUTPUT);
 pinMode (servogarra, OUTPUT);
 passo (servobase, 90);
 passo (servoelev,93);
 passo (sevogarra,90);
 
}
 
void loop(){
 

}


posinicial();
}

void posinicial(){
 passo (servobase, 90);
 passo (servoelev,93);
 passo (sevogarra,90);
 
}

 
void passo (int _grau, int _servo){
 unsigned int _passo= minimo + (maximo/180)*_grau;
 if (ultimopasso[_servo] != _passo){ //impede a repetição do mesmo passo senao fosse assim causaria  trepidação
 if (ultimopasso[_servo] < _passo){ //se o servo estiver antes da proxima posição ele avança
 for (int i=ultimopasso[_servo];i<_passo;i= i + velocidade){
 digitalWrite (_servo, 1);
 delayMicroseconds(i);
 digitalWrite (_servo, 0);
 delay(15);
 }
 }else{ //caso contrario ele recua
 for (int i=ultimopasso[_servo];i>_passo;i= i - velocidade){
 digitalWrite (_servo, 1);
 delayMicroseconds(i);
 digitalWrite (_servo, 0);
 delay(15);
 }
 }
 }
 
ultimopasso[_servo] = _passo; //grava o ultimo passo
}
Logged

--
        Anthony M. Collucci
        (0xx31)9243-1690
      http://amcollucci.com.br
      http://astrobrasil.blogspot.com
      http://c

Pages: [1]   Go Up
Jump to: