SlideShare una empresa de Scribd logo
Capacitación Certificada, Componentes & Soluciones en Electrónica y 
Programación 
Práctica IV 
Voltímetro de CD 
Revisión 2 
www.novellius.com 
contacto@novellius.com
www.novellius.com 
Índice de Contenido 
Objetivo...........................................................................................................................................................................................................4 
Solución Propuesta................................................................................................................................................................................4 
Material Requerido..................................................................................................................................................................................4 
Software Necesario................................................................................................................................................................................4 
Desarrollo del Programa de Control en Lenguaje C.......................................................................................................5 
Acondicionamiento de la TEMPIC-45......................................................................................................................................14 
Programación del Microcontrolador..........................................................................................................................................19 
Comprobación del Funcionamiento del Programa de Control...............................................................................21 
Prácticas Propuestas.............................................................................................................................................................................22
www.novellius.com 
Índice de Figuras 
Fig. 1 Creación de un archivo de código fuente C.......................................................................................................5 
Fig. 2 Inserción de un nuevo manual de proyecto al archivo de código fuente C...............................5 
Fig. 3 Diagrama de la lógica del programa de control..............................................................................................6 
Fig. 4 Descripción de los fusibles implementados en el programa de control......................................7 
Fig. 5 Expresión para obtener el tiempo ideal de la Conversión A/D...........................................................9 
Fig. 6 Cálculo de la escala de Voltaje....................................................................................................................................10 
Fig. 7 Expresión para obtener el Voltaje del Potenciómetro................................................................................10 
Fig. 8 Desglose de la función “printf“ para la impresión en un Display LCD........................................... 11 
Fig. 9 Muestra de un valor Entero sin Signo en la Pantalla LCD....................................................................... 11 
Fig. 10 Mostrar un valor entero sin signo y un valor flotante en una Pantalla LCD............................... 12 
Fig. 11 Compilación del programa de control................................................................................................................... 13 
Fig. 12 Confirmación de éxito en la compilación............................................................................................................ 13 
Fig. 13 Colocación del Microcontrolador en la TEMPIC-45..................................................................................... 14 
Fig. 14 Conexión de la Pantalla LCD a la TEMPIC-45.................................................................................................. 14 
Fig. 15 Comprobación de la conexión de la Pantalla LCD a la TEMPIC-45................................................. 15 
Fig. 16 Conexión del programador de PICs a la TEMPIC-45.................................................................................. 15 
Fig. 17 Alimentación deshabilitada desde el Programador de PICs................................................................. 16 
Fig. 18 Configuración de la TEMPIC-45 para Alimentación mediante la Interfaz USB..................... 16 
Fig. 19 Diagrama de conexión de una Pantalla LCD al PIC18F4550................................................................ 17 
Fig. 20 Conexión de una Pantalla LCD a la TEMPIC-45............................................................................................. 17 
Fig. 21 Diagrama de conexión de un Potenciómetro al pin RA0 del PIC18F4550................................. 18 
Fig. 22 Conexión de un Potenciómetro al pin RA0 de la TEMPIC-45.............................................................. 18 
Fig. 23 Ventana principal del PICKit 2® Programmer................................................................................................... 19 
Fig. 24 Importación del archivo compilado del código fuente C......................................................................... 19 
Fig. 25 Programación exitosa del Microcontrolador.....................................................................................................20 
Fig. 26 Verificación del funcionamiento de la solución de control.................................................................... 21
www.novellius.com 
4 
Objetivo 
Desarrollar un programa de control involucrando algunos tópicos intermedios de programación de 
PICs, como el control de una Pantalla LCD de 16x2 caracteres, así como la implementación de una 
Conversión Analógico/Digital (A/D). 
Solución Propuesta 
Este ejemplo consiste en realizar la conversión Analógico/Digital (A/D) de una señal proveniente 
de un potenciómetro, alimentado con +5V como voltaje de referencia. Posteriormente mostrar en 
el Display LCD de 16x2 caracteres, tanto el valor de la conversión A/D, como el voltaje asociado al 
potenciómetro. 
Material Requerido 
1) Tarjeta Entrenadora TEMPIC-45. 
2) Programador para Microcontroladores PIC (PICKit 2® o equivalente). 
3) Microcontrolador PIC18F45501. 
4) Oscilador de 20 MHz. 
5) Cables Dupont. 
6) Potenciómetro de 100 KΩ (o cualquier otro valor de tu elección). 
7) Display LCD de 16x2 Caracteres. 
Software Necesario 
• Compilador CCS PCWH IDE (PIC C Compiler) o superior. 
http://www.ccsinfo.com/downloads.php 
• PICKit® 2 Programmer o equivalente. 
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDoc- 
Name=en023805 
1 Se pueden implementar una diversa variedad de PICs. Véase el Manual de Usuario en la sección “Microcontro-ladores 
Compatibles“.
www.novellius.com 
5 
Desarrollo del Programa de Control en 
Lenguaje C 
1) Crea un nuevo proyecto de control en PIC C Compiler y sálvalo bajo el nombre de “VoltimetroCD.c”. 
Fig. 1 Creación de un archivo de código fuente C. 
2) Añade un nuevo proyecto al archivo de código fuente, implementando el PIC18F45502. 
Fig. 2 Inserción de un nuevo proyecto al archivo de código fuente C. 
2 Se pueden implementar una diversa variedad de PICs. Véase el Manual de Usuario en la sección “Microcontro-ladores 
Compatibles“.
www.novellius.com 
3) A continuación se presenta un diagrama de flujo para comprender la secuencia lógica que debe 
6 
obedecer el programa de control. 
Declaración de variables 
necesarias Configuración de Puertos Configuración de la 
Conversión A/D 
¿La Conversión A/D ha Iniciar la Conversión A/D Ciclo Inifnito 
terminado? 
Mostrar el Voltaje y el 
valor A/D 
Fig. 3 Diagrama de la lógica del programa de control. 
Incluir archivos cabecera 
y librerías necesarios. 
Configuración de fusibles 
y reloj de procesamiento 
Almacenar el valor 
obtenido de la Conversión 
A/D 
Escalar el valor A/D a 
Volts 
Si 
4) Captura el siguiente código sobre el archivo “VoltimetroCD.c”. 
1. #include <18F4550.h> 
2. #fuses HSPLL, NOWDT, NOPROTECT, PLL5 
3. #use delay(clock=20MHz) 
4. #include <lcd.c> 
5. int8 valorAdc; 
6. float valorEsc; 
7. float k = 0.019607843137254; 
8. void main(){ 
9. lcd_init(); 
10. setup_adc_ports(AN0); 
11. setup_adc(ADC_CLOCK_DIV_16); 
12. set_adc_channel(0); 
13. delay_us(20); 
14. while(true) { 
15. read_adc(ADC_START_ONLY); 
No
www.novellius.com 
7 
16. while (!adc_done()); 
17. valorAdc = read_adc(ADC_READ_ONLY); 
18. valorEsc = valorAdc * k; 
19. lcd_gotoxy(1,1); 
20. printf(lcd_putc,”Valor ADC:%3u”,valorAdc); 
21. lcd_gotoxy(1,2); 
22. printf(lcd_putc,”Voltaje:%f”,valorEsc); 
23. printf(lcd_putc,” V”); 
24. delay_ms(100); 
25. } 
26. } 
Código 1-2 
1. #include <18F4550.h> 
2. #fuses HSPLL, NOWDT, NOPROTECT, PLL5 
La línea 1 importa el archivo cabecera del modelo de microcontrolador a implementar en 
el proyecto. En la línea 2 se fijan los fusibles a utilizar al en nuestra solución, los cuales se 
detallan a continuación. 
HSPLL. High Speed Crystal/Resonator with 
PLL enabled) 
Cristal/Resonador (Oscilador) de Alta 
Velocidad con Pre-escalador (PLL) 
Habilitado 
NOWDT. No Watch Dog Timer 
Temporizador Perro Guardián Deshabilitado 
NOPROTECT. Code not protected from 
reading Código sin protección contra lectura. 
PLL5. Divide By 5 (20MHz oscillator input) Pre-escalador habilitado con divisor de 
frecuencia por 5, para osciladores de 
20MHz. 
Fig. 4 Descripción de los fusibles implementados en el programa de control. 
Código 3-4 
3. #use delay(clock=20MHz) 
4. #include <lcd.c> 
En la línea 3 se indica la frecuencia del cristal físico que se va a utilizar en la TEMPIC-45, esta 
velocidad depende directamente del fusible PLLX hallado en la Línea 2. La línea 4 incluye en 
el código, la librería con todas las funciones de control para la Pantalla LCD.
www.novellius.com 
8 
Código 5-7 
5. int8 valorAdc; 
6. float valorEsc; 
7. float k = 0.019607843137254; 
La línea 5 declara una variable entera de 8 bits denominada “valorAdc”, ésta va a almacenar 
el resultado de la conversión A/D. La línea 6 declara una variable con punto flotante (o punto 
decimal) llamada “valorEsc”, la cual va a guardar el valor A/D escalado (es decir convertido 
a Volts). La línea 7 se trata de la declaración de una constante llamada “k”, ésta será parte 
vital en el proceso de mostrar el valor A/D en Volts. 
Código 8-9 
8. void main(){ 
9. lcd_init(); 
La línea 8 establece el comienzo de la ejecución del programa. La línea 9 es la directiva 
primaria para el manejo de una Pantalla LCD de 16x2 caracteres, pues inicializa y estabiliza el 
Display LCD para comenzar a transmitir y mostrar los caracteres. Recuerda que al controlar 
una Pantalla LCD esta directiva deberá ser siempre la primera que invoques en tu código.
www.novellius.com 
9 
Código 10-13 
10. setup_adc_ports(AN0); 
11. setup_adc(ADC_CLOCK_DIV_16); 
12. set_adc_channel(0); 
13. delay_us(20); 
La línea 10 establece las entradas analógicas que se van a utilizar en la conversión A/D, 
en este caso es la entrada cero (ubicada en RA0). En la línea 11 se ajusta la velocidad de la 
conversión A/D. 
El parámetro dentro de esta instrucción ADC_CLOCK_DIV_16, divide por 16 la velocidad del 
cristal físico utilizado en el PIC. La hoja de datos del PIC18F4550, declara que la velocidad 
adecuada para realizar una conversión A/D debe ser la más pequeña posible, pero siempre 
mayor al mínimo requerido. Para el PIC18F4550 la velocidad mínima equivale a 0.7μs. La 
elección del divisor por 16 como la velocidad adecuada, se comprueba fácilmente con la 
siguiente expresión: 
Fig. 5 Expresión para obtener el tiempo ideal de la Conversión A/D. 
Como se puede observar al dividir el oscilador físico por 16, se obtiene la velocidad más 
pequeña posible, pero superior al mínimo requerido para la conversión A/D, es decir, 
0.8.μs > 0.7μs 
La línea 12 declara el canal por el cual va a ser adquirida la señal, en este caso, el numero 
cero. Por último la línea 13 crea un retardo de 20μs para estabilizar el conversor A/D.
www.novellius.com 
10 
Código 14-18 
14. while(true) { 
15. read_adc(ADC_START_ONLY); 
16. while (!adc_done()); 
17. valorAdc = read_adc(ADC_READ_ONLY); 
18. valorEsc = valorAdc * k; 
La línea 14 presenta el comienzo de un ciclo infinito para continuamente realizar la 
adquisición de la señal analógica. La línea 15 comienza la conversión A/D. Ya que la línea 
15 nunca indica cuando la conversión A/D termina, la línea 16 crea un ciclo mientras la 
conversión no haya finalizado. En caso de que la conversión A/D haya finalizado; la línea 
17 lee el valor obtenido de la conversión y lo almacena en la variable “valorAdc”. El valor 
obtenido de la conversión A/D oscila entre 0 y 255, debido a que usamos 8 bits de precisión 
en la conversión (28=256, es decir desde 0 hasta 255), es por esto que es necesario escalar 
el valor obtenido para convertirlo a Volts. Esto se logra a través de la siguiente expresión: 
Fig. 6 Cálculo de la escala de Voltaje. 
Con la expresión anterior, se deduce que si se obtuviera por ejemplo, el valor 128 de la 
conversión A/D y se multiplicara por la escala, entonces se obtendría el voltaje del 
potenciómetro: 
Fig. 7 Expresión para obtener el Voltaje del Potenciómetro. 
La línea 18 almacena el producto del valor proveniente de la conversión A/D multiplicado 
por la escala en la variable “valorEsc”.
www.novellius.com 
11 
Código 19-23 
19. lcd_gotoxy(1,1); 
20. printf(lcd_putc,”Valor ADC:%3u”,valorAdc); 
21. lcd_gotoxy(1,2); 
22. printf(lcd_putc,”Voltaje:%f”,valorEsc); 
23. printf(lcd_putc,” V”); 
La línea 19 posiciona el cursor de la pantalla LCD en la columna 1, renglón 1. La línea 20 es 
un conjunto de funciones para imprimir una secuencia de caracteres en una sola línea de 
código, el cual se desglosan a continuación: 
printf Función para imprimir un valor con un 
formato especificado. 
lcd_putc Función para escribir un sólo caracter en la 
Pantalla LCD. 
”Valor ADC:%3u” 
Expresión que mostrará en la pantalla LCD el 
mensaje “Valor ADC:”. La expresión ”%3u” 
es el formato con el cual se va a presentar 
el valor de la variable “valorAdc”, o sea, 3 
dígitos de un entero sin signo. 
Fig. 8 Desglose de la función “printf“ para la impresión en un Display LCD. 
El resultado final deberá ser similar al siguiente: 
Fig. 9 Muestra de un valor Entero sin Signo en la Pantalla LCD.
www.novellius.com 
La línea 21 posiciona el cursor de la pantalla LCD en la columna 1 renglón 2. La línea 22 
vuelve a recurrir a una impresión con formato, esta vez con el voltaje. El único cambio que se 
observa de esta línea con respecto a la línea 20 es el formato de impresión ”%f”, el cual se 
trata de un número con punto flotante. Éste por defecto imprime un entero más dos cifras 
después del punto decimal. Finalmente la línea 23 concatena el caracter “V” para indicar 
que las unidades son Volts. 
12 
El mensaje compuesto final se visualizará de la siguiente forma: 
Fig. 10 Mostrar un valor entero sin signo y un valor flotante en una Pantalla LCD. 
Código 24-26 
24. delay_ms(100); 
25. } 
26. } 
La línea 24 genera un retardo de 100μs para estabilizar el proceso de la adquisición de la 
señal. La línea 25 indica el cierre del ciclo infinito declarado en la línea 14, y para finalizar 
el código de la solución, la línea 26 establece el fin del método principal, o sea, el fin del 
programa.
www.novellius.com 
13 
5) Pulsa sobre el botón Compile en la sección del mismo nombre. 
Fig. 11 Compilación del programa de control. 
6) Si el código se ha capturado sin errores, aparecerá la siguiente ventana confirmando que la 
compilación ha sido exitosa; de lo contrario pulsa doble click sobre los errores que se listen y 
verifica la sintaxis del código fuente. 
Fig. 12 Confirmación de éxito en la compilación.
www.novellius.com 
14 
Acondicionamiento de la TEMPIC-45 
1) Coloca y asegura el Microcontrolador en la Base ZIF de la TEMPIC-45. 
Fig. 13 Colocación del Microcontrolador en la TEMPIC-45. 
2) Ubica la Pantalla LCD de 16x2 caracteres en el Módulo de Conexión para Pantalla LCD de la 
TEMPIC-45. Recuerda que este módulo alimenta la Pantalla LCD y ajusta automáticamente su 
contraste. 
Fig. 14 Conexión de la Pantalla LCD a la TEMPIC-45.
www.novellius.com 
3) Asegúrate de que los pines 1 y 16 de la Pantalla LCD estén perfectamente alineados con el 
15 
Módulo de Conexión para Pantalla LCD de la tarjeta entrenadora. 
Fig. 15 Comprobación de la conexión de la Pantalla LCD a la TEMPIC-45. 
4) Coloca el programador de PICs en el Módulo de Programación, corroborando que los pines del 
módulo coincidan con los del programador en perfecto orden. 
Fig. 16 Conexión del programador de PICs a la TEMPIC-45.
www.novellius.com 
16 
5) Sitúa el jumper Selector de Alimentación desde el Programador en la posición “OFF”. 
Fig. 17 Alimentación deshabilitada desde el Programador de PICs. 
6) Ubica el Selector de Entrada de Alimentación en la posición “USB”. De esta forma la TEMPIC-45 
se energizará a través de la Interfaz USB. 
Fig. 18 Configuración de la TEMPIC-45 para Alimentación mediante la Interfaz USB.
www.novellius.com 
7) Mediante cables Dupont realiza la conexión del Display LCD al PIC como se muestra en el 
17 
siguiente diagrama. 
D6 
D5 
D4 
D3 
D2 
LCD 16x2 Caracteres 
D1 
D0 
RW 
RS 
Fig. 19 Diagrama de conexión de una Pantalla LCD al PIC18F4550. 
8) Al terminar las conexiones correspondientes, el resultado deberá ser similar al siguiente. 
Fig. 20 Conexión de una Pantalla LCD a la TEMPIC-45. 
RA0/AN0 
2 
RA1/AN1 
3 
RA2/AN2/VREF-/CVREF 
4 
RA3/AN3/VREF+ 
5 
RA4/T0CKI/C1OUT/RCV 
6 
RA5/AN4/SS/LVDIN/C2OUT 
7 
RA6/OSC2/CLKO 
14 
OSC1/CLKI 
13 
RB0/AN12/INT0/FLT0/SDI/SDA 
33 
RB1/AN10/INT1/SCK/SCL 
34 
RB2/AN8/INT2/VMO 
35 
RB3/AN9/CCP2/VPO 
36 
RB4/AN11/KBI0/CSSPP 
37 
RB5/KBI1/PGM 
38 
RB6/KBI2/PGC 
39 
RB7/KBI3/PGD 
40 
RC0/T1OSO/T1CKI 
15 
RC1/T1OSI/CCP2/UOE 
16 
RC2/CCP1/P1A 
17 
VUSB 
18 
RC4/D-/VM 
23 
RC5/D+/VP 
24 
RC6/TX/CK 
25 
RC7/RX/DT/SDO 
26 
RD0/SPP0 
19 
RD1/SPP1 
20 
RD2/SPP2 
21 
RD3/SPP3 
22 
RD4/SPP4 
27 
RD5/SPP5/P1B 
28 
RD6/SPP6/P1C 
29 
RD7/SPP7/P1D 
30 
RE0/AN5/CK1SPP 
8 
RE1/AN6/CK2SPP 
9 
RE2/AN7/OESPP 
10 
RE3/MCLR/VPP 
1 
PIC18F4550 
D7 
14 
13 
12 
11 
10 
9 
8 
7 
E 
6 
5 
4 
VSS 
1 
VDD 
2 
VEE 
3
www.novellius.com 
9) Realiza la conexión del Potenciómetro de 100 KOhm al pin RA0 de la TEMPIC-45, como se 
18 
indica en la siguiente figura. 
RA0/AN0 
2 
RA1/AN1 
3 
RA2/AN2/VREF-/CVREF 
4 
RA3/AN3/VREF+ 
5 
RA4/T0CKI/C1OUT/RCV 
6 
RA5/AN4/SS/LVDIN/C2OUT 
7 
RA6/OSC2/CLKO 
14 
OSC1/CLKI 
13 
RB0/AN12/INT0/FLT0/SDI/SDA 
33 
RB1/AN10/INT1/SCK/SCL 
34 
RB2/AN8/INT2/VMO 
35 
RB3/AN9/CCP2/VPO 
36 
RB4/AN11/KBI0/CSSPP 
37 
RB5/KBI1/PGM 
38 
RB6/KBI2/PGC 
39 
RB7/KBI3/PGD 
40 
RC0/T1OSO/T1CKI 
15 
RC1/T1OSI/CCP2/UOE 
16 
RC2/CCP1/P1A 
17 
VUSB 
18 
RC4/D-/VM 
23 
RC5/D+/VP 
24 
RC6/TX/CK 
25 
RC7/RX/DT/SDO 
26 
RD0/SPP0 
19 
RD1/SPP1 
20 
RD2/SPP2 
21 
RD3/SPP3 
22 
RD4/SPP4 
27 
RD5/SPP5/P1B 
28 
RD6/SPP6/P1C 
29 
RD7/SPP7/P1D 
30 
RE0/AN5/CK1SPP 
8 
RE1/AN6/CK2SPP 
9 
RE2/AN7/OESPP 
10 
RE3/MCLR/VPP 
1 
PIC18F4550 
100KOhm 
+5V 
Fig. 21 Diagrama de conexión de un Potenciómetro al pin RA0 del PIC18F4550. 
10) Una vez realizada la conexión del Potenciómetro, asegúrate que el resultado sea similar a la 
siguiente figura. 
Fig. 22 Conexión de un Potenciómetro al pin RA0 de la TEMPIC-45.
www.novellius.com 
19 
Programación del Microcontrolador 
1) Ejecuta la aplicación PICKit 2® Programmer, ahora verifica que el programa reconozca el modelo 
del Microcontrolador implementado en la TEMPIC-45. 
Fig. 23 Ventana principal del PICKit 2® Programmer. 
2) Importa el archivo llamado “VoltimetroCD.hex”, hallado en la ruta en la cual salvaste el archivo 
de código fuente C. 
Fig. 24 Importación del archivo compilado del código fuente C.
www.novellius.com 
3) Programa el Microcontrolador pulsando sobre el botón Write. Al terminar el proceso corrobora 
que la programación del PIC haya sido exitosa; de lo contrario, verifica el acondicionamiento de 
la TEMPIC-45. 
20 
Fig. 25 Programación exitosa del Microcontrolador.
www.novellius.com 
21 
Comprobación del Funcionamiento del 
Programa de Control 
1) Observa como se muestra el voltaje del potenciómetro y al valor ADC asociado, una vez 
completada la solución. Varía la resistencia del potenciómetro y comprueba como el voltaje y el 
valor de la conversión A/D son desplegados en la Pantalla LCD de 16x2 caracteres. 
Fig. 26 Verificación del funcionamiento de la solución de control.
www.novellius.com 
22 
Prácticas Propuestas 
Los siguientes retos comprenden el contenido de esta Práctica, junto con el conocimiento adquirido 
en las Prácticas I, II y III. 
1) Realiza una mejora para controlar límites de voltaje en esta práctica, basándote en los siguientes 
puntos. 
a. Muestra en la primera línea de la Pantalla LCD el mensaje “Voltaje max = 3V“. Mientras 
que en el segundo renglón solo deberá desplegarse el voltaje actual del potenciómetro. 
Puedes mostrar el voltaje como prefieras, por ejemplo “V = 3.4”, “voltaje = 3.4V”, etc. 
b. Conecta 2 botones en los pines RB4 y RB5, estos controlarán los tres niveles máximos 
de voltaje. Los cuales son 3V, 4V y 4.5V. 
c. El botón en RB4 se encargará del decremento del voltaje máximo y lo mostrará en el 
renglón 1 de la Pantalla LCD alterando el mensaje original. 
d. El botón conectado al pin RB5 deberá incrementar el voltaje máximo del potenciómetro, 
igualmente mostrándolo en el Display LCD. Recuerda que ambos botones sólo pueden 
ir cambiando los valores entre los 3 voltajes permitidos del punto b. 
e. Cuando el voltaje máximo sea rebasado, enciende y mantén iluminados los LEDs 
de RB0 a RB3. Una vez que el voltaje del potenciómetro se encuentre por debajo del 
máximo, los LEDs deberán apagarse para indicar que la alerta ya no se encuentra activa. 
2) En base al siguiente diagrama esquemático y material, programa e implementa un termómetro 
digital. 
Material 
a. Sensor de Temperatura LM35. 
b. Capacitor Electrolítico de 10uF. 
c. Amplificador Operacional LM358N. 
d. Resistencia de 5.1 KOhm. 
e. Potenciómetro de 100 KOhm.
www.novellius.com 
23 
Diagrama Esquemático 
28.0 
3 
1 
VOUT 
2 
LM35 
3 
2 
1 
4 8 
LM358N 
5 
6 
7 
4 8 
LM358N 
+5V 
10u 
5.1k 
100K 
Entrada Analógica PIC
www.novellius.com 
Para conocer la totalidad de cursos y productos en electrónica que ofrecemos visita: 
www.novellius.com 
o escríbenos todas tus inquietudes y comentarios a: 
contacto@novellius.com 
¿Tienes dudas acerca de esta Práctica? 
Échale un vistazo a nuestro Curso Básico de Microcontroladores, el cual te impartimos a tu propio 
ritmo, con instructores calificados y sin salir de tu escuela. 
Para preguntas acerca de soporte técnico escríbenos a: 
soporte@novellius.com

