Imam jedan problemcic koji je vezan za vrijednost dobijenu posle AD konverzije...
U pitanju je Arduino MEGA koji je , da tako kazem, ukljucen u namjenski napravljenu PCB za odredjeni sistem...
Na arduinu se koristi svih 16 AD konvertera koji se u jednoj funkciji iscitavaju jedan za drugim (A0 do A15).
Svi ADC ulazi su vezani na masu preko otpornika od 22k i paralelno otporniku kondezator od 1nF.
Trenutna situacija je takva da na prva 3 ADC ulaza(A0,A1 i A2) nema napona dok je na ostalima prisutan napon od oko 3,7V.( sto u konverziji daje vrijednost oko 770 )
Problem se ogleda u tome da ako iscitam svih 16 ADC ulaza, jedan za drugim, na prvom ulazu A0, svakih toliko, dobijem vrijednost 1 umjesto 0.
Znaci, iscitavanje A0 je tipa: 0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0....itd
Ukoliko "skratim" funkciju na iscitavanje samo A0, A1 i A2 ( ne na svih 16 ) onda radi korektno tj A0 je uvijek 0 ( ovo mi je palo na pamet zbog sumnje da nesto hardverski nije ok mada su svi ulazi identicni po pitanju otpornika i kondezatora...).
Izmedju 2 niza iscitavanja postoji vremenska zadrska od 1s.
Ima li ko ideju sta bi moglo biti u pitanju?
Evo dio koda zaduzen za ADC:
void get_analog(){
for(int TEMP = 0; TEMP < 16; TEMP++){
RAW_ANALOG[TEMP] = 0;
}
RAW_ANALOG[0] = analogRead(A0);
RAW_ANALOG[1] = analogRead(A1);
RAW_ANALOG[2] = analogRead(A2);
RAW_ANALOG[3] = analogRead(A3);
RAW_ANALOG[4] = analogRead(A4);
RAW_ANALOG[5] = analogRead(A5);
RAW_ANALOG[6] = analogRead(A6);
RAW_ANALOG[7] = analogRead(A7);
RAW_ANALOG[8] = analogRead(A8);
RAW_ANALOG[9] = analogRead(A9);
RAW_ANALOG[10] = analogRead(A10);
RAW_ANALOG[11] = analogRead(A11);
RAW_ANALOG[12] = analogRead(A12);
RAW_ANALOG[13] = analogRead(A13);
RAW_ANALOG[14] = analogRead(A14);
RAW_ANALOG[15] = analogRead(A15);
}