domingo, 24 de abril de 2011

Conectando o NXT com PIC 16F877

Este final de semana inteiro, trabalhei em 2 bibliotecas para conectar o PIC com NXT.
Vejam o vídeo para ter uma idéia do que é que estou falando...



Precisei muito disso, e nunca encontrei nada parecido pela internet, oque me motivou a fazer mais ainda.
O porque de usar o PIC? é um microcontrolador, é bastante conhecido e de fácil acesso. O que usei, é um 16F877, mas pode ser usado qualquer outro com hardware para I²C.
I²C é um protocolo de comunicação, que o NXT usa para ler sensores especiais, como o de ultrasom, giro, aceleração... O PIC 16F877 possui o hardware para leitura do mesmo.


A parte mais complicada, foi tudo. Não tinha um osciloscópio para realizar medições, portanto foi tudo na tentativa e erro.

Afinal, qual a vantagem de se comunicar com o PIC? Vamos lá. O NXT só possui 4 portas de sensores, o que nos limita a 4 sensores correto? O microcontrolador, nesse caso, servira como um expansor de sensores, e também, como uma plataforma para integrar quaisquer tipos de sensores e atuadores como servo motor, motores de passo, sensores analógicos e digitais... E a quantidade de sensores que pode ser ligadas a ele, é limitada a quantidade de pinos que possui, nesse caso, cerca de 30 e poucos...

O compilador usado para programar o NXT foi o RobotC (em C) e para o pic foi o CCS, portanto aconselho a usar esses para não ocorrer nenhuma incompatibilidade.

BAIXE AQUI OS ARQUIVOS!

Configurar um sensor no PIC, é bastante simples. Você precisa configurar 4 coisas:
- Um registrador unico, que esteja entre 0 e 127 (em hexadecimal)
- Um valor default, que sera carregado junto com o PIC (uma constante, ou um dado do eeprom)
- Uma função a ser executada quando esse registrador for chamado
- Uma função a ser executada quando esse registrador for alterado (opcional)

No NXT, para configurar é bem simples:
- Use a função 'PIC877_init(PORTA);' para iniciar o PIC;
- Use a função 'PIC877_sendCmd(PORTA,REGISTRADOR,DADO);' para enviar um comando ao PIC;
- Use a função 'PIC877_getData(PORTA,REGISTRADOR);' para receber um dado do PIC

Se tiverem duvidas quanto ao seu uso, não fique com vergonha, poste um comentário que serei muito grato em responder.
É capaz de melhorar o código? ótimo! melhore e só não esqueça de enviar para mim, afinal, divulgar faz parte
Sigam meu blog e o twitter (twitter.com/techlego) para dar uma força!

quinta-feira, 21 de abril de 2011

Barco "Finalmente" - 5

Agora sim da para brincar com ele...
Com controle remoto e receptor, servo e motor!
Aqui vai um vídeo com ele em ação!



Usei 30% de força, se não eu não conseguiria manobrar na piscina... Ele na verdade é bem veloz!

Não sabe do que se trata este projeto? Veja AQUI

Rodas Omni, a verção 2.0 da roda!

Muitos de vocês já se depararam com problemas ligados ao atrito, ou até mesmo de "comer" a roda após um longo tempo de uso. Uma roda omni é usada normalmente em sistemas omni-direcionais, que são capazes de ir em qualquer direção e girar em torno de qualquer eixo (inclusive de seu próprio eixo).
Rodas Omni são encontradas em grande quantidade em robos industriais, em linhas de produção (esteiras), e inclusive, no próprio NXT!
Você deve ter olhado a imagem antes de começar a ler, então não sera nenhuma "surpresa" apresenta-la agora...
Esta, e as outras de tráz foram as que chegaram ontem para mim! O eixo central é o da lego, embora a roda em si seja feita pela Rotacaster.
Para se fazer um sistema omni direcional, o arranjamento das rodas deve ter um centro, e a escolha da quantidade de motores deve ser superior a 3.
Fiz uma imagem representativa disso ao lado.

Com as rodas dispostas deste geito, precisamos de um pouco de fisica para entender como irá se movimentar, somando vetores.
Mas isso fica para um próximo post-turorial...
Um abraço a todos!
Sigam-me quem puder...

segunda-feira, 18 de abril de 2011

Finalmente as peças chegaram!

Até que enfim, após semanas de tortura as peças eletronicas para o barco e também para outras idéias malucas chegaram!


As destinadas ao barco Finalmente são:
- ESC
- Servo
- Receptor
- Controle
- e claro...
O GPS!
Vai uma foto posada para vocês:
Se der tempo posto ainda hoje um vídeo com ele me dizendo a posição!
Gastei um dinheirinho com isso, mas faz parte não é...
Começarei a programar o algoritmo de navegação do barco, que por sinal não é tão simples. Se der, posto uma imagem do esquema da programação.

domingo, 3 de abril de 2011

Projeto Barco "Finalmente" - 4

Finalmente ele andou!
Assistam o vídeo do barco em sua primeira "jornada" na água.



As atualizações até o momento:
Compramos a parte eletrônica:
-bateria
-motor
-receptor
-controle
-servo
-ESC (regulador de velocidade do motor)

Os itens necessários para faze-lo andar por radio controle estão para chegar, e os para deixa-lo autônomo também (GPS).
No vídeos, já instalamos o servo e o motor que dará a propulsão.
No entanto, uma unica bateria 6V é pouco para o motor, embora já esteja bastante forte e rápido.
Comprarei outra bateria de 6V e ligarei em série, portanto terei 12V, o dobro de potência no motor.
Obs.: queimei meus dedos no motor algumas vezes, estou pensando em colocar um cooler nele.

Não sabe do que se trata este projeto? Veja AQUI