Más contenido relacionado

La actualidad más candente

Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
SANTIAGO PABLO ALBERTO
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
Luis Zurita
 
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...
SANTIAGO PABLO ALBERTO
 
Analysis and design of analog integrated circuits
Analysis and design of analog integrated circuitsAnalysis and design of analog integrated circuits
Analysis and design of analog integrated circuits
Badam Gantumur
 
Digital VLSI Design and FPGA Implementation
Digital VLSI Design and FPGA ImplementationDigital VLSI Design and FPGA Implementation
Digital VLSI Design and FPGA Implementation
Amber Bhaumik
 
Realimentacion negativa
Realimentacion negativaRealimentacion negativa
Realimentacion negativa
elliearguello
 

La actualidad más candente (20)

Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comun
 
Lcd module interface with xilinx software using verilog
Lcd module interface with xilinx software using verilogLcd module interface with xilinx software using verilog
Lcd module interface with xilinx software using verilog
 
Practicas de robotica utilizando matlab - Roque
Practicas de robotica utilizando matlab -  RoquePracticas de robotica utilizando matlab -  Roque
Practicas de robotica utilizando matlab - Roque
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
 
verilog
verilogverilog
verilog
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 
Mat lab manipulación de señales de audio
Mat lab manipulación de señales de audioMat lab manipulación de señales de audio
Mat lab manipulación de señales de audio
 
