Está en la página 1de 42

MANUAL DE PRÁCTICAS

DIVISIÓN ACADÉMICA DE MECÁNICA INDUSTRIAL

MANUAL DE PRÁCTICAS DE LABORATORIO DE


Título de la práctica
MICROCONTROLADORES EN CCS C

Carrera MECATRÓNICA / AUTOMATIZACIÓN

Asignatura MICROCONTROLADORES

Unidades de
Cuatrimestre HORAS
aprendizaje

Teóricas Prácticas Totales


TAREA INTEGRADORA
5
10 20 30

Elaboró M.C. ABRAHAM LEYVA MANCILLA

Gulises Castro Estrella Itzayuri


Alumno (s): Hernández Cortes Brandon Jezir
Martínez Flores Miguel Ángel
Morales Palmer Cristopher Yair

Año de elaboración Año de actualización

2020 2023
MANUAL DE PRÁCTICAS

CONTENIDO
Página
1. Objetivo de la Asignatura 3
2. Competencia 3
3. Objetivo de la Unidad 3
4. Marco teórico 4
5. Equipo, componentes y software. 9
6. Software. 9
7. CCS C 10
8. PROTEUS 12
9. Componentes Físicos. 13
10. Explicación del Proyecto 30
11. Conclusiones

12. Material Bibliográfico.


MANUAL DE PRÁCTICAS

1. Objetivo de la Asignatura

Los y las estudiantes desarrollarán aplicaciones con microcontroladores para la solución de


problemas específicos de instrumentación y control de procesos.

2. Competencia

Implementar sistemas de medición y control bajo los estándares establecidos, para el correcto
funcionamiento de los procesos industriales.

3. Objetivo de la Unidad

El alumnado elaborará aplicaciones de control con microcontroladores utilizando lenguajes C para


la instrumentación y control de procesos.
MANUAL DE PRÁCTICAS

4. Marco teórico

Un microcontrolador es un dispositivo electrónico encapsulado en un circuito de alto nivel de


integración. Los cuales se pueden adquirir comercialmente de diferentes fabricantes como: Freescale,
Motorola, Intel, Philips, y Microchip.

Microchip en particular es una empresa fabricante de dispositivos electrónicos, entre los cuales se
encuentran los microcontroladores PICMicro, estos se pueden adquirir en diferentes familias, algunas
de ellas son: 12F, 16F, 18F, 24F, 30F, y 33F.

De acuerdo con la necesidad de la aplicación, el desarrollador debe elegir la familia y la referencia


que más satisfaga a su necesidad, por ejemplo, el microcontrolador 12F675 es un PIC de 8 pines con
módulos integrados básicos como: Timer y ADC. Un microcontrolador como el 16F877 cuenta con
40 pines y módulos como: Timer, ADC, USART, I2C, PWM, entre otros. De acuerdo con lo anterior,
es posible identificar las diferencias y similitudes que permiten crear aplicaciones diferentes entre
estos dos ejemplos, la figura 3.1 presenta los encapsulados de algunos microcontroladores.

Figura 3.1 Encapsulados de los diversos Microcontroladores de Microcip.

La empresa Microchip cuenta con el portal WEB www.microchip.com en donde se puede descargar
información y aplicaciones de software que facilitan los desarrollos con sus microcontroladores.
MANUAL DE PRÁCTICAS

Implementar una solución o proyecto con un microcontrolador PIC consiste en identificar el


problema o la necesidad, crear, editar y compilar un programa mediante software y programar
eléctricamente el microcontrolador con un programador específico para los PICMicro.

La programación de microcontroladores está basada en un código de software, la cual es posible


gracias a la creación de compiladores de alto nivel, ya que facilita la edición y creación de programas
comercialmente existen varios compiladores de diferentes fabricantes y diferentes lenguajes de alto
nivel.

Es posible adquirir compiladores como el PICC, CCS, PIC Basic, entre otros. Este manual de
prácticas se centra en el compilador MikroC PRO, que es un compilador en lenguaje C para
microcontroladores PICMicro para las familias 12F, 16F, y 18F. La paquetería del software de
MikroC PRO tiene una amplia variedad de ayudas y herramientas que facilita la creación de
proyectos y aplicaciones para los microcontroladores PICMicro.

Antes de dar inicio a las prácticas con microcontroladores es necesario que el alumnado (estudiante)
cuente con conocimientos básicos que den sustento y explicación al porqué del desarrollo de las
presentes prácticas.

Los conocimientos mencionados enseguida se impartieron en las materias de Electrónica Digital y


Dispositivos Digitales.

 Conocer los sistemas numéricos: binario, decimal y hexadecimal.


 Conocer el funcionamiento de las compuertas lógicas básicas (AND, OR, NOT, XOR).
 Desarrollar simulaciones de circuitos digitales en el software (ISIS PROTEUS), para
comprobar su funcionamiento.
 Construir circuitos lógicos Combinacionales empleando los métodos de simplificación de
algebra de Boole o mapas de Karnaugh, para realizar aplicaciones específicas definidas por
una tabla de verdad.
MANUAL DE PRÁCTICAS

 Desarrollar circuitos lógicos secuenciales: contadores y registros de corrimiento a través del


uso de flip-flops para la implementación de contadores de eventos y de transferencia de datos
binarios.
 Programar circuitos lógicos Combinacionales y secuenciales a través del uso de dispositivos
lógicos programables (PLD) para la reducción de circuitos digitales.
 Desarrollar aplicaciones básicas de control, identificando la arquitectura y características de
un microcontrolador para la simulación y programación de un sistema.

También es necesario que el alumnado (estudiante) cuente con los conocimientos básicos de las
materias de:

 Dispositivos analógicos (Filtros pasa bajas, entre otros).


 Lenguaje de programación (Sentencias de control: If-else, Case, While, For, Do while,
entre otras).
 Análisis de circuitos eléctricos (Impedancias en CA).
 Sistemas de control automático (Control On-Off, Lazo abierto, Control en lazo cerrado,
Controladores P, PI, PID).
 Controladores lógicos programables (Automatización y control de procesos).
 Electrónica analógica (Señales analógicas, comportamiento de sensores,
transistores, diodos, relevadores).
 Sensores (temperatura, presión, distancia, fotoresistores).
 Instrumentación industrial (variables de un proceso, calibración de instrumentos de
medición).

Lo anterior es indispensable para la correcta comprensión y asimilación de este manual de prácticas,


por lo que se recomienda ampliamente al alumnado que, si carece de algunos de los conocimientos
mencionados anteriormente, se dedique a dar un repaso con el objetivo de adquirir o esclarecer
dichos conocimientos.

Estructura IF-ELSE
MANUAL DE PRÁCTICAS

La estructura de programación "if-else" es una herramienta básica en la programación que permite


tomar decisiones en función de ciertas condiciones.

La sintaxis general de esta estructura es la siguiente: if


(condición) {
// código a ejecutar si la condición es verdadera
} else {
// código a ejecutar si la condición es falsa
}

La "condición" es una expresión que se evalúa a verdadero o falso, y el código dentro del bloque "if"
se ejecuta solo si la condición es verdadera. Si la condición es falsa, el código dentro del bloque
"else" se ejecutará.

También es posible anidar múltiples estructuras "if-else" dentro de sí mismas para tomar decisiones
más complejas. Por ejemplo:
if (condición1) {
// código que se ejecuta si la condición1 es verdadera
} else if (condición2) {
// código que se ejecuta si la condición1 es falsa y la condición2 es verdadera
} else {
// código que se ejecuta si ambas condiciones son falsas
}

En este caso, si la primera condición es falsa, la segunda condición se evalúa y si es verdadera, se


ejecuta el bloque de código dentro del segundo conjunto de llaves. Si ambas condiciones son falsas,
se ejecuta el bloque de código dentro del tercer conjunto de llaves.

Estructura FOR
La estructura de programación for es una de las estructuras de bucle más comunes en la
programación. Se utiliza para repetir un bloque de código un número específico de veces,
MANUAL DE PRÁCTICAS

en función de una condición de inicio, una condición de fin y un incremento. La sintaxis básica
de la estructura for es la siguiente:

for (inicialización; condición; incremento) {


// Código que se ejecuta mientras se cumple la condición
}

*La inicialización define una variable que se utiliza para controlar el bucle y su valor inicial.
*La condición define una expresión booleana que se evalúa antes de cada iteración del bucle. Si la
condición es verdadera, se ejecuta el bloque de código dentro del bucle; si es falsa, el bucle termina.
*El incremento define cómo cambia la variable de control en cada iteración del bucle.

También podemos anidar bucles for para realizar operaciones más complejas, como recorrer una
matriz bidimensional. En este caso, tendríamos un bucle for para recorrer las filas de la matriz y otro
bucle for anidado para recorrer las columnas.

Estructura WHILE
La estructura de programación while se utiliza para repetir un bloque de código mientras se cumpla
una condición, y su sintaxis básica es la siguiente:

while (condición) {
// código a repetir
}

En esta estructura, la condición se evalúa al comienzo de cada iteración del bucle y, si es verdadera,
se ejecuta el bloque de código. Después de cada iteración, la condición se evalúa nuevamente y, si
sigue siendo verdadera, se ejecuta el bloque de código de nuevo. El bucle se detiene cuando la
condición se evalúa como falsa.
MANUAL DE PRÁCTICAS

También podemos utilizar bucles while para leer datos de entrada del usuario o para procesar una
lista o matriz, entre otras cosas. En general, el bucle while se utiliza cuando no se sabe de
antemano cuántas veces se debe repetir el bucle, ya que la repetición depende de la evaluación de una
condición.

Estructura DO-WHILE
La estructura de programación do-while es similar al bucle while, pero con una diferencia clave: el
bloque de código dentro del bucle se ejecuta al menos una vez, independientemente de si la
condición es verdadera o falsa. Su sintaxis básica es la siguiente:

do {
// código a repetir
} while (condición);

En esta estructura, el bloque de código dentro del bucle se ejecuta primero, y luego se evalúa la
condición. Si la condición es verdadera, el bloque de código se ejecutará nuevamente, y este proceso
se repetirá hasta que la condición sea falsa.

5. Equipo, componentes y software.

En esta sección se describen los equipos, materiales y softwares que se utilizaran para el desarrollo de
las practicas descritas en la sección 5.

5.1. Software.

Los dos softwares que se utilizarán para la programación, desarrollo y simulación de las prácticas
antes de la implementación físicas de las misma, se describen a continuación:
MANUAL DE PRÁCTICAS

5.1.1 CCS C

CCS C es una herramienta que permite programar un microcontrolador por medio de lenguaje C, a
diferencia del lenguaje máquina o ensamblador (ASM) que se maneja por defecto, este hace los
programas más fáciles de escribir, analizar y comprender. CCS C ha sido desarrollado por PIC CMU,
y cuenta con una gran cantidad de librerías o drivers que permiten optimizar los programas en el
momento de manejar dispositivos externos, tales como pantallas LCD, memorias, conversores, etc.

CCS es un proveedor líder mundial de software integrado y herramientas de desarrollo de hardware,


