Stap 4: Korte intro over PIC en de ADC-module
Neem een kijkje op de blokschema van de ADC. Het toont precies wat wordt verderop met de registers, maar misschien een beetje gemakkelijker te begrijpen. De vier ingangen zijn de PICs-pinnen, CS selecteert degene die zal worden aangesloten op de ingang ADC. Een van hen kan ook worden gebruikt als een referentiespanning, we deze functie uitgeschakeld door te zeggen VCFG = 0. Wij schakelen de module met de ADON beetje aan de onderkant van de ADC, en loslaten van een conversie door de GO/nDONE-bit. Zodra de omzetting wordt gedaan, plaatst de ADC het resultaat in de registers van de ADRESH:ADRESL, zoals opgedragen door de ADFM bit. We het resultaat in de meest rechtse tien-bitvelden aangepast.
Voor het meten van de spanning over de accu, had mij voor het configureren van de PIC12F683 interne 10 bits analoog / digitaal-converter. Interne modules kunnen worden geconfigureerd via hun configuratie registers, in dit geval ADCON0 en ANSEL. Er zijn twee meer, waarin het resultaat van de conversie van de 10 bit: ADRESH:ADRESL.
Voordat springen naar configuratie, door ervoor te zorgen is er geen manier voor u om de PIC schade door spanningen groter is dan 5V op haar ingangen te passen. Om te kunnen meten van de 12V + batterijspanning, moest ik toe te voegen een voltage divider met 1:4 factor te verdelen. Dit betekent, dat uit de 0V-14V accuspanning de PIC is alleen te zien een 0V-3.5V bereik – die veilig onder 5V. Ik gebruikte een weerstand van 15Kohm en 5Kohm voor de spanning divider. Laten we eens kijken uit de registers van de configuratie.
ADCON0 registreren configuraties
De 7-th bit van ADCON0 register is ADFM, die hoe deze 10 bits bepaalt zijn regelen in de two, 8-bits ADC resultaat registreert. Ik heb gebruikt met aanpassen naar rechts, dus mij zal puikje dat: ADCON0. ADFM = 1.
De 6-th bit is VCFG, die heeft te maken met de positieve spanning referentie-ingang van de interne analoog-naar-digitaal conversie module. De ingangsspanning die we willen meten nu varieert van 0V tot 5V, dit betekent dat we de input grond en de input voedingsspanning van 5V om op te treden als onze lagere en hogere referentiespanning kan selecteren. Dit wetende, moeten we ADCON0. VCFG beetje aan logica '0'.
Bit 5 en 4 niet ten uitvoer worden gelegd, ik nullen in hen voor eenvoud.
Bits 3 en 2 van dit register Kies de zender (input pin) op die het spanningsniveau zal worden gemeten. Aan het eind van de conversie zal de inhoud van het register van ADC resultaat een getal dat overeenkomt met het spanningsniveau van het geselecteerde kanaal. Ik hoeft niet te veranderen ingangskanaal in dit project, zodat de selectie bij hardware initialisatie ADCON0 gebeurt. CHS1:CHS0 = 00.
Bit 1, genaamd GO/nDONE is uitgeschakeld aan begin, ik het in de maatregel staat een, en wacht tot het automatisch opnieuw worden ingesteld. Deze bit is ingesteld door hardware, en kan worden gebruikt om te controleren of een nieuwe AD-meting beschikbaar of niet is. Laten we het op 0 instellen.
Bit 0 schakelt de ADC-module aan en uit. Natuurlijk moeten we voor zwenking op voort, dus we moeten het ingesteld op 1, ADCON0. ADON = 1.
Dit betekent, dat het hexadecimale nummer 0b10000001 = 0x81 behoeften ADCON0 voor de module te werken de verwachte manier gebracht.
ANSEL register configuratie
Dit register Hiermee configureert u de klok van de acquisitie en definieert welke analoge kanalen worden gebruikt voor het meten van analoge spanning en die zal worden uitgeschakeld om te gebruiken van de respectieve pinnen als digitale ingangen/uitgangen.
De 7-th-bit wordt niet uitgevoerd, plaatste ik het aan 0 voor eenvoud.
De volgende drie Selecteer het klokbron: Ik heb de neiging om te selecteren van de FRC standaard en wijzig het alleen als iets niet werkt: ANSEL. ADCS = 111.
De lagere knabbelen van het register is van invloed op de analoge pinnen, degene die u nodig hebt als input of output moeten dienovereenkomstig worden geconfigureerd. Ik gebruikte alleen analoog kanaal 0 deze tijd, dus ik heb om een '1' op die positie. ANSEL. ANS = 0001.
Met deze bekend, ANSEL register moet worden ingesteld op 0b01110001 = 0x71.
Kortom, is dit de manier waarop een moet overgaan tot het configureren van de ADC-module van deze processor. Er zijn slechts twee registers in te vullen, daarna de conversie resultaten kunnen worden genomen van ADRESH:ADRESL periodiek.