HOMENAGEM
† 12 de março de 2016
Quem está conectado?
Há 168 usuários online :: 3 registrados, 0 invisíveis e 165 visitantes :: 2 motores de buscafastaveira, gilvantexas, Jose5033
O recorde de usuários online foi de 362 em Sex 9 Abr 2021 - 22:11
Últimos assuntos
Top dos mais postadores
Rafael Silveira (7816) | ||||
Caca Silva (6057) | ||||
renatoscp (3891) | ||||
CMeletronica (3234) | ||||
michel chagas (2791) | ||||
Railson (2119) | ||||
alexsandro rodrigues de a (1835) | ||||
naldo santos (1625) | ||||
ablacon64 (1222) | ||||
gilvantexas (1061) |
Tópicos semelhantes
Medidor de Velocidade
Estudos PWM em microcontroladores - Parte IV
Página 1 de 1
Estudos PWM em microcontroladores - Parte IV
Estudos PWM em microcontroladores - Parte IV:
Continuando o tópico anterior....
https://eletronicasilveira.forumeiros.com/t5468-estudos-pwm-em-microcontroladores-parte-iii
Agora segue o projeto 2 em 1, onde será possível controlar velocidade por variação do Duty Cycle, e ainda mudar o sentido de rotação dos motores DC.
Ao invés de utilizar POWER MOSFETs como tem sido anteriormente, agora vamos utilizar C.I driver de motor DC.
Há teclas táctil ou push button ( N/A ) como alguns preferem chamá-los conectado ao PORT B do MCU, atuando como controles de velocidade e sentido de rotação dos motores DC.
Esquemático:
Esquemático no formato PDF:
Copie e cole no navegador...
h**p://***.4shared.com/office/PeZprWZ5ba/PWM_CONTROL_IV.html
TROCAR ** POR tt e TROCAR *** POR www
Funcionamento:
No total são 7 teclas conectado ao PORT B do MCU, cada uma faz sua função determinada.
Onde:
Down 1 ---------------> Diminui o Duty Cycle do módulo CCP1 pino 17.
UP 1 ------------------> Aumenta o Duty Cycle do módulo CCP1 pino 17.
Down 2 --------------> Diminui o Duty Cycle do módulo CCP2 pino 16.
UP 2 -----------------> Aumenta o Duty Cycle do módulo CCP2 pino 16.
Será interessante quem tiver posse de um frequencímetro para verificar frequência de comutação, também um SCOPE para comprovar os sinais PWM nos pinos 16 e 17 do MCU variando conforme fomos pressionando as teclas UP - DOWN.
As teclas abaixo funciona da seguinte maneira, devemos pressionar por curto período, aguardar o início da ação e liberar logo em seguida.
Clockwise -------------> Rotação no sentido ( horário )
Anti clockwise ---------> Rotação no sentido ( anti horário )
Brake -----------------> Frenagem dos motores DC.
- Há dois LEDs indicadores de cores diferente, são para indentificação visual do sentido de rotação.
NOTE: Não há resistores de ( pull up ) conectados no PORT B, não estranhe por não serem adicionados ao circuito, pois os resistores de ( pull up ) usados no projeto são interno do próprio MCU.
- Eles foram habilitados via programação como veremos nos comentários do código fonte.
________________________________________________________________
Integrado L293D:
- Este cara fará duas funções, operando como driver e ponte H dos motores DC.
Diagrama interno:
Descrições básica:
Fabricante -------------------------------> SGS Thomson
Capacidade de corrente na saída ----------> ( 0.6A ) por canal.
Capacidade de corrente de pico na saída ---> ( 1.2A ) por canal.
Proteção contra alta temperatura.
Diodos grampeadores interno.
Frequência máxima de comutação ----------> ( 5 Khz )
Tensão de alimentação Vs pino 8 -----------> ( Mínima 4.5V -- Máxima 36V )
Tensão de almentação Vss pino 16 ---------> ( Mínima 4.5V -- Máxima 36V )
NOTE: Alimentação Vs pino 8 vai depender da tensão de alimentação do motor DC utilizado no projeto.
Pinagem do L293D:
Pino 1 - Enable 1 --> Recebe o sinal PWM do módulo CCP1 pino 17 do MCU.
Pino 9 - Enable 2 --> Recebe o sinal PWM do módulo CCP2 pino 16 do MCU.
Funcionamento:
O funcionamento das pontes H interno do L293D vai atuar conforme se encontram o estado lógico nos pinos ( Input ), ou seja, nível lógico 1 ou 0.
Clockwise - ( sentido horário )
INPUT 1 -> 1
INPUT 2 -> 0
________________________________
Anti Clockwise - ( sentido anti horário )
INPUT 1 -> 0
INPUT 2 -> 1
________________________________
Clockwise - ( sentido horário )
INPUT 3 -> 0
INPUT 4 -> 1
________________________________
Anti Clockwise - ( sentido anti horário )
INPUT 3 -> 1
INPUT 4 -> 0
________________________________
________________________________________________________________
Programa implementado ao projeto:
Apesar do código fonte estar bem detalhado com comentários, vou detalhar apenas três coisas.
1º Lá no início foi feito um comentário de não utilizar resistores ( pull up ) conectados ao PORT B, pois bem, isso foi habilitado através do programa.
- A função responsável estar logo abaixo.
intcon2.rbpu = 0; // Habilita os resistores de PULL-UP do PORT B
Com isso fazemos habilitação dos resistores ( pull up ) interno no MCU.
2º O valor da frequência do PWM deverá ser o mesmo valor nos dois módulos.
Exemplo:
Pwm1_Init(5000); // Inicializa o módulo PWM (1) com frequência 5 KHz
Pwm2_Init(5000); // Inicializa o módulo PWM (2) com frequência 5 KHz
Jamais devemos definir valores diferente para ambos módulos, o motivo já foi explicado no tópico abaixo.
https://eletronicasilveira.forumeiros.com/t5357-estudos-pwm-em-microcontroladores-parte-ii
3º Seguindo uma especificação do fabricante do L293D, o valor máximo da frequência de comutação seria de ( 5 Khz ).
- Portanto pessoal, não sejam malvados em utilizar frequência maior kkkaaakkkk. Vocês poderão alterar para valores inferiores da máxima permitida.
________________________________________________________________
O processo de compilação do código fonte poderá ser revisto no tópico abaixo:
https://eletronicasilveira.forumeiros.com/t5325-estudos-pwm-em-microcontroladores-parte-i
Código fonte do exercício nº 4:
Selecione, copie e cole o código fonte do exercício nº 4 que está na caixa abaixo:
Boa sorte a todos
Sds Anderson M
Continuando o tópico anterior....
https://eletronicasilveira.forumeiros.com/t5468-estudos-pwm-em-microcontroladores-parte-iii
Agora segue o projeto 2 em 1, onde será possível controlar velocidade por variação do Duty Cycle, e ainda mudar o sentido de rotação dos motores DC.
Ao invés de utilizar POWER MOSFETs como tem sido anteriormente, agora vamos utilizar C.I driver de motor DC.
Há teclas táctil ou push button ( N/A ) como alguns preferem chamá-los conectado ao PORT B do MCU, atuando como controles de velocidade e sentido de rotação dos motores DC.
Esquemático:
Esquemático no formato PDF:
Copie e cole no navegador...
h**p://***.4shared.com/office/PeZprWZ5ba/PWM_CONTROL_IV.html
TROCAR ** POR tt e TROCAR *** POR www
Funcionamento:
No total são 7 teclas conectado ao PORT B do MCU, cada uma faz sua função determinada.
Onde:
Down 1 ---------------> Diminui o Duty Cycle do módulo CCP1 pino 17.
UP 1 ------------------> Aumenta o Duty Cycle do módulo CCP1 pino 17.
Down 2 --------------> Diminui o Duty Cycle do módulo CCP2 pino 16.
UP 2 -----------------> Aumenta o Duty Cycle do módulo CCP2 pino 16.
Será interessante quem tiver posse de um frequencímetro para verificar frequência de comutação, também um SCOPE para comprovar os sinais PWM nos pinos 16 e 17 do MCU variando conforme fomos pressionando as teclas UP - DOWN.
As teclas abaixo funciona da seguinte maneira, devemos pressionar por curto período, aguardar o início da ação e liberar logo em seguida.
Clockwise -------------> Rotação no sentido ( horário )
Anti clockwise ---------> Rotação no sentido ( anti horário )
Brake -----------------> Frenagem dos motores DC.
- Há dois LEDs indicadores de cores diferente, são para indentificação visual do sentido de rotação.
NOTE: Não há resistores de ( pull up ) conectados no PORT B, não estranhe por não serem adicionados ao circuito, pois os resistores de ( pull up ) usados no projeto são interno do próprio MCU.
- Eles foram habilitados via programação como veremos nos comentários do código fonte.
________________________________________________________________
Integrado L293D:
- Este cara fará duas funções, operando como driver e ponte H dos motores DC.
Diagrama interno:
Descrições básica:
Fabricante -------------------------------> SGS Thomson
Capacidade de corrente na saída ----------> ( 0.6A ) por canal.
Capacidade de corrente de pico na saída ---> ( 1.2A ) por canal.
Proteção contra alta temperatura.
Diodos grampeadores interno.
Frequência máxima de comutação ----------> ( 5 Khz )
Tensão de alimentação Vs pino 8 -----------> ( Mínima 4.5V -- Máxima 36V )
Tensão de almentação Vss pino 16 ---------> ( Mínima 4.5V -- Máxima 36V )
NOTE: Alimentação Vs pino 8 vai depender da tensão de alimentação do motor DC utilizado no projeto.
Pinagem do L293D:
Pino 1 - Enable 1 --> Recebe o sinal PWM do módulo CCP1 pino 17 do MCU.
Pino 9 - Enable 2 --> Recebe o sinal PWM do módulo CCP2 pino 16 do MCU.
Funcionamento:
O funcionamento das pontes H interno do L293D vai atuar conforme se encontram o estado lógico nos pinos ( Input ), ou seja, nível lógico 1 ou 0.
Clockwise - ( sentido horário )
INPUT 1 -> 1
INPUT 2 -> 0
________________________________
Anti Clockwise - ( sentido anti horário )
INPUT 1 -> 0
INPUT 2 -> 1
________________________________
Clockwise - ( sentido horário )
INPUT 3 -> 0
INPUT 4 -> 1
________________________________
Anti Clockwise - ( sentido anti horário )
INPUT 3 -> 1
INPUT 4 -> 0
________________________________
________________________________________________________________
Programa implementado ao projeto:
Apesar do código fonte estar bem detalhado com comentários, vou detalhar apenas três coisas.
1º Lá no início foi feito um comentário de não utilizar resistores ( pull up ) conectados ao PORT B, pois bem, isso foi habilitado através do programa.
- A função responsável estar logo abaixo.
intcon2.rbpu = 0; // Habilita os resistores de PULL-UP do PORT B
Com isso fazemos habilitação dos resistores ( pull up ) interno no MCU.
2º O valor da frequência do PWM deverá ser o mesmo valor nos dois módulos.
Exemplo:
Pwm1_Init(5000); // Inicializa o módulo PWM (1) com frequência 5 KHz
Pwm2_Init(5000); // Inicializa o módulo PWM (2) com frequência 5 KHz
Jamais devemos definir valores diferente para ambos módulos, o motivo já foi explicado no tópico abaixo.
https://eletronicasilveira.forumeiros.com/t5357-estudos-pwm-em-microcontroladores-parte-ii
3º Seguindo uma especificação do fabricante do L293D, o valor máximo da frequência de comutação seria de ( 5 Khz ).
- Portanto pessoal, não sejam malvados em utilizar frequência maior kkkaaakkkk. Vocês poderão alterar para valores inferiores da máxima permitida.
________________________________________________________________
O processo de compilação do código fonte poderá ser revisto no tópico abaixo:
https://eletronicasilveira.forumeiros.com/t5325-estudos-pwm-em-microcontroladores-parte-i
Código fonte do exercício nº 4:
Selecione, copie e cole o código fonte do exercício nº 4 que está na caixa abaixo:
- Código:
/*
* Projeto: PWM CONTROL IV
* MikroC v6.0.0
* Copyright (c) Anderson M, 14/08/2014.
* Fórum: Eletrônica Silveira
* MCU: PIC 18F452
* Cristal Oscilador Externo: 10.0 Mhz
* Oscilador XT, Power-up Timer (Desabilitado), WDT OFF (Desabilitado)
* Biblioteca adicionada: (PWM)
*/
//******************************************************************************
//******************************************************************************
//**************************** Programa principal ******************************
void main(){ // Função Principal....
//******************************************************************************
// Declarações de variáveis....
int duty_1 = 0; // Declaração de variável com valor atribuído (Zero)
int duty_2 = 0; // Declaração de variável com valor atribuído (Zero)
//******************************************************************************
//******************************************************************************
//************ Início de configurações dos registradores TRIS do MCU ***********
ADCON1 = 0b0000010; // Habilita o canal (A/D do MCU
TRISA = 0b11111111; // Configura os pinos PORTA como entrada
TRISB = 0b11111111; // Configura os pinos PORTB como entrada
PORTB = 1; // Inicializa com nível lógico (1)
TRISC = 0; // Configura todos os pinos do PORTC como saída
TRISD = 0; // Configura todos os pinos do PORTD como saída
PORTD = 0; // Inicializa com nível lógico (0) zero
TRISE = 0; // Configura todos os pinos do PORTE como saída
//******************************************************************************
intcon2.rbpu = 0; // Habilita os resistores de PULL-UP do PORT B
//******************************************************************************
//******************** Configuração PWM do módulo CCP1 *************************
Pwm1_Init(5000); // Inicializa o módulo PWM (1) com frequência 5 KHz
Pwm1_Start(); // Inícializa a geração do sinal PWM no módulo CCP1
Pwm1_Set_Duty(duty_1); // Duty Cycle para o módulo CCP1
//******************************************************************************
//******************** Configuração PWM do módulo CCP2 *************************
Pwm2_Init(5000); // Inicializa o módulo PWM (2) com frequência 5 KHz
Pwm2_Start(); // Inícializa a geração do sinal PWM no módulo CCP2
Pwm2_Set_Duty(duty_2); // Duty Cycle para o módulo CCP2
//******************************************************************************
//******************************************************************************
while (1){ // LOOP Infinito...
//******************************************************************************
// INSTRUÇÕES DO DUTY CYCLE MÓDULO CCP1 - Pino 17 (RC2/CCP1)...
// Instruções de variação DUTY CYCLE nos valores entre (0 - 255) = (0% e 100%)
if (!RB0_bit && duty_1 >0) // Se button conectado ao (RB0) for pressionado
{
Delay_ms(50); // Aguardar 50 milisegundos
duty_1 = duty_1 - 10; // Subtração do Duty Cycle
Pwm1_Set_Duty(duty_1); // Subtrair Duty Cycle em (10)
}
if (!RB1_bit && duty_1 <255) // Se button conectado ao (RB1) for pressionado
{
Delay_ms(50); // Aguardar 50 milisegundos
duty_1 = duty_1 + 10; // Adição do Duty Cycle
Pwm1_Set_Duty(duty_1); // Adicionar Duty Cycle em (10)
}
// FINAL DAS INSTRUÇÕES DO DUTY CYCLE MÓDULO CCP1 - Pino 17 (RC2/CCP1)...
//******************************************************************************
//******************************************************************************
// INSTRUÇÕES DO DUTY CYCLE MÓDULO CCP2 - Pino 16 (RC1/T1OSI/CCP2A)...
// Instruções de variação DUTY CYCLE nos valores entre (0 - 255) = (0% e 100%)
if (!RB2_bit && duty_2 >0) // Se button conectado ao (RB2) for pressionado
{
Delay_ms(50); // Aguardar 50 milisegundos
duty_2 = duty_2 - 10; // Subtração do Duty Cycle
Pwm2_Set_Duty(duty_2); // Subtrair Duty Cycle em (10)
}
if (!RB3_bit && duty_2 <255) // Se button conectado ao (RB3) for pressionado
{
Delay_ms(50); // Aguardar 50 milisegundos
duty_2 = duty_2 + 10; // Adição do Duty Cycle
Pwm2_Set_Duty(duty_2); // Adicionar Duty Cycle em (10)
}
// FINAL DAS INSTRUÇÕES DO DUTY CYCLE MÓDULO CCP2 - Pino 16 (RC1/T1OSI/CCP2A)...
//******************************************************************************
//******************************************************************************
// INSTRUÇÕES DO SENTIDO DE ROTAÇÂO DOS MOTORES DC....
// Sentido horário...
if (portb.f4){ PORTB.F4 = 0; // Se nível lógico no pino 37 (RB4) for (0)
}else{ // Então....
PORTD.F5 = 0; // Colocar nível lógico (0) no pino 28 (RD5)
// Desligar LED indicador do sentido anti horário...
PORTD.F0 = 1; // Colocar nível lógico (1) no pino 19 (RD0)
PORTD.F1 = 0; // Colocar nível lógico (0) no pino 20 (RD1)
PORTD.F2 = 0; // Colocar nível lógico (0) no pino 21 (RD3)
PORTD.F3 = 1; // Colocar nível lógico (1) no pino 22 (RD3)
PORTD.F4 = 1; // Colocar nível lógico (1) no pino 27 (RD4)
// Ligar o LED indicador do sentido horário...
}
//******************************************************************************
// Sentido anti horário...
if (portb.f5){ PORTB.F5 = 0; // Se nível lógico no pino 38 (RB5) for (0)
}else{ // Então....
PORTD.F4 = 0; // Colocar nível lógico (0) no pino 27 (RD4)
// Desligar LED indicador do sentido horário...
PORTD.F0 = 0; // Colocar nível lógico (0) no pino 19 (RD0)
PORTD.F1 = 1; // Colocar nível lógico (1) no pino 20 (RD1)
PORTD.F2 = 1; // Colocar nível lógico (1) no pino 21 (RD3)
PORTD.F3 = 0; // Colocar nível lógico (0) no pino 22 (RD3)
PORTD.F5 = 1; // Colocar nível lógico (1) no pino 28 (RD5)
// Ligar o LED indicador do sentido anti horário...
}
//******************************************************************************
//******************************************************************************
// INSTRUÇÃO DA FRENAGEM DOS MOTORES DC....
if (portb.f6){ PORTB.F6 = 0; // Se nível lógico no pino 39 (RB6) for (0)
}else{ // Então....
// Desligar os LEDs indicadores...
PORTD.F4 = 0; // Colocar nível lógico (0) no pino 27 (RD4)
PORTD.F5 = 0; // Colocar nível lógico (0) no pino 28 (RD5)
PORTD.F0 = 0; // Colocar nível lógico (0) no pino 19 (RD0)
PORTD.F1 = 0; // Colocar nível lógico (0) no pino 20 (RD1)
PORTD.F2 = 0; // Colocar nível lógico (0) no pino 21 (RD3)
PORTD.F3 = 0; // Colocar nível lógico (0) no pino 22 (RD3)
}
Delay_ms(10); // Atraso de 10 milisegundos para início do (WHILE)
}
//******************************************************************************
}
Boa sorte a todos
Sds Anderson M
Anderson M- Avançado
- Mensagens : 401
Data de inscrição : 07/07/2011
Localização : São Paulo/SP
Re: Estudos PWM em microcontroladores - Parte IV
Caso vocês queiram trocar o cristal do projeto por um de 8 Mhz, o procedimento necessário será detalhado abaixo.
- Na aba superior, devemos clicar em Project / Edit project
- Logo abrirá uma janela de configuração dos fuses.
- Trocar o valor o valor na caixa ( Oscillator Frequency ) onde estar o valor definido ( 10.000000 ) que corresponde 10 Mhz, então devemos atribuir um novo valor de clock ( 8.000000 ) que corresponde 8 Mhz.
- Clique em OK
OBS: Deixar as configurações ( Oscillator Selection ), ( Oscillator System Clock Switch ) e ( Power-up Timer ) como estão indicados na imagem.
Vejam na imagem abaixo:
Na aba inferior à direita ( Library Manager) devemos selecionar apenas à nossa biblioteca ( PWM ).
Esta imagem abaixo é um exemplo do tópico:
https://eletronicasilveira.forumeiros.com/t5325-estudos-pwm-em-microcontroladores-parte-i
- Faça compilação do programa fornecido.
- Na aba superior, devemos clicar em Project / Edit project
- Logo abrirá uma janela de configuração dos fuses.
- Trocar o valor o valor na caixa ( Oscillator Frequency ) onde estar o valor definido ( 10.000000 ) que corresponde 10 Mhz, então devemos atribuir um novo valor de clock ( 8.000000 ) que corresponde 8 Mhz.
- Clique em OK
OBS: Deixar as configurações ( Oscillator Selection ), ( Oscillator System Clock Switch ) e ( Power-up Timer ) como estão indicados na imagem.
Vejam na imagem abaixo:
Na aba inferior à direita ( Library Manager) devemos selecionar apenas à nossa biblioteca ( PWM ).
Esta imagem abaixo é um exemplo do tópico:
https://eletronicasilveira.forumeiros.com/t5325-estudos-pwm-em-microcontroladores-parte-i
- Faça compilação do programa fornecido.
Anderson M- Avançado
- Mensagens : 401
Data de inscrição : 07/07/2011
Localização : São Paulo/SP
Tópicos semelhantes
» Estudos PWM em microcontroladores - Parte I
» Estudos PWM em microcontroladores - Parte III
» NS450 - FONTE CHAVEADA PARTE 2
» Estudos PWM em microcontroladores - Parte III
» NS450 - FONTE CHAVEADA PARTE 2
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
Ontem à(s) 20:57 por sandy silva de oliveira
» >>>>>>> Sobre a criação de novos tópicos<<<<<<<<<<<<<<<
Dom 24 Mar 2024 - 16:10 por crisnich
» Defeito intermitente amplificador Ciclotron TIP5000
Qua 20 Mar 2024 - 9:13 por fastaveira
» Esquema Amplificador Audio Leader AL 5.0
Qua 20 Mar 2024 - 9:01 por fastaveira
» MK4000 - FONTE CHAVEADA FULL BRIDGE
Dom 17 Mar 2024 - 18:43 por sandy silva de oliveira
» amplificador class h tailandes
Sex 15 Mar 2024 - 22:41 por mehuysal
» Amplificador Super Strong
Qui 14 Mar 2024 - 13:03 por Reginaldo Silva
» Amplificador Classe D UCD1500
Qua 13 Mar 2024 - 13:07 por Guille
» NS450 - FONTE CHAVEADA PARTE 2
Seg 11 Mar 2024 - 6:55 por ffernand3s
» DETECTOR DE METAIS IDX-PRO
Sex 1 Mar 2024 - 16:41 por Benyamin
» Amplificador Fonte Simples em teia de aranha
Sex 1 Mar 2024 - 12:17 por Reginaldo Silva
» Manutenção Gradiente 366 / 266
Qui 29 Fev 2024 - 21:40 por tiaogaviao
» Criação pcb esquema phono cápsula ceramica
Qui 29 Fev 2024 - 16:58 por warley cesar
» DETECTOR DE METAIS MKII (PINPOINTER)
Qua 28 Fev 2024 - 19:09 por Benyamin
» Fonte chaveada compacta IR2153D - 10 x 10 cm
Ter 27 Fev 2024 - 22:02 por microbit