que permiten a las empresas desarrollar productos premium basados en dispositivos Microchip PIC®
MCU y dsPIC® DSC.

Los compiladores IDE del CCS C (PCW, PCWH y PCWHD) tienen el exclusivo entorno de
desarrollo integrado C para compilar, analizar y depurar en tiempo real. Otras funciones y
herramientas integradas se pueden ver en el archivo de ayuda. En comparación con un compilador de
C más tradicional, PCB, PCM y PCH tienen algunas limitaciones.

PCB, PCM y PCH son compiladores independientes. PCB es para códigos de operación de 12 bits,
PCM es para códigos de operación de 14 bits y PCH es para microcontroladores PIC® de código de
operación de 16 bits. Estos compiladores están diseñados específicamente para satisfacer las
necesidades únicas del microcontrolador PIC®. Esto permite a los desarrolladores diseñar
rápidamente aplicaciones de software en un lenguaje de alto nivel más legible.

En particular el compilador PCWHD admite MCU Microchip de 8 y 16 bits (PIC10 / 12/16/18/24


MCU y familias dsPIC DSC), lo que permite a los desarrolladores gestionar todos los aspectos del
desarrollo de sus sistemas integrados, desde la creación del código hasta la programación del
dispositivo.

Las características incluyen:


MANUAL DE PRÁCTICAS

 Cientos de funciones integradas


 Bibliotecas de código fuente para RS232, LCD, HID, USB, SPI, I2C, capacitive Touch
y más.
 Programas de ejemplo para código altamente optimizado
 Directivas de preprocesador para RTC, CAN, TCP / IP, CDC y más
 Optimización de nivel profesional: hasta un 60% de reducción de la memoria del
programa (en comparación con compiladores de otras marcas)
 Cumple con ANSI
 Editor sensible al contexto, C-Aware
 Herramienta C Profiler para monitorear visualmente su programa
 Asistentes de proyectos: USB, TCP / IP, temporizadores, LCD, táctil capacitiva y más.
 Verificador de sintaxis en vivo y edición de bloques de código

La figura 4.1 muestra el icono del programa CCS C, que es el mismo para los diferentes IDE de
este programa, simplemente cambia el compilador interno para ejecutar la instrucción programada.

Figura 4.1 Icono de software CCS C de Microchip.

La estructura del programa en CCS C se muestra en la figura 4.2, está conformada por:

1. Directivas de Procesado. Estas controlan la conversión del programa a código máquina por parte
del compilador.
MANUAL DE PRÁCTICAS

2. Programas o Funciones. Es un conjunto de instrucciones, puede haber uno o varios, en cualquier


caso siempre debe haber uno definido como el principal mediante la inclusión de la palabra
main().
3. Instrucciones. Indican como se debe de comportar el PIC en todo momento.
4. Comentarios. Permiten describir lo que significa cada línea del programa.

Figura 4.2 Estructura de un programa hecho en CCS C

Para mayor información sobre la directivas, librerías e instrucciones del compilador CCS C consultar
su manual en: https://www.ccsinfo.com/downloads/ccs_c_manual.pdf

5.1.2 PROTEUS

PROTEUS es considerado uno de los mejores y más completos programas para el diseño de circuitos
electrónicos en la actualidad, no solo por su capacidad de simulación y análisis, sino también por el
hecho de poder utilizar una gran cantidad de microcontroladores de diferentes familias.

El entorno de diseño electrónico PROTEUS VSM de LABCENTER ELECTRONICS


(www.labcenter.co.uk) ofrece la posibilidad de simular código de alto (lenguaje C) y bajo nivel
(lenguaje ensamblador) para los microcontroladores y, simultáneamente, con la simulación en modo
mixto de SPICE. Esto permite el diseño tanto a nivel de hardware
MANUAL DE PRÁCTICAS

como software y realizar la simulación en un mismo y único entorno. Para ello se suministra tres
potentes entornos como son el ISIS para el diseño gráfico, VSM (Virtual System Modelling) para la
simulación y el ARES para el diseño de circuitos impresos en tarjetas.

Las siglas VSM significan Virtual System Modelling, que en español podemos traducir como sistema
de modelado virtual, ya que Proteus VSM permite modelar de forma virtual en la computadora
prácticamente cualquier circuito. La figura 4.3 muestra el icono del programa PROTEUS, que en este
manual es la versión 8.9 y en la cual se estará trabajando en la sección 5.

Figura 4.3 Icono de software PROTEUS VSM.

Para mayor información referente al uso de este software se recomienda consultar el libro:
PROTEUS VMS SIMULACIÓN DE CIRCUITOS ELECTRONICOS de Víctor Rossano.

5.2. Componentes Físicos.

Esta sección se describe los elementos electrónicos que se ocuparan en el desarrollo de las
prácticas, los cuales se describen a continuación:

 Jumper.

La figura 4.4 muestra los cables jumper tipo hembra - macho, necesarios para la conexión temporal
de los circuitos digitales, así como los diferentes componentes físicos como: push Boton, leds,
compuertas, display 7 segmentos, etc.
MANUAL DE PRÁCTICAS

Figura 4.4 Jumpers tipo Hembra – Macho.

 LED.

Un led (light-emitting diode, por sus siglas en inglés) es un diodo semiconductor que, cuando recibe
tensión, genera luz. Un diodo, a su vez, es una válvula de dos electrodos que permite el paso de la
corriente eléctrica en un único sentido. Cuando se le aplica tensión a alguna de sus dos terminales, la
recombinación de sus electrones provoca la liberación de energía en forma de fotones, cuyo color
está determinado por la banda de energía que haya sido estimulada. La figura 4.5 muestra los diodos
LED más comúnmente ocupados.

