Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <controlador.h>
- //////////////////////////// CONFIGURA��ES DO LCD //////////////////////////////
- #define lcd_data_port getenv("SFR:portd")
- #define lcd_enable_pin pin_b1
- #define lcd_rs_pin pin_b3
- #define lcd_rw_pin pin_b2
- #define lcd_data7 pin_d7
- #define lcd_data6 pin_d6
- #define lcd_data5 pin_d5
- #define lcd_data4 pin_d4
- #include <lcd.c>
- ///////////////////////////// DECLARA��O DE VARIAVEIS //////////////////////////
- #define botao_incremento PIN_D0
- #define botao_decremento PIN_D1
- #define botao_stop PIN_D2
- #define botao_inverte PIN_D3
- #define encoder PIN_A2
- unsigned int8 ciclo_PWM_1 = 0;
- unsigned int8 ciclo_PWM_2 = 0;
- int cont = 0;
- int cont1 = 0;
- int cont2 = 0;
- int porcentagem = 0;
- char load1[16];
- char load2[16];
- char porcnt="%";
- unsigned int rpm = 0;
- unsigned int rps = 0;
- int1 sentido = 0;
- int1 ligado = 1;
- //////////////////////////// CONTADOR TIMER 0 //////////////////////////////////
- #int_timer0
- void MyTimer()
- {
- if (input(encoder)){
- rps++;
- }
- cont++;
- if(cont == 47000)
- {
- rpm = rps*60;
- rps = 0;
- cont = 0;
- }
- }
- ////////////////////////////// INICIO DO C�DIGO ////////////////////////////////
- void main()
- {
- //Setup do Timer0 = A CADA 1 SEGUNDO;
- setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1 | RTCC_8_BIT);
- enable_interrupts(int_timer0);
- //Setup do Conversor Anal�gico Digital - Leitura do Potenci�metro
- //setup_adc(ADC_CLOCK_INTERNAL);
- //setup_adc_ports(AN0);
- // SETUP DO PWM - Usando o Timer 2
- setup_ccp1(CCP_PWM); // CCP1 = PINO C2 DO PIC
- setup_ccp2(CCP_PWM); // CCP2 = PINO C1 DO PIC
- setup_timer_2(T2_DIV_BY_4,255, 1); // 500Hz em 4Mhz
- enable_interrupts(INT_CCP1);
- enable_interrupts(GLOBAL);
- set_pwm1_duty(0);
- set_pwm2_duty(0);
- lcd_init();
- /////////////////////////// ANIMA��O INICIAL DO LCD //////////////////////////////
- while(cont2<15){
- load1[cont2]=254;
- load2[cont2]=254;
- cont2++;
- }
- cont2=15;
- while(cont1<16){
- load1[cont1]=255;
- load2[cont2]=255;
- printf(lcd_putc,"\f%s\n%s",load1,load2);
- cont1++;
- cont2--;
- delay_ms(300);
- }
- cont2=15;
- cont1=0;
- while(cont1<16){
- load1[cont1]=254;
- load2[cont2]=254;
- printf(lcd_putc,"\f%s\n%s",load1,load2);
- cont1++;
- cont2--;
- delay_ms(300);
- }
- printf(lcd_putc,"\fENG. MECATRONICA\nELETR. ANALOGICA");
- delay_ms(4000);
- printf(lcd_putc,"\f CONTROLADOR DE\n MOTOR DC ");
- delay_ms(4000);
- //////////////////////////// FUN��O PRINCIPAL /////////////////////////////////
- while (TRUE){
- if (ligado == 1){
- output_high (PIN_A0);
- if (sentido == 0){
- output_high (PIN_B6);
- output_low (PIN_B7);
- if (input(botao_incremento)){
- if (ciclo_PWM_1 < 251){
- ciclo_PWM_1 = ciclo_PWM_1 + 5;
- do{}
- while(input(botao_incremento));
- }
- }
- if (input(botao_decremento))
- {
- if (ciclo_PWM_1 > 4){
- ciclo_PWM_1 = ciclo_PWM_1 - 5;
- do{}
- while(input(botao_decremento));
- }
- }
- set_pwm1_duty(ciclo_PWM_1);
- set_pwm2_duty(0);
- delay_ms(50);
- porcentagem = (ciclo_PWM_1/2.55);
- printf(lcd_putc,"\fSPEED: %d%c E: %d",porcentagem,porcnt,rpm);
- printf(lcd_putc,"\nDUTY: %u DIR: %d",ciclo_PWM_1,sentido);
- }
- if (sentido == 1){
- output_high (PIN_B7);
- output_low (PIN_B6);
- if (input(botao_incremento)){
- if (ciclo_PWM_2 < 251){
- ciclo_PWM_2 = ciclo_PWM_2 + 5;
- do{}
- while(input(botao_incremento));
- }
- }
- if (input(botao_decremento))
- {
- if (ciclo_PWM_2 > 4){
- ciclo_PWM_2 = ciclo_PWM_2 - 5;
- do{}
- while(input(botao_decremento));
- }
- }
- set_pwm2_duty(ciclo_PWM_2);
- set_pwm1_duty(0);
- delay_ms(50);
- porcentagem = (ciclo_PWM_2/2.55);
- printf(lcd_putc,"\fSPEED: %d%c E: %d",porcentagem,porcnt,rpm);
- printf(lcd_putc,"\nDUTY: %u DIR: %d",ciclo_PWM_2,sentido);
- }
- if (input(botao_inverte)){
- ciclo_PWM_1 = 0;
- ciclo_PWM_2 = 0;
- set_pwm1_duty(0);
- set_pwm2_duty(0);
- sentido = !sentido;
- do{}
- while(input(botao_inverte));
- }
- }
- if (ligado == 0){
- output_low (PIN_A0);
- ciclo_PWM_1 = 0;
- ciclo_PWM_2 = 0;
- set_pwm1_duty(0);
- set_pwm2_duty(0);
- printf(lcd_putc,"\f PAUSADO!");
- printf(lcd_putc,"\n MODO DE ESPERA");
- delay_ms(50);
- }
- if (input(botao_stop)){
- ligado = !ligado;
- do{}
- while(input(botao_stop));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement