7 CARRINHO
CARRINHO UTILIZANDO L293D E MOTORES CC Nesse projeto, aprenderemos a dar comandos básicos a um par de motores de corrente contínua (CC) utilizando uma ponte H dupla, no caso o L293D, com o Arduino. Além disso, aconselhamos o uso de uma base para acoplar o par de motores, podendo ser uma base feita com o auxílio de impressoras 3D, chapas de metal, compensados de madeira, etc. O limite é a criatividade! Caso você possua outro modelo de ponte H, você pode verificar a pinagem (pode ser encontrada no datasheet do componente, que é feito pela sua fabricante) do modelo e seguir o mesmo princípio que será explanado no capítulo. Para a confecção do hardware deste projeto, será necessário: Uma placa Arduino 2 motores CC Base para acoplar os motores (opcional) Protoboard Rodas para os motores Ponte H dupla L293D Alimentação elétrica, usaremos uma bateria 9V para exemplificar (pilhas, baterias, etc.) Regulador de tensão (no caso usamos o Lm7805) Capacitores de cerâmica para montar junto ao regulador Nota: Os dois últimos componentes (Regulador de tensão e os capacitores) são necessários apenas caso a voltagem de alimentação seja superior à suportada pelos motores. No exemplo desta apostila utilizamos motores 5V e uma bateria de 9V, fazendo necessário o uso do regulador de tensão e dos capacitores. 2
Montando o Hardware Com o Arduino desconectado, monte o circuito abaixo: IMAGEM 6.7 IMAGEM 6.7.2 3
Nota1: Monte o circuito com a fonte externa de energia desconectada, conectando-a apenas ao término. Nota2: Os motores não possuem polaridade definida, mas o sentido de conexão determina o sentido de rotação. Ou seja, ao invertê-la, troca-se também o sentido de rotação. Analisando o Hardware Neste hardware percebe-se a junção de dois projetos. O primeiro é o regulador de tensão, responsável por converter a voltagem de 9V da bateria para 5V e, assim, alimentar devidamente os motores. Isso é necessário pois o Arduino nano não é capaz de sustentar a corrente nos motores. Além disso, ressalta-se que estes operam à 5V (Pode variar conforme o modelo do motor, confira o seu com seu vendedor). Outra parte do projeto é o L293D, uma ponte H dupla, para o controle dos motores CC a partir do Arduino. Esse é o esquema que será utilizado para fazermos as operações para movimentar o nosso pequeno robô. O Código Abra a IDE do Br.ino e digite o código abaixo. // Projeto 7 Carrinho utilizando L293D e motores CC // A seguir vamos declarar as portas dos motores Constante Numero pinovelocidadee = 10; Constante Numero pinovelocidaded = 9; Constante Numero motore1 = 4; Constante Numero motore2 = 5; Constante Numero motord1 = 6; Constante Numero motord2 = 7; Principal(){ // Personalize este bloco para implementar diferentes atividade! andarfrente(); Configuracao() { USB.conectar(9600); Pino.definirModo(pinoVelocidadeE, Saida); Pino.definirModo(pinoVelocidadeD, Saida); Pino.definirModo(motorE1, Saida); Pino.definirModo(motorE2, Saida); Pino.definirModo(motorD1, Saida); Pino.definirModo(motorD2, Saida); 4
Procedimento andarfrente(){ USB.enviarln("andando para frente"); Pino.escreverAnalogico(pinoVelocidadeE, 250); Pino.escreverAnalogico(pinoVelocidadeD, 250); Pino.ligar(motorE1); Pino.desligar(motorE2); Pino.ligar(motorD1); Pino.desligar(motorD2); Procedimento parar(){ USB.enviarln("parado"); Procedimento andardireita(){ USB.enviarln("andando para direita"); Procedimento andaresquerda(){ USB.enviarln("andando para esquerda"); Procedimento andartras(){ USB.enviarln("andando para tras"); Cuidado: Ao enviar esse código o robô pode começar a andar inesperadamente! O algoritmo deste capítulo encontra-se incompleto. O objetivo é que você o complete. Observe a lógica a seguir. Analisando o código Ainda que extenso, o código não deixa de ser simples. Primeiro, declara-se cada porta e depois, como nos projetos anteriores, são definidas o tipo de sinal de cada pino. A função Principal() encontra-se em branco para que você a personalize, aproveitando-se das outras funções implementadas. Estas funções são o grande diferencial do algoritmo. Com elas, o robô se deslocará no espaço, avançando, retrocedendo, realizando curvas, etc. Observe como criá-las: Procedimento andarfrente(){ Esse comando declara o tipo e o nome da função. Como o objetivo desse bloco de código é fazer com que o robô ande para frente, o nome do método é andar- Frente(). Além disso, por não retornar valores nem atribuir dados a variáveis, mas sim realizar uma ação, seu tipo é Procedimento. Dentro do bloco da função, vários comandos serão ordenados. USB.enviarln("andando para frente"); 5
Esse comando ajuda o usuário a entender o procedimento que está sendo executado, imprimindo-o no monitor Serial. Pino.escreverAnalogico(pinoVelocidadeE, 250); Pino.escreverAnalogico(pinoVelocidadeD, 250); Cada instrução supracitada determina a velocidade de um motor. Pino.ligar(motorE1); Pino.desligar(motorE2); Pino.ligar(motorD1); Pino.desligar(motorD2); Agora, o sentido de rotação de cada motor é controlado por meio das portas atreladas à esses componentes. Ligando E1 e desligando E2, por exemplo, rotaciona- -se o motor em um sentido. Ao inverter esse procedimento, troca-se o sentido. É dessa forma que você deve implementar as outras funções, fazendo com que estas controlem seu robô por completo. Por fim, lembre-se de utilizar a função esperar() no bloco do método Principal() para movimentar seu robô. Mais tutoriais disponíveis em: http://brino.cc 6