La tensión de los LEDs se puede dividir en dos grupos: con tensión entre 3V y 3.8V como por
ejemplo los azules, los blancos y algunos tipos de leds verdes azulados y entre 1.8V y 2.1V de los
cuales encontramos los leds rojos, los amarillos, los naranjas y muchos tipos de verde. Los LED por
lo general consumen entre 10 a 20 mA independientemente del color del led. Para conocer la
polaridad de los LED basta con observar la patillas, las más corta es la polaridad negativa, mientras
que es la polaridad positiva.
MANUAL DE PRÁCTICAS

Figura 4.5 Diodos emisor de Luz (LED).

 Push Boton.

Un Push Boton es un interruptor o dispositivo simple con dos posiciones, encendido y apagado. En el
mercado existen una gran variedad de ello, la figura 4.6 muestra algunos de estos.

Figura 4.6 Algunos tipos de Push Boton más utilizados.

En electrónica digital, nos encontramos con dos tipos de configuración, me refiero a la polarización
de una E/S, polarización alta la resistencia (término inglés Pull-up) va conectada a + (5V) o
polarización baja la resistencia (término inglés Pull-down) va conectada a masa – (0V). La figura 4.7
muestra los esquemas antes mencionados.
MANUAL DE PRÁCTICAS

Figura 4.7 Polarización de los Push Boton.

Los pulsadores son dispositivos que tienen un defecto, el cual se llama rebote. Cuando se presiona o
se suelta el pulsador, se produce una fluctuación entre sus contactos internos, esas fluctuaciones son
también leídas y se produce un comportamiento inesperado en el funcionamiento de nuestros
proyectos. El antirrebote viene a solucionar este problema. Es necesario poner un condensador de
10uF en el pulsador, véase figura 4.8.

Figura 4.8 Circuito antirrebote de los Push Boton.

 Resistores.

La figura 4.9 muestra los resistores de 5 bandas, mayor precisión, que se emplearan para la
elaboración de los circuitos físicos. En todos los resistores nos podemos encontrar tres características,
el valor nominal expresado en óhmios (Ω), la tolerancia en % y la potencia
MANUAL DE PRÁCTICAS

en Watts (W). Además, se muestra todos los colores, las bandas y los valores correspondientes para
la codificación a 5 bandas. Como en el otro caso, en la parte alta del diseño podemos ver un ejemplo
concreto.

Figura 4.9 Código de colores para resistores de alta precisión con 5 bandas.

Cabe mencionar que existen resistores variables, o también conocidos como potenciómetros, que
pueden ser útiles para aquellos resistores no son comerciales. Los más comerciales son de 10 kΩ y
100 k Ω.

 Display 7 segmentos.

El display de siete segmentos es un dispositivo electrónico que se utiliza para representar visualmente
números y algunos caracteres. Este display es muy popular debido a su gran efectividad y
simplicidad al momento de utilizarlo.
MANUAL DE PRÁCTICAS

Se le conoce como siete segmentos por que cuenta con siete diodos led principales y uno extra para
representar un punto. También cuenta con una carcasa para cubrirlos y diez terminales: dos son de
alimentación (dos de Vcd o dos de Gnd), uno es para visualizar un punto y siete son para representar
cada uno de los números según la combinación que se le ponga, véase la figura 4.10, estos están
representados por una letra del abecedario desde la “A” hasta la letra “G”.

Figura 4.10 Dispaly de siete segmentos, componente físico y terminales.

 Ánodo común

Se llama así porque todos los leds están unidos en su terminal positiva (ánodo), para
encenderlos tenemos que poner tierra en la terminal de la letra que se desee.

 Cátodo común

Este display es el opuesto del ánodo común ya que los leds están unidos en la terminal
negativa (cátodo). Para encender los leds tenemos que poner voltaje en las terminales de las
letras.

 LCD 16x2.

Las siglas LCD significan “Liquid Cristal Display” ó pantalla de cristal líquido. Es una
pantalla plana basada en el uso de una sustancia liquida atrapada entre dos placas de
MANUAL DE PRÁCTICAS

vidrio, haciendo pasar por este una corriente eléctrica a una zona específica, para que así esta se
vuelva opaca, y además cuenta (generalmente) con iluminación trasera.

Las pantallas LCD de color, cada pixel individual se divide en tres cédulas o sub pixeles con los
colores RGB (Rojo, Verde y Azul) respectivamente. Y así cada pixel puede controlarse para producir
una gran variedad de colores distintos.

 Las Características de las LCD

Existen una gran variedad de proyectos en los que se incluye una LCD para interfaz con el usuario, lo
que modifica las necesidades, las cuales es importante atender más que nada por los precios. Y la
importancia de esta en el proyecto. Algunos factores básicos a considerar en una LCD son:

a) Tamaño: un panel LCD generalmente se mide a lo lardo de su diagonal, expresado generalmente


en pulgadas. Sin embargo, existen más características que pueden describir las dimensiones
aproximadas, como por ejemplo la LCD 16×2 (negro sobre fondo azul) se refiere a que tiene la
capacidad de tener al mismo tiempo 16 caracteres de manera horizontal en dos renglones (cada
uno).

b) Resolución: Esta se expresa con las dimensiones horizontal y vertical. las pantallas HD tienen una
resolución de 1920×1080 por ejemplo. Y esta puede alcanzar con esta resolución una gran
variedad de tamaño, pero si no se ocupa gran a gran detalle esta, estarías desperdiciando calidad
(por no utilizar algo que tienes disponible). En 5hz se maneja, por ejemplo, la LCD gráfica
128×64 (negro sobre fondo verde). Que a pesar de su tamaño la consideramos suficiente para las
aplicaciones estudiantiles, y algunas industriales donde se requiera tener algo claro y legible en
un tamaño práctico.

