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