Boa Tarde, Galera do Ardroid.
Neste post vamos ver como criar uma ponte H, para controlar o sentido um motor DC de um carrinho e tambem um software para controlar a velocidade e sentido do motor no Arduino + o software do celular Android criado no APPInventor do MIT, utilizando um modulo Bluetooth conectado a um Arduino UNO.
Veja no video abaixo do projeto:
Antes de descrever o projeto vamos a um pouco de teoria...
O que é uma ponte H e para que serve ?
Fonte Wikipedia
Ponte H é um circuito eletrônico que permite que o microcontrolador forneça a corrente necessária para o funcionamento do Motor de corrente contínua, visto que o micro controlador normalmente trabalha em 5V e em baixas correntes, enquanto o motor DC costuma exigir altas potências.
Além disso, a Ponte-H torna possível que o motor rode tanto para um sentido quanto o outro. Estes circuitos são geralmente utilizados em robótica e estão disponíveis em circuitos prontos ou podem ser construídos por componentes.
Além disso, a Ponte-H torna possível que o motor rode tanto para um sentido quanto o outro. Estes circuitos são geralmente utilizados em robótica e estão disponíveis em circuitos prontos ou podem ser construídos por componentes.
Quer saber + sobre ponte H veja este PDF
Transistores
Fonte Wikipedia
O transistor é um componente eletrônico que começou a popularizar-se na década de 1950, tendo sido o principal responsável pela revolução da eletrônica na década de 1960. São utilizados principalmente como amplificadores e interruptores de sinais elétricos, também são usados como retificadores elétricos em um circuito podendo ter variadas funções . O termo provém do inglês transfer resistor(resistor/resistência de transferência), como era conhecido pelos seus inventores.
O processo de transferência de resistência, no caso de um circuito analógico, significa que a impedância característica do componente varia para cima ou para baixo da polarização pré-estabelecida. Graças a esta função, a corrente elétrica que passa entre coletor e emissor do transistor varia dentro de determinados parâmetros pré-estabelecidos pelo projetista do circuito eletrônico. Esta variação é feita através da variação de corrente num dos terminais chamados base, o que, consequentemente, ocasiona o processo de amplificação de sinal.
Entende-se por “amplificar” o procedimento de tornar um sinal elétrico mais fraco num mais forte. Um sinal elétrico de baixa intensidade, como os sinais gerados por um microfone, é injetado num circuito eletrônico (transistorizado por exemplo), cuja função principal é transformar este sinal fraco gerado pelo microfone em sinais elétricos com as mesmas características, mas com potência suficiente para excitar os alto-falantes. A este processo todo dá-se o nome de ganho de sinal.
Conheça mais sobre eletrônica deste curso básico em PDF
Agora que apendemos um pouco sobre ponte H e transistores vamos conhecer o projeto na pratica. tome nota do material utilizado:
1 Arduino UNO
4 Transistor bipolar NPN - TIP 122 (data sheet)
4 Resistor 560 Ohms
1 Modulo Bluetooth
1 Prototype Universal Printed Circuit Board Breadboards
3 Jumpers Macho
2 Jumpers Femeas duas saidas
O modelo de ponte H retirei do forum do clube do hardware link adptando para uso com o Arduino. o esquema abaixo foi criado para ser utilizado em conjunto com arduino.
Esquema de ligação :
Vejo o esquema de montagem abaixo:
Repare no esquema abaixo as imagens estão sobrepostas para entender melhor a ligação.
Veja na sequencia as duas fotos sem sobreposição.
Repare que a base dos transistor 1 e 3 estão ligadas, assim como a base dos transitor 2 e 4 como mostra a figura acima no esquema.
Se preferir monte em uma protobord o esquema, veja a foto abaixo :
O esquema acima não esta muito detalhado, mas tomando como refencia o esquema acima com um pouco de calma e perceverença, a montagem sai.
Vamos passar agora para a programação no Arduino.
Software de controle no Arduino
Para alterar a velociade do motor e fazer sua inversão será utilizado duas funções.
// funcao para mudar a velocidade para frente
void andaFrente(char AndroidFrente, int frenteVel) {
if (android == AndroidFrente)
{
analogWrite(pinSentidoTraz,0);
delay(300);
analogWrite(pinSentindoFrente,frenteVel);
delay(300);
}
// funcao para mudar a velocidade para traz
void andaTraz(char AndroidTraz, int trazVel) {
if (android == AndroidTraz)
{
analogWrite(pinSentidoFrente,0);
delay(300);
analogWrite(pinSentidoTraz,trazVel);
delay(300);
}
}
Como podemos ver nas funções acima quando ela recebe o parametro da porta serial (no nosso caso vem do Bluetooth) a rotação contraria é parada para iniciar a rotação atual. Istó é necessario pois se a ponte é acionada nos quatro transitor ao mesmo tempo o circuito entrará em curto, danificando-o. TOME CUIDADO !!! Acione apenas um sentido de cada vez.
Veja o código completo abaixo:
// controle do sentido e velocidade do carrinho
int pinSentidoFrente = 6; // atribui o pino 6 pra andar para frente
int pinSentidoTraz = 5; // atribui o pino 5 para andar para traz
void andaFrente(char AndroidFrente, int frenteVel); // função para contolar a velocidade no sentido para frente
void andaTraz(char AndroidTraz, int trazVel); // função para contolar a velocidade no sentido para traz
void parar (char AndroidParar); // função para parar o carrinho
char android; // Recebe o parametro enviando pelo celular
/* a,b,c,d,e,f,g Velocidades para frente
h,i,j,k,l,m,n Velocidades para traz */
void setup() {
Serial.begin(9600);
pinMode(pinSentidoFrente,OUTPUT);
pinMode(pinSentidoTraz,OUTPUT);
}
void loop() {
android = Serial.read();// faz a leitura do SmartFone por Bluetooth
delay(100);
// parar o carrinho
parar('z');
// altera a velocidade do motor para frente
andaFrente('a',100);// utiliza o pino 6 até a letra g
andaFrente('b',125);
andaFrente('c',150);
andaFrente('d',175);
andaFrente('e',200);
andaFrente('f',225);
andaFrente('g',250);// 255 equivale ao MAX = 5 Volts
// altera a velocidade do motor para Traz
andaTraz('h',100);// utiliza o pino 5 até a letra n
andaTraz('i',125);
andaTraz('j',150);
andaTraz('k',175);
andaTraz('l',200);
andaTraz('m',225);
andaTraz('n',250);// 255 equivale ao MAX = 5 Volts
}
// funcao para mudar a velocidade para frente
void andaFrente(char AndroidFrente, int frenteVel) {
if (android == AndroidFrente)
{
analogWrite(pinSentidoTraz,0);
delay(300);
analogWrite(pinSentidoFrente,frenteVel);
delay(300);
}
}
// funcao para mudar a velocidade para traz
void andaTraz(char AndroidTraz, int trazVel) {
if (android == AndroidTraz)
{
analogWrite(pinSentidoFrente,0);
delay(300);
analogWrite(pinSentidoTraz,trazVel);
delay(300);
}
}
// função para parar o carrinho
void parar (char AndroidParar) {
if (android == AndroidParar)
{
analogWrite(pinSentidoFrente,0);
analogWrite(pinSentidoTraz,0);
delay(300);
}
}
O código acima foi testado e funciona adquadamente, fica faltando agora a programação do Android. Que em breve colocarei aqui para finalizar o projeto.
Veja o video abaixo com o funcionamento do motor invertendo a rotação.
Qualquer duvida ou sujestão entre em contato terei o maio prazer, de tirar duvidas aceitar sujestoes ou criticas.
Veja o código completo abaixo:
// controle do sentido e velocidade do carrinho
int pinSentidoFrente = 6; // atribui o pino 6 pra andar para frente
int pinSentidoTraz = 5; // atribui o pino 5 para andar para traz
void andaFrente(char AndroidFrente, int frenteVel); // função para contolar a velocidade no sentido para frente
void andaTraz(char AndroidTraz, int trazVel); // função para contolar a velocidade no sentido para traz
void parar (char AndroidParar); // função para parar o carrinho
char android; // Recebe o parametro enviando pelo celular
/* a,b,c,d,e,f,g Velocidades para frente
h,i,j,k,l,m,n Velocidades para traz */
void setup() {
Serial.begin(9600);
pinMode(pinSentidoFrente,OUTPUT);
pinMode(pinSentidoTraz,OUTPUT);
}
void loop() {
android = Serial.read();// faz a leitura do SmartFone por Bluetooth
delay(100);
// parar o carrinho
parar('z');
// altera a velocidade do motor para frente
andaFrente('a',100);// utiliza o pino 6 até a letra g
andaFrente('b',125);
andaFrente('c',150);
andaFrente('d',175);
andaFrente('e',200);
andaFrente('f',225);
andaFrente('g',250);// 255 equivale ao MAX = 5 Volts
// altera a velocidade do motor para Traz
andaTraz('h',100);// utiliza o pino 5 até a letra n
andaTraz('i',125);
andaTraz('j',150);
andaTraz('k',175);
andaTraz('l',200);
andaTraz('m',225);
andaTraz('n',250);// 255 equivale ao MAX = 5 Volts
}
// funcao para mudar a velocidade para frente
void andaFrente(char AndroidFrente, int frenteVel) {
if (android == AndroidFrente)
{
analogWrite(pinSentidoTraz,0);
delay(300);
analogWrite(pinSentidoFrente,frenteVel);
delay(300);
}
}
// funcao para mudar a velocidade para traz
void andaTraz(char AndroidTraz, int trazVel) {
if (android == AndroidTraz)
{
analogWrite(pinSentidoFrente,0);
delay(300);
analogWrite(pinSentidoTraz,trazVel);
delay(300);
}
}
// função para parar o carrinho
void parar (char AndroidParar) {
if (android == AndroidParar)
{
analogWrite(pinSentidoFrente,0);
analogWrite(pinSentidoTraz,0);
delay(300);
}
}
O código acima foi testado e funciona adquadamente, fica faltando agora a programação do Android. Que em breve colocarei aqui para finalizar o projeto.
Veja o video abaixo com o funcionamento do motor invertendo a rotação.
Qualquer duvida ou sujestão entre em contato terei o maio prazer, de tirar duvidas aceitar sujestoes ou criticas.







Este comentário foi removido pelo autor.
ResponderExcluirCara, estou com duvidas nas ligaçoes, nao entendi o diagrama, pode me ajudar?
ResponderExcluirMuito obrigado por compartilha esse artigo.
ResponderExcluir