LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: XicoMBD em 09 de Janeiro de 2011, 22:42

Título: Pião
Enviado por: XicoMBD em 09 de Janeiro de 2011, 22:42
Olá a todos!

Depois da conversa toda que se gerou neste tópico (http://lusorobotica.com/index.php?topic=2981.msg33809#msg33809) , acho que já está na altura de apresentar aqui "oficialmente" este robot:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fletsmakerobots.com%2Ffiles%2Fimagecache%2Frobot_fullpage_header%2Ffield_primary_image%2FIMG_7339.JPG&hash=2e82791087eaddc477d27b1b98fa597e2c282fff)

Pião - Remote controlled by a wiimote (http://www.youtube.com/watch?v=QiJuWSAMyhU&#)

Basicamente, foi o robot que construi para testar e dar uso à placa controladora de motores que desenhei.
O arduino, utilizando essa placa, controla por PWM os motores que eram de uns berbequins/ aparafusadoras baratos que já tinha de um projecto anterior.


(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fletsmakerobots.com%2Ffiles%2Fuserpics%2Fu7854%2FIMG_7342.jpg&hash=3358478228289d2937be5d4809898eda78ef56ae)


(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fletsmakerobots.com%2Ffiles%2Fuserpics%2Fu7854%2FIMG_7361.jpg&hash=c7f80db66d8073eb04f3925c7e506dd5da468578)


(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fletsmakerobots.com%2Ffiles%2Fuserpics%2Fu7854%2FIMG_7335.jpg&hash=aee6c204be9dac4a7dc86d7fec40a9611e6cff21)

Neste momento controlo-o utilizando xbee's a partir de um pc com uma câmara wireless, no entanto na altura em que tirei as únicas fotos e video que tenho, utilizava o pc em cima robot. Quando tirar novas partilho-as aqui.

Para este robot fiz algumas peças, utilizando polymorph, como os suportes para os motores e para o sonar, e posso-vos dizer que estou a gostar bastante de o utilizar. Basta mete-lo numa panela com água quente, esperar que fique transparente (sinal de que está "no ponto"), retirar e moldar. Pode-se utilizar as mãos à vontade que à temperatura que é, não queima e as peças até ficam boas.

Já o programei para acelerar gradualmente, o que o tornou muito mais "domesticável". Já o consigo controlar dentro de casa sem problema nenhum  :D

Em principio a próxima alteração será a adição de encoders. Vamos lá ver como corre  ;D



PS: Achei estranho uma coisa: Eu tenho dois xbee shields (http://arduino.cc/en/Main/ArduinoXbeeShield (http://arduino.cc/en/Main/ArduinoXbeeShield)) e, não percebo porquê quando o coloco no arduino deixo de conseguir os PWM dos pinos 5 e 6. Resolvi o problema utilizando jumpers para ligar os pinos 0 e 1 e os ICSP ao shield, mas gostava de perceber porquê é que não dá para o ter colocado normalmente no arduino. Alguém sabe a quê é que se deve o problema?
Título: Re: Pião
Enviado por: XicoMBD em 12 de Janeiro de 2011, 21:13
O próximo passo são mesmo encoders, se encontrares sensores hall dá para fazer uns encoders magnéticos, mesmo com pó e sujidade funcionam, coisa que com óptico é diferente, visto ser um robot outdoor
Boas,
Tenho andado a tentar utilizar uns sensores de reflexão IV como encoders e não estou a ter grande sucesso. Mesmo só a fazer o "serial print" das leituras os valores não são muito consistentes.
Também tenho aqui os sensores e as respectivas rodas dentadas de um rato mas acho que não devem ficar bem aqui no robot.


Estava por isso a pensar nos hall, mas não tenho qualquer experiência com eles.
 - Quais são os aspectos a ter em conta quando se compra um?
 - Conhecem alguns bons e baratos à venda cá em Portugal?
Título: Re: Pião
Enviado por: senso em 12 de Janeiro de 2011, 21:15
Não tens grande sucesso porque?
Título: Re: Pião
Enviado por: metRo_ em 12 de Janeiro de 2011, 21:33
Tens alguma foto dos sensores, um close-up dos sensores e das rodas dentadas?
Como estás a fazer a contagem?
Título: Re: Pião
Enviado por: XicoMBD em 12 de Janeiro de 2011, 22:24

Os sensores que estou a utilizar são estes: http://loja.lusorobotica.com/64-optical-detector-phototransistor.html (http://loja.lusorobotica.com/64-optical-detector-phototransistor.html). Para começar, esta roda tem um autocolante com 8 divisões, 4 partes pretas e 4 partes brancas.


Eu nunca tinha usado encoders antes, esta é a minha 1ª vez. Ainda só criei um programa para enviar as leituras do sensor por serial para o pc, para assim as poder perceber. O 1º valor é o que é directamente obtido do sensor (varia entre 0 e 1023) o segundo varia só entre 0 e 1 consoante o 1º valor seja superior ou inferior a 600.


Aqui está o que obti, no inicio portou-se bem, teve sempre cinco valores de 1 e cinco valores de 0, mas lá para diante, passou a ter apenas quatro valores de 1 com cinco valores de 0. Não percebi porquê visto que as partes têm o mesmo tamanho... Estou a ser piquinhas de mais?
Código: [Seleccione]
sensor = 948    1
sensor = 846    1
sensor = 793    1
sensor = 769    1
sensor = 826    1
sensor = 272    0
sensor = 167    0
sensor = 155    0
sensor = 182    0
sensor = 231    0
sensor = 705    1
sensor = 761    1
sensor = 784    1
sensor = 945    1
sensor = 895    1
sensor = 332    0
sensor = 159    0
sensor = 190    0
sensor = 179    0
sensor = 200    0
sensor = 626    1
sensor = 792    1
sensor = 922    1
sensor = 904    1
sensor = 775    1
sensor = 284    0
sensor = 191    0
sensor = 149    0
sensor = 166    0
sensor = 196    0
sensor = 695    1
sensor = 949    1
sensor = 903    1
sensor = 778    1
sensor = 727    1
sensor = 309    0
sensor = 180    0
sensor = 166    0
sensor = 159    0
sensor = 212    0
sensor = 799    1
sensor = 867    1
sensor = 769    1
sensor = 806    1
sensor = 859    1
sensor = 422    0
sensor = 159    0
sensor = 154    0
sensor = 182    0
sensor = 228    0
sensor = 613    1
sensor = 764    1
sensor = 736    1
sensor = 943    1
sensor = 893    1
sensor = 428    0
sensor = 157    0
sensor = 193    0
sensor = 199    0
sensor = 187    0
sensor = 587    0
sensor = 828    1
sensor = 909    1
sensor = 918    1
sensor = 770    1
sensor = 359    0
sensor = 188    0
sensor = 175    0
sensor = 167    0
sensor = 179    0
sensor = 597    0
sensor = 941    1
sensor = 878    1
sensor = 793    1
sensor = 728    1
sensor = 475    0
sensor = 181    0
sensor = 143    0
sensor = 157    0
sensor = 198    0
sensor = 664    1
sensor = 871    1
sensor = 750    1
sensor = 811    1
sensor = 855    1
sensor = 496    0
sensor = 171    0
sensor = 154    0
sensor = 182    0
sensor = 212    0
sensor = 572    0
sensor = 765    1
sensor = 762    1
sensor = 960    1
sensor = 890    1
sensor = 442    0
sensor = 143    0
sensor = 190    0
sensor = 179    0
sensor = 201    0
sensor = 598    0
sensor = 818    1
sensor = 905    1
sensor = 904    1
sensor = 769    1
sensor = 337    0
sensor = 190    0
sensor = 176    0
sensor = 168    0
sensor = 193    0
sensor = 730    1
sensor = 930    1
sensor = 915    1
sensor = 765    1
sensor = 708    1
sensor = 221    0
sensor = 176    0
sensor = 166    0
sensor = 164    0
sensor = 252    0
sensor = 916    1
sensor = 842    1
sensor = 792    1
sensor = 760    1
sensor = 778    1
sensor = 217    0
sensor = 166    0
sensor = 157    0
sensor = 183    0
sensor = 357    0
sensor = 848    1
sensor = 737    1
sensor = 811    1
sensor = 875    1
sensor = 750    1
sensor = 190    0
sensor = 154    0
sensor = 182    0
sensor = 198    0
sensor = 379    0
Título: Re: Pião
Enviado por: senso em 12 de Janeiro de 2011, 22:30
Isso é porque os encoders, se forem de quadratura têm um comportamento que não é logo linear á primeira vista.
Mas tens ou 4 ou 5 1's não é sempre 4, isso pode ser por causa da velocidade de leitura do adc e não de todo por causa do encoder.
Título: Re: Pião
Enviado por: metRo_ em 12 de Janeiro de 2011, 23:13
Eu também não vejo nada de anormal nisso :)
Agora vamos a outra parte, estás a usar interrupções?!
Título: Re: Pião
Enviado por: senso em 12 de Janeiro de 2011, 23:22
Se está a usar adc quase de certeza que não.
Título: Re: Pião
Enviado por: metRo_ em 12 de Janeiro de 2011, 23:29
Se está a usar adc quase de certeza que não.

Que otario que fui :p estava a pensar nos encoders que normalmente se acopolam aos motores e que o sinal de saida é 0 ou 1. O ideal seria teres um atmega só a fazer isso, porque o que te vai interessar é saber quando passa de preto para branco e de branco para preto, cada vez que isto acontece incrementas e depois de x em x tempo ves quanto incrementou dai podes fazer as rpm.
Título: Re: Pião
Enviado por: XicoMBD em 12 de Janeiro de 2011, 23:56
Pois, eu estou a utilizar um segundo arduino para fazer as leituras dos encoders, depois é pôr os dois a comunicar.
Se a coisa funcionar bem, depois sou capaz de fazer uma placa mais definitiva. Ando a desenvolver um "mini arduino" (http://lusorobotica.com/index.php?topic=3159.0) para servir de base a essas coisas.

Título: Re: Pião
Enviado por: senso em 13 de Janeiro de 2011, 00:11
Não me parece que precises de dois arduinos para ler dois encoders e tratar do resto do robot, mas isso depende do resto do código e de quantas interrupções por volta o encoder gera, pelo menos usar um atmega328p para isso é um desperdicio, um attiny seria mais inteligente.
Título: Re: Pião
Enviado por: metRo_ em 13 de Janeiro de 2011, 09:25
Não me parece que precises de dois arduinos para ler dois encoders e tratar do resto do robot, mas isso depende do resto do código e de quantas interrupções por volta o encoder gera, pelo menos usar um atmega328p para isso é um desperdicio, um attiny seria mais inteligente.

Senso o problema é que ele tem que estar sempre a ler o ADC, e se estiveres a fazer outras coisas não garantes isto! Eu acho que a solução de um atmega só para isto é necessária.
Título: Re: Pião
Enviado por: andnobre em 13 de Janeiro de 2011, 12:14
tens ai uma bela maquina bom trabalho ;)