Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

ELETRÔNICA / ELÉTRICA => Eletrônica Básica => Microcontroladores => Tópico iniciado por: Marcos Dornelas em 16 de Maio de 2012, 16:43

Título: Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 16 de Maio de 2012, 16:43
Boa Tarde pessoal,
volto aqui novamente,para dividir com vc's uma(s) duvida(s)...
Estou precisando de um microcontrolador que forneça 3 sinais PWM ao mesmo tempo e em diferentes pinos (obvio).
O microcontrolador 18F2331 possui ate 6 canais (3 "comuns" e 3 complementares).
Gostaria de saber como utilizar esses tres canais.
Um instrutor, me aconselhou a buscar as configurações na biblioteca deste microcontrolador no CCS,mas sao varias configurações e me perco nelas e sempre dão erro.Não sei qual Timer configurar,qual o precaler e outras coisas...
Ja utilizei um canal PWM do pic18F452.
Faço codigos em C no C18 e no CCS.
Grato pela atenção.

Marcos VRD.
Título: Re:Microcontrolador 18F2331
Enviado por: Blackmore em 16 de Maio de 2012, 20:44
Marcos, boa noite.

Se você já utilizou o PWM em algum PIC, neste que tem mais canais não será diferente, é igualzinho.

os comandos no CCS serão:

Código: [Selecionar]
set_pwm1_duty ( valor3 )
set_pwm2_duty ( valor3 )
set_pwm3_duty ( valor3 )

Como a o recurso PWM está diretamente ligado ao timer2 então todos os canais terão a mesma frequência, mas cada canal tem o seu duty cicle diferentes, como mostrado acima.

Os canais complementares, se não me engano, quando são utilizados fornecem um sinal inverso ao canal principal ... mas é preciso ler direitinho no datasheet, pois eu já li  mas não utilizei  e posso ter me confundido.
Ok? qualquer coisa volta aí ...
Título: Re:Microcontrolador 18F2331
Enviado por: gui.manufa em 16 de Maio de 2012, 21:20
Boa noite Marcos
Se você já tem o PIC 18F2331, não tem segredo, é como o Blackmore disse. Eu dei uma pesquisada rápida e vi que esse pic não é muito facil de achar.  Caso não tenha o PIC, minha dica é usar 2 PIC com 2 canais de PWM(tendo 4 canais no total), o 16f877a por exemplo, que é facil de achar e barato. Ou então usar 3 PIC com 1 canal PWM, o 16f628a por exemplo. Em ambos os casos fazendo os PIC se comunicarem entre si. 
Lembrando também pode usar o ci555 para gerar o sinal analógico ajustado por potenciômetro, daí o PIC só liga e desliga esse sinal.
São dicas que podem servir, ou não, depende da sua aplicação.
Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 16 de Maio de 2012, 22:15
Muito Obrigado pessoal!
Mas  Blackmore, então,
também incluo a biblioteca dos timers, e quanto a configuração do timer2,continua sendo a mesma?

Título: Re:Microcontrolador 18F2331
Enviado por: Blackmore em 17 de Maio de 2012, 17:18
Citar
também incluo a biblioteca dos timers, e quanto a configuração do timer2,continua sendo a mesma?

tudo igual ... só deve se atentar ao detalhe que a frequência do PWM será a mesma para todos os canais PWMs utilizados pois um único timer é amarrado ao pwm, e apenas os seus dutycicle serão manipuláveis.

Eu não quiz comentar antes para não lhe confundir, mas existe também uma forma de você fazer o PWM por software utilizando um timer e com isso você pode utilizar esta técnica para qualquer microcontrolador, mesmo os que não tenham o hardware interno para o PWM.
Mas esta é uma opção um pouco mais complexa caso você não tenha muito traquejo com os controladores.

Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 19 de Maio de 2012, 19:33
Ok! Obrigado,vou programar agora mesmo...Ainda não fazer o pwm por software como voce disse,mas futuramente,sim gostaria de aprender. Os microcontroladores dominam o mundo...

Novamente,Obrigado

