Câmera pan/tilt usando rádio/receptor/servos turnigy

Pessoal,

Estou usando os seguintes componentes:
 - Rádio:
 
 - Servos:
Quero fazer algo assim, porém controlado pelo rádio mesmo e não pelo nunchuck:
 
Segui este tutorial pra ler o sinal do receptor (PPM).
E segui vários outros para movimentar os servos.
Seguem os códigos em anexo: teste de leitura do receptor, teste de escrita nos servos e teste final.
Consegui fazer funcionar, porém os movimentos não ficam suaves. Ficam travando, conforme vídeo abaixo:
Já coloquei dois capacitores de 470uF na alimentação dos servos e nada. Já testei também com alimentação isolada para o arduino, receptor e servos.
Este outro vídeo mostra os servos conectados direto no receptor e os servos não tremem, ou seja, o problema não está nos servos:
Antes que perguntem, sim! Eu quero usar o arduino para ler o sinal do receptor e posicionar os servos. Mesmo o sistema funcionando bem com os servos ligados direto no receptor.
Alguém pode me ajudar como eliminar esse ruído? Como o meu objetivo é usar uma câmera, não fica legal ver a imagem tremida.
Obrigado

Exibições: 2458

Anexos

Responder esta

Respostas a este tópico

Não tenho a minima ideia do que seja e nem vi o programa... Só uns chutes pra vc ver se já tentou...

1) Escrever na serial o valor lido, pra saber se ta lendo errado o controle ou escrevendo errado pro motor;

2) Fazer um for com delay pra ficar fazendo o motor ir do inicio ao fim, pra confirmar só o funcionamento do acionamento;

3) Colocar um pullup no pino de comando do servo. Ele pode não estar reconhecendo o pulso..

4) Ligue um LED no pino de acionamento, veja como acende com o controle e com o arduino.. 

5) Tente usar um programa analisador lógico com o arduino.. pra ver esse pulso.. http://letsmakerobots.com/node/31422

Eduardo,

1) Já tinha feito e a escrita tá correta.

2) Fiz e funcionou corretamente sem tremer.

3) Nenhum resultado

4) Aparentemente normais.

5) Batalhei aqui e não consegui usar...

Vou continuar tentando usar o analisador.

Segui todos os passos. colei na pasta plugin os arquivos de configuração e nada.

Conseguiste usá-lo?

1 a 4 então morreu...

O 5 não testei esse, só ouvi falar e pode ser que nem era esse... Como tenho osciloscopio por aqui nunca procurei. Mas existem analisadores lógicos que funcionam sim ! Pelo menos na mão de quem me falou...

Aqui tenho até um desses: 

https://www.sparkfun.com/products/8938

Mas praticamente não uso, pq normalmente o osciloscopio resolve tudo. Mas recomendo. Esse da spark só tem como defeito que vc só consegue usar com o "foco" do windows nele. Se clica em outra tela ele congela. Mas decodifica serial I2C e tal. Mto bom mesmo, coisa que só um Tektronix com software opcional costuma fazer...

Concordo com o colega: Uma coisa que provocaria isso seria vc cada hora mandar ele num lugar, mesmo que sejam proximos... tente fazer por ex uma atualização na saida por segundo. Se ele mudar de como está para pulinhos matou a charada...

Inlclusive 2 comentários paralelos:

1) Ótima formulação de pergunta seu topico ! Chato ter que responder com pergunta pq o kra não deu todas as informações necessárias para entender o problema. Vc foi mto claro, completo, ilustrativo sem deixar de ser sucinto !

2) Esse analisador e um pouco mais de "muamba" eu comprei numa viagem para os USA. A empresa foi expor numa feira e aproveitei para pedir com postagem para o hotel. Deu super certo. Pedi num domingo e chegou lá na terça. Desembalei tudo, misturei com a bagunça da mala e blz ! Fica a dica... Se tiverem a oportunidade de viajar um pouco lá ta super barato tudo, as vezes mais barato que para o proprio Brasil e vc ainda pode compra brinquedos como esse.

legal o seu projeto amigo, já mexi com servos + controle 2.4GHz + arduino 

o que deve tá pegando no seu projeto é que voce tá mapeando direto as variaveis que são recebidas do controle e jogando no servo, por isso o servo fica "tremido", porque o radio controle manda valores (no meu por ex) com o pulseIn eu leio valores de 1000 à 2000

para corrigir isso eu fiz uma média já que os valores variavam muito, tipo assim: 

quando um stick qualquer do controle ficava no meio, os valores variavam dos 1480~1520, quando vc mapeia isso de 0 à 180 graus o valor escrito no servo fica variando também, isso que faz o servo "tremer",

faça uma média aritmética de 50 por exemplo, ler 50 vezes o valor do radio controle, depois somar tudo e dividir por 50! 
pronto, você criou um filtro estabilizador! 

tente isso que resolve.

George,

Com o stick no meio, os valores que medi variam entre 1423 ~ 1455.

Fiz a média, na posição 0 os servos não "tremem" mais, porém os movimentos não ficam suaves. Como são esperadas 50 amostras, ele se movimenta em passos longos.

Com uma média de 25 amostras, na posição 0 "treme".

Testei entre 25 ~ 50 e os movimentos ficam travados.

Segue código atualizado.

Anexos

Olá amigo, fiz algo semelhando ao seu e acabei de gravar um vídeo nesse instante.

Neste exemplo o arduino está sendo controlado pela serial, mas seria mais interessante colocar um ethernet shield e controla-los via socket. O processo seria basicamente o mesmo. Posso te passar o código se quiser. Talvez você consiga tirar alguma coisa dele.

Meus servos não ficam tremendo.

Muito show! Muito bom mesmo! Parabéns.
Na minha aplicação pretendo usar o controle pois quero controlar a câmera em grandes distâncias e depois implementar num aeromodelo.
Se eu fosse usar dois potenciômetros direto iria sair bem legal, meu problema está sendo a variação de leitura dos pulsos lidos no receptor.

amigo agora nao estou em casa, quando voltar do curso vou lhe mandar um codigo bem legal pra tratar desse assunto, ele funciona de forma diferente, 

o código é bem interessante e funciona da seguinte forma:

ele não mapeia os valores do receptor, ele somente detecta se os valores lidos estão aumentando ou diminuindo, detectando isso ele escreve nos servos uma váriavel que vai incrementando(se o valor do receptor estiver aumentando por ex.) ou decrementando conforme o INPUT que o controle joga no arduino, mais tarde te mando, ja testei também e obtive bons resultados (servos suaves e estáveis);

Blz Dr... Vou aguardar.

segue o código em anexo

Anexos

Pô dr... Continuou o mesmo problema :/

Vou tentar mexer aqui no código e posto os resultados.

Olá George, a solução que encontrei foi a que está no último post desse tópico.
Ainda não é o que eu quero. Por acaso tu tens um vídeo do servo funcionando, pois com aquele código que tu enviaste ainda continua com problema.
Não sei o que fiz de errado.

Obrigado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço