O CI L293D é um controlador que possui duas Ponte-H. Pode controlar motores de corrente contínua (DC) de 4.5V até 36V. O L293D suporta uma corrente constante de 600mA e uma corrente de pico de 1.2A. Portanto, tome cuidado para não utilizar motores que exijam correntes maiores que 600mA. Também possuem diodos de proteção internamente.
É possível ligar até dois motores ( ou três, para isso consulte o datasheet ).
FUNCIONAMENTO:
FUNCIONAMENTO:
| EN1 | IN1 | IN2 | Função |
| H | L | H | Girar para um lado |
| H | H | L | Girar para outro lado |
| H | L | L | Motor1 Parado |
| H | H | H | Motor1 Parado |
| L | X | X | Motor1 Parado |
Os pinos 2 e 7 são a entrada de controle para um motor. Os pinos 10 e 15 são a entrada de controle para um segundo motor.
Os pinos 3 e 6 são a saída do motor 1 e os pinos 11 e 14 para o motor 2.
Os pinos 1 e 9 habitam as saídas dos motores 1 e 2, respectivamente.
O pino 16 é a alimentação do circuito interno, 5V.
O pino 8 é a alimentação do motor, de 4.5V a 36V.
Neste projeto há 4 botões: um para acionar ou desacionar o motor, outro para alterar a direção da rotação e outros dois para aumentar e diminuir a velocidade.
A velocidade do motor é controlada através do canal PWM do PIC conectando no pino 1 (EN1) do L293D.
Para alterar o giro, é só alterar os níveis lógicos nos pinos 2 (IN1) e 7 (IN2), de acordo com a tabela acima.
Neste projeto há 4 botões: um para acionar ou desacionar o motor, outro para alterar a direção da rotação e outros dois para aumentar e diminuir a velocidade.
A velocidade do motor é controlada através do canal PWM do PIC conectando no pino 1 (EN1) do L293D.
Para alterar o giro, é só alterar os níveis lógicos nos pinos 2 (IN1) e 7 (IN2), de acordo com a tabela acima.
DOWNLOAD:
Projeto: motor_dc_com_l293d.rar
CÓDIGO:
MikroC PRO PIC
/*
Autor: Tiago Henrique
MCU: PIC16F628A
Clock: INTOSC 4MHz
Bibliotecas:
PWM
*/
//Pinos de ligacao do L293D
sbit L293D_M1_P1 at RA1_Bit;
sbit L293D_M1_P2 at RA2_Bit;
sbit L293D_M1_P1_Direction at TRISA1_Bit;
sbit L293D_M1_P2_Direction at TRISA2_Bit;
void L293D_Init()
{
L293D_M1_P1_Direction = 0;
L293D_M1_P2_Direction = 0;
L293D_M1_P1 = 0;
L293D_M1_P2 = 0;
PWM1_Init( 500 );
PWM1_Set_Duty( 127 ); //Velocidade inicial 50%
PWM1_Start();
}
//direcao == 1 -> gira para um lado
//direcao == 2 -> gira para outro lado
//direcao == 0 -> motor parado
void L293D_Girar( char direcao )
{
//Define as saidas dos pinos
L293D_M1_P1 = direcao.B0;
L293D_M1_P2 = direcao.B1;
}
void main()
{
char velocidade = 255; //100%
char flags = 0;
L293D_Init();
CMCON = 7; //Desativa o comparador analogico
//Define os pinos como entrada
TRISB1_Bit = 1; //botao de giro
TRISA4_Bit = 1; //botao de ligar/ desligar
TRISB4_Bit = 1; //botao aumentar velocidade
TRISB5_Bit = 1; //botao dimunir velocidade
while(1)
{
//botao RB0 pressionado = girar para direita
//botao RB0 liberado = girar para esquerda
//botao RA4 pressionado = motor ligado
//botao RA4 liberado = motor desligado
//Essa linha de comando ficou show hein!!!!
L293D_Girar( PORTA.B4 << PORTB.B0 );
//controlando a velocidade
if( PORTB.B4 ) flags.B0 = 1;
else if( PORTB.B5 ) flags.B1 = 1;
if( !PORTB.B4 && flags.B0 )
{
flags.B0 = 0;
velocidade += 5;
PWM1_Set_Duty( velocidade );
}
else if( !PORTB.B5 && flags.B1 )
{
flags.B1 = 0;
velocidade -= 5;
PWM1_Set_Duty( velocidade );
}
}
}


ficou show mesmo...parabéns pelo blog!
ResponderExcluirMuito bom seus projetos! Gostaria de deixar aqui uma sugestão: Tutorial e projeto usando os módulos ethernet para pic e arduino. Veja o que pode fazer, tenho certeza que será um tópico top.
ResponderExcluirObrigado pelo material que vc disponibiliza.
OK :-bd
ExcluirOla, nao estou conseguindo fazer download do projeto.
ResponderExcluirParabéns pelo Blog.
ResponderExcluirTem como controlar até 36 motores iguais a este via RS 485?
Obrigado.
ExcluirPrecisaria de um expansor de portas IO, como por exemplo, o 74HC595, e vários drivers.
8-}
ResponderExcluirBoas
ResponderExcluirO projeto do motor está muito bom.
Agora precisava da vossa ajuda.
Como posso por 2 fins de curso no esquema. um switch que seria o fim de curso quando o motor anda para a esquerda e pare e outro switch para parar quando o motor vai para a direita
Obrigado
Parabéns Tiago pelo Blog. Eu precisaria de um esquema igual a esse porem para motor de passo unipolar para um espalhador de fio para uma bobinadeira de trafo automática, já fiz o contador com parada automática só falta o do espalhador. vc teria esse esquema com código?
ResponderExcluirDesde já Obrigado
Aqui no blog tem um post falando sobre motores de passo, de uma pesquisada. Abraços.
ExcluirOlá, quando passo o programa ao ccs compilar ele está dando erro. O que pode ser?
ResponderExcluiro programa foi compilado no MikroC PRO PIC.
ExcluirBom dia Gostaria de saber qual programa vc usou porque alguns comandos são diferente do ccs
ResponderExcluirBom dia, Utilizei o MikroC PRO PIC. Abraços.
ExcluirMuito bom, gostaria de saber se eu quiser ligar 2 motores à minha ponte H com controle de PWM idêntico ao teu projeto, porém com o PIC16F877a, o Enable 2 seria conectado ao CCP2 do PIC? Enable 1 conectado ao CCP1, e depois as entradas conectadas a qualquer PORT do PIC para controlar o giro?
ResponderExcluirMuito bom, gostaria de saber se eu quiser ligar 2 motores à minha ponte H com controle de PWM idêntico ao teu projeto, porém com o PIC16F877a, o Enable 2 seria conectado ao CCP2 do PIC? Enable 1 conectado ao CCP1, e depois as entradas conectadas a qualquer PORT do PIC para controlar o giro?
ResponderExcluirpode ser outro controlador???
ResponderExcluirnão to encontrando esse controlador...ele funciona sem??
e tbm não to conseguindo simular pelo isis no proteus.
Ola Thiago é possível fazer alguma alteração no projeto para colocar um motor mais forte tipo 5A
ResponderExcluirEstou tentando usar o princípio desse programa para fazer um motor se comportar como um rpm analógico por frequência aumentando a frequência o ponteiro sobe diminuindo a frequência o ponteiro desce estou usando um motor DC comum mas não consigo bom resultado.
ResponderExcluir