Pesquisar neste blog

16/09/2020

Motor DC usando PWM com PIC 18F4550


Objetivo: Fazer um motor de corrente contínua que seja controlado sua velocidade.

Código feito em CCS C Compiler

#include <18f4550.h>
#device ADC = 8//configurando o canal analógico em 8 bits
#fuses intrc_io,nowdt,nomclr//configurando os fuses bits do PIC
#use delay(clock = 8MHz)
//diretivas das portas
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

int canal;
 
void main(void){
   set_tris_c(0x00);//todo port c como saída
   set_tris_a(0xff);//todo port a como entrada
   setup_timer_2(T2_DIV_BY_16, 255, 1);//setando o timer 2
   setup_ccp1(CCP_PWM);//setando o canal PWM
   setup_oscillator(OSC_1MHZ|OSC_INTRC);//Configurando o oscilador interno em 1MHz
   setup_adc_ports(AN0);//setando o canal 0, canal analógico
   setup_adc(ADC_CLOCK_INTERNAL);//setando o clock interno para a conversão ad
   set_adc_channel(0);//função para setar o canal 0
   
   while(true){
      canal = read_adc();//capturando o valor do canal analógico
      delay_ms(50);
      set_pwm1_duty(canal);//coloca ao valor que foi setado
      
      if(input(pin_d0) == true){         
         set_adc_channel(1);
      }
      
      if(input(pin_e2) == true){
         set_adc_channel(0);
      }

   }
}

Software: Proteus versão 7.6


Nenhum comentário: