Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "C:\Users\LastDeath\Downloads\Projeto full\Projeto full\Projeto1\inversor.h"
- #use delay(clock=20000000)
- #define LCD_DATA_PORT getenv("SFR:PORTD")
- #define LCD_ENABLE_PIN PIN_D2
- #define LCD_RS_PIN PIN_D0
- #define LCD_RW_PIN PIN_D1
- #define LCD_DATA4 PIN_D4
- #define LCD_DATA5 PIN_D5
- #define LCD_DATA6 PIN_D6
- #define LCD_DATA7 PIN_D7
- #include "LCD.C"
- #use fast_io (A)
- int8 freq_inv=60;
- int8 tempo_step=40;
- long int tempo_inv;
- int16 cont=0;
- char modulo='a';
- int16 tempo_chave=0;
- int8 t_morto=0;
- int8 menu1=1;
- int8 menu2=1;
- int1 comando=0;
- int16 tempo_pulso;
- int16 tensao_inv=120;
- int8 freq_inv_temp=60;
- int16 tensao_inv_temp=120;
- int8 rampa_freq_temp=60;
- int8 rampa_temp_temp=5;
- int8 rampa_temp=5;
- float rampa_cont;
- int8 rampa_freq=60;
- int16 cont2=0;
- int1 modo_rampa=0;
- int1 modo_rampa2=0;
- float v_por_f;
- char mr_stop[2];
- int1 situacao=0;
- int1 ativa_rampa=0;
- int8 rampa_print=0;
- int1 stop=0;
- int8 passo_f=5;
- int8 passo_t=5;
- int8 passo_s=1;
- int8 cont3;
- int16 valor;
- float tensao;
- float temp_chave;
- #int_TIMER0
- void TIMER0_isr(void)
- {
- cont3++;
- if(cont3==5)SET_ADC_CHANNEL(0);
- if(cont3==10)
- {
- valor = READ_ADC(7);
- comando=1;
- cont3=0;
- }
- }
- #int_TIMER2
- void TIMER2_isr(void)
- {
- cont++;
- cont2++;
- //-----------chaveamento--------
- if(cont>tempo_chave){
- cont=0;
- if (modulo=='a'){
- output_high(pin_a2);
- output_high(pin_a3);
- output_low(pin_a1);
- output_low(pin_a5);
- modulo='b';
- }
- else{
- output_high(pin_a1);
- output_high(pin_a5);
- output_low(pin_a2);
- output_low(pin_a3);
- modulo='a';
- }
- }
- //---------largura de pulso--------
- if(cont>tempo_pulso)
- {
- output_high(pin_a2);
- output_low(pin_a3);
- output_high(pin_a1);
- output_low(pin_a5);
- }
- }
- #int_RB
- void RB_isr(void)
- {
- comando=1;
- //------------------Tratar menu principal-------------------
- if(menu2==1)
- {
- if(input(pin_b4))(menu1--);
- if(input(pin_b5))(menu1++);
- if(menu1<1)(menu1=1);
- if(menu1>6)(menu1=6);
- }
- //----------------------------------------------------------
- else
- {
- if(input(pin_b4))
- {
- if(menu1==1)
- {
- //-----------------modo manual freq + ---------------------
- if(menu2==3)
- {
- freq_inv_temp=freq_inv_temp+passo_f;
- if(freq_inv_temp>100)(freq_inv_temp=100);
- }
- //----------------------------------------------------------
- //-----------------modo manual tensao + --------------------
- if(menu2==2)
- {
- tensao_inv_temp=tensao_inv+passo_t;
- if(tensao_inv_temp>180)(tensao_inv_temp=180);
- }
- //----------------------------------------------------------
- }
- if(menu1==2)
- {
- //----------------modo v/f freq + ------------------------
- if(menu2==2)
- {
- freq_inv_temp=freq_inv_temp+passo_f;
- if(freq_inv_temp>100)(freq_inv_temp=100);
- }
- //----------------------------------------------------------
- }
- if(menu1==3)
- {
- //----------------modo rampa rampas--------------------------
- if(menu2==3)
- {
- ativa_rampa=1;
- }
- //------------------------------------------------------------
- //----------------modo rampa stop ------------------------
- if(menu2==2)
- {
- if(situacao==1)
- {
- stop=1;
- situacao=0;
- }
- }
- //----------------------------------------------------------
- }
- if(menu1==4)
- {
- //-----------------modo rampa/ freq maxima + ---------------
- if(menu2==2)
- {
- rampa_freq_temp=rampa_freq_temp+passo_f;
- if(rampa_freq_temp>90)(rampa_freq_temp=90);
- }
- //----------------------------------------------------------
- //-----------------modo rampa/ temp maxima + ---------------
- if(menu2==3)
- {
- rampa_temp_temp=rampa_temp_temp+passo_s;
- if(rampa_temp_temp>120)(rampa_temp_temp=120);
- }
- //----------------------------------------------------------
- }
- if(menu1==5)
- {
- if(menu2==2)
- {
- passo_f++;
- }
- if(menu2==3)
- {
- passo_t++;
- }
- if(menu2==4)
- {
- passo_s++;
- }
- }
- }
- if(input(pin_b5))
- {
- if(menu1==1)
- {
- //-----------------modo manual freq - ---------------------
- if(menu2==3)
- {
- freq_inv=freq_inv-passo_f;
- if(freq_inv<16)(freq_inv=16);
- }
- //----------------------------------------------------------
- //-----------------modo manual tensao - --------------------
- if(menu2==2)
- {
- if(tensao_inv<passo_t)
- tensao_inv=0;
- else
- tensao_inv=tensao_inv-passo_t;
- }
- //----------------------------------------------------------
- }
- if(menu1==2)
- {
- //-----------------modo v/f freq - -------------------------
- if(menu2==2)
- {
- freq_inv=freq_inv-passo_f;
- if(freq_inv<16)(freq_inv=16);
- }
- //----------------------------------------------------------
- }
- if(menu1==4)
- {
- //-----------------modo rampa/ freq maxima - ---------------
- if(menu2==2)
- {
- rampa_freq=rampa_freq-passo_f;
- if(rampa_freq<16)(rampa_freq=16);
- }
- //----------------------------------------------------------
- //-----------------modo rampa/ temp maxima - ---------------
- if(menu2==3)
- {
- rampa_temp=rampa_temp-passo_s;
- if(rampa_temp<5)(rampa_temp=5);
- }
- //----------------------------------------------------------
- }
- if(menu1==5)
- {
- if(menu2==2)
- {
- passo_f--;
- }
- if(menu2==3)
- {
- passo_t--;
- }
- if(menu2==4)
- {
- passo_s--;
- }
- }
- }
- }
- //-------------------Tratamentos sub menus-----------------
- if(input(pin_b6))
- {
- if((menu1==6)&&(menu2==2))disable_interrupts(INT_TIMER0);
- //-------------------voltar menu---------------------------
- if(menu2>2)(menu2--);
- //---------------------------------------------------------
- }
- if(input(pin_b2))
- {
- menu2=1;
- }
- //-------------------avançar menu--------------------------
- if(input(pin_b7))
- {
- if((menu1==1)&&(menu2<3))(menu2++);
- if((menu1==2)&&(menu2<2))(menu2++);
- if((menu1==3)&&(menu2<3))(menu2++);
- if((menu1==4)&&(menu2<3))(menu2++);
- if((menu1==5)&&(menu2<4))(menu2++);
- if((menu1==6)&&(menu2<2))(menu2++);
- }
- if(input(pin_b1))
- {
- if(menu1==1)
- {
- freq_inv=freq_inv_temp;
- tensao_inv=tensao_inv_temp;
- }
- if(menu1==2)
- {
- freq_inv=freq_inv_temp;
- }
- if(menu1==3){
- rampa_freq=rampa_freq_temp;
- rampa_temp=rampa_temp_temp;
- }
- }
- }
- void desativa_chaves()
- {
- output_high(pin_a5);
- output_high(pin_a1);
- output_high(pin_a2);
- output_high(pin_a3);
- }
- void calculo_inv ()
- {
- tempo_inv=1000000/freq_inv;
- tempo_chave=tempo_inv/tempo_step;
- tempo_pulso=(tempo_chave*0.00555*tensao_inv);
- t_morto=(tempo_inv-tempo_chave)*tempo_step;
- }
- void main()
- {
- setup_adc_ports(AN0);
- setup_adc(ADC_CLOCK_DIV_2);
- setup_psp(PSP_DISABLED);
- setup_spi(SPI_SS_DISABLED);
- setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
- setup_timer_1(T1_DISABLED);
- setup_timer_2(T2_DIV_BY_1,24,4);
- setup_comparator(NC_NC_NC_NC);
- setup_vref(FALSE);
- lcd_init();
- disable_interrupts(INT_TIMER2);
- // TODO: USER CODE!!
- set_tris_a(0x01);
- printf(lcd_putc,"\f Inversor Mono \n de Frequencia");
- delay_ms(2000);
- printf(lcd_putc,"\f Grupo: Alex \n Leonel e Ruan");
- delay_ms(2000);
- printf(lcd_putc,"\f*Modo Manual \n Modo V/F");
- enable_interrupts(INT_RB);
- enable_interrupts(GLOBAL);
- calculo_inv ();
- while(true)
- {
- if(comando==1)
- {
- if(menu2==1)
- {
- if(menu1==1)(printf(lcd_putc,"\f*Modo Manual. \n Modo V/F"));
- if(menu1==2)(printf(lcd_putc,"\f Modo Manual \n*Modo V/F"));
- if(menu1==3)(printf(lcd_putc,"\f*Modo Rampa \n Config Rampa"));
- if(menu1==4)(printf(lcd_putc,"\f Modo Rampa \n*Config Rampa"));
- if(menu1==5)(printf(lcd_putc,"\f*Config Passo \n Medidas"));
- if(menu1==6)(printf(lcd_putc,"\f Config Passo \n*Medidas"));
- }
- if(menu2==2)
- {
- //-----------------------variar Tensao-------------------------------------
- if(menu1==1)
- {
- calculo_inv ();
- if(tensao_inv<=0)(tensao_inv=0);
- if(!situacao)
- {
- enable_interrupts(INT_TIMER2);
- situacao=1;
- }
- printf(lcd_putc,"\f Tensao Freq.\n *%ldV %dHz ",tensao_inv,freq_inv);
- }
- //---------------------------------------------------------------------------
- //----------------------modo v/f--------------------------------------------
- if(menu1==2)
- {
- tensao_inv=(freq_inv*2.10);
- if(tensao_inv>180)(tensao_inv=180);
- if(tensao_inv>180)(tensao_inv=180);
- calculo_inv ();
- if(!situacao)
- {
- enable_interrupts(INT_TIMER2);
- situacao=1;
- }
- v_por_f=((tensao_inv*1.00)/freq_inv);
- printf(lcd_putc,"\fFreq. Tensao v/f \n %dHz %ldV %f",freq_inv,tensao_inv,v_por_f);
- }
- //----------------------------------------------------------------------------
- //----------------------modo rampa--------------------------------------------
- if(menu1==3)
- {
- if(stop)
- {
- stop=0;
- desativa_chaves();
- disable_interrupts(INT_TIMER2);
- }
- cont2=0;
- if(situacao)
- {
- mr_stop="OK";
- printf(lcd_putc,"\f Stop Rampa \n *%s Descida",mr_stop);
- }
- else
- {
- mr_stop="--";
- printf(lcd_putc,"\f Stop Rampa \n *%s Subida",mr_stop);
- }
- }
- //----------------------------------------------------------------------------
- //----------------------modo config rampa Freq final--------------------------
- if(menu1==4)
- {
- printf(lcd_putc,"\fF.final Tempo \n *%dHz %ds",rampa_freq,rampa_temp);
- }
- //----------------------------------------------------------------------------
- //----------------------modo config passo--------------------------------
- if(menu1==5)
- {
- printf(lcd_putc,"\f Freq. Tensao \n *%dHz %dV ",passo_f,passo_t);
- }
- //----------------------------------------------------------------------------
- //----------------------medidas-----------------------------------------------
- if(menu1==6)
- {
- enable_interrupts(INT_TIMER0);
- tensao = (-20.58*valor * 0.0048828125)+94.84;
- temp_chave=25+tensao*1.25;
- printf(lcd_putc,"\fTemp= %fC\nIGBT= %fC",tensao,temp_chave);
- }
- //----------------------------------------------------------------------------
- }
- if(menu2==3)
- {
- //--------------------------variar freq-------------------------------------------
- if(menu1==1)
- {
- calculo_inv ();
- printf(lcd_putc,"\f Tensao Freq.\n %ldV *%dHz ",tensao_inv,freq_inv);
- }
- //---------------------------------------------------------------------------
- //----------------------modo rampa--------------------------------------------
- if(menu1==3)
- {
- if(situacao==1)mr_stop="OK";
- if(situacao==0)mr_stop="--";
- if(ativa_rampa)
- {
- if(situacao==1)modo_rampa2=1;
- if(situacao==0)
- {
- modo_rampa=1;
- freq_inv=16;
- }
- rampa_print=1;
- }
- if(ativa_rampa==0)
- {
- if(situacao==1)printf(lcd_putc,"\f Stop Rampa \n %s *Descida",mr_stop);
- if(situacao==0)printf(lcd_putc,"\f Stop Rampa \n %s *Subida",mr_stop);
- }
- }
- //----------------------modo config rampa tempo final--------------------------
- if(menu1==4)
- {
- printf(lcd_putc,"\fF.final Tempo \n %dHz *%ds",rampa_freq,rampa_temp);
- }
- //----------------------------------------------------------------------------
- //----------------------modo config passo--------------------------------
- if(menu1==5)
- {
- printf(lcd_putc,"\f Freq. Tensao \n %dHz *%dV ",passo_f,passo_t);
- }
- //----------------------------------------------------------------------------
- }
- if(menu2==4)
- {
- //----------------------modo config passo--------------------------------
- if(menu1==5)
- {
- printf(lcd_putc,"\f Tensao Tempo \n %dV *%ds ",passo_t,passo_s);
- }
- //----------------------------------------------------------------------------
- }
- comando=0;
- }
- //-----------------------rampa subida----------------
- if(modo_rampa==1)
- {
- if(cont2>rampa_cont)
- {
- if(freq_inv==rampa_freq)
- {
- modo_rampa=0;
- ativa_rampa=0;
- printf(lcd_putc,"\f Stop Rampa \n -- *Descida");
- situacao=1;
- enable_interrupts(INT_RB);
- }
- freq_inv++;
- tensao_inv=(freq_inv*2.10);
- calculo_inv();
- cont2=0;
- }
- if(rampa_print==1)
- {
- rampa_print=0;
- cont2=0;
- printf(lcd_putc,"\f Stop Rampa \n -- *---");
- rampa_cont=(((2000000*rampa_temp)/((rampa_freq-16)))/tempo_step);
- tensao_inv=(freq_inv*2.10);
- calculo_inv();
- disable_interrupts(INT_RB);
- enable_interrupts(INT_TIMER2);
- }
- }
- //----------------------------------------------------
- //-----------------------rampa descida----------------
- if(modo_rampa2==1)
- {
- if(rampa_print)
- {
- rampa_print=0;
- printf(lcd_putc,"\f Stop Rampa \n -- *---");
- rampa_cont=(((2000000*rampa_temp)/((freq_inv-16)))/tempo_step);
- cont2=0;
- }
- if(cont2>rampa_cont)
- {
- freq_inv--;
- tensao_inv=(freq_inv*2.10);
- calculo_inv();
- cont2=0;
- if(freq_inv==16)
- {
- desativa_chaves();
- disable_interrupts(INT_TIMER2);
- modo_rampa2=0;
- printf(lcd_putc,"\f Stop Rampa \n -- *Subida");
- situacao=0;
- }
- }
- }
- //----------------------------------------------------
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement