Vizitator yaps Postat Iulie 12, 2011 Partajează Postat Iulie 12, 2011 Incerc sa fac un controller de incarcare. probleme ADC si serial in mikroC. in simulare in Proteus totul merge bine si frumos, dar pe placa probleme. la inceput trimitea ceva pe tetrminal, acuma nu mai vrea. si crec ca nici adc-ul nu functioneaza cum trebuie. Codul folosit: >unsigned load_read;//citire valoare consumator AN0unsigned batt_read;//citire valoare baterie AN1unsigned celula_read;//citire valoare celula AN2unsigned char buffer1[7];unsigned char buffer2[7];unsigned char buffer3[7];int i,j,k;/** citire valori ADC ale componentelor** @param void* @return void*/void usart(){ load_read = ADC_Read(0); //Delay_ms(10); celula_read = ADC_Read(1); // Delay_ms(10); batt_read = ADC_Read(2); // Delay_ms(10); FloatToStr((load_read*0.0048),buffer1); //converteste valoarea din float in string ByteToStr((celula_read*0.0048)/0.25,buffer2); //Float FloatToStr((batt_read*0.0048)/0.25,buffer3); UART1_Write_Text(" TConsumator: "); UART1_Write_Text(buffer1); UART1_Write_Text(" TPanou: "); UART1_Write_Text(buffer2); UART1_Write_Text(" TBaterie: "); UART1_Write_Text(buffer3);}void citire(){ if((celula_read < 400 ||celula_read==0) && (load_read!=0))// comutare pe baterie,lumina prea slaba // 462-9V, 400-7.7V { //open tranzistor RB2 //comutare load pe baterie cand e intuneric RB2 PORTB.RB2=0; //activare tranzistor } else//lumina buna if((celula_read > 400) && (load_read==0))// daca e lumina suficienta incarc bateria. { PORTB.RB2=1;//inchid alimentarea de la baterie PORTB.RB1=0; //activare tranzistor bipolar pentru alimentare baterie de la panoul solar //open tranzistor 1 --RB1 } else if((celula_read > 400) && (load_read > 0)) //apare o cerere de la consumator, si este lumina, { //alimentez consumatorul de la panou. //open tranzistor 1 -- load RB0 PORTB.RB0=1; //activare tranzistor }}void main() { UART1_Init(19200); Delay_ms(100); INTCON=0;// disable interrupts //ADCON1 = 0x;//0x82//configurez valorile analogice si Vref=5V(VDD) TRISA = 0b00000111; //port A intrare : AN<0:2> TRISB =0x00;// port B iesire //RB0-sursa-load,RB1-sursa-baterie,RB2-baterie-load PORTB.RB0=1; PORTB.RB1=1;//on bipolar off mosfet PORTB.RB2=1; do { PORTB.RB2=0; //on mosfet/off bipolar stare initiala alimentare consumator din baterie // Delay_ms(50); //PORTB.RB3=0; led usart verificare usart(); // PORTB.RB3=1; UART1_Write('\r\n'); Delay_ms(500); citire(); Delay_ms(300); } while (1);}/// PORTB.RB0-1-2 = 0 -->> tranzistor bipolar off -->> mosfet on - trece curent de la x la y/// PORTB.RB0-1-2 = 1 -->> tranzistor bipolar on -->> mosfet off - nu trece curent de la x la y tnx Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum