collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Sensor de posição  (Lida 10424 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Sensor de posição
« em: 06 de Janeiro de 2011, 19:26 »
Estou a construir um sensor de posição simples.
O robô mexe-se num sistema bidimensional, e tenho de saber em que local ele está, em relação à origem.
Outra coisa que também simplifica mais, é que ele apenas faz curvas de 90º.
Uma coisa que ele tem de ser capaz de fazer é detectar quando está a subir uma plataforma com um ângulo em relação ao solo.

A minha ideia: usar um acelerómetro para obter a aceleração, e integrar até à posição a partir daí (já experimentei com um MMA7260Q, mas o erro é muito grande -- provavelmente o facto de ser analógico também contribuiu. Para resolver isto, vou tentar encomendar um SCA3000, que é mencionado pela sparkfun como o melhor para isto). Visto que o robô anda no máximo um minuto continuamente, e sei quando ele está parado (assim, posso fazer reset à velocidade), penso que o erro acumulado não será muito grande ... O erro máximo com que gostaria de trabalhar seria 1/2 cm ... Posso aguentar até 5cm (Devido a algumas características do espaço, é também possível para o robô ajustar o erro na posição, além do ajuste da velocidade). Através da aceleração gravítica, saberia quando ele estava a subir a rampa.
Para curvas/orientação, já testei com um sensor magnético (HMC5843), e funcionou perfeitamente! Infelizmente, ele parou de funcionar hoje :S (não sei o que se passou :S -- acho que posso ter colocado-o numa diferença de potencial de aproximadamente 3,5V acidentalmente :/). Ainda mais infelizmente, não tive oportunidade de testar com motores (apenas o virei numa breadboard, e dava o ângulo bastante bem!), por isso não sei que tipo de interferência teriam ...
Estive a pesquisar, e vi que um giroscópio poderia substituir tanto o sensor magnético, como o acelerómetro na detecção de inclinação (e provavelmente seria mais fácil de codificar para isso). Mas ainda não tive tempo e ver bem como funciona ...

O que acham? É fiável a ideia e usar um acelerómetro para detectar a posição, tendo em conta as condicionantes mencionadas? E em relação às curvas de 90º, o giroscópio seria suficiente, e bom para detectar a subida inclinada, ou devo ficar com o magnetómetro?
Estive a ver, e as placas IMU são usadas para o que quero. No entanto, todas as que vi em Portugal são analógicas, e portanto mais sujeitas a interferências, o que não seria nada bom :/ Existem placas IMU decentes o suficiente para o que quero, ou seria melhor comprar tudo separado (não tenho problemas em usar sensores que comuniquem por I²C ou SPI ou serial, por isso seria preferível para reduzir interferências)?

Obrigado por qualquer ajuda, e pelo tempo que demoraram a ler isto!

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Sensor de posição
« Responder #1 em: 06 de Janeiro de 2011, 19:37 »
Em termos de acelerómetros o ADXL345 e o BMA180 são do melhor que existem por ai, em termos de giroscópio o melhorzinho é o ITG3200, o ITG3200 podes adquirir comprando um WiiMotionPlus mas da DealExtreme, ou seja um clone, custa-te cerca de 10€ com portes grátis, depois para acelerómetro ou compras um Nunchuck, mas este tem de ser o original e custa 20€, todos estes sensores que referi funcionam por i2c, com resoluções entre 10 e 16 bits cada um.
Se pretendes um IMU a spkarfun tem um novo, mas custa cerca de 70€, mas tem acelerometro, giroscópio e magnetometro, portanto perfeito para o que queres, depois tens de aprender um pouco sobre integração de sensores para teres os dados todos juntos num vector, o melhor para isso será pegar no código dos IMU's dos tricopters e quadcopters e copiar, tens pelo menos o MultiWiiCopter e o AeroQuad, depois há mais 2 ou 3 mas são todos iguais ao código do AeroQuad(ou melhor este é que é igual a um outro, mas isso naõ interessa).

Atenção que todos estes sensores funcionam no máximo com 3,3-3,6v, com interfaces i2c é muito simples, basta desligar os pull-ups do interface i2c e usar pull-ups externos ligados á linha dos 3,3v, qualquer atmega a funcionar a 5v detecta um sinal de 3,3v como um high e pelos testes que o pessoal do MWC tem feito funciona bem até com i2c a 400Khz, se não quiseres, compras um Logic Level converter da sparkfun, que são 2-3€, ou fazes um com uns transistores num pedacito de placa ponto a ponto, mas deve-te ficar mais caro isto claro se tiveres mais coisas para abater nos portes.

O HMC é mesmo sensivel com a voltagem e diz no datasheet MAX 3,3v, por isso com 3,5v deve ter tostado.

EDIT:
E junta uns encoders ás rodas é claro, até porque isso é um sistema que acumula muito menos erros que integrar duas vezes a aceleração.
« Última modificação: 06 de Janeiro de 2011, 21:24 por senso »
Avr fanboy

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Sensor de posição
« Responder #2 em: 06 de Janeiro de 2011, 21:28 »
Depois de ler o teu post, senti-me mesmo estúpido ... mas erros destes têm de se fazer para não se voltarem a fazer -.-
Acontece que o magnetómetro está a funcionar perfeitamente afinal ... faltavam-me os pull-ups  :o
Obrigada pelas dicas dos sensores, vou investigá-los (quanto aos acelerómetros, tens alguma informação em relação aos seus erros? -- ainda não tive tempo de pesquisar a fundo, mas uma pesquisa rápida não revelou nada :S).
Preciso mesmo é de um acelerómetro com um baixo erro. Segundo o FAQ na sparkfun, o SCA3000 é o melhor para isso, mas se o ADXL345 ou BMA180 forem adequados, e houverem em Portugal (consigo encontrar cá o SCA3000, os que mencionaste, só o nunchuck - o adxl345 há na lusorobótica, mas estão sem stock), ou se conseguir alguma coisa no free day, compro xD. Gostava era de saber comparações, visto precisar de um erro muito pequeno, visto as distâncias a percorrer serem muito reduzidas :/
Para integrar a aceleração até à distância, iremos utilizar interrupções com os timers, em que basicamente vai adicionando valores a um vector velocidade bidimencional, e também a um vector posição.
Quanto à integração dos dois sensores, a estratégia usada será simples: O robô só pode ter 4 orientações (visto as curvas serem de 90º), ou seja, ele só pode viajar em dois eixos imaginários, nos sentidos positivo e negativo.
Mais para a frente, estou a pensar fazer algo mais complexo que me dê mais flexibilidade (o objectivo final deste robô é viajar num labirinto -- se houverem espaços abertos é mais eficiente controlar quantos graus tem uma certa curva do que fazer só curvas de 90º!). Assim que tiver tempo, vou dar uma olhadela a esses códigos ;)
Resumindo, afinal o magnetómetro funciona, e obrigado pelas dicas senso :)