c) Brillo: La luminosidad de la pantalla también es importante analizarla, ya que según la aplicación


en la que se encuentre esta, requerirá más luz para poder apreciarse, o viceversa. Por lo que la
mayoría cuentan con una luz trasera y la posibilidad de poder controlar su luminosidad.
MANUAL DE PRÁCTICAS

Iluminación CCFL Esta iluminación básicamente consta poner detrás de la pantalla una matriz de
CCFL, o bien en las orillas o bordes de la pantalla. Sin embargo, es más consumo que el led y
tiene un menor tiempo de vida, por lo que poco a poco se ha ido poniendo en segundo plano.

Iluminación LED Esta iluminación puede presentarse en dos maneras, en un solo color,
(generalmente blanco) o bien en RGB, los blancos suelen ser los más utilizados. Estos al igual
que la iluminación CCFL, pueden estar formando una matriz en la parte de atrás, o bien
pueden colocarse a los extremos del display.

d) Contraste: Es la relación entre la intensidad más brillante y la más oscura.

e) Angulo de visión: es el ángulo máximo en el que el usuario puede visualizar lo que está en la
LCD sin que se pierda mucha calidad.

f) Número de caracteres. Hay diversos tamaños de LCD y con ello nos limitamos o nos expandamos
la posibilidad de mostrar en el display cierto número de caracteres, los tamaños estándar que
manejamos son: 16×2, 20×4, 8×2.

La figura 4.11 muestra las diversas panatlla LCD existentes en el mercado para aplicaciones en
electrónica digital.

Figura 4.11 Diferentes tipos de LCD aplicadas a proyectos escolares.


MANUAL DE PRÁCTICAS

 KEYPAD 4x4.

El Teclado matricial de botones plásticos formado por 4 filas y 4 columnas para un total de 16 teclas
permite agregar una entrada de usuario a tus proyectos. El teclado es de tipo membrana, por lo que
entre sus ventajas se encuentra el poco espacio que requiere para ser instalado. Posee una cubierta
adhesiva y un cable flexible de conexión. Puede ser conectado a cualquier microcontrolador o tarjetas
de desarrollo como Arduino.

El teclado matricial 4x4 está formado por una matriz de pulsadores dispuestos en filas (L1, L2, L3,
L4) y columnas (C1, C2, C3, C4), véase figura 4.12, con la intención de reducir el número de pines
necesarios para su conexión. Las 16 teclas necesitan sólo 8 pines del microcontrolador en lugar de los
16 pines que se requerirían para la conexión de 16 teclas independientes. Para poder leer que tecla
ha sido pulsada se debe de utilizar una técnica de barrido y no solo leer un pin de microcontrolador.

Figura 4.12 Keypad 4x4 tipo membrana.

La conexión del teclado matricial 4x4 con Arduino u otra plataforma de microcontroladores es
simple: se necesitan 8 pines digitales en total. Puede trabajar con microcontroladores de 3.3V o 5V
sin problema. Es necesario colocar resistencias pull-up entre los pines de las columnas y VCC o
activar por software las resistencias Pull-up internas. En cuanto a la programación, la lectura de las
teclas se debe realizar mediante un "barrido" de las filas. Si bien es posible realizar este
procedimiento dentro del loop principal del programa, es una
MANUAL DE PRÁCTICAS

mejor práctica realizar el barrido utilizando interrupciones por TIMER y así asegurar la lectura de las
teclas en un intervalo conocido y exacto, además de dejar al loop libre para realizar otras operaciones

 Microcontrolador PIC18F4550.

PIC18F4550 es un microcontrolador PIC de 40 pines y se utiliza principalmente en proyectos y


aplicaciones integrados. Algunas de sus características son las siguientes:

 Cuenta con cinco puertos en él a partir de Puerto de A a E puerto.


 Tiene cuatro temporizadores, uno de los cuales es de 8 bits, mientras que 3 son de 16 bits.
 Es compatible con muchos protocolos de comunicación como: Protocolo serial, Protocolo
paralelo y Protocolo I2C.
 Admite interrupciones de pines de hardware y de temporizador.
 Alimentación de + 5V.
 Oscilador de cristal externo con un rango de frecuencia de 4MHz a 48MHz.
 Convertidor A / D.
 Recepción / transmisión en serie.
 PWM (CCP1 / CCP2).
 Operación de escritura EEPROM.

La figura 4.13, muestra al PIC18F4550, el cual tiene 5 puertos en total que son:

 Puerto A: Tiene 6 pines en total comenzando desde el Pin # 2 al Pin # 7. Los pines del puerto A
están etiquetados de RA0 a RA5 donde RA0 es la etiqueta del primer pin del puerto A.
 Puerto B: Tiene 8 pines en total comenzando desde el pin # 33 al pin # 40. Los pines del puerto B
están etiquetados de RB0 a RB7 donde RB0 es la etiqueta del primer pin del puerto B.
MANUAL DE PRÁCTICAS

 Puerto C: Tiene 8 pines en total. Sus pines no están alineados. Los primeros cuatro pines del
puerto C se encuentran en el pin n. ° 15 - pin n. ° 18, mientras que los últimos cuatro se
encuentran en el pin n. ° 23 - pin n. ° 26.
 Puerto D: Tiene 8 pines en total. Sus pines tampoco están alineados. Los primeros cuatro pines
