Nesse exemplo foi utilizado o controle do PS2 ligado ao Arduino para controlar um carrinho.
Material utilizado
01 Protoboard;
02 motores de 6v com redutor;
Shield L293D, ou ponte H (L293D);
01 controle de PS2;
01 Arduino (Aqui foi utilizado o Uno);
01 Bateria de 9v para alimentar o Arduino;
04 pilhas AA para alimentar os motores;
04 rodinhas para o carrinho.
A maior parte do material foi adquirido no site http://www.filipeflop.com.
Montagem
O chassi foi feito de acrílico:
Depois de tudo montado:
Especificações
O Motor Shield L293D pode controlar até 4 motores DC e pode fornecer uma corrente máxima de 600mA por canal. O chip L293D também é conhecido como um tipo de Ponte H que é tipicamente um circuito elétrico que permite uma tensão ser aplicada em uma carga em qualquer direção, possibilitando alternar o sentido de giro do motor por exemplo.
Com este Shield é possível controlar até 4 motores DC, 2 servos ou 2 motores de passo.
A corrente máxima para os motores DC é de 600mA por canal, e a alimentação externa pode ser de 4,5 a 25 Vcc, como pode ser visto neste datasheet do Motor Shield.
Este Motor Shield L293D é compatível com Arduino Uno e Arduino Mega.
Pinos do Arduino utilizados pelo Motor Shield
Pino digital 11: ativação do Motor DC 1 / Controle de velocidade do Motor de passo 1.
Pino digital 3: ativação do Motor DC 2 / Controle de velocidade do Motor de passo 1.
Pino digital 5: ativação do Motor DC 3 / Controle de velocidade do Motor de passo 2.
Pino digital 6: ativação do Motor DC 4 / Controle de velocidade do Motor de passo 2.
Ainda são utilizados para os motores DC e motores de passo mais os pinos 4, 7, 8, 12.
Para os servo motores são utilizados os pinos 9 (servo 1) e 10 (servo 2).
Essas descrições de pinos também estão descritas no datasheet do Motor Shield.
Pinos do Arduino não utilizados pelo Motor Shield
Não são utilizados os 6 pinos de entrada analógica (A0 ao A5), e também os pinos digitais de 0 ao 2 e o 13.
O Arduino utilizado como referência é o Uno.
Montagem elétrica
Como pode ser visto nas imagens acima o Motor Shield foi deixado desconectado da placa Arduino, para que se pudesse utilizar alguns pinos que não seriam utilizados pelo Shield no momento neste projeto, possibilitando a ligação do controle e também dos LED's do farol e lanterna de freio (pinos 2 e 5 respectivamente).
Especificações dos motores:
- Eixo duplo
- Tensão de Operação: 3-6V
- Redução: 1:48
- Corrente sem carga: ≤200mA (6V) e ≤150mA (3V)
- Velocidade sem carga: 200RPM (6V) e 90RPM (3V)
A Pinagem do conector do PS2
O conector do Joystick do PS2 possui nove pinos conforme a
figura abaixo. Nela observamos o padrão de cores utilizado
pelos controles com fio originais da Sony.
1 – Data:
-Sinal enviado do controle para o Playstation
-Este-Este sinal é uma transmissão serial de 8 bits sincronizado
com o sinal do pino de clock por banda de descida. Este sinal
contém a resposta ao sinal Command.
-Este pino é uma saída em coletor aberto e necessita de um
resistor de pull-up (1 à 110k). Esta resistência é necessária
porque o controle só pode conectar este pino à terra, então
ela se faz necessária para garantir o nível lógico 1.
2 – Command:
-Sinal enviado do Playstation para o controle.
-É uma transmissão serial de 8 bits, também sincronizado com o
pino de clock. Ele será utilizado para estabelecer a
comunicação entre o controle e o nosso pseudo console,
solicitando as informações.
3 – Vibration motor power:
-Sinal enviado do Playstation para o controle.
-Não utilizado nesse projeto.
4 -GND:
-Terminal de referência para os demais sinais além da alimentação do
circuito.
5 – Power 3,3V ou 5 V:
-Sinal enviado do Playstation para o controle.
-Dependendo do controle pode ser de 5Vcc ou 3,3Vcc.
6 – Att:
-Sinal enviado do console para chamar a atenção do controle.
-Este sinal permanece em nível lógico baixo durante a transmissão.
7 – Clock (250kHz à 500kHz):
-Sinal enviado do Playstation para o controle.
-Utilizado para manter sincronia entre o Playstation e o
controle.
8 – Não utilizado.
9 – ACK (Acknoledge):
-Sinal enviado do controle para o Playstation.
-Não utilizado nesse projeto.
Os terminais utilizados nesse projeto foram o GND(Preto), Power(Vermelho), Clock(Azul), Data(Marrom), Command(Laranja) e Att(Amarelo).
Programação do Arduino
Agora só falta configurar o Arduino para fazer o que se espera.
Foi utilizado a biblioteca para o Arduino do shield L293D e a do controle do PS2.
Alguns comandos básicos utilizando a biblioteca do shield:
setSpeed é utilizada para definir a velocidade do motor (de 0 à 255):
Ex:" motor.setSpeed(120); "
run é utilizado para partir o motor:
Ex:" motor.run(FORWARD); "
FORWARD e BACKWARD são utilizados para definir o sentido de rotação do motor:
Ex:" motor2.run(BACKWARD); "
" motor2.run(FORWARD); "
RELEASE é utilizado para parar o motor:
Ex:" motor2.run(RELEASE); "
Segue aqui o download do Sketch pronto:
Sketch Carrinho
Referências :
http://microcontrolado.com/controle-playstation-no-pic-2/
https://cdn-learn.adafruit.com/downloads/pdf/adafruit-motor-shield.pdf
http://www.filipeflop.com/pd-6b643-motor-shield-l293d-driver-ponte-h-para-arduino.html?ct=&p=1&s=1