acionando um motor cc com pwm%5b%5d
TRANSCRIPT
-
8/2/2019 Acionando Um Motor Cc Com PWM%5Bwww.denteazul.com.Br%5D
1/7
[www.denteazul.com.br]
1
Tutorial didtico: Acionando um motor
CC com a funo PWM
Uma das aplicaes para os microcontroladores PIC controlar motores CC, para isso,
precisamos de algumas ferramentas de circuito eltrico e de uma nova funo do
microcontrolador, a modulao por largura de pulso, ou PWM.
Podemos ativar um motor ou outros tipos de cargas indutivas simplesmente atravs da
funo output_high(pino), e a ligao da carga atravs do driver de corrente
adequado:
Nesse caso foi utilizado um transistor TIP 31 como driver de corrente e um diodo de
roda livre que como j foi explicado, evita a entrada de corrente no pino do PIC quando
uma carga indutiva desligada.
O transistor nesse caso deve funcionar em saturao, permitindo que a carga absorva
a corrente que precisa da fonte de alimentao e no do pino do PIC.
T1OSI/CCP216
RC2/CCP117
C3/SCK/SCL18
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RC5/SDO24
C4/SDI/SDA23
1OSO/T1CKI 15
+88.8
Q1TIP31
VSS
VCC
D1
DIODE
-
8/2/2019 Acionando Um Motor Cc Com PWM%5Bwww.denteazul.com.Br%5D
2/7
[www.denteazul.com.br]
2
Essa forma de ativao limitada, pois apenas permite ligar e desligar o motor, nopermitindo a variao de sua velocidade, necessria em grande parte das aplicaes
que utilizam motores CC.
A funo PWM permite que se aplique diferentes nveis de tenso no motor, simulando
uma fonte de alimentao varivel, assim a velocidade do motor varia. Isso possvel
atravs da variao entre nvel baixo e alto na onda, sempre mantendo a mesma
frequncia, mas alterando a largura dos pulsos positivos, conseguindo valores mdios
diferentes para a onda resultante. O tempo que a onda fica em nvel alto chamado
Duty cicle. seguir, alguns grficos que exemplificam a onde gerada por um PWM:
Tenso
Tempo
Grficos da onda PWM com diferentes valores de Duty cicle
Tempo
Tempo
Tempo
Tempo
Tempo
100%
80%
50%
25%
0%
Utilizao do driver de corrente
Para o desenvolvimento dos projetos dessa apostila, foi escolhido o driver de corrente
L293, que um circuito integrado em ponte H, portanto, permite atravs de PWM o
controle da velocidade do motor e tambm permite a inverso da direo de rotao
do motor. A seguir, o circuito para montagem do motor no CI L293, note que os pinos 2
-
8/2/2019 Acionando Um Motor Cc Com PWM%5Bwww.denteazul.com.Br%5D
3/7
[www.denteazul.com.br]
3
e 7 so a entrada de sinal para aplicaes com mudana de direo, as ligaes demotor nos pinos 11 e 14 so para montagem apenas com controle de velocidade.
Esquema eltrico da ponte H:
A utilizao do CI ponte H L293 para aplicaes com mudana de direo do motor,
consiste em controlar as entradas nos pinos 2 e 7, segundo a tabela a seguir:
Direo PINO 2 PINO 7
Direita High Low
Esquerda Low High
Parado High high
+88.8
Q1
TIP32
Q2TIP32
Q3TIP31
Q4
TIP31
VCC
GND
-
8/2/2019 Acionando Um Motor Cc Com PWM%5Bwww.denteazul.com.Br%5D
4/7
[www.denteazul.com.br]
4
Desta forma possvel mudar a direo da tenso qual a bobina do motor estsubmetida. Ainda no estamos controlando a velocidade do motor, para isso, alm de
setar determinado pino, preciso gerar um PWM na entrada do CI que se encontra em
nvel alto.
Controle de velocidade
O controle de velocidade pode ser feito peli PIC atras do mdulo CCP, capture,
compare, PWM, claro, nos dispositivos que possuem este hardware, no caso, o
16F877A possui um mdulo CCP com PWM de resoluo de at 10 bits, ou seja,
configurando valores entre 0 e 1023, estamos dizendo ao PIC qual o duty cicle da
onda, que proporcional ao nmero escrito. No caso do PWM1 do 16F877A, o que
determina a frequncia da onda PWM o timer 2, que deve ser configurado com um
prescaler de acordo com a frequncia de onda desejada. Note de acordo com a tabela
abaixo, que para determinado valor de frequncia, existem uma resoluo mxima. A
resoluo determina a gama de valores que podem ser escritos na funo para
determinar o duty cicle, quando maior a resoluo ser possvel obter maior controle
sobre a onda.
Cdigo do Programa
Abaixo ser mostrado um programa que exemplifica o caso mais simples de controle
por PWM, com a configurao do timer2, inicializao do mdulo CCP e determinao
do duty cicle esttica no Cdigo do Programa:
#include #device adc=8#FUSES NOWDT //No Watch Dog Timer#FUSES HS //High speed Osc (> 4mhz)#FUSES NOPUT //No Power Up Timer#FUSES NOPROTECT //Code not protected from reading#FUSES NODEBUG //No Debug mode for ICD#FUSES NOBROWNOUT //No brownout reset#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18)
used for I/O#FUSES NOCPD //No EE protection
Frequncia 1.22KHZ 4.88KHZ 19.53KHZ 78.12KHZ 156.3KHZ 208.3KHZ
Prescaler 16 4 1 1 1 1
resoluo 10 bits 10 bits 10 bits 8 bits 7 bits 6 bits
-
8/2/2019 Acionando Um Motor Cc Com PWM%5Bwww.denteazul.com.Br%5D
5/7
[www.denteazul.com.br]
5
#FUSES NOWRT //Program memory not write protected#use delay(clock=20000000)void main(){
setup_adc_ports(NO_ANALOGS);setup_adc(ADC_OFF);setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);setup_timer_1(T1_DISABLED);setup_timer_2(T2_DIV_BY_16,0,1); //habilita o timer 2, usado para
determinar o periodo do PWMsetup_comparator(NC_NC_NC_NC);setup_vref(FALSE);
while(1){SETUP_CCP1(CCP_PWM);//inicializa o mdulo CCP para utilizao como
PWMset_pwm1_duty (512);
//configura o duty cicle do PWM, o nmero de 10 bits representa a
porcentagem de nivel alto da onda, no caso, 50%.}
}
Simulao no Proteus
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13OSC2/CLKOUT
14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134RB0/INT 33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
1k
VCC
X1CRYSTAL
C1
1nF
C2
1nF
VSS
Q1TIP31
+88.8
VCC
GND
D1
DIODE
-
8/2/2019 Acionando Um Motor Cc Com PWM%5Bwww.denteazul.com.Br%5D
6/7
[www.denteazul.com.br]
6
Controle de sentido de rotao
O controle de sentido de rotao ser feito utilizando o CI L293, que aliado ao controle
de velocidade por PWM no pino ativo, permite o controle de velocidade aliado ao
controle de direo.
A simulao foi feita ligando os pinos de controle do CI aos pinos PWM do PIC,
permitindo assim que tambm seja feito controle de velocidade caso seja necessrio, o
pino enable deve ser mantido em nvel alto durante a operao do motor, se desligado,
a alimentao do motor cortada, assim, ao escrever output_high(PIN_C1); e
output_low(PIN_C2); o motor ir girar em um sentido, ao escrever
output_high(PIN_C2); e output_low(PIN_C1); o motor ir mudar o sentido de rotao.
Na simulao foi colocada uma chave que pode ser aterrada para mostrar que um nvel
lgico baixo no pino 1 (enable) desativa o CI.
Cdigo do Programa
#include #device adc=8#FUSES NOWDT //No Watch Dog Timer#FUSES HS //High speed Osc (> 4mhz)#FUSES NOPUT //No Power Up Timer#FUSES NOPROTECT //Code not protected from reading#FUSES NODEBUG //No Debug mode for ICD#FUSES NOBROWNOUT //No brownout reset#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18)
used for I/O#FUSES NOCPD //No EE protection#FUSES NOWRT //Program memory not write protected#use delay(clock=20000000)void main(){
setup_adc_ports(NO_ANALOGS);setup_adc(ADC_OFF);setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);setup_timer_1(T1_DISABLED);setup_timer_2(T2_DIV_BY_16,0,1);//habilita o timer 2, usado para
determinar o periodo do PWMsetup_comparator(NC_NC_NC_NC);
-
8/2/2019 Acionando Um Motor Cc Com PWM%5Bwww.denteazul.com.Br%5D
7/7
[www.denteazul.com.br]
7
setup_vref(FALSE);while(1){
output_high(PIN_C3);//habilita o CI L293//motor gira em uma direooutput_high(PIN_C1);output_low(PIN_C2);delay_ms(3000);//aguarda 3 segundos
//motor muda o sentido de rotaooutput_low(PIN_C1);output_high(PIN_C2);delay_ms(3000);
}
}Simulao no Proteus
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
1k
VCC
X1CRYSTAL
C1
1nF
C2
1nF
VSS
IN12
OUT13
OUT26
OUT311
OUT414
IN27
IN310
IN415
EN11
EN29
VS
8
VSS
16
GND GND
U2
L293D
+88.8
D1
DIODE
D2
DIODE
D3
DIODE
D4
DIODE
GND
VCC
VCC
GND
SW1
SW-SPDT-MOM