Página 1 de 1

pwm com 16f628

MensagemEnviado: 21 Ago 2007 11:42
por denis neves
e aew pessoal blzzzz?!?!?

eu to tentando construir um esquema de pwm com o pic para acionar um led de alta potencia, eu to utilizando um compilador em c para programar o dito cujo,mas como eu nunca mexi com pwm no pic gostaria que vcs me dessem uma força!!!eu vo utilizar dois push botons para mexer na largura do pulso e tambem gostaria de saber como devo fazer isso!!!

muito obrigado desde já!!!

MensagemEnviado: 21 Ago 2007 23:31
por microeletronica
Ola Denis, tudo bem?

Qual sua experiencia com outros microcontroladores?
Voce esta utilizando um compilador C CCS, Hitech, PICC ou C18?
Como eh seu hardware? Voce mesmo montou? Em protoboard, placa padrao ou placa de duas faces?

O PIC16F628, como pode ver em http://ww1.microchip.com/downloads/en/D ... 40300C.pdf,
possui tres timers, Timer0 e 2, 8 bits e Timer1 com 16 bits. Uma forma de fazer o PWM eh utilizando Timers e manipulando IOs.

Mas a forma mais correta e pratica eh utilizando mesmo as funcoes de PWM. Basicamente deve setar as direcoes das portas, habilitar as funcoes de PWM, configurando apropriadamente os valores e ligar o PWM.

MensagemEnviado: 21 Ago 2007 23:47
por microeletronica
Determine o Periodo do PWM:
Periodo do PWM = [PR2 + 1] 4 . TOSC . Prescaler do Timer2

Determine o Duty Cycle do PWM:
CCPR1L e CCP1CON, bits 5 e 4

Coloque o CCP1 como saida, Pino 3 de PORTB, TRISB.3 = 0

Coloque um valor no Prescaler do Timer2 (bit 1-0 de T2CON, pagina 53), relativo ao periodo do PWM; habilite o timer 2 escrevenddo em T2CON(bit 2, pagina 53).

Ligue o PWM:
CCP1CON = 0x0F; // Bit 3-0 = 11xx = PWM Mode

MensagemEnviado: 22 Ago 2007 00:24
por microeletronica
Para a sua aplicacao, o Periodo deve ser fixo e vc deve alterar o Duty Cycle, certo?

Passe pro pessoal deste forum os valores de XT que utiliza e Periodo desejado, que podemos fazer os calculos. Dai eh soh variar o Duty Cycle conforme pressiona as teclas.

Tudo isso se torna simples, dai...

MensagemEnviado: 22 Ago 2007 08:42
por denis neves
então...eu to usanu o compilador hitech, um cristal de 4MHz, matriz de contatos, pic16f628, e gostaria de uma frequencia de +-100Hz.
é eu quero uma frequencia fixa e variar apenas o duty cycle!!!
Eu ainda to meio que começando a lidar com microcontroladores e ainda nao tenho muita experiencia nao!!!

mas beleza com essas dicas ai ja dá pra me viar aqui!!!

vALEU microeletronica qualquer coisa eu do um toque!!!

Braço

MensagemEnviado: 24 Ago 2007 22:03
por microeletronica
Para um Cristal e 4 MHz, voce tem 1 MHz de frequencia de operacao.
Dai tem 1000000 de ciclos em um segundo.
Digamos que precise implementar um PWM de 100 Hz com duty cycle variando de 0 a 100%...

Coloque o CCP1 como saida, Pino 3 de PORTB, com o comando TRISB.3 = 0, ainal eh este pino que vai ser seu PWM...

PWM period = [(PR2) + 1] • 4 • TOSC •(TMR2 prescale value)
PWM period = [(15) + 1] • 4 • 0,000001 •(16) = 1024*0,000001 = 0,001024

Configure entao: TMR2 prescale value = 16 ->> T2CKPS1:T2CKPS0: Timer2 Clock Prescale Select bits, (T2CON) = 11
Configure entao: PR2 = 15
Consiga assim: freq = 1/0,001024 = 976 Hz

O Duty Cycle, que deseja que varie, use a formula PWM duty cycle = (CCPR1L:CCP1CON<5:4>) • Tosc • (TMR2 prescale value)

Habilite entao o timer 2 escrevendo em T2CON(bit 2, pagina 53).
Aguardo suas duvidas e boa sorte.

MensagemEnviado: 25 Ago 2007 14:59
por kaoalex
Aqui vai um prog. que eu achei na net para ccs.
http://rapidshare.com/files/51243015/PWMWizard.zip.html

MensagemEnviado: 27 Ago 2007 08:26
por denis neves
ahhhhh ta...puts valeu msm em microeletronik qualquer duvida eu do um toque!!!

e precisanu estou as ordens!!!

AH Kaoalex ahehaheahe...com esse ai q tá na net da pra tirar umas ideias tbm...
o unico problema é q ele é para ccs e eu to usanu um hitech!!! mas valeu pela força...

MensagemEnviado: 27 Ago 2007 17:00
por denis neves
então pessoal agora eu to com uma dificuldade aqui no compilador hi tech...eu tom com dificuldades de configurar entradas e saidas do pic!!!
eu to fasenu assim...

PORTA=0;
TRISA1=1;para configurar o bit 1 do port A como ENTRADA!!!

nao esta dando certo tem algo errado...a minha duvida é com relaçao a port,tris,e RA1,RA2,RA3....RB1....

eu tenho q declarar o PORTA=0 mesmo quando eu declaro TRISA=1???

VALEU...é q eu fiz poucos projetos com pic e nunca usei os pinos como entrada!!!

MensagemEnviado: 27 Ago 2007 17:22
por ze
antes de ler a entrada coloque-a em 1. Funcionava para os 8051´s, antes de ler colocava a saída em 1. Talvez o pic não precise. Mas mantive o padrão.
RA1=1;
TRISA1=1;
CM2=CM1=CM0=1; //se for entrada digital, não te esqueças

abrç

MensagemEnviado: 24 Set 2007 15:03
por luciano
eae pessoal blz?
também estou fazendo controle com pwm, já consegui fazer funcionar, mas agora estou com um problema de como ele vai monitorar a tensão de saída e ir corrigindo o pwm para se manter na tensão programada.
alguém tem alguma sugestão ?

MensagemEnviado: 24 Set 2007 22:02
por microeletronica
Explique melhor, Luciano

MensagemEnviado: 25 Set 2007 08:19
por luciano
Estou fazendo o pwm com o pic 16f628, isso eu já consegui fazer.
Agora eu quero fazer um monitoramento da tensão que está sendo modulada para ir verificando se o que programei é o que está saindo, seria uma realimentação, porém no 16f628 não tenho conversor A/D, porém como fazer essa realimentação ?