Marcos Dornelas!
Título: Re:Microcontrolador 18F2331
Enviado por: Blackmore em 02 de Junho de 2012, 09:13
E aí? conseguiu fazer o trabalho?
Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 05 de Junho de 2012, 14:50
Cara, realmente não...
Não sei onde estou errando...tudo que eu faço o compilador não compila...
Fiz esse código aqui, bem simples,mas não compilou:

#include<18f2331.h>


#fuses xt,nowdt,nolvp
#byte portb=6



void main(){
setup_oscillator(OSC_8MHZ);
SETUP_CCP2( CCP_PWM_PLUS_3),
//SETUP_TIMER_2(INT_TIMER2|T2_DIV_BY_4),
SETUP_POWER_PWM(PWM_CLOCK_DIV_4),
SETUP_POWER_PWM_PIN S(PWM_BOTH_ON),


SET_TRIS_B((PIN_B0,PIN_B1));


set_pwm1_duty ( 250 );
set_pwm2_duty ( 100 );
//set_pwm3_duty( 50 ); //


}

O compilador vive dizendo que está faltando uma expressão e o set_pwm3_duty,não foi aceito...tem alguma sugestão!?

Obrigado!
Título: Re:Microcontrolador 18F2331
Enviado por: Blackmore em 05 de Junho de 2012, 15:36
em qual compilador vamos falar? C18 ou CCS?
Título: Re:Microcontrolador 18F2331
Enviado por: Cássio Alvarenga em 05 de Junho de 2012, 16:07
o set_pwm3_duty,não foi aceito...

Não tem que tirar o "//" da frente do comando?  ::) com ele o copilador ignora a linha...
Título: Re:Microcontrolador 18F2331
Enviado por: Blackmore em 05 de Junho de 2012, 16:17
Citar
Não tem que tirar o "//" da frente do comando?  com ele o copilador ignora a linha...

não é apenas isso ... ele só não vai compilar aquela linha se antes nas instruções anteriores não houverem problemas.

Perguntei qual compilador será utilizado justamente por isso ... no primeiro post foi dito que ele faz códigos em CCS e C18 (ambos são linguagem C), mas pelo que entendo não está configurado direito ... por onde começamos? CCS ou C18?
Título: Re:Microcontrolador 18F2331
Enviado por: minilathe em 05 de Junho de 2012, 16:50
Marcos,

Cara, realmente não...
Não sei onde estou errando...tudo que eu faço o compilador não compila...
Fiz esse código aqui, bem simples,mas não compilou:

O compilador vive dizendo que está faltando uma expressão e o set_pwm3_duty,não foi aceito...tem alguma sugestão!?

Poderia informar o compilador e copiar a(s) mensagem(ns) de erro mostrada(s).
Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 06 de Junho de 2012, 22:18

Estou,usando o CCS. Sobre o comando set_pwm3_duty(valor), coloquei as duas barras,como comentário, justamente por acusar erros frequentemente.
Os erros que aparecem,sempre aparecem nos comandos setup_(...) em todos. Primeiramente ele diz que : Expect comma, (espere por virgulas) e outro erro constante eh : A numeric expression must appear here.
 
Obrigado!

Título: Re:Microcontrolador 18F2331
Enviado por: Blackmore em 06 de Junho de 2012, 22:28
Toda mensagem de erro é dada em uma linha especificamente ... ao mostrar o erro o compilador diz em que linha está o erro basta vc analisar e corrigir o erro.

por favor, copie e cole a lista de erros ... fica mais fácil ajudar, mas digo desde já que acredito ser problema com a configuração ...
Título: Re:Microcontrolador 18F2331
Enviado por: Blackmore em 07 de Junho de 2012, 02:16
Marcos,

Aproveitei um tempo livre, e resolvi entender porque vc não compila e não sei se devido ao meu compilador, mas eu não possuo as bibliotecas ... poderia enviá-las para mim?