A minha questão neste momento é: este projecto é viável? (integrar a aceleração)

PS: Estive a pesquisar, e o nunchuck, apesar de interessante numa perspectiva tanto económica como prática, tem a desvantagem do tamanho (é possível que caiba, mas já conseguimos alguns apoios, e se possível, preferíamos ter tudo num pacote "bonito" xD), mas para testes, e se necessário, projecto final, vai ser uma mais valia!
« Última modificação: 06 de Janeiro de 2011, 21:37 por Cynary »

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re: Sensor de posição
« Responder #3 em: 06 de Janeiro de 2011, 21:41 »
no tópico do uMouse do Tr3s tá lá alguma informação sobre isso.. vai lá dar uma vista d'olhos..

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Sensor de posição
« Responder #4 em: 06 de Janeiro de 2011, 22:07 »
no tópico do uMouse do Tr3s tá lá alguma informação sobre isso.. vai lá dar uma vista d'olhos..

Estive a ler, e encontrei uma application note que fala mesmo nisso (por acaso usaram o mesmo acelerómetro que temos ...).
Vou experimentar com as dicas dadas nesse documento que não usámos (interpolação do sinal e usar a média de várias samples, em vez de usar uma sample pura -- a escrever isto sinto-me mesmo "noob" xD). No entanto, dado os resultados que tivemos, duvido que os resultados que conseguiremos tenham um erro baixo o suficiente com esse acelerómetro (pusemos os resultados das samples num gráfico, e a linha formada tinha uma espessura de cerca de 0,5m/s²!). No entanto, essas dicas são sempre valiosas para qualquer acelerómetro, tks!

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re: Sensor de posição
« Responder #5 em: 19 de Junho de 2013, 20:52 »
Desenterranto o topico...

Estou a usar um HMC5883L (bussola digital) para saber a orientação do robot mas estou com um problema:
Interferencias magneticas, provavelmente por causa dos motores ou sensor de ultra sons que está muito perto.
Como posso isolar isto?

Offline tmms

  • Mini Robot
  • *
  • Mensagens: 15
    • TiagoSIlva.eu
Re: Sensor de posição
« Responder #6 em: 24 de Junho de 2013, 09:13 »
Desenterranto o topico...

Estou a usar um HMC5883L (bussola digital) para saber a orientação do robot mas estou com um problema:
Interferencias magneticas, provavelmente por causa dos motores ou sensor de ultra sons que está muito perto.
Como posso isolar isto?

Assim de repente... Tens condensadores cerâmicos em paralelo com cada motor para absorver interferências na massa (o motor também actua como indutor, não te esqueças)?
Ultra-sons não me parece que causem problemas alguns...
Tens condensadores de 100nF (filtro) junto aos pinos de alimentação (Vcc) do sensor ?

Quanto aos motores... Também podes ligar a carcaça à massa... Mas nesse caso vais absorver alguma radiação (ou seja, ruído) para o teu circuito, e convém teres tudo com filtros na alimentação.
Podes usar isolamento com cobre, o cobre é dia-magnético e ao mesmo tempo capta a radiação indesejada e encaminha-a para a massa.

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Sensor de posição
« Responder #7 em: 24 de Junho de 2013, 10:12 »
Desenterranto o topico...

Estou a usar um HMC5883L (bussola digital) para saber a orientação do robot mas estou com um problema:
Interferencias magneticas, provavelmente por causa dos motores ou sensor de ultra sons que está muito perto.
Como posso isolar isto?

Assim de repente... Tens condensadores cerâmicos em paralelo com cada motor para absorver interferências na massa (o motor também actua como indutor, não te esqueças)?
Ultra-sons não me parece que causem problemas alguns...
Tens condensadores de 100nF (filtro) junto aos pinos de alimentação (Vcc) do sensor ?

Quanto aos motores... Também podes ligar a carcaça à massa... Mas nesse caso vais absorver alguma radiação (ou seja, ruído) para o teu circuito, e convém teres tudo com filtros na alimentação.
Podes usar isolamento com cobre, o cobre é dia-magnético e ao mesmo tempo capta a radiação indesejada e encaminha-a para a massa.

Não servirá tambem ferrite? Tipo como se usa nos PCs?
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re: Sensor de posição
« Responder #8 em: 25 de Junho de 2013, 15:02 »
obrigado pelas respostas.
Vou então começar por filtrar a alimentação e colocar C's nos motores (embora pense que isto não irá resolver, pois já experimentei desligar mesmo os motores e rodar o robot à mão e acontece o mesmo) :(


Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Sensor de posição
« Responder #9 em: 25 de Junho de 2013, 15:05 »
Estahs a fazer filtragem do sinal que lehs do sensor ?

Provavelmente estahs a ler os sinais em bruto e entao vais ver muito ruido sim. Tens que fazer uma filtragem para leres sinais mais "limpos".

Fazer a media das leituras eh um ponto de partida.

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re: Sensor de posição
« Responder #10 em: 25 de Junho de 2013, 15:13 »
Estahs a fazer filtragem do sinal que lehs do sensor ?

Provavelmente estahs a ler os sinais em bruto e entao vais ver muito ruido sim. Tens que fazer uma filtragem para leres sinais mais "limpos".

Fazer a media das leituras eh um ponto de partida.

eu não leio um sinal directamente. isto trabalha por i2c

Offline Marvin

  • Mini Robot
  • *
  • Mensagens: 677
    • The scientist and the geek
Re: Sensor de posição
« Responder #11 em: 25 de Junho de 2013, 15:18 »
Estahs a fazer filtragem do sinal que lehs do sensor ?

Provavelmente estahs a ler os sinais em bruto e entao vais ver muito ruido sim. Tens que fazer uma filtragem para leres sinais mais "limpos".

Fazer a media das leituras eh um ponto de partida.

eu não leio um sinal directamente. isto trabalha por i2c

Penso que o Asena esta a falar de um low pass filter, para eliminar ruido e variação do proprio sensor e não da comunicação.

Na imagem abaixo mostro o grafico tirado de um LSM303DLHC com e sem low pass filter.



isto foi utilizado para fazer um estabilizador de camara rudimentar: http://blog.dronetech.eu/attiny85-camera-stabilizer/

Dronetech BlogThe Scientist and the Geek

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re: Sensor de posição
« Responder #12 em: 26 de Junho de 2013, 08:51 »
O que uso é o HMC5883L.
Como filtro o sinal? Na propria alimentação de 3v3 ao sensor?

Offline Marvin

  • Mini Robot
  • *
  • Mensagens: 677
    • The scientist and the geek
Re: Sensor de posição
« Responder #13 em: 26 de Junho de 2013, 09:46 »
O que uso é o HMC5883L.
Como filtro o sinal? Na propria alimentação de 3v3 ao sensor?

Salvo erro o magnetometro utilizado pelo LSM303DLHC é o HMC5883L, mas de qq forma o que se está aqui a falar é um controlo por software dos dados recebidos.
Dronetech BlogThe Scientist and the Geek