Programar PIC`s en lenguaje C18 En 64 horas. El siguiente material está desarrollado como complemento didáctico para la materia de microcontroladores, puede ser utilizados por docentes y estudiantes con disciplina de autoaprendizaje. Programar PIC`s en lenguaje C18 En 64 horas. Autor: Ramdhar Hadit Yusseff Vanegas Esp. En control e instrumentación industrial Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 2.5 Colombia.
Configuración de los registros e interruptores ADC. Tema 13 Configuración de los registros e interruptores ADC.
Ejemplo de aproximaciones sucesivas con 10 bits Clase 7 Ejemplo de aproximaciones sucesivas con 10 bits
Clase 7 Configuración del ADC En el capitulo 21 del datasheet del microcontrolador 18f4550. indica : The Analog-to-Digital (A/D) converter module has 10 inputs for the 28-pin devices and 13 for the 40/44-pin devices. This module allows conversion of an analog input signal to a corresponding 10-bit digital number. The module has five registers: A/D Result High Register (ADRESH) A/D Result Low Register (ADRESL) A/D Control Register 0 (ADCON0) A/D Control Register 1 (ADCON1) A/D Control Register 2 (ADCON2) Datasheet 18F4550
Conversor Analógico Digital (ADC) Clase 7 Conversor Analógico Digital (ADC) Es un modulo de los microcontroladres que permite convertir una señal analógica en una digital o en datos binarios. Con este sistema se pueden leer los cambios de voltaje en una entrada del Microcontrolador. Cada señal de entrada analógica se puede discriminar en 2014 partes diferentes.
Clase 7 ADCON0: A/D CONTROL REGISTER 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON bit 7-6 Unimplemented: Read as ‘0’ bit 5-2 CHS3:CHS0: Analog Channel Select bits 0000 = Channel 0 (AN0) 0001 = Channel 1 (AN1) 0010 = Channel 2 (AN2) 0011 = Channel 3 (AN3) 0100 = Channel 4 (AN4) 0101 = Channel 5 (AN5)(1,2) 0110 = Channel 6 (AN6)(1,2) 0111 = Channel 7 (AN7)(1,2) 1000 = Channel 8 (AN8) 1001 = Channel 9 (AN9) 1010 = Channel 10 (AN10) 1011 = Channel 11 (AN11) 1100 = Channel 12 (AN12) 1101 = Unimplemented(2) 1110 = Unimplemented(2) 1111 = Unimplemented(2) bit 1 GO/DONE: A/D Conversion Status bit When ADON = 1: 1 = A/D conversion in progress 0 = A/D Idle bit 0 ADON: A/D On bit 1 = A/D converter module is enabled 0 = A/D converter module is disabled
Clase 7 ADCON1: A/D CONTROL REGISTER 1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 — VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 bit 7-6 Unimplemented: Read as ‘0’ bit 5 VCFG0: Voltage Reference Configuration bit (VREF- source) 1 = VREF- (AN2) 0 = VSS bit 4 VCFG0: Voltage Reference Configuration bit (VREF+ source) 1 = VREF+ (AN3) 0 = VDD Datasheet 18f4550 bit 1 GO/DONE: A/D Conversion Status bit When ADON = 1: 1 = A/D conversion in progress 0 = A/D Idle bit 0 ADON: A/D On bit 1 = A/D converter module is enabled 0 = A/D converter module is disabled
Clase 7 ADCON2: A/D CONTROL REGISTER 2 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 ADFM — ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 bit 7-ADFM: A/D Result Format Select 1 = Right justified 0 = Left justified bit 6 Unimplemented: bit 5-3 ACQT2:ACQT0: A/D Acquisition Time Select bits 111 = 20 TAD 110 = 16 TAD 101 = 12 TAD 100 = 8 TAD 011 = 6 TAD 010 = 4 TAD 001 = 2 TAD 000 = 0 TAD(1) bit 2-0 ADCS2:ADCS0: A/D Conversion Clock Select bits 111 = FRC (clock derived from A/D RC oscillator)(1) 110 = FOSC/64 101 = FOSC/16 100 = FOSC/4 011 = FRC (clock derived from A/D RC oscillator)(1) 010 = FOSC/32 001 = FOSC/8 000 = FOSC/2
Ejercicio 5 Configuración de conversor Analógico Digital Clase 7 Ejercicio 5 Configuración de conversor Analógico Digital /**************Espacio para librerías*******************/ #include <p18f4550.h> #include <delays.h> /***********Configuración de fuses o pragma**************/ #pragma config PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 1 #pragma config FOSC = HSPLL_HS, FCMEN = OFF,IESO = OFF #pragma config PWRT = ON,BOR = OFF,BORV = 0 #pragma config VREGEN = OFF, WDT = OFF,WDTPS = 32768 #pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = OFF #pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF #pragma config CP0 = ON,CP1 = ON,CP2 = ON #pragma config CPB = ON,CPD = ON #pragma config WRT0 = ON,WRT1 = ON,WRT2 = ON, WRT3 = ON #pragma config WRTB = ON,WRTC = ON,WRTD = ON #pragma config EBTR0 = ON,EBTR1 = ON,EBTR2 = ON, EBTR3 = ON #pragma config EBTRB = ON
Clase 7 Ejercicio 5 Configuración de conversor Analógico Digital /*******Espacio para definiciones*************/ #define UnidadBit PORTAbits.RA0 #define DecenaBit PORTAbits.RA1 #define CentenaBit PORTAbits.RA2 unsigned char i; //Para controlar vizualización del Display unsigned char Display7Seg[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F};
Clase 7 Ejercicio 5 Configuración de conversor Analógico Digital /***********Espacio Para Funciones*************/ void Visualizacion (void){ for(i=1;i<=20;++i){ LATB =Display7Seg[Unidad]; UnidadBit =1; //Enciendo Display Unidad.- Delay1KTCYx(5); //Demora de 5 ms (XT=4MHz) UnidadBit =0; LATB =Display7Seg[Decena]; DecenaBit =1; Delay1KTCYx(5); DecenaBit =0; LATB=Display7Seg[Centena]; CentenaBit =1; CentenaBit =0; //Apago Display Centena.- }
Clase 7 Ejercicio 5 Configuración de conversor Analógico Digital void main(void){ TRISA = 0xF0; //Todos como entrada.- TRISB = 0X00; //Todos como salida.- PORTA = 0x00; char Unidad=0; char Decena=0; char Centena=0; while(1){ Visualizacion(); ++Unidad; if(Unidad==10){ Unidad=0; ++Decena; if(Decena==10){ Decena=0; ++Centena; }
Clase 7 Ejercicio Propuesto. La empresa Netlanf ubicada en una zona con temperatura promedio de 15ºC, necesita crear un sistema que controle la temperatura de un auditorio y la muestre en grados Celsius en una LCD, la temperatura del salón se debe tomar en cuatro puntos diferentes utilizando LM35, y como actuadores cuenta con 2 ventiladores y 2 extractores, los cuales permiten modificar la cantidad de entrada y salida de aire. La temperatura del salón se debe mantener constante a 18º Celsius. Es necesario que los extractores y ventiladores varíen su velocidad con el fin de no trabajar siempre a máxima velocidad, aumentando su durabilidad. Se debe visualizar en una pantalla LCD de 16x2 las cuatro temperaturas al mismo tiempo y en tiempo real. Auditorio ventiladores Extractores LM 35
Bibliografía Tema 11 piccmania.blogspot.com www.unocero.com www.microchip.com www.thelearningpit.com http://electronica-teoriaypractica.com www.canalgif.net/ Programación de PIC 18F4550 en C18 Autor: Ramdhar Hadit Yusseff Vanegas
Tema 11 Palabras clave Microcontrolador, PIC, 18f4550, Puertos, LCD, crear Librería, Puertos de salida, Código C18, control, temperatura, conversor analógico digital, ADC, LCD 16x2. www.canalgif.net/ Programación de PIC 18F4550 en C18 Autor: Ramdhar Hadit Yusseff Vanegas