envie para o meu e-mail, eng-aut no hotmail ponto com ... ok?
vamos ver pq essa bagaça não funciona.
Abraço!
Título: Re:Microcontrolador 18F2331
Enviado por: minilathe em 07 de Junho de 2012, 07:21
Se voce simplesmente copiar e colar os erros ou der um "printscreen" na tela ajudaria...
Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 07 de Junho de 2012, 12:51
Sim, imagem dos erros em anexo!
Título: Re:Microcontrolador 18F2331
Enviado por: minilathe em 07 de Junho de 2012, 13:46
Conforme a mensagem, está faltando vírgulas nas linhas 18 e 19.

É necessário ler e entender com funcionam os comandos da bilbioteca CCS, eu uso o compilador da Microchip e não esse.
Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 10 de Junho de 2012, 09:48
Pessoal,
Consegui utilizar apenas dois canais pwm, so falta aprender a utilizar o terceiro,porem reparem (na imagem em anexo) que os sinais não saem dos pinos do porte B, portes de saida pwm desse microcontrolador, eles saem do CCp1 e CCp2 no porte C. Alguém sabe o porque disso acontecer??

O codigo abaixo:
//#include "C:\PICC\testeccs\pwmvai.h"
#include<18f2331.h>

#byte portb=6

void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0|ADC_WHEN_INT0|ADC_INT_EVERY_OTHER);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
  // setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_4,511,1);
 
 //  setup_timer_3(T3_DIV_BY_4,255,1)
   setup_ccp1(CCP_PWM_PLUS_3);
   setup_ccp2(CCP_PWM_PLUS_3);
  // SETUP_CCP2(CCP_USE_TIMER3);
 // setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN|PWM_UP_TRIGGER|PWM_DEAD_CLOCK_DIV_2);
  //set_power_pwm1_duty(PWM_UPDATE_ENABLE);
  //setup_power_pwm_pins(PWM_BOTH_ON);
 
   setup_oscillator(OSC_8MHZ|OSC_NORMAL);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab


   // TODO: USER CODE!!
   
   SET_TRIS_B(PIN_B0|PIN_B1|PIN_B2|PIN_B3|PIN_B4|PIN_B5|PIN_B6|PIN_B7);
  // OUTPUT_B(PIN_B0|PIN_B1|PIN_B2|PIN_B3|PIN_B4|PIN_B5|PIN_B6|PIN_B7);
   
 set_pwm1_duty(51);
   set_pwm2_duty(25);
   
 //  set_pwm3_duty(205);
}

tudo entre comentário // foi o que não funcionou.

Obrigado!
Título: Re:Microcontrolador 18F2331
Enviado por: minilathe em 10 de Junho de 2012, 14:24
Dê uma lida no datasheet, capítulo 15, está tudo explicado lá.
Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 05 de Julho de 2012, 15:54
Ok, obrigado...realment e o datasheet esclarece muitas coisas...
desisti do CCS, vou tentar programa no C18 mesmo, estou tentando configurar os registradores, já que não conheço as funções para este microcontrolador (PIC18F2331). Lendo o datasheet, me veio uma duvida:
O que seria o PWM TIME BASE? (Cap.17 pg. 184). Não entendi muito bem o que ele faz!

Desde já agradeço!
Obrigado
MVRD
Título: Re:Microcontrolador 18F2331
Enviado por: minilathe em 05 de Julho de 2012, 17:37
Marcos,

Lendo o datasheet, me veio uma duvida:
O que seria o PWM TIME BASE? (Cap.17 pg. 184). Não entendi muito bem o que ele faz!

O PWM requer uma BASE DE TEMPO, um tipo de sinal de clock, que nesse caso, pode ser gerado de quatro maneiras diferentes:


The PWM time base can be configured for four different modes of operation:
• Free Running mode
• Single-shot mode
• Continuous Up/Down Count mode
• Continuous Up/Down Count mode with interrupts for double updates


Sugiro estudar o manual.
Título: Re:Microcontrolador 18F2331
Enviado por: Marcos Dornelas em 05 de Julho de 2012, 19:21
Muito obrigado...percebi isso assim que mandei a pergunta!
Obrigado!
MVRD