L298N Breakout Board
Este é o projeto da Ponte H dupla com o CI L298N Multiwatt15.
A ponte H já foi discutida em outros tópicos deste blog, dessa forma não é objetivo deste posto entrar em detalhes. Vou ensinar, como construir uma Ponte H usando o CI L298 diretamente numa placa padrão perfurada, sem corroer uma placa de circuito impresso. Vamos então diretamente ao assunto.
Veja o original no meu Instructables: http://www.instructables.com/id/Dual-H-Bridge-L298-Breakout-Board-Homemade/
Passo 1 - Reúna todos os materiais necessários:
1 x placa perfurada padrão com 13x26 furos ou 3,5x7,0 cm;
1 x circuito integrado L298N;
1 x dissipador de calor (se for usar a ponte H para grandes correntes);
2 x AK300/3 - conector borne aparafusável;
1 x pin Header 8 vias, femea (como o do Arduino);
8 x diodos 1N4001;
2 x resistores de 0,47Ohm/2W;
2 x capacitores 100nF poliéster metalizado;
Fios, cabos, solda e ferramentas.
Passo 2 - Preparação da placa e componentes:
Corte, desbaste, lime, lixe e limpe a placa perfurada a ser utilizada.
Dobre e limpe os contatos/terminais dos componentes a ser utilizado.
Passo 3 - Identificar Furação:
Identifique na placa perfurada, toda a furação que será utilizada. Use o diagrama do projeto para esta etapa.
Passo 4 - Soldar Componentes:
Solde os componentes na placa, de acordo com o posicionamento indicado no projeto.
Solde-os em grupo, como por exemplo:
Primeiro os diodos; depois os conectores AK300/3 e PinHead; depois os resistores e capacitores; por último o CI L298N.
Passo 5 - Trilhas Soldadas:
Use o diagrama do projeto para soldar os pontos da placa perfurada de modo a fazer as trilhas entre os componentes.
Passo 6 - Trilhas Fiadas:
Use o diagrama do projeto para soldar os fios nas camadas superior e inferior, de modo a formar as trilhas com fios.
Passo 7 - Testes:
Para testar, foi usado o chassis do BUGBot para formar um carro controlado via BlueTooth o "Carro_BT-Bot (para o controle via android foi usado o programa "Blue Control" disponível no Market.
Conexões do arduino ao módulo BlueTooth:
Arduino -> BlueTooth
0 RX -> TX
1 TX -> RX
GND -> GND
VCC -> VCC
Conexões do Arduino ao módulo PONTE-H:
Arduino -> Ponte H
10 -> IN1
11 -> IN2
5 -> IN3
6 -> IN4
VCC -> VCC
GND -> GND
Conexões da PONTE-H aos Motores:
O1 -> pino 1 do motor 1 (direita)
O2 -> pino 2 do motor 1 (direita)
O3 -> pino 1 do motor 2 (esquerda)
O4 -> pino 2 do motor 2 (esquerda)
Conexões da PONTE-H:
VS -> +9V
GND -> GND
Diagrama esquemático:
Na figura você pode observar o diagrama da Ponte-H
e no link você pode baixar o original para Eagle Cad de uma versão mais aprimorada.
http://www.4shared.com/file/T17oVW-z/PONTE_H_L298N.html
http://www.4shared.com/file/6VdOTgv5/PONTE_H_L298N.html
Software utilizado:
Abaixo o software completo, e também o link para download.
http://www.4shared.com/file/YJX6-1UT/BlueTooth_Bot_R1.html
#################################################################################
# File: BlueTooth_Bot_R1.pde
# Micro controller: Arduino UNO ou Teensy++ 2.0
# Language: Wiring / C /Processing /Fritzing / Arduino IDE
#
# Objectives: A bluetooth controlled cart
#
# Funcionamento: Just a simple test of the home L298N breakout Board
#
#
# Author: Marcelo Moraes
# Date: 13/02/13
# Place: Sorocaba - SP - Brazil
#
#################################################################################
This project contains code to the public domain.
The modification is permitted without notice.
*/
// definição de variáveis, constantes e valores
int inA1 = 10; // Pins for the PONTE-H
int inA2 = 11;
int inB1 = 5;
int inB2 = 6;
// Arduino initialization
void setup(){
// Serial communication initialization
Serial.begin(9600);
// at the beginning motors stopped
set_motors(0,0);
}
// loop principal do programa
void loop(){
if (Serial.available() > 0){// if serial data are available
char varC = Serial.read(); // reading the serial port data
if(varC == 'U'){ // move forward
set_motors(80,75);
delay(1000);
set_motors(0,0);
}
if(varC == 'D'){ // move backward
set_motors(-80,-75);
delay(1000);
set_motors(0,0);
}
if(varC == 'C'){ // stopped
set_motors(0,0);
}
if(varC == 'R'){ // turn right
set_motors(80,-80);
delay(500);
set_motors(0,0);
}
if(varC == 'L'){ // turn left
set_motors(-80,80);
delay(500);
set_motors(0,0);
}
}
}
//FIM DA COMPILAÇÃO
// running motors
void set_motors(int left_speed, int right_speed){
if(right_speed >= 0 && left_speed >= 0){
analogWrite(inA1, 0);
analogWrite(inA2, right_speed);
analogWrite(inB1, 0);
analogWrite(inB2, left_speed);
}
if(right_speed >= 0 && left_speed < 0){
left_speed = -left_speed;
analogWrite(inA1, 0);
analogWrite(inA2, right_speed);
analogWrite(inB1, left_speed);
analogWrite(inB2, 0);
}
if(right_speed < 0 && left_speed >= 0){
right_speed = -right_speed;
analogWrite(inA1, right_speed);
analogWrite(inA2, 0);
analogWrite(inB1, 0);
analogWrite(inB2, left_speed);
}
if(right_speed < 0 && left_speed < 0){
right_speed = -right_speed;
left_speed = -left_speed;
analogWrite(inA1, right_speed);
analogWrite(inA2, 0);
analogWrite(inB1, left_speed);
analogWrite(inB2, 0);
}
}
Vídeo:
Como fiz originalmente para o site Instructables, o vídeo está num Inglês (um tanto quanto pobre), mas é entendível.
Assista no youtube: http://youtu.be/0conwkmiAoM
Dúvidas e sugestões para: arduinobymyself@gmail.com