del puerto D se encuentran en el pin # 19 - pin # 22, mientras que los últimos cuatro se
encuentran en el pin # 27 - pin # 30.
 Puerto E: Tiene 3 pines en total comenzando desde el pin # 8 al pin # 10. Los pines del puerto E
están etiquetados de RE0 a RE2 donde RE0 es la etiqueta del primer pin del puerto E.

Figura 4.13 Microcontrolador PIC18F4550.


De la figura 4.13 también podemos describir alginas de las características de los puertos, como
son:

 Pin # 1: Este Pin se llama MCLR (Master Clear) y necesitamos proporcionar 5V a este pin a
través de una resistencia de 10k-ohmios.
 Pin # 11 y # 32: estos pines están etiquetados como Vdd, por lo que también debemos
proporcionarle + 5V.
MANUAL DE PRÁCTICAS

 Pin # 12 y # 31: estos pines son Vss, por lo que hemos proporcionado GND (tierra).
 Pin # 13 y 14: Estos pines se denominan OSC1 (oscilador 1) y OSC2 (oscilador 2).
 Pin # 25, RC6 del Puerto C puede ser usado como entrada/salida digital o como un
Transmisor (TX) para la comunicación serial.
 Pin # 26, RC7 del Puerto C puede ser usado como entrada/salida digital o como un
Receptor (RX) para la comunicación serial.
 Las entradas analógicas están en los pines #2 al #5 y de #7 al #10.

Para mayor información referente al uso de este microcontrolador se recomienda consultar el


datasheet disponible en: https://ww1.microchip.com/downloads/en/devicedoc/39632e.pdf

 Protoboard.

La Protoboard, llamada en inglés breadboard, es una placa de pruebas en los que se pueden insertar
elementos electrónicos y cables con los que se arman circuitos sin la necesidad de soldar ninguno de
los componentes. Las Protoboards tienen orificios conectados entre sí por medio de pequeñas laminas
metálicas. Usualmente, estas placas siguen un arreglo en el que los orificios de una misma fila están
conectados entre sí y los orificios en filas diferentes no. Los orificios de las placas normalmente están
tienen una separación de 2.54 milímetros (0.1 pulgadas).

Una Protoboard es un instrumento que permite probar el diseño de un circuito sin la necesidad de
soldar o desoldar componentes. Las conexiones en una Protoboard se hacen con solo insertar los
componentes lo que permite armar y modificar circuitos con mayor velocidad.

Normalmente estas placas son usadas para realizar pruebas experimentales. Si la prueba resulta
satisfactoria el circuito se construye de una forma más permanente para evitar el riesgo de que algún
componente pueda desconectarse. En caso de que la prueba no sea satisfactoria, puede modificarse el
circuito fácilmente.
MANUAL DE PRÁCTICAS

Las Protoboards tienen tres partes: el canal central, las pistas, y los buses. En el canal central, ubicado
en la parte media, se conectan los circuitos integrados para mantener aislados los pines de ambos
lados del circuito integrado. Los buses se encuentran en los lados de la Protoboard, y generalmente se
emplean para conectar la tierra del circuito y sus voltajes de alimentación. La mayoría de las veces
los buses están indicados con franjas color negro o azul para indicar el bus de tierra, y con franjas
color rojo para indicar el bus de voltaje positivo. El resto de los orificios de la Protoboard pertenecen
a las pistas. Como se mencionó anteriormente, las pistas están separadas por filas. Las filas están
indicadas con números y las columnas están indicadas con letras, véase la figura 4.14.

Figura 4.14 Placa Protoboard, existen distintos tamaños y diversos modelos según el fabricante.

La corriente con la que puede operar una Protoboard varía entre 3 y 5 A, y esto depende del
fabricante. Suelen operar a bajas frecuencias, entre 10 – 20 MHz.

 Oscilador de cristal.

Un oscilador de cristal, véase la figura 4.15, es un oscilador electrónico cuyo funcionamiento se


aprovecha de la resonancia mecánica de un cristal vibratorio de material piezoeléctrico, esto con el
fin de crear una señal eléctrica con una frecuencia precisa, la cual, es obtenida en base a su
composición interna.
MANUAL DE PRÁCTICAS

La frecuencia que el cristal es capaz de crear, se utiliza comúnmente para controlar o tener una
noción del tiempo, con el fin de para proporcionar una señal de reloj estable para circuitos integrados
digitales y para estabilizar las frecuencias de los transmisores y receptores de radio.

Figura 4.15 Diferentes tipos de osciladores de cristal de cuarzo.

 Capacitores.

Existe diferentes formas y materiales de tener capacitores en los sistemas eléctricos, por lo tanto,
existen diversas formas o métodos para codificarlos, caso contario con los resistores.

A excepción de los capacitores electrólitos que generalmente superan ampliamente el valor de 1 µF,
el universo de los capacitores usados en electrónica está compuesto por capacitores con valores que
van desde pocos picofarad, capacitores cerámicos o disco que parecen lentejas, hasta los cercanos a
1µF, capacitores de poliester multiestrato.

La figura 4.16 muestra el sistema de codificación para capacitores entre 1pF y 1 µF, donde el valor se
encuentra indicado con un número de tres dígitos seguido por una letra.
MANUAL DE PRÁCTICAS

Figura 4.16 Codificación para los capacitores entre 1 pF y 1 µF, a excepción de los electrolíticos.

Los dos primeros dígitos indican el número inicial mientras que el tercer dígito representa la cantidad
de ceros que es necesario agregar al número inicial para obtener el valor final. El resultado obtenido
es necesario considerarlo en picofarad.

Ahora hablemos de la letra que se encuentra al final del número de tres dígitos. Es
simplemente la tolerancia del componente, es decir, cuanto puede ser diverso el valor real respecto al
valor indicado.

La figura 4.17 podemos observar que cada letra la tolerancia correspondiente, por ejemplo, la "P", es
decir, el componente puede tener una mayor capacidad respecto a la indicada pero no una menor.
Este tipo de tolerancia es usada con los capacitores de "filtro" donde un posible valor mayor de lo
indicado no perjudica mínimamente el funcionamiento del circuito.

Por último, nos falta una información que en cierto caso podría ser útil, que es la tensión máxima que
el capacitor puede soportar sin que se rompa. La codificación numérica que usan algunos fabricantes
consiste en un número seguido por una letra.
MANUAL DE PRÁCTICAS

Figura 4.17 Codificación de tolerancia para capacitores entre 1 pF y 1 µF.

La tabla completa de los códigos EIA que indican la tensión máxima de trabajo de los
capacitores en tensión continua (VDC) se muestra en la figura 4.18.

Figura 4.18 Codificación de Voltajes para capacitores entre 1 pF y 1 µF.

 Programador, grabador o quemador de PIC’s.

Master Prog, véase la figura 4.19, es un programador de microcontroladores USB para todas las
familias de microcontroladores PIC, dsPIC, PIC32 y memorias EEPROM. Es una
MANUAL DE PRÁCTICAS

poderosa herramientas para programar estos dispotitivos, compatible para cualquier computadora y
con soporte para Windows.

