MICROCONTROLADORES
Objetivo:
• Identificar los conceptos básicos sobre los microcontroladores.
• Diferenciar entre la arquitectura RISC y CISC empleada por la programación en los
microcontroladores.
• Describir la arquitectura del Microcontrolador:
• Tipos de direccionamiento, puertos, convertidores A/D y D/A, capacidad de memoria,
bits de datos,
• temporizadores, Interfaces I2C, SPI, UART, USB, CAN, Ethernet, Bluetooth, Di-Fi.
CONTROLADOR:
Una tarjeta de desarrollo es un dispositivo de hardware que permite gestionar y controlar
señales de entrada para convertirlas en respuestas de salida. Actúa como una interfaz entre
el software y el hardware, proporcionando un entorno donde se pueden programar, procesar
y manipular diferentes señales de control, facilitando la creación y prueba de aplicaciones
electrónicas. Estas tarjetas son fundamentales para desarrollar prototipos en proyectos de
automatización, robótica y control de sistemas, ya que permiten experimentar y optimizar
respuestas en tiempo real.
Arduino UNO es una placa basada en el microcontrolador ATmega328P. Tiene 14 pines de
entrada/salida digital (de los cuales 6 pueden ser usando con PWM), 6 entradas analógicas,
un cristal de 16Mhz, conexión USB, conector jack de alimentación, terminales para conexión
ICSP y un botón de reseteo. Tiene toda la electrónica necesaria para que el microcontrolador
opere, simplemente hay que conectarlo a la energía por el puerto USB ó con un
transformador AC-DC.
CARACTERÍSTICAS TÉCNICAS:
Alimentación:
Vin : Entrada de voltaje cuando se usa una fuente externa para alimentar la placa. Acepta
entre 7V y 12V. Este pin se conecta a una fuente de alimentación externa para alimentar la
placa sin necesidad de utilizar el puerto USB.
5V : Salida de 5V que se utiliza para alimentar otros componentes o módulos externos
conectados a la placa. Este voltaje está regulado y puede provenir de la fuente de
alimentación externa (Vin) o del puerto USB.
3.3V : Salida de 3.3V, con un límite de corriente de 50 mA, ideal para módulos o sensores
que requieren bajo voltaje.
GND : Pines de tierra (negativo), que sirven como referencia de conexión para los circuitos y
módulos externos, estableciendo un punto común de retorno para las corrientes.
Pines de Entrada/Salida Digital (E/S digital)
D0 - D13 : Pines digitales configurables como entrada o salida para recibir o enviar señales
digitales en nivel alto (HIGH - 5V) o bajo (LOW – 0V).
D0 (RX) y D1 (TX) : Pines reservados para comunicación serie UART. RX (D0) se usa para
recibir datos y TX (D1) para transmitir datos. Estos pines permiten la comunicación con otros
dispositivos que usan protocolo serie, como computadoras o módulos de comunicación.
D2 - D13 : Pines de propósito general que pueden ser utilizados en diferentes aplicaciones.
Algunos de estos pins tienen funciones adicionales de PWM (modulación por ancho de
pulso):
D3, D5, D6, D9, D10 y D11 : Pines con capacidad PWM, identificados con el símbolo "~" en
la placa. Estos pins pueden generar señales de tipo analógico mediante el control de ancho
de pulso, útiles para aplicaciones como control de motores y ajuste de brillo en LEDs.
Pines de Entrada Analógica
A0 - A5 : Pines de entrada analógica, capaces de leer voltajes continuos entre 0V y 5V. Estos
voltajes se convierten en valores digitales de 0 a 1023 mediante el convertidor ADC
(Analógico a Digital) de 10 bits. Los pins analógicos son ideales para leer sensores
analógicos como potenciómetros, sensores de luz y temperatura, entre otros. Además, estos
pines pueden configurarse como pins digitales si se necesita ampliar la cantidad de pines de
entrada o salida.
Pines Especiales
RESET : Permite reiniciar el microcontrolador ATmega328P de la placa, útil para reiniciar el
programa cargado en la memoria y volver a ejecutar el código desde el inicio sin desconectar
la alimentación.
AREF : Pin de referencia de voltaje analógico externo. Este pin permite establecer un voltaje
de referencia diferente de los 5V predeterminados, aumentando la precisión en la lectura de
sensores analógicos que operan a diferentes voltajes.
IOREF : Proporciona el voltaje de referencia de la placa (5V en el caso del Arduino Uno),
permitiendo que los escudos que se conectan puedan detectar y adaptarse automáticamente
a este nivel de voltaje para una correcta compatibilidad.
Práctica
Objetivo: desarrollar un programa a través de lenguaje de serie de instrucciones para
programar la salida activa del pin 13 (led incluido en tarjeta de desarrollo) de manera
intermitente.
Este es un ejemplo clásico de código en Arduino, utilizado para aprender cómo controlar una
salida digital y cómo usar las funciones digitalWrite()y delay(). El LED integrado en el Arduino
Uno parpadea cada segundo.
Secuencia de código fuente:
1. void setup()
• Descripción: La función setup()se ejecuta solo una vez cuando el Arduino se
enciende o se reinicia. Aquí se configura el comportamiento inicial de los pines.
• pinMode(LED_BUILTIN, OUTPUT);:
• pinMode(): Esta función se usa para definir el modo de un pin específico, en
este caso, el pin de la LED integrada (usualmente el pin 13 en la mayoría de
las placas Arduino).
• LED_BUILTIN: Es una constante predefinida en el entorno Arduino que se
refiere al pin donde está conectado el LED integrado en la placa. En la mayoría
de las placas Arduino, este pin es el 13.
• OUTPUT: Defina el pin como una salida, lo que significa que se usará para
enviar una señal a la LED.
2. void loop()
• Descripción: La función loop()es la que se ejecuta repetidamente después de setup().
Este es el "ciclo" continuo de ejecución del programa.
• digitalWrite(LED_BUILTIN, HIGH);:
• digitalWrite(): Esta función se utiliza para establecer el estado de un pin
configurado como salida. Toma dos parámetros: el pin (en este caso,
LED_BUILTIN) y el valor a escribir.
• HIGH: Enciende el LED al establecer el pin en un nivel alto de voltaje (5V, en
placas de 5V como Arduino Uno).
• delay(1000);:
• delay(): Detiene la ejecución del programa durante el tiempo especificado en
milisegundos. En este caso, la ejecución se pausa por 1000 milisegundos (1
segundo).
• digitalWrite(LED_BUILTIN, LOW);:
• LOW: Apaga la LED al establecer el pin a un nivel bajo de voltaje (0V).
• delay(1000);: De nuevo, el programa se detiene por 1 segundo después de apagar el
LED.
Flujo general:
1. Enciende la LED : El pin 13 se pone en nivel HIGH , encendiendo la LED integrada.
2. Espera 1 segundo : El programa se detiene durante 1000 milisegundos (1 segundo).
3. Apaga la LED : El pin 13 se pone en nivel LOW , apagando la LED.
4. Espera 1 segundo : El programa se detiene otros 1000 milisegundos.
5. Repite el ciclo : Después de 1 segundo, el ciclo se repite y el LED vuelve a
encenderse, creando un parpadeo.