Beste allemaal,
Ik ben bezig om een met een pic een battery management system te maken. Ik weet dat deze kant en klaar te krijgen zijn. Maar ik wil onder andere de gegevens doorkoppelen naar een SQL database (en ik maak graag dingen zelf ) dus een gekochte gaat niet werken hier.
Het probleem is dat ik hiervoor een 16f688 gebruik. De adc van de 18f4520 heb ik al tig keer gebruikt zonder problemen. Maar deze chip geeft bijzonder onnauwkeurige waardes. Ik gebruik drie kanalen en ze geven wel alle 3 het zelfde weer, maar de afwijking van de pic tot 2 verschillende multimeters varrieert tussen de 0,05% tot 7-8%. De eerste is volkomen acceptabel, de laatste absoluut niet. Na een hoop gezoek en het oplossen van een aantal problemen (vcc was 5,1v niet 5,0. de schaal loopt van 0-1023. Dus 5,1/1024 stapjes levert ook een afwijking op). Blijkt dat de adc soms hele stappen over slaat. Na het nodige expirimenteerwerk ben ik er achter dat de volgende waardes uit de adc komen:
1,3,7,12,14,15,19,23,24,28,30,31....
Ik lijn het resulaat rechts uit zodat ik het direct in een word kan stoppen.
De resolutie heb ik op 10 bits gezet
De sampletime op 50us (getest tot 1000, maakt geen verschil)
Ik heb geen 10-slagen potmeter liggen dus ik heb met een extra weerstand de maximale spanning op de wiper flink beperkt zodat ik wel in de resolutie van de adc kan sturen.
Het vreemde is dus dat hij hele stukken over slaat, terwijl ik op de multimeter "alle" waardes daar tussenin ook gewoon kan zien. De adc blijft dus op 7 hangen tot hij ineens op 12 over spring ipv 8,9,10 en 11 daar tussenin nog te gebruiken.
Ik gebruik de volledige versie van proton ide met de functie adin. Ik heb al gecheckt of de waardes op de ADRESH en ADRESL overeen komen en dat klopt. Het is dus echt de uitkomst van de adc.
Heeft iemand enig idee waar dit in zou kunnen zitten?
Iedereen alvast bedankt!
Vr. groet,
Daan
OPLOSSING!!!!!!!!!!
Het bleek uiteindelijk te liggen aan de combinatie van een 20MHz kristal en adcon1 zo ingesteld dat ADCS op Fosc/2 stond. OP pagina 67 van de datasheet staat tabel 8-1. Hierin is te zien dat dit te snel is voor deze pic. Kwestei van ADCS zo kiezen dat het binnen de specs valt zoals in die tabel valt en het probleem is (bij mij) opgeloste!
Nogmaals iedereen dank voor het meedenken!!!