Circuito Sintonizado
Circuito SintonizadoCircuito Sintonizado
Circuito Sintonizado
 
16a clase otras aplicaciones de comparadores
16a clase otras aplicaciones de comparadores16a clase otras aplicaciones de comparadores
16a clase otras aplicaciones de comparadores
 
135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt
 
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...
 
I2C programming with C and Arduino
I2C programming with C and ArduinoI2C programming with C and Arduino
I2C programming with C and Arduino
 
Amplificador de audio
Amplificador de audioAmplificador de audio
Amplificador de audio
 
Analysis and design of analog integrated circuits
Analysis and design of analog integrated circuitsAnalysis and design of analog integrated circuits
Analysis and design of analog integrated circuits
 
Amplificador diferencial
Amplificador diferencialAmplificador diferencial
Amplificador diferencial
 
ZERO WIRE LOAD MODEL.pptx
ZERO WIRE LOAD MODEL.pptxZERO WIRE LOAD MODEL.pptx
ZERO WIRE LOAD MODEL.pptx
 
1.2 control pid INGENIERIA DEL CONTROL
1.2 control pid INGENIERIA DEL CONTROL1.2 control pid INGENIERIA DEL CONTROL
1.2 control pid INGENIERIA DEL CONTROL
 
Digital VLSI Design and FPGA Implementation
Digital VLSI Design and FPGA ImplementationDigital VLSI Design and FPGA Implementation
Digital VLSI Design and FPGA Implementation
 
