bon soire a tt ,bon je viens de calculé un déphasage entre deux signaux U1 et U2 ont des amplitudes sont respectivement les suivantes 5 ET 2 V volts ayant une fréquence de 50 HZ bon aprés une simulation sur isis et j'ai utiliser un compilater pic c COMPILER je ne trouve pas mes valeurs souhaité de déphasage pour une fréquence de 50HZ bien que mon programme donne des bonne valeurs de déphasage pour des fréquence de 0.05 HZ qui ma fait étonné !!!! j'arrive pas a trouvé mon bonheur s'il vous plais aider moi pour connaitre les erreurs dans le programme ou dans la simulation
mon code source et le schéma sur isis sont les suivantes
################# Image effacée.
Merci de suivre ces quelques conseils pour poster une image dans le forum.
Pour la modération,
yoda1234.
Code:#include <16f877.h> #device ADC=10 #fuses xt,nowdt,NOPROTECT,noput #use delay(clock=20000000) #use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7) #include <lcd.c> #include <math.h> int32 n=0; #int_timer0 void timer0_isr() { n++; } void main () { int1 test_1, test_2; //***********programme de dephasage******************// //float a,b,c,e,f,g,R,X; //float tens_max,courant_max,dephasage,Veff,Ieff ; float temps, dephasage; float tens_anal_10,tens_anal_1,tens_num_1,tens_num_2,tens_anal_2,tens_anal_20; int8 Iter; float Freq=0.05; tens_anal_10 = 0.1; tens_anal_20 = 0.1; setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); enable_interrupts(int_timer0); enable_interrupts(GLOBAL); disable_interrupts(int_timer0); clear_interrupt(int_timer0); setup_port_A(all_analog); setup_adc(adc_clock_internal); while(true) { while(!input(pin_C0)) { test_1=1; test_2=1; set_adc_channel(0); delay_us(10); while(test_1==1) { tens_num_1 =read_adc(); tens_anal_1 = (tens_num_1 *(0.0048876)*2)-5; lcd_init(); printf(lcd_putc,"Tens1=%2.5f\r",tens_anal_1); //printf("T1=%2.3f\r",tens_anal_1); if ((tens_anal_1>=0) && (tens_anal_10<0)) { set_timer0(0); n=0; clear_interrupt(int_timer0); enable_interrupts(int_timer0); test_1=0; tens_anal_10=tens_anal_1; //lcd_init(); //printf(lcd_putc,"Tens1=%2.5f\r",tens_anal_1); printf("Detected Tens1=%2.5f\r",tens_anal_1); } else { tens_anal_10 = tens_anal_1; } } set_adc_channel(1); delay_us (10); while (test_2==1) { tens_num_2=read_adc(); tens_anal_2 = (tens_num_2 *(0.0048876))-2; lcd_init(); printf(lcd_putc,"Tens2=%2.5f\r",tens_anal_2); //printf("T2=%2.3f\r",tens_anal_2); if ((tens_anal_2>=0) && (tens_anal_20<0)) { Iter=get_timer0(); disable_interrupts(int_timer0); clear_interrupt(int_timer0); temps = 0.0000512*n+Iter*0.0000002; dephasage =2*PI-((2*PI*Freq)*temps); test_2=0; tens_anal_20=tens_anal_2; //lcd_init(); //printf(lcd_putc,"Tens2=%2.5f\r",tens_anal_2); printf("Detected Tens2=%2.5f\r",tens_anal_2); printf("temps=%3.5f\r",temps); } else { tens_anal_20=tens_anal_2; } } lcd_init(); printf(lcd_putc,"Deph=%3.5f deg\r",dephasage*57.295779513); printf("Deph=%3.5f deg\r",dephasage*57.295779513); } } }
-----