Autor Tópico: PWM  (Lida 4153 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline Marcos Dornelas

  • Graduando de Eng. de Controle e Automação
  • Novato
  • *
  • Posts: 30
  • Sexo: Masculino
  • GUIA-CNC
  • Cidade - UF: Itabira- MG
PWM
« Online: 02 de Fevereiro de 2011, 21:44 »
E ai pessoal!
Meu nome e Marcos e ja fiz um curso de Inst.Elet.Industria is e em breve farei um tecnico em eletroeletronica!

Futuramente (dentro de alguns meses) precisarei junto com uns amigos construir um robo.
Dividindo as tarefas eu fiquei com o CEREBRO do robo,ou seja a programaçao.Nosso professor nos recomendou usar o PIC18F452 e o MPLAB,pragramando em C.
Ja vimos algumas coisas,funçoes,converçao analogica/digital e outras porem,digamos assim que ele prende as informaçoes.
Gostaria de saber como e que eu ultilizo o PWM(Modulaçao de Largura de Pulso) dãaaa!
Sei o que é e suas aplicaçoes em controles de motores Cc e no controle de potencia,mas por mais que eu leia o MPLAB C18 C compiler libraries nao consigo entender como programa-lo.
Visito o forum ja algum tempo e percebo que alem de pessoas inteligentes,ha pessoas dispostas a ajudar.
Por favor uma luz ou um "pisca-pisca"!
Obrigado!

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:PWM
« Resposta #1 Online: 04 de Fevereiro de 2011, 17:55 »
Não sou bom em programação, e nunca trabalhei com o 452, mas acho q as orientações podema ajudar, pois entendi que você vai utilizar o C18 como compilador (as orientações foram retiradas do livro do Alberto Noboru)
Vamos por partes:
1 - Habilitar o PWM, função OpenPWM(período) carrega o valor do argumento para o registro do PR2 do timer. Lembre-se de que o timer tem que ser configurado primeiro.
O período é um valor de 8 bits (0 a 255) e é determinado pela equação:

 período_pwm= [(periodo)+1]*4*(valor_prescaler_TMR 2)/Fosc

2 - Setar o DutyCycle, função SetDCPWMx(duty_cycle) onde no lugar do x deve ser colocado o número do PWM utilizado do uC, neste caso o duty é um valor de 10 bits (0 a 1023) e o tempo do sinal ativo é obtido pela equação:

 Tempo_ativo= (duty_cycle*valor_prescaler_TMR2)/Fosc

Exemplo simples:

Citar
#include <p18f452.h>
#include <timers.h>
#include <pwm.h>

//Fosc = 10Mhz
#pragma config FOSC= HS

void main (void)
{
unsigned int taxa_pwm = 0; //largura do pulso PWM

TRISx = 0bxxxxxxxx; // escolher o port onde está o módulo PWM e setar devidament suas entradas e saídas

OpenTimer2(TIMER_INT_OFF    //desabilita interrupçãp tmr2
                       &T2_PS_14); //Prescaler igual a 4 (1:4)

OpenPWMx (239); //PRx = 239 período pwm = 348us.

SetDCPWMx (120); // Tsinal alto = 120*4/10M = 48us.

while(1); //Looping infinito
}

Este exemplo foi retirado do livro Microcontroladores PIC18, Aprenda e Programe em Linguagem C, Alberto Noboru Miyadaira, Ed. Érica.
« Última modificação: 04 de Fevereiro de 2011, 17:58 por Blackmore »

Offline Marcos Dornelas

  • Graduando de Eng. de Controle e Automação
  • Novato
  • *
  • Posts: 30
  • Sexo: Masculino
  • GUIA-CNC
  • Cidade - UF: Itabira- MG
Re:PWM
« Resposta #2 Online: 05 de Fevereiro de 2011, 13:28 »
Blackmore,
Muito Obrigado cara,
Vou agora usar o seu exemplo,ficou bem mais claro algumas coisas!
Valeu! Quanto ao livro vou procura-lo!
Obrigado!

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:PWM
« Resposta #3 Online: 05 de Fevereiro de 2011, 18:51 »
Espero que seja útil.
Quanto ao livro, eu gostei bastante e recomendo a todos que me perguntam sobre.

abraço!

Offline Marcos Dornelas

  • Graduando de Eng. de Controle e Automação
  • Novato
  • *
  • Posts: 30
  • Sexo: Masculino
  • GUIA-CNC
  • Cidade - UF: Itabira- MG
Re:PWM
« Resposta #4 Online: 06 de Fevereiro de 2011, 19:15 »
Valeu Blackmore pela ajuda,mas incomodando mais um pouquinho,
por acaso voce poderia me dizer qual e a frequencia maxima PWM,"criada" pelo PIC?
Valeu e desculpa o incomodo!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:PWM
« Resposta #5 Online: 06 de Fevereiro de 2011, 19:28 »

Um pitaco, a frequência do PWM é ajustável e depende das opções que o processador oferece (divisões do prescaler,...) e da frequência de clock utilizada. No caso do PIC16F628 vale a tabela abaixo.

Eu daria uma olhada no datasheet do processador.

« Última modificação: 06 de Fevereiro de 2011, 19:56 por minilathe »

Offline Marcos Dornelas

  • Graduando de Eng. de Controle e Automação
  • Novato
  • *
  • Posts: 30
  • Sexo: Masculino
  • GUIA-CNC
  • Cidade - UF: Itabira- MG
Re:PWM
« Resposta #6 Online: 06 de Fevereiro de 2011, 19:50 »
Muito Obrigado pela ajuda minilathe.

Se nao digo abobrinhas,tambem esta relacionado com a frequencia do oscilador correto!?

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:PWM
« Resposta #7 Online: 06 de Fevereiro de 2011, 21:31 »
Marcos Dornelas

Citar
tambem esta relacionado com a frequencia do oscilador correto!?

a frequência do oscilador e frequência do clock citado pelo mestre minilathe são a mesma coisa no seu caso.

Offline Marcos Dornelas

  • Graduando de Eng. de Controle e Automação
  • Novato
  • *
  • Posts: 30
  • Sexo: Masculino
  • GUIA-CNC
  • Cidade - UF: Itabira- MG
Re:PWM
« Resposta #8 Online: 07 de Fevereiro de 2011, 13:42 »
ValeU!

Por acaso voce tambem poderia me dizer se PWM so "sai" dos pinos RC1(ccp2) ou em todo portC e se por acaso dar para configurar cada um de maneira diferente,com uma frequencia diferente?

Desculpa a amolação!
Obrigado!

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:PWM
« Resposta #9 Online: 07 de Fevereiro de 2011, 21:46 »
Se vc for utilizar o PWM interno do microcontrolador, vc soh vai conseguir utilizar o PWM dos pinos indicados (CCP1, CCP2, CCPx) ... se o microcontrolador possuir 2 ou mais saidas com PWM vc pode utilizálos independente um do outro, porém com frequências diferentes eu digo que não é possível, pq os PWM são atrelados ao TMR2, e você não vai conseguir mudar a config do TMR2 toda hora sem perder performance. O pessoal mais experiente me puxe a orelha se falei algo errado.
Mas eu pergunto, é realmente necessário vc utilizar frequência diferente no PWM?

Offline Marcos Dornelas

  • Graduando de Eng. de Controle e Automação
  • Novato
  • *
  • Posts: 30
  • Sexo: Masculino
  • GUIA-CNC
  • Cidade - UF: Itabira- MG
Re:PWM
« Resposta #10 Online: 09 de Fevereiro de 2011, 15:45 »
Nao,nao e nescessario,era so por curiosidade mesmo!
Valeu por toda ajuda!
Muito Obrigado!

 

/** * */