Entre las Ventajas de este programador están: la autoprogramacion (automáticamente cargas el


programa en el pic al momento de compilar utilizando cualquier compilador), alta compatibilidad,
protección contra corto circuito, soporte para múltiples encapsulados (el zócalo del programador
soporta pics de 8,14,18,28,40 Pines y de 8,14, 18, 28,40, 44, 64, 80 y 100 pines en encapsulados
DIP, SSOP, TQFP y QFN (colocados en una protoboard)

Figura 4.19 Tarjeta Programadora de Pic’s Master Prog

 Fuentes de Alimentación.

Aquí, no hay mucho que comentar solo es necesario tener una fuente simétrica de voltaje para
alimentación de los amplificadores operacionales, por ejemplo, de ± 12 Vcc @ 1 A.
MANUAL DE PRÁCTICAS

 Arduino Uno.

La placa Arduino se conecta a un ordenador a través de un USB, donde se conecta con el entorno de
desarrollo Arduino (IDE). El usuario escribe el código de Arduino en el IDE, y luego lo sube al
microcontrolador que ejecuta el código, interactuando con las entradas y salidas como sensores, motores
y luces.

 Sensor Ultrasónico.

Como su nombre lo indica, los sensores ultrasónicos miden la distancia mediante el uso de ondas
ultrasónicas. El cabezal emite una onda ultrasónica y recibe la onda reflejada que retorna desde el objeto.
Los sensores ultrasónicos miden la distancia al objeto contando el tiempo entre la emisión y la recepción .

3
MANUAL DE PRÁCTICAS

 Motorreductor.

Su función es la de reducir significativamente velocidad de motores. Además, implemente variedad de


técnicas giratorias para controlar fuerza de una máquina. En la mayoría de los coches, relojes podemos
observar a un motorreductor en acción, pero principalmente en máquinas de construcción o industriales.

 Puente H.

Un puente en H es un circuito integrado que se utiliza en robótica y en muchas otras aplicaciones para
aplicar una cantidad ajustable de potencia a una carga, normalmente un motor de corriente continua.

3
MANUAL DE PRÁCTICAS

Explicación Del Proyecto.

Para este proyecto vamos a utilizar un control PID para poder regular la distancia que hay entre nuestro
carrito y un obstáculo.

Utilizaremos el Chasis del coche, colocaremos dos motorreductores en la parte de debajo de lado de
donde van las llantas para que impulse el carrito y como soporte en la parte de enfrente se le coloco una
rueda, en la parte superior de la estructura están ubicados los demás componentes electrónicos, como el
Sensor Ultrasónico, Un Circuito Integrado, además se utilizó un Arduino Nano como un microcontrolador y
para su alimentación se utilizó una pila de 9 Volts.

En la programación primero se ingresó como valor entero el punto deseado o distancia que quería que mi
carrito mantuviera del obstáculo, después como valor flotante o decimal ingresamos las demás variables
que vamos a utilizar como la constante proporcional derivativa y la integral después debemos calcular el
valor de PID.

Primero tenemos el error después vamos a derivar e integramos el error para finalmente multiplicar estos
valores con sus respectivas constantes se suman y se obtiene el valor del PID el cual utilizaremos para el
P doble M del motor reductor.

Después de cargar el programa en el Arduino y conectar los motores reductores el carrito avanzará y
mantendrá la distancia prevista la cual es de 30 centímetros y ante perturbaciones en este caso
utilizaremos otros obstáculos, lo cual reacciona bastante bien con el control PID.

Si el obstáculo se acerca el carrito se aleja y viceversa si el obstáculo se aleja el carrito lo sigue con el fin
de mantener la misma distancia.

3
MANUAL DE PRÁCTICAS

Objetivo Del Proyecto.

El objetivo principal de este documento es explicar los pasos seguidos en el diseño de un controlador PID
con los cuales seamos capaces de controlar dentro de unos parámetros predefinidos en un sistema. El
sistema a controlar consiste en un vehículo robot y su entorno será el sistema a controlar con la finalidad
de obtener el funcionamiento deseado en base a unas especificaciones de comportamiento.

Los objetivos que se pretenden con este tipo de recomendaciones son los siguientes:

Diseño del chasis y montaje del vehículo con todos los elementos necesarios para su
funcionamiento

Aplicar los conocimientos Físicos y Técnicos adquiridos a lo largo del cuatrimestre para la
aplicación de un modelo de ajuste a la realidad del carrito

Diseño teórico del controlador PID con el cual podemos cumplir con el objetivo de la distancia de
seguridad

Programación del programa Arduino, con el cual será posible aplicar el controlador PID diseñado
para poder controlar efectivamente el Carrito

3
MANUAL DE PRÁCTICAS

Código de la Programación de Arduino.

/*
HC-SR04 Ping distance sensor:
VCC to arduino 5v
GND to arduino GND
Echo to Arduino pin 7
Trig to Arduino pin 8
*/

#define echoPin 7 // Echo Pin


#define trigPin 8 // Trigger Pin

int maximumRange = 200; // maximo rango


int minimumRange = 0; // Minimo rango
float duration, distance, actual,sp = 50, error, previous_error, drive, derivative=0, integral=0, kp=0.2, kd=0.1,
ki=0.00001, salida, x, bandera = 0;

void setup() {
TCCR2B = TCCR2B & 0b11111000 | 0x07; // prescalador para pines 11 y 3 en 1024 freq = 30 hz con 0x07 y
488hz con 0x04 para pulso pwm
Serial.begin (9600);
pinMode(13,OUTPUT);// motor en un sentido
pinMode(12,OUTPUT);// motor en sentido contrario
pinMode(trigPin, OUTPUT);//pines del sensor de ultrasonido
pinMode(echoPin, INPUT);
pinMode(11,OUTPUT);// salida del PWM
}

void loop() {

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);// datos del sensor de ultrasonido

//se calcula la distancia en cm dependiendo de la velocidad del sonido sensor de ultrasonido


distance = duration/58.2;

// se define un rango para un mejor control


if (distance >= maximumRange || distance <= minimumRange){
/* se envia -1 para indicar el fuera de rango" */
Serial.println("-1");
3
MANUAL DE PRÁCTICAS
}
else {

if(drive > -5 && drive < 5)


{
error = sp - actual;
integral = integral + (error);//se calcula el integral
derivative = (error - previous_error);//se calcula el derivativo
drive = (error*kp) + (integral*ki) + (derivative*kd);// ecuaciones del pid
previous_error = error;
}else
{
error = sp - actual;
drive = (error*kp) + (integral*ki) + (derivative*kd);
previous_error = error;
}

if (drive > 5)
{
drive = 5;// para que drive no se pase de 5 y asi controlar el plso PWM
}
else if (drive < -5)
{
drive = -5;
}

if (drive < 0)
{
digitalWrite(13,LOW);
digitalWrite(12,HIGH);// el carro se mueve para la izquierda
x=map(drive,-5,0,200,0);// se mapea drive para que el pulso pwm se maneje dentro del rango
analogWrite(11,x);

}
else
{
digitalWrite(13,HIGH);//el carro se mueve para la derecha
digitalWrite(12,LOW);
x=map(drive,0,5,0,200);
analogWrite(11,x);
}
Serial.print(" actual: ");
Serial.print(actual);
Serial.print(" error: ");
Serial.print(error);
Serial.print(" drive: ");
Serial.println(drive);
3
MANUAL DE PRÁCTICAS

actual = distance;

//Delay 10ms proxima lectura.


delay(10);
}

3
MANUAL DE PRÁCTICAS

3
MANUAL DE PRÁCTICAS

3
MANUAL DE PRÁCTICAS

Imágenes de la elaboración del Proyecto.

Figura 1.1 Montaje del Chasis, del Sensor Ultrasónico y de los Motores

Figura 1.2 Montaje del Arduino y Puente H

3
MANUAL DE PRÁCTICAS

Figura 1.3 Circuito Integrado

Figura 1.4 Finalización del Proyecto

3
MANUAL DE PRÁCTICAS

CONCLUSIONES.

En este proyecto pusimos en práctica nuestros conocimientos adquiridos durante el cuatrimestre, lo cual
llevamos a cabo un Control de Velocidad de Carrito por PID, mediante el cual hemos podido medir los
distintos parámetros como velocidad, posición, tensión, etc. Por lo que se han realizado mejoras en el
tiempo de respuesta de los motores gracias a la implementación de un controlador PID.

También tuvimos complicaciones a lo largo del proyecto a la hora de programar y hacer que funcionase
tanto los motores como el resto de los sensores según nuestra propuesta de diseño, pero básicamente se
aprende con el clásico método de prueba/error.

Gracias a este proyecto hemos visto que somos capaces de resolver cada problema, informándonos y
recabando la información suficiente para detectar en donde está el error y pensar de una forma muy
estructurada y lógica de las posibles herramientas y opciones que tenemos para dar solución.

Material Bibliográfico.

TIMER PIC [Timer 0 y Timer 1] Explicados PIC C Compiler (controlautomaticoeducacion.com)

García Bermejo, E. (2008). Compilador C CCS y Simulador PROTEUS para microcontroladores PIC
(1a ed.). Barcelona, España: Marcombo.

Proyectos robóticos/control-de-motores/control-PID-mejorado

Carro-Controlador-de-Distancia-Autónomo-PID

Carro-controlador-de-distancia-autonomo-pid-pdf-free.html

Universidad-tecnologica-del-peru/personalidad/312611293-Carro-Controlador-de-Distancia-Autonomo-PID/
20494048

3
MANUAL DE PRÁCTICAS

También podría gustarte