Realimentacion negativa
Realimentacion negativaRealimentacion negativa
Realimentacion negativa
 
Control por Retroalimentación de Estado y Diseño de Observadores
Control por Retroalimentación de Estado y Diseño de ObservadoresControl por Retroalimentación de Estado y Diseño de Observadores
Control por Retroalimentación de Estado y Diseño de Observadores
 

Similar a TEMPIC-45 Práctica IV. Voltímetro de CD

Manual Teorico
Manual TeoricoManual Teorico
Manual Teorico
yennismart
 
Basic
BasicBasic
Basic
vcesp
 
Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...
Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...
Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...
SANTIAGO PABLO ALBERTO
 

Similar a TEMPIC-45 Práctica IV. Voltímetro de CD (20)

TEMPIC-45 Práctica II. Control de un LED a través de un botón
TEMPIC-45 Práctica II. Control de un LED a través de un botónTEMPIC-45 Práctica II. Control de un LED a través de un botón
TEMPIC-45 Práctica II. Control de un LED a través de un botón
 
Práctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCDPráctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCD
 
TEMPIC-45 Práctica I. Control de un LED
TEMPIC-45 Práctica I. Control de un LEDTEMPIC-45 Práctica I. Control de un LED
TEMPIC-45 Práctica I. Control de un LED
 
