Eletrônica Silveira
Olá, Seja Bem-Vindo ao Fórum Eletrônica Silveira!!!!
Para você poder ver os mais variados Projetos do nosso Fórum, você precisa fazer o cadastro!

Depois de se Cadastrar, não se esqueça de ler as regras do fórum!

https://eletronicasilveira.forumeiros.com/t3-regras-do-forum#3


Administrador do Fórum,
Rafael Silveira

Participe do fórum, é rápido e fácil

Eletrônica Silveira
Olá, Seja Bem-Vindo ao Fórum Eletrônica Silveira!!!!
Para você poder ver os mais variados Projetos do nosso Fórum, você precisa fazer o cadastro!

Depois de se Cadastrar, não se esqueça de ler as regras do fórum!

https://eletronicasilveira.forumeiros.com/t3-regras-do-forum#3


Administrador do Fórum,
Rafael Silveira
Eletrônica Silveira
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
HOMENAGEM

Na vida tudo passa tudo acontece mas alguém igual a você a gente jamais esquece

Estudos PWM em microcontroladores - Parte IV 1-74


★ 22 de novembro de 1991

† 12 de março de 2016

Nosso eterno amigo, administrador e fundador deste fórum
Quem está conectado?
168 usuários online :: 3 registrados, 0 invisíveis e 165 visitantes :: 2 motores de busca

fastaveira, gilvantexas, Jose5033

O recorde de usuários online foi de 362 em Sex 9 Abr 2021 - 22:11
Últimos assuntos
» Fonte Chaveada 2000W SG3525 & IR2110
Estudos PWM em microcontroladores - Parte IV EmptyOntem à(s) 20:57 por sandy silva de oliveira

» >>>>>>> Sobre a criação de novos tópicos<<<<<<<<<<<<<<<
Estudos PWM em microcontroladores - Parte IV EmptyDom 24 Mar 2024 - 16:10 por crisnich

» Defeito intermitente amplificador Ciclotron TIP5000
Estudos PWM em microcontroladores - Parte IV EmptyQua 20 Mar 2024 - 9:13 por fastaveira

» Esquema Amplificador Audio Leader AL 5.0
Estudos PWM em microcontroladores - Parte IV EmptyQua 20 Mar 2024 - 9:01 por fastaveira

» MK4000 - FONTE CHAVEADA FULL BRIDGE
Estudos PWM em microcontroladores - Parte IV EmptyDom 17 Mar 2024 - 18:43 por sandy silva de oliveira

» amplificador class h tailandes
Estudos PWM em microcontroladores - Parte IV EmptySex 15 Mar 2024 - 22:41 por mehuysal

» Amplificador Super Strong
Estudos PWM em microcontroladores - Parte IV EmptyQui 14 Mar 2024 - 13:03 por Reginaldo Silva

» Amplificador Classe D UCD1500
Estudos PWM em microcontroladores - Parte IV EmptyQua 13 Mar 2024 - 13:07 por Guille

»  NS450 - FONTE CHAVEADA PARTE 2
Estudos PWM em microcontroladores - Parte IV EmptySeg 11 Mar 2024 - 6:55 por ffernand3s

» DETECTOR DE METAIS IDX-PRO
Estudos PWM em microcontroladores - Parte IV EmptySex 1 Mar 2024 - 16:41 por Benyamin

» Amplificador Fonte Simples em teia de aranha
Estudos PWM em microcontroladores - Parte IV EmptySex 1 Mar 2024 - 12:17 por Reginaldo Silva

» Manutenção Gradiente 366 / 266
Estudos PWM em microcontroladores - Parte IV EmptyQui 29 Fev 2024 - 21:40 por tiaogaviao

» Criação pcb esquema phono cápsula ceramica
Estudos PWM em microcontroladores - Parte IV EmptyQui 29 Fev 2024 - 16:58 por warley cesar

» DETECTOR DE METAIS MKII (PINPOINTER)
Estudos PWM em microcontroladores - Parte IV EmptyQua 28 Fev 2024 - 19:09 por Benyamin

» Fonte chaveada compacta IR2153D - 10 x 10 cm
Estudos PWM em microcontroladores - Parte IV EmptyTer 27 Fev 2024 - 22:02 por microbit

Top dos mais postadores
Rafael Silveira (7816)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
Caca Silva (6057)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
renatoscp (3891)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
CMeletronica (3234)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
michel chagas (2791)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
Railson (2119)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
alexsandro rodrigues de a (1835)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
naldo santos (1625)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
ablacon64 (1222)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 
gilvantexas (1061)
Estudos PWM em microcontroladores - Parte IV I_vote_lcapEstudos PWM em microcontroladores - Parte IV I_voting_barEstudos PWM em microcontroladores - Parte IV I_vote_rcap 

Medidor de Velocidade


Estudos PWM em microcontroladores - Parte IV

Ir para baixo

Tutorial Estudos PWM em microcontroladores - Parte IV

Mensagem por Anderson M Qui 14 Ago 2014 - 13:55

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:

Estudos PWM em microcontroladores - Parte IV PWM_CONTROL_IV.bmp?async&rand=0

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.  

Estudos PWM em microcontroladores - Parte IV L293D.bmp?async&rand=0

Diagrama interno:

Estudos PWM em microcontroladores - Parte IV BLOCK_DIAGRAM.bmp?async&rand=0

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.

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.

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

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  Positivo 

Sds Anderson M
Anderson M
Anderson M
Avançado
Avançado

Mensagens : 401
Data de inscrição : 07/07/2011
Localização : São Paulo/SP

Ir para o topo Ir para baixo

Tutorial Re: Estudos PWM em microcontroladores - Parte IV

Mensagem por Anderson M Qui 14 Ago 2014 - 14:31

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:

Estudos PWM em microcontroladores - Parte IV FUSES_BITs.bmp?async&rand=0

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

Estudos PWM em microcontroladores - Parte IV Interface_XIV.bmp?async&rand=0

- Faça compilação do programa fornecido.

Anderson M
Anderson M
Avançado
Avançado

Mensagens : 401
Data de inscrição : 07/07/2011
Localização : São Paulo/SP

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos