collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


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


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]


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

Autor Tópico: Rasteiro  (Lida 17776 vezes)

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

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #15 em: 28 de Julho de 2009, 16:47 »
Pequena actualização:

Já tenho o PIC a receber e interpretar um comando nunchuck que comprei por 4,5€ no ebay ;)
Agora vou passar à parte de controlo da direcção de acordo com as ordens que lhe dê com o comando.

O próximo passo será criar um sistema de "mapeamento" em X, Y utilizando os encoders rotativos que comprei. Já agora, se alguém tiver um exemplo de programa que use esses encoders ou idênticos, agradeço.
Eles usam o código gray... ainda tenho de o estudar antes... :(


Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #16 em: 28 de Julho de 2009, 17:02 »
Bem, fica aqui um exemplo que encontrei na rede:

Citar
Citar
//This is the decoder for a change in the quadrature inputs. Called on
//port B change
//interrupt, using the fast return stack.
void quad(void) {
   static int old;
   static int new;
   static int value;
   //Here I have an edge on one of the quadrature inputs
   new=input_b();
   //Now I have to decode the quadrature changes. There are four
   // possibilities:
   //I can have a rising or falling edge, on each of the two inputs. I have to
   //look at the state of the other bit, and increment/decrement according
   //to this.
   value=new^old;
   //'value', now has the bit set, which has changed
   if (value & 0x10) {
      //Here the low bit has changed
      if (new & 0x10) {
         //Here a rising edge on A
         if (new & 0x20) --position;
         else ++position;
      }
      else {
         //Here a falling edge on A
         if (new & 0x20) ++position;
         else --position;
      }
   }
   else {
      //Here the high bit (B) must have changed
      if (new & 0x20) {
         //Here a rising edge on B
         if (new & 0x10) ++position;
         else --position;
      }
      else {
         //Here a falling edge on B
         if (new & 0x10) --position;
         else ++position;
      }
   }
   old=new;
   bchanged=0;
}

'position', is a global value containing the current shaft position.
Now, this code looks long, but if you track it through, each possible path, for the different input combinations, involves only reading the port, an XOR, two logic tests, and then incrementing/decrementing the position variable.
Used with the normal interrupt handlers, and reasonable speed on the PIC, this should work fine. However I used it with a minimised 'global' handler, that doesn't save most registers, and like this, it happily handled a servo at up to 5000RPM, on a 128 line encoder.


Offline Pauleta

  • Mini Robot
  • *
  • Mensagens: 174
Re:Rasteiro
« Responder #17 em: 28 de Julho de 2009, 18:46 »
Viva as Pics!!!  ;)

Essa coisa do mapeamento dá me uma ideia para o meu robot semelhante ao teu. Quem sabe de futuro lhe meta um módulo GPS ou assim. Mas para já ainda o tenho de meter a circular...

Cumprimentos,
Tiago Oliveira

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #18 em: 29 de Julho de 2009, 00:09 »
Só uma pequena brincadeira:

http://twitpic.com/byl76


... agora já tenho um LCD a funcionar para diagnostico... não havendo porta serie no portátil... teve de ser ;)



Offline Pauleta

  • Mini Robot
  • *
  • Mensagens: 174
Re:Rasteiro
« Responder #19 em: 29 de Julho de 2009, 19:10 »
sempre podes usar um cabo conversor RS232 para USB...
Cumprimentos,
Tiago Oliveira

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #20 em: 30 de Julho de 2009, 08:36 »
sempre podes usar um cabo conversor RS232 para USB...

pois, eu sei. eu tenho um que emprestei a alguém que já não sei quem...
ja comprei um novo pelo ebay... estou à espera que chegue.

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #21 em: 30 de Julho de 2009, 15:14 »
Boas,

Já agora, fica aqui o esquema da placa que desenhei juntamente com um amigo para fazer a pcb para interface com o pic18f4550.

todas as portas estão disponíveis por "Molex's", e a comunicação por RS232 e usb tem uns jumpers associados para o caso de se querer usar as portas RC4, RC5, RC6 e RC7 para outros fins que não as comunicações.

Tem tb os botões para reset e entrada em bootloader.


http://twitpic.com/c4qgs

se alguem quiser os gerber files, posso arranjar.

P.S- o esquema tem um erro na max232 (falta ligar os pinos 8, 10 e 15 ao GND e ligar um condensador entre o pino 15 e a GND).


Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #22 em: 02 de Agosto de 2009, 22:58 »
Fica cá um pequeno video com o robot em movimento comandado com o joystick do nunchuck.
Para activar os motores tenho de premir os botões C e Z. A velocidade já depende da pressão que faça do joystick para a frente ou para trás em 3 níveis.

« Última modificação: 02 de Agosto de 2009, 23:03 por metRo_ »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:Rasteiro
« Responder #23 em: 02 de Agosto de 2009, 23:04 »
Para colocares o vídeo basta colocar o link do youtube :)
Ainda não definis-te para os lados?
Quando isso ficar sem fios!

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #24 em: 03 de Agosto de 2009, 08:28 »
Para colocares o vídeo basta colocar o link do youtube :)
Ainda não definis-te para os lados?
Quando isso ficar sem fios!

pois... o tempo tem sido mesmo muito pouco... uns minutitos por dia.
para os lados é já a seguir... sem fios, para já não é prioridade.

Offline Rebel

  • Mini Robot
  • *
  • Mensagens: 153
    • Raspberry Pi
Re:Rasteiro
« Responder #25 em: 03 de Agosto de 2009, 17:38 »
Uma ideia: Usar um nunchuck wireless (As ligações devem ser as mesmas)

Offline Pauleta

  • Mini Robot
  • *
  • Mensagens: 174
Re:Rasteiro
« Responder #26 em: 03 de Agosto de 2009, 22:53 »
Altamente!

Engraçado, o meu projecto é semelhante ao teu... essa base de lagartas parece muito porreira. Acho muita piada as lagartas mesmo.

Tenho de pensar também na questão da velocidade variável dos motores.
Cumprimentos,
Tiago Oliveira

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #27 em: 04 de Agosto de 2009, 11:50 »
Altamente!

Engraçado, o meu projecto é semelhante ao teu... essa base de lagartas parece muito porreira. Acho muita piada as lagartas mesmo.

Tenho de pensar também na questão da velocidade variável dos motores.

isso é muito fácil de fazer com o pwm e um controlador como o que usei.


Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Rasteiro
« Responder #28 em: 04 de Agosto de 2009, 12:07 »
Partilha connosco as tuas conclusões, "lessons learned". Como chegaste a essa solução e porquê!
Tr3s
Daniel Gonçalves

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Rasteiro
« Responder #29 em: 04 de Agosto de 2009, 15:54 »
Partilha connosco as tuas conclusões, "lessons learned". Como chegaste a essa solução e porquê!


qual solução? a do controlador?
ou de utilizar um pic?
usei pic pois estou habituado a trabalhar com eles deste o tempo de universidade, em que usava o 16f876 (acho que era assim).
alem disso, tinha por cá algumas free samples ;)