Libro de lenguaje c
Libro de lenguaje cLibro de lenguaje c
Libro de lenguaje c
 
C++
C++C++
C++
 
Manual C++
Manual C++Manual C++
Manual C++
 
Manual Teorico
Manual TeoricoManual Teorico
Manual Teorico
 
Herramientas del robotico_pdf
Herramientas del robotico_pdfHerramientas del robotico_pdf
Herramientas del robotico_pdf
 
Microcontroladores: Tutorial de microcontroladores PIC
Microcontroladores: Tutorial de microcontroladores PIC Microcontroladores: Tutorial de microcontroladores PIC
Microcontroladores: Tutorial de microcontroladores PIC
 
PLC: Controladores Guardlogix
PLC: Controladores GuardlogixPLC: Controladores Guardlogix
PLC: Controladores Guardlogix
 
Tutorial Microprocesadores Pic iniciación rápida (Miguel Torres)
Tutorial Microprocesadores Pic  iniciación rápida  (Miguel Torres) Tutorial Microprocesadores Pic  iniciación rápida  (Miguel Torres)
Tutorial Microprocesadores Pic iniciación rápida (Miguel Torres)
 
Tutorial pic
Tutorial picTutorial pic
Tutorial pic
 
Tutorial pic
Tutorial picTutorial pic
Tutorial pic
 
MiCroControladores
MiCroControladoresMiCroControladores
MiCroControladores
 
Tutorial pic
Tutorial picTutorial pic
Tutorial pic
 
Proyecto final facultad de ingeniería.pdf
Proyecto final facultad de ingeniería.pdfProyecto final facultad de ingeniería.pdf
Proyecto final facultad de ingeniería.pdf
 
DIAGON Coag4D manual de usuario v2.10 - esp
DIAGON Coag4D   manual de usuario v2.10 - espDIAGON Coag4D   manual de usuario v2.10 - esp
DIAGON Coag4D manual de usuario v2.10 - esp
 
Basic
BasicBasic
Basic
 
Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...
Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...
Electrónica digital con VHDL: Diseño e implementación de practicas con FPGA p...
 
condiciones-tecnicas-para-conexion-pmgd
condiciones-tecnicas-para-conexion-pmgdcondiciones-tecnicas-para-conexion-pmgd
condiciones-tecnicas-para-conexion-pmgd
 

Último

PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
ctrlc3
 

Último (20)

habilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdfhabilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdf
 
Instalación de GLPI en Debian Linux paso a paso
Instalación de GLPI en Debian Linux paso a pasoInstalación de GLPI en Debian Linux paso a paso
Instalación de GLPI en Debian Linux paso a paso
 
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagneticoPresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
 
Los vidrios eléctricos en un automóvil.pptx
Los vidrios eléctricos en un automóvil.pptxLos vidrios eléctricos en un automóvil.pptx
Los vidrios eléctricos en un automóvil.pptx
 
Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidad
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 
Efecto. Fotovoltaico y paneles.pdf
Efecto.     Fotovoltaico  y  paneles.pdfEfecto.     Fotovoltaico  y  paneles.pdf
Efecto. Fotovoltaico y paneles.pdf
 
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALESLA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
 
Trabajo Mecanismos de cuatro barras.pdf
Trabajo  Mecanismos de cuatro barras.pdfTrabajo  Mecanismos de cuatro barras.pdf
Trabajo Mecanismos de cuatro barras.pdf
 
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdfSISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
 
problemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelosproblemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelos
 
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
 
Análisis Combinatorio ,EJERCICIOS Y PROBLEMAS RESUELTOS
Análisis Combinatorio ,EJERCICIOS Y PROBLEMAS RESUELTOSAnálisis Combinatorio ,EJERCICIOS Y PROBLEMAS RESUELTOS
Análisis Combinatorio ,EJERCICIOS Y PROBLEMAS RESUELTOS
 
Mecánica de fluidos 1 universidad continental
Mecánica de fluidos 1 universidad continentalMecánica de fluidos 1 universidad continental
Mecánica de fluidos 1 universidad continental
 
Mapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIASMapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIAS
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
 
&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
 
Ergonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworking
Ergonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworkingErgonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworking
Ergonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworking
 

