Evo završio sam prvi dio analize ADC-a, evo kad sam vec radio, bez obzira što rezultati i nisu tako bajni kako sam očekivao ev i kratak opis te slike sa OSC-a vezano za ovaj test.
Gornji signal na osciloskopu CH1 je PWM TIMERA1 (10 bitni PWM). Necu sad ulaziti u detalje postavki timera, bitno je da je PWM na frekvenciji 15,538 kHz (tako tvrdi osciloskop). Tom signalu PWM-a srezao sam amplitudu sa otpornim djelilom tako da bi on trebao biti oko 2.5V i taj napon spojio na ulaz ADC konvertera.
Program sam koncipirao tako da mi TOP vrijednost PWM-a digne interrupt koji starta ADC konvert. Kada timer nabroji do TOP vrijednost, on se resetira na 0, upali aktivni duty cicle PWM-a i digne interrupt. Tocno u tom interruptu ja startam ADC konvert.
Drugi kanal osciloskopa sam iskoristio da prilikom startanja ADC-a dignem neki bezvezni port u log 1, a nakon zavrsenog konverta spustim taj port u 0. Ovime sam postigao da mogu vidjeti tocno kada ce startati ADC i kada ce zavrsiti njegovo mjerenje.
Citav test smanjivao sam Duty Cicle PWM-a i analizirao proračun ADC-a te sam došao do granice koja se može mjeriti bez greške, tj sa +-1 LSB izmjerenog napona (2.5V znaci ovo sa djelila iz PWM-a)
Slike su malo lose jer sam slikao sa mobitelom.. (jbtg zaboravio sam fotic uzeti iz firme...)
Evo i maksimalno moguceg mjerenja i iskoristivosti ADC-a u ovu svrhu. Ovo je osnovna slika, a sve ostale slike su identicne kao i ova ali su slikane pod manjim ili vecim T/Div kako bi mogao preciznije vidjeti sitna vremena koja su bitna za ovu analizu.
Gornji kanal je znaci PWM sa najmanjim mogućim mjerljivim Duty cicleom, a doljni prikazuje kad se pali ADC i kad završava konvert.
http://www.imagesforme.com/upload/08ce2298.jpg" onclick="window.open(this.href);return false;
Evo i povecan PWM tako da se vidi tocan period jednog PWM-a iz kojeg sam računao frekvenciju PWM-a.
Ovo gore desno na osciloskopu sto pise 64.36 uS oznacava vrijeme između ove dvije paralelne linije koje sam podesio na pocetak i kraj PWM perioda.
http://www.imagesforme.com/upload/9619c9ab.jpg" onclick="window.open(this.href);return false;
Evo sad sam zumirao aktivni dio PWM-a, i postavio ove dvije paralelne linije da se moze vidjeti koliko tocno traje konvert ADC-a (29.8 uS). Kako je ovo test koji je prosao pod ovim uvjetima vidi se da PWM ne mora biti aktivan tokom čitave konverzije.
http://www.imagesforme.com/upload/ac030529.jpg" onclick="window.open(this.href);return false;
I evo slika koja je po meni najzanimljivija i najbitnija iz čitave analize ADC-a.
Paralelne linije mjerenja sam podesio na aktivni dio Duty cicle-a koji iznosi 7uS. Ako uzmemo u obzir da sam adc startao sa interrupta TOP vrijednosti PWM-a bilo je i za očekivati kako ću ADC ubosti sa malim zakašnjenjem u sam početak aktivnog duty ciclea. Tu trenutno nemam tocno izmjereno to kašnjenje ali se vidi da ADC kreće oko 3uS nakon što je počeo aktivni dio PWM-a. Na slici se također može vidjeti koliko je ADC imao vremena da napravi dobar sample PWM-a (Trenutak kad se ADC startao do trenutka kad je PWM pao u log "0"). Ovo vrijeme je oko 6uS što je i po datasheetu atmela za ovu konfiguraciju ADC-a maksimalno kratko vrijeme uzorka.
http://www.imagesforme.com/upload/b27f4264.jpg" onclick="window.open(this.href);return false;
I na kraju zaključak:
ADC mora imati barem 7uS čistog signala od trenutka kada ga startamo da bi mogao dobro izvršiti sample and hold vrijednost. U ovom projektu ne možemo tako startati ADC jer pri paljenju mosfeta tocno na toj poziciji imamo smetnju. Znaci da bi trebalo proracunati prema slikama abc-a koje je najbolje vrijeme za mjerenje signala sa shunta. To za sobom povlači i koji je minimalni PWM iskoristiv za regulaciju kako bi ovim načinom mogli izbjeći smetnje izazvane paljenjem i gašenjem mosfeta.
I jasan je znači zaključak kako PWM signal ne mora biti čist za vrijeme čitavog mjerenja ADC-a što se također vidi iz slike da mjerenje ADC-a završava puno kasnije, kad je vec PWM dosta dugo na 0V, a ipak dobro izmjeri vrijednost.
Evo jos prtsc testa sa debugom u kojem sam mjerenja ADC-a punio u polje adc_test, sa desne strane je 30 uzoraka. Vidi se da je čitanje ADC-a oko 01FC HEX-a (dec 508) što je moglo bi se reci polovina područja ADC-a (Zbog mog djelila PWM-a koje sam napravio sa 5 k i 5k otpornicima).
Program se može i bolje koncipirati da iskoristim ICP registar kao što je abc napravio u svom programu pa da ADC okidam kao AUTO sa interrupta OCR1A registra, no u tom slučaju bi mi ADC trebao još više vremena za sample jer je u datasheetu navedeno kako ADC u single conversion treba 1.5 ciklusa za sample and hold, dok u Auto modu treba oko 2 ciklusa. S tim načinom da ADC prebacim u Auto mod dobio bih samo kraće vrijeme konverta i duže vrijeme sample-a kojeg mogu mjeriti.
http://www.imagesforme.com/upload/bf1eb693.jpg" onclick="window.open(this.href);return false;
U prilogu je i test program s kojim je ovo testirano.