Pessoal vou colocar aqui o andamento do meu projeto de um quadruped para quem quiser acompanhar o andamento do desenvolvimento.
OBS: a estrutura do tópico esta estranha porque so copiei o que ja havia postado em outro forum, mas daqui em diante vai ficar direito
-----12/03/14-----
Boa noite estou fazendo um robô quadruped controlado por um arduino uno, e estou com um problema estranho, quando mando uma posição para os servos eles começão a tremer loucamente e as vezes parando na posição correta sem tremer mais nada ou so ficam tremendo, estou usando mini servo de 9g e sei que eles tremem quando recebem carga foi assim em vários projetos passados, mas este não é a tremida normal deles, estou alimentado os servos por uma fonte de 5v e de 1A e constatei que quando eles começão a tremer a tensão cai para 2 a 3v e quando eles param de tremer ela volta a 5v. Usei uma fonte com tensão maior e nã mudou nada.
Alguem saberia o que pode ser? amanha vou tentar gravar um video com ele tremendo para explicar melhor.
Não gostaria de pedir mas alguem teria um código simples de movimento para quadruped, so andar para frente mesmo (os que achei não são simples)? vou fazer o meu próprio código mas gostaria de apresentar o projeto em uma exposição de Arduino que vai haver em minha cidade daqui a duas semanas e tambem estou fazendo um robô sumo e um para labirinto 2D e esta apertado fazer tudo.
Segue algumas fotos do meu quadruped para verem a mecânica, é simples ja que é meu primeiro projeto nesse gênero.
Todas as peças foram feitas em acrílico de 3mm e cortadas a mão.
Esta estrutura com suporte duplo nas pernas conseguiu distribuir bem o peso ele se matem em pé com os servos desligados
Fiz uma shild para controlar os servos, a alimentação é esterna tendo so os GND em comum com o Arduino, vou fazer uma placa controladora no final para substituir o Arduino e a shild deixando uma coisa só.
----18/03/14----
Cada pata tem 3 servos, sendo assim 12 ao todo, em media para os movimentos são usados 3 a 6 servos ao mesmo tempo, sem os restantes na posição anterior.
Testei com uma fonte de 5V e 2A, melhorou um pouco, agora estou usando uma fonte atx de computador e esta bem melhor, mas o problema ainda persiste.
Filmei esta demostração hj a tarde primeira vez alimentado pela fonte atx, a tremida dos servos é esta do segundo movimento, esta menor mas ainda não consegui resolver.
https://www.youtube.com/watch?.....4&hd=1-----19/03/14----
Este código que esta rodando no vídeo aciona um servo por vez, pensei que o problema fosse a corrente puxada quando muitos são acionados ao mesmo tempo mas parece que não ja que o problema continua.
Fiz a calibração dele por código, ajustando para que o central correspondesse ao 90º do servo e maximo e minimo a 180º e 0º, mas testei com ângulos menores como 150 e 30 mas continua o problema.
este código do vídeo é este bem simples com setamento de angulo direta.
#include
Servo FLC;
Servo FLF;
Servo FLT;
Servo BLC;
Servo BLF;
Servo BLT;
Servo FRC;
Servo FRF;
Servo FRT;
Servo BRC;
Servo BRF;
Servo BRT;
void setup(){
FLC.attach(4);
FLF.attach(3);
FLT.attach(2);
BLC.attach(10);
BLF.attach(9);
BLT.attach(8);
FRC.attach(7);
FRF.attach(6);
FRT.attach(5);
BRC.attach(11);
BRF.attach(12);
BRT.attach(13);
}
void loop(){
//centro
FLC.write(90);
delay(10);
FLF.write(90);
delay(10);
FLT.write(90);
delay(10);
BLC.write(90);
delay(10);
BLF.write(90);
delay(10);
BLT.write(90);
delay(10);
FRC.write(90);
delay(10);
FRF.write(90);
delay(10);
FRT.write(90);
delay(10);
BRC.write(90);
delay(10);
BRF.write(90);
delay(10);
BRT.write(90);
delay(3000);
//baixo
FLC.write(90);
delay(10);
FLF.write(0);
delay(10);
FLT.write(0);
delay(10);
BLC.write(90);
delay(10);
BLF.write(0);
delay(10);
BLT.write(0);
delay(10);
FRC.write(90);
delay(10);
FRF.write(180);
delay(10);
FRT.write(0);
delay(10);
BRC.write(90);
delay(10);
BRF.write(180);
delay(10);
BRT.write(180);
delay(3000);
//deita
FLC.write(90);
delay(10);
FLF.write(90);
delay(10);
FLT.write(180);
delay(10);
BLC.write(90);
delay(10);
BLF.write(90);
delay(10);
BLT.write(180);
delay(10);
FRC.write(90);
delay(10);
FRF.write(90);
delay(10);
FRT.write(180);
delay(10);
BRC.write(90);
delay(10);
BRF.write(90);
delay(10);
BRT.write(0);
delay(3000);
}
Os delays era para verificar se o problema esta em acionar muitos servos de uma so vez, assim testei acionando um por fez, e testei acionando todos, mesmo codigo mas sem os delays(10), com os delays melhorou um pouco mas o codigo esta bem temperamental tem vez que faz os movimentos corretos e é so reiniciar o arduino que o problema aparece e tem vez que ele esta indo corretamente e depois de algumas repetições apresenta o problema
----19/03/14---
Achei outro topico de quadruped e nele tinha um código baseado em sinematica inversa, testei com este código e pudo constatar que o meu problema esta no código em si, não é na corrente da fonte ou montagem mecânica, e pude constatar tambem que ele começa a tremer daquela forma do video 1 quando algo obstruí o angulo setado, quando seguro uma das pernas impedindo seu movimento todas tremem daquela forma.
Segue um video dele funcionado com o codigo achado
https://www.youtube.com/watch?v=EKkKCQ4qvTI&feature=youtu.be este é o código
http://engineer-this.com/QuadrupedVer2.txt