TEMPIC-45 Práctica IV. Voltímetro de CD

  • 1. Capacitación Certificada, Componentes & Soluciones en Electrónica y Programación Práctica IV Voltímetro de CD Revisión 2 www.novellius.com contacto@novellius.com
  • 2. www.novellius.com Índice de Contenido Objetivo...........................................................................................................................................................................................................4 Solución Propuesta................................................................................................................................................................................4 Material Requerido..................................................................................................................................................................................4 Software Necesario................................................................................................................................................................................4 Desarrollo del Programa de Control en Lenguaje C.......................................................................................................5 Acondicionamiento de la TEMPIC-45......................................................................................................................................14 Programación del Microcontrolador..........................................................................................................................................19 Comprobación del Funcionamiento del Programa de Control...............................................................................21 Prácticas Propuestas.............................................................................................................................................................................22
  • 3. www.novellius.com Índice de Figuras Fig. 1 Creación de un archivo de código fuente C.......................................................................................................5 Fig. 2 Inserción de un nuevo manual de proyecto al archivo de código fuente C...............................5 Fig. 3 Diagrama de la lógica del programa de control..............................................................................................6 Fig. 4 Descripción de los fusibles implementados en el programa de control......................................7 Fig. 5 Expresión para obtener el tiempo ideal de la Conversión A/D...........................................................9 Fig. 6 Cálculo de la escala de Voltaje....................................................................................................................................10 Fig. 7 Expresión para obtener el Voltaje del Potenciómetro................................................................................10 Fig. 8 Desglose de la función “printf“ para la impresión en un Display LCD........................................... 11 Fig. 9 Muestra de un valor Entero sin Signo en la Pantalla LCD....................................................................... 11 Fig. 10 Mostrar un valor entero sin signo y un valor flotante en una Pantalla LCD............................... 12 Fig. 11 Compilación del programa de control................................................................................................................... 13 Fig. 12 Confirmación de éxito en la compilación............................................................................................................ 13 Fig. 13 Colocación del Microcontrolador en la TEMPIC-45..................................................................................... 14 Fig. 14 Conexión de la Pantalla LCD a la TEMPIC-45.................................................................................................. 14 Fig. 15 Comprobación de la conexión de la Pantalla LCD a la TEMPIC-45................................................. 15 Fig. 16 Conexión del programador de PICs a la TEMPIC-45.................................................................................. 15 Fig. 17 Alimentación deshabilitada desde el Programador de PICs................................................................. 16 Fig. 18 Configuración de la TEMPIC-45 para Alimentación mediante la Interfaz USB..................... 16 Fig. 19 Diagrama de conexión de una Pantalla LCD al PIC18F4550................................................................ 17 Fig. 20 Conexión de una Pantalla LCD a la TEMPIC-45............................................................................................. 17 Fig. 21 Diagrama de conexión de un Potenciómetro al pin RA0 del PIC18F4550................................. 18 Fig. 22 Conexión de un Potenciómetro al pin RA0 de la TEMPIC-45.............................................................. 18 Fig. 23 Ventana principal del PICKit 2® Programmer................................................................................................... 19 Fig. 24 Importación del archivo compilado del código fuente C......................................................................... 19 Fig. 25 Programación exitosa del Microcontrolador.....................................................................................................20 Fig. 26 Verificación del funcionamiento de la solución de control.................................................................... 21
  • 4. www.novellius.com 4 Objetivo Desarrollar un programa de control involucrando algunos tópicos intermedios de programación de PICs, como el control de una Pantalla LCD de 16x2 caracteres, así como la implementación de una Conversión Analógico/Digital (A/D). Solución Propuesta Este ejemplo consiste en realizar la conversión Analógico/Digital (A/D) de una señal proveniente de un potenciómetro, alimentado con +5V como voltaje de referencia. Posteriormente mostrar en el Display LCD de 16x2 caracteres, tanto el valor de la conversión A/D, como el voltaje asociado al potenciómetro. Material Requerido 1) Tarjeta Entrenadora TEMPIC-45. 2) Programador para Microcontroladores PIC (PICKit 2® o equivalente). 3) Microcontrolador PIC18F45501. 4) Oscilador de 20 MHz. 5) Cables Dupont. 6) Potenciómetro de 100 KΩ (o cualquier otro valor de tu elección). 7) Display LCD de 16x2 Caracteres. Software Necesario • Compilador CCS PCWH IDE (PIC C Compiler) o superior. http://www.ccsinfo.com/downloads.php • PICKit® 2 Programmer o equivalente. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDoc- Name=en023805 1 Se pueden implementar una diversa variedad de PICs. Véase el Manual de Usuario en la sección “Microcontro-ladores Compatibles“.
  • 5. www.novellius.com 5 Desarrollo del Programa de Control en Lenguaje C 1) Crea un nuevo proyecto de control en PIC C Compiler y sálvalo bajo el nombre de “VoltimetroCD.c”. Fig. 1 Creación de un archivo de código fuente C. 2) Añade un nuevo proyecto al archivo de código fuente, implementando el PIC18F45502. Fig. 2 Inserción de un nuevo proyecto al archivo de código fuente C. 2 Se pueden implementar una diversa variedad de PICs. Véase el Manual de Usuario en la sección “Microcontro-ladores Compatibles“.
  • 6. www.novellius.com 3) A continuación se presenta un diagrama de flujo para comprender la secuencia lógica que debe 6 obedecer el programa de control. Declaración de variables necesarias Configuración de Puertos Configuración de la Conversión A/D ¿La Conversión A/D ha Iniciar la Conversión A/D Ciclo Inifnito terminado? Mostrar el Voltaje y el valor A/D Fig. 3 Diagrama de la lógica del programa de control. Incluir archivos cabecera y librerías necesarios. Configuración de fusibles y reloj de procesamiento Almacenar el valor obtenido de la Conversión A/D Escalar el valor A/D a Volts Si 4) Captura el siguiente código sobre el archivo “VoltimetroCD.c”. 1. #include <18F4550.h> 2. #fuses HSPLL, NOWDT, NOPROTECT, PLL5 3. #use delay(clock=20MHz) 4. #include <lcd.c> 5. int8 valorAdc; 6. float valorEsc; 7. float k = 0.019607843137254; 8. void main(){ 9. lcd_init(); 10. setup_adc_ports(AN0); 11. setup_adc(ADC_CLOCK_DIV_16); 12. set_adc_channel(0); 13. delay_us(20); 14. while(true) { 15. read_adc(ADC_START_ONLY); No
  • 7. www.novellius.com 7 16. while (!adc_done()); 17. valorAdc = read_adc(ADC_READ_ONLY); 18. valorEsc = valorAdc * k; 19. lcd_gotoxy(1,1); 20. printf(lcd_putc,”Valor ADC:%3u”,valorAdc); 21. lcd_gotoxy(1,2); 22. printf(lcd_putc,”Voltaje:%f”,valorEsc); 23. printf(lcd_putc,” V”); 24. delay_ms(100); 25. } 26. } Código 1-2 1. #include <18F4550.h> 2. #fuses HSPLL, NOWDT, NOPROTECT, PLL5 La línea 1 importa el archivo cabecera del modelo de microcontrolador a implementar en el proyecto. En la línea 2 se fijan los fusibles a utilizar al en nuestra solución, los cuales se detallan a continuación. HSPLL. High Speed Crystal/Resonator with PLL enabled) Cristal/Resonador (Oscilador) de Alta Velocidad con Pre-escalador (PLL) Habilitado NOWDT. No Watch Dog Timer Temporizador Perro Guardián Deshabilitado NOPROTECT. Code not protected from reading Código sin protección contra lectura. PLL5. Divide By 5 (20MHz oscillator input) Pre-escalador habilitado con divisor de frecuencia por 5, para osciladores de 20MHz. Fig. 4 Descripción de los fusibles implementados en el programa de control. Código 3-4 3. #use delay(clock=20MHz) 4. #include <lcd.c> En la línea 3 se indica la frecuencia del cristal físico que se va a utilizar en la TEMPIC-45, esta velocidad depende directamente del fusible PLLX hallado en la Línea 2. La línea 4 incluye en el código, la librería con todas las funciones de control para la Pantalla LCD.
  • 8. www.novellius.com 8 Código 5-7 5. int8 valorAdc; 6. float valorEsc; 7. float k = 0.019607843137254; La línea 5 declara una variable entera de 8 bits denominada “valorAdc”, ésta va a almacenar el resultado de la conversión A/D. La línea 6 declara una variable con punto flotante (o punto decimal) llamada “valorEsc”, la cual va a guardar el valor A/D escalado (es decir convertido a Volts). La línea 7 se trata de la declaración de una constante llamada “k”, ésta será parte vital en el proceso de mostrar el valor A/D en Volts. Código 8-9 8. void main(){ 9. lcd_init(); La línea 8 establece el comienzo de la ejecución del programa. La línea 9 es la directiva primaria para el manejo de una Pantalla LCD de 16x2 caracteres, pues inicializa y estabiliza el Display LCD para comenzar a transmitir y mostrar los caracteres. Recuerda que al controlar una Pantalla LCD esta directiva deberá ser siempre la primera que invoques en tu código.
  • 9. www.novellius.com 9 Código 10-13 10. setup_adc_ports(AN0); 11. setup_adc(ADC_CLOCK_DIV_16); 12. set_adc_channel(0); 13. delay_us(20); La línea 10 establece las entradas analógicas que se van a utilizar en la conversión A/D, en este caso es la entrada cero (ubicada en RA0). En la línea 11 se ajusta la velocidad de la conversión A/D. El parámetro dentro de esta instrucción ADC_CLOCK_DIV_16, divide por 16 la velocidad del cristal físico utilizado en el PIC. La hoja de datos del PIC18F4550, declara que la velocidad adecuada para realizar una conversión A/D debe ser la más pequeña posible, pero siempre mayor al mínimo requerido. Para el PIC18F4550 la velocidad mínima equivale a 0.7μs. La elección del divisor por 16 como la velocidad adecuada, se comprueba fácilmente con la siguiente expresión: Fig. 5 Expresión para obtener el tiempo ideal de la Conversión A/D. Como se puede observar al dividir el oscilador físico por 16, se obtiene la velocidad más pequeña posible, pero superior al mínimo requerido para la conversión A/D, es decir, 0.8.μs > 0.7μs La línea 12 declara el canal por el cual va a ser adquirida la señal, en este caso, el numero cero. Por último la línea 13 crea un retardo de 20μs para estabilizar el conversor A/D.
  • 10. www.novellius.com 10 Código 14-18 14. while(true) { 15. read_adc(ADC_START_ONLY); 16. while (!adc_done()); 17. valorAdc = read_adc(ADC_READ_ONLY); 18. valorEsc = valorAdc * k; La línea 14 presenta el comienzo de un ciclo infinito para continuamente realizar la adquisición de la señal analógica. La línea 15 comienza la conversión A/D. Ya que la línea 15 nunca indica cuando la conversión A/D termina, la línea 16 crea un ciclo mientras la conversión no haya finalizado. En caso de que la conversión A/D haya finalizado; la línea 17 lee el valor obtenido de la conversión y lo almacena en la variable “valorAdc”. El valor obtenido de la conversión A/D oscila entre 0 y 255, debido a que usamos 8 bits de precisión en la conversión (28=256, es decir desde 0 hasta 255), es por esto que es necesario escalar el valor obtenido para convertirlo a Volts. Esto se logra a través de la siguiente expresión: Fig. 6 Cálculo de la escala de Voltaje. Con la expresión anterior, se deduce que si se obtuviera por ejemplo, el valor 128 de la conversión A/D y se multiplicara por la escala, entonces se obtendría el voltaje del potenciómetro: Fig. 7 Expresión para obtener el Voltaje del Potenciómetro. La línea 18 almacena el producto del valor proveniente de la conversión A/D multiplicado por la escala en la variable “valorEsc”.
  • 11. www.novellius.com 11 Código 19-23 19. lcd_gotoxy(1,1); 20. printf(lcd_putc,”Valor ADC:%3u”,valorAdc); 21. lcd_gotoxy(1,2); 22. printf(lcd_putc,”Voltaje:%f”,valorEsc); 23. printf(lcd_putc,” V”); La línea 19 posiciona el cursor de la pantalla LCD en la columna 1, renglón 1. La línea 20 es un conjunto de funciones para imprimir una secuencia de caracteres en una sola línea de código, el cual se desglosan a continuación: printf Función para imprimir un valor con un formato especificado. lcd_putc Función para escribir un sólo caracter en la Pantalla LCD. ”Valor ADC:%3u” Expresión que mostrará en la pantalla LCD el mensaje “Valor ADC:”. La expresión ”%3u” es el formato con el cual se va a presentar el valor de la variable “valorAdc”, o sea, 3 dígitos de un entero sin signo. Fig. 8 Desglose de la función “printf“ para la impresión en un Display LCD. El resultado final deberá ser similar al siguiente: Fig. 9 Muestra de un valor Entero sin Signo en la Pantalla LCD.
  • 12. www.novellius.com La línea 21 posiciona el cursor de la pantalla LCD en la columna 1 renglón 2. La línea 22 vuelve a recurrir a una impresión con formato, esta vez con el voltaje. El único cambio que se observa de esta línea con respecto a la línea 20 es el formato de impresión ”%f”, el cual se trata de un número con punto flotante. Éste por defecto imprime un entero más dos cifras después del punto decimal. Finalmente la línea 23 concatena el caracter “V” para indicar que las unidades son Volts. 12 El mensaje compuesto final se visualizará de la siguiente forma: Fig. 10 Mostrar un valor entero sin signo y un valor flotante en una Pantalla LCD. Código 24-26 24. delay_ms(100); 25. } 26. } La línea 24 genera un retardo de 100μs para estabilizar el proceso de la adquisición de la señal. La línea 25 indica el cierre del ciclo infinito declarado en la línea 14, y para finalizar el código de la solución, la línea 26 establece el fin del método principal, o sea, el fin del programa.
  • 13. www.novellius.com 13 5) Pulsa sobre el botón Compile en la sección del mismo nombre. Fig. 11 Compilación del programa de control. 6) Si el código se ha capturado sin errores, aparecerá la siguiente ventana confirmando que la compilación ha sido exitosa; de lo contrario pulsa doble click sobre los errores que se listen y verifica la sintaxis del código fuente. Fig. 12 Confirmación de éxito en la compilación.
  • 14. www.novellius.com 14 Acondicionamiento de la TEMPIC-45 1) Coloca y asegura el Microcontrolador en la Base ZIF de la TEMPIC-45. Fig. 13 Colocación del Microcontrolador en la TEMPIC-45. 2) Ubica la Pantalla LCD de 16x2 caracteres en el Módulo de Conexión para Pantalla LCD de la TEMPIC-45. Recuerda que este módulo alimenta la Pantalla LCD y ajusta automáticamente su contraste. Fig. 14 Conexión de la Pantalla LCD a la TEMPIC-45.
  • 15. www.novellius.com 3) Asegúrate de que los pines 1 y 16 de la Pantalla LCD estén perfectamente alineados con el 15 Módulo de Conexión para Pantalla LCD de la tarjeta entrenadora. Fig. 15 Comprobación de la conexión de la Pantalla LCD a la TEMPIC-45. 4) Coloca el programador de PICs en el Módulo de Programación, corroborando que los pines del módulo coincidan con los del programador en perfecto orden. Fig. 16 Conexión del programador de PICs a la TEMPIC-45.
  • 16. www.novellius.com 16 5) Sitúa el jumper Selector de Alimentación desde el Programador en la posición “OFF”. Fig. 17 Alimentación deshabilitada desde el Programador de PICs. 6) Ubica el Selector de Entrada de Alimentación en la posición “USB”. De esta forma la TEMPIC-45 se energizará a través de la Interfaz USB. Fig. 18 Configuración de la TEMPIC-45 para Alimentación mediante la Interfaz USB.
  • 17. www.novellius.com 7) Mediante cables Dupont realiza la conexión del Display LCD al PIC como se muestra en el 17 siguiente diagrama. D6 D5 D4 D3 D2 LCD 16x2 Caracteres D1 D0 RW RS Fig. 19 Diagrama de conexión de una Pantalla LCD al PIC18F4550. 8) Al terminar las conexiones correspondientes, el resultado deberá ser similar al siguiente. Fig. 20 Conexión de una Pantalla LCD a la TEMPIC-45. RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA3/AN3/VREF+ 5 RA4/T0CKI/C1OUT/RCV 6 RA5/AN4/SS/LVDIN/C2OUT 7 RA6/OSC2/CLKO 14 OSC1/CLKI 13 RB0/AN12/INT0/FLT0/SDI/SDA 33 RB1/AN10/INT1/SCK/SCL 34 RB2/AN8/INT2/VMO 35 RB3/AN9/CCP2/VPO 36 RB4/AN11/KBI0/CSSPP 37 RB5/KBI1/PGM 38 RB6/KBI2/PGC 39 RB7/KBI3/PGD 40 RC0/T1OSO/T1CKI 15 RC1/T1OSI/CCP2/UOE 16 RC2/CCP1/P1A 17 VUSB 18 RC4/D-/VM 23 RC5/D+/VP 24 RC6/TX/CK 25 RC7/RX/DT/SDO 26 RD0/SPP0 19 RD1/SPP1 20 RD2/SPP2 21 RD3/SPP3 22 RD4/SPP4 27 RD5/SPP5/P1B 28 RD6/SPP6/P1C 29 RD7/SPP7/P1D 30 RE0/AN5/CK1SPP 8 RE1/AN6/CK2SPP 9 RE2/AN7/OESPP 10 RE3/MCLR/VPP 1 PIC18F4550 D7 14 13 12 11 10 9 8 7 E 6 5 4 VSS 1 VDD 2 VEE 3
  • 18. www.novellius.com 9) Realiza la conexión del Potenciómetro de 100 KOhm al pin RA0 de la TEMPIC-45, como se 18 indica en la siguiente figura. RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA3/AN3/VREF+ 5 RA4/T0CKI/C1OUT/RCV 6 RA5/AN4/SS/LVDIN/C2OUT 7 RA6/OSC2/CLKO 14 OSC1/CLKI 13 RB0/AN12/INT0/FLT0/SDI/SDA 33 RB1/AN10/INT1/SCK/SCL 34 RB2/AN8/INT2/VMO 35 RB3/AN9/CCP2/VPO 36 RB4/AN11/KBI0/CSSPP 37 RB5/KBI1/PGM 38 RB6/KBI2/PGC 39 RB7/KBI3/PGD 40 RC0/T1OSO/T1CKI 15 RC1/T1OSI/CCP2/UOE 16 RC2/CCP1/P1A 17 VUSB 18 RC4/D-/VM 23 RC5/D+/VP 24 RC6/TX/CK 25 RC7/RX/DT/SDO 26 RD0/SPP0 19 RD1/SPP1 20 RD2/SPP2 21 RD3/SPP3 22 RD4/SPP4 27 RD5/SPP5/P1B 28 RD6/SPP6/P1C 29 RD7/SPP7/P1D 30 RE0/AN5/CK1SPP 8 RE1/AN6/CK2SPP 9 RE2/AN7/OESPP 10 RE3/MCLR/VPP 1 PIC18F4550 100KOhm +5V Fig. 21 Diagrama de conexión de un Potenciómetro al pin RA0 del PIC18F4550. 10) Una vez realizada la conexión del Potenciómetro, asegúrate que el resultado sea similar a la siguiente figura. Fig. 22 Conexión de un Potenciómetro al pin RA0 de la TEMPIC-45.
  • 19. www.novellius.com 19 Programación del Microcontrolador 1) Ejecuta la aplicación PICKit 2® Programmer, ahora verifica que el programa reconozca el modelo del Microcontrolador implementado en la TEMPIC-45. Fig. 23 Ventana principal del PICKit 2® Programmer. 2) Importa el archivo llamado “VoltimetroCD.hex”, hallado en la ruta en la cual salvaste el archivo de código fuente C. Fig. 24 Importación del archivo compilado del código fuente C.
  • 20. www.novellius.com 3) Programa el Microcontrolador pulsando sobre el botón Write. Al terminar el proceso corrobora que la programación del PIC haya sido exitosa; de lo contrario, verifica el acondicionamiento de la TEMPIC-45. 20 Fig. 25 Programación exitosa del Microcontrolador.
  • 21. www.novellius.com 21 Comprobación del Funcionamiento del Programa de Control 1) Observa como se muestra el voltaje del potenciómetro y al valor ADC asociado, una vez completada la solución. Varía la resistencia del potenciómetro y comprueba como el voltaje y el valor de la conversión A/D son desplegados en la Pantalla LCD de 16x2 caracteres. Fig. 26 Verificación del funcionamiento de la solución de control.
  • 22. www.novellius.com 22 Prácticas Propuestas Los siguientes retos comprenden el contenido de esta Práctica, junto con el conocimiento adquirido en las Prácticas I, II y III. 1) Realiza una mejora para controlar límites de voltaje en esta práctica, basándote en los siguientes puntos. a. Muestra en la primera línea de la Pantalla LCD el mensaje “Voltaje max = 3V“. Mientras que en el segundo renglón solo deberá desplegarse el voltaje actual del potenciómetro. Puedes mostrar el voltaje como prefieras, por ejemplo “V = 3.4”, “voltaje = 3.4V”, etc. b. Conecta 2 botones en los pines RB4 y RB5, estos controlarán los tres niveles máximos de voltaje. Los cuales son 3V, 4V y 4.5V. c. El botón en RB4 se encargará del decremento del voltaje máximo y lo mostrará en el renglón 1 de la Pantalla LCD alterando el mensaje original. d. El botón conectado al pin RB5 deberá incrementar el voltaje máximo del potenciómetro, igualmente mostrándolo en el Display LCD. Recuerda que ambos botones sólo pueden ir cambiando los valores entre los 3 voltajes permitidos del punto b. e. Cuando el voltaje máximo sea rebasado, enciende y mantén iluminados los LEDs de RB0 a RB3. Una vez que el voltaje del potenciómetro se encuentre por debajo del máximo, los LEDs deberán apagarse para indicar que la alerta ya no se encuentra activa. 2) En base al siguiente diagrama esquemático y material, programa e implementa un termómetro digital. Material a. Sensor de Temperatura LM35. b. Capacitor Electrolítico de 10uF. c. Amplificador Operacional LM358N. d. Resistencia de 5.1 KOhm. e. Potenciómetro de 100 KOhm.
  • 23. www.novellius.com 23 Diagrama Esquemático 28.0 3 1 VOUT 2 LM35 3 2 1 4 8 LM358N 5 6 7 4 8 LM358N +5V 10u 5.1k 100K Entrada Analógica PIC
  • 24. www.novellius.com Para conocer la totalidad de cursos y productos en electrónica que ofrecemos visita: www.novellius.com o escríbenos todas tus inquietudes y comentarios a: contacto@novellius.com ¿Tienes dudas acerca de esta Práctica? Échale un vistazo a nuestro Curso Básico de Microcontroladores, el cual te impartimos a tu propio ritmo, con instructores calificados y sin salir de tu escuela. Para preguntas acerca de soporte técnico escríbenos a: soporte@novellius.com