0% encontró este documento útil (0 votos)
47 vistas49 páginas

Robotica. Programacion Con Arduino

El documento aborda el uso de Arduino en robótica, cubriendo estructuras de control, funciones y bibliotecas, así como la creación de proyectos interactivos. Se enfatiza la accesibilidad del hardware y software de Arduino, promoviendo la educación en STEM y el prototipado rápido. Además, se presentan ejemplos prácticos y ejercicios para aplicar los conceptos aprendidos.

Cargado por

Alison Soliz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
47 vistas49 páginas

Robotica. Programacion Con Arduino

El documento aborda el uso de Arduino en robótica, cubriendo estructuras de control, funciones y bibliotecas, así como la creación de proyectos interactivos. Se enfatiza la accesibilidad del hardware y software de Arduino, promoviendo la educación en STEM y el prototipado rápido. Además, se presentan ejemplos prácticos y ejercicios para aplicar los conceptos aprendidos.

Cargado por

Alison Soliz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 49

ROBOTICA

CONTROL Y PROGRAMACION
CON ARDUINO
ESTUDIANTE:
MATRICULA: AULA
DOCENTE: :
ROBOTICA

INDICE

UNIDAD I:
A) ESTRUCTURAS DE CONTROL
B) SENTENCIAS IF, ELSE, SWITCH
C) BUCLES: FOR, WHILE, DO-WHILE

UNIDAD II:
B) FUNCIONES Y BIBLIOTECAS
C) CREACIÓN Y USO DE FUNCIONES PROPIAS
D) IMPORTACIÓN Y USO DE BIBLIOTECAS (EJEMPLO: SERVO.H,
LIQUIDCRYSTAL.H)

UNIDAD III:

A) FUNDAMENTOS DE PWM
B) APLICACIÓN DE PWM PARA CONTROL DE BRILLO DE LEDS Y
VELOCIDAD DE MOTORES

INTRODUCCION:
ROBOTICA

Arduino es una plataforma de prototipado electrónico de código abierto (open-source)


que combina hardware y software accesible para creadores, estudiantes, ingenieros y
entusiastas. Su objetivo es democratizar la tecnología, permitiendo que cualquier
persona pueda diseñar proyectos interactivos sin necesidad de profundos
conocimientos en electrónica o programación.

¿Por qué Arduino?

 Hardware flexible: Utiliza placas microcontroladoras (como Arduino Uno, Nano,


Mega) con pines configurables para conectarse a sensores, actuadores,
pantallas y más.

 Software sencillo: Programas en un lenguaje basado en C/C++ mediante el IDE


de Arduino, un entorno intuitivo y gratuito.

 Comunidad global: Miles de tutoriales, librerías y proyectos compartidos facilitan


el aprendizaje y la resolución de problemas.

Aplicaciones Principales

Desde proyectos básicos (encender LEDs, medir temperatura) hasta sistemas


complejos (robots, automatización del hogar, IoT), Arduino es la herramienta ideal para:

 Educación en STEM (Ciencia, Tecnología, Ingeniería y Matemáticas).

 Prototipado rápido de ideas tecnológicas.

 Creación de arte interactivo y soluciones de ingeniería.

Filosofía de Arduino

 "Learning by doing": Aprender experimentando y cometiendo errores.

 Low-cost: Componentes económicos y reutilizables.

 Colaboración: Compartir conocimiento para innovar colectivamente.

UNIDAD I:
ROBOTICA

ESTRUCTURAS DE CONTROL

Las estructuras de control permiten tomar decisiones, repetir bloques de código y


manejar el flujo del programa. Se dividen en dos categorías
principales: condicionales y bucles.

Estructuras Condicionales

Permiten ejecutar código bajo ciertas condiciones.

a. if (si)

Ejecuta un bloque de código solo si se cumple una condición.

Ejemplo con sensor de luz:

b. if-else (si-sino)

Ejecuta un bloque si la condición es verdadera y otro si es falsa.


ROBOTICA

Ejemplo con botón:

c. if-else if-else (si-sino si-sino)

Evalúa múltiples condiciones en secuencia.

Ejemplo con termostato:


ROBOTICA

d. switch-case (según-sea)

Útil para comparar una variable con múltiples valores.

Ejemplo con selector de modos:


ROBOTICA

Bucles (Estructuras Repetitivas)

Permiten repetir un bloque de código múltiples veces.

for (para)

Repite un bloque un número determinado de veces.

Ejemplo: Secuencia de LEDs:

while (mientras)

Repite un bloque mientras se cumpla una condición.

Ejemplo: Esperar hasta que se presione un botón:


ROBOTICA

do-while (hacer-mientras)

Similar a while, pero garantiza al menos una ejecución del bloque.

Ejemplo: Menú interactivo por serial:

Palabras Clave para Control de Flujo

break: Sale inmediatamente de un bucle o switch.


ROBOTICA

continue: Salta a la siguiente iteración del bucle.

return: Sale de una función y opcionalmente devuelve un valor.

Consejos Prácticos

1. Evita bucles infinitos no controlados: En el loop() principal, usa delay() con


moderación.

2. Combina estructuras: Anida condicionales dentro de bucles para lógicas


complejas.

3. Depura con el Monitor Serial: Usa Serial.print() para verificar variables y


condiciones.

Ejemplo Integrado: Semáforo Inteligente


ROBOTICA

Ejercicios Propuestos

1. Crea un termómetro que muestre en serial si la temperatura es "Baja", "Normal"


o "Alta".

2. Diseña un juego de luces con 3 LEDs que se enciendan en secuencia usando


bucles for.

3. Implementa un temporizador que active un motor durante 10 segundos al


presionar un botón (usa while).

Con estas estructuras, podrás crear programas complejos y reactivos en Arduino.


¡Experimenta modificando los ejemplos y combinando conceptos!

CUESTIONARIO I
ROBOTICA

1. ¿Qué dos funciones principales debe tener todo sketch de Arduino?

2. En Arduino, ¿qué hace digitalWrite(13, HIGH)?

3. ¿Qué función se usa para leer un valor analógico en Arduino?

4. ¿Qué rango de valores devuelve analogRead(A0)?

5. ¿Qué pines de Arduino son compatibles con PWM (salida analógica simulada)?

6. ¿Qué hace delay(1000)?

7. ¿Cuál es la función de pinMode(5, INPUT_PULLUP)?

8. En un circuito con un botón y un LED, si el botón está conectado


con INPUT_PULLUP, ¿qué valor se leerá cuando esté presionado?

9. ¿Qué estructura de control se usa para evaluar múltiples condiciones en


secuencia?

10. ¿Qué hace analogWrite(9, 128)?

11. ¿Qué bucle se ejecuta al menos una vez, incluso si la condición es falsa?
ROBOTICA

12. ¿Qué palabra clave se usa para salir inmediatamente de un bucle?

13. ¿Qué código usarías para encender un LED cuando un sensor de luz detecte
oscuridad (valor < 500)?

14. ¿Qué librería se incluye para controlar un servo motor?

UNIDAD II
ROBOTICA

FUNCIONES Y BIBLIOTECAS

Introducción Conceptual

a. ¿Por qué usar funciones y bibliotecas?

 Abstracción: Ocultar complejidad detrás de interfaces simples


(ej: servo.write(90) en lugar de manipular registros del timer).

 Reusabilidad: Escribir código una vez y usarlo en múltiples proyectos.

 Colaboración: Compartir código estandarizado con la comunidad.

 Mantenibilidad: Facilitar la actualización y corrección de errores.

b. Diferencias clave

Funciones en Profundidad

a. Tipos de funciones

1. Funciones integradas (built-in):

o Proporcionadas por el lenguaje (ej: digitalWrite(), delay()).

2. Funciones personalizadas:

o Creadas por el usuario para tareas específicas.

b. Estructura detallada
ROBOTICA

c. Ejemplo avanzado: Función con parámetros predeterminados

d. Funciones inline

 Optimizan velocidad al evitar overhead de llamadas (útil en código crítico).

e. Punteros a funciones

 Permiten crear callbacks o dispatchers dinámicos.


ROBOTICA

Bibliotecas: Más Allá de lo Básico

a. Anatomía de una biblioteca

Una biblioteca típica contiene:

 Archivo de encabezado (.h): Declaraciones públicas (clases, funciones,


constantes).

 Archivo de implementación (.cpp): Definiciones de funciones.

 Archivos adicionales: Documentación (README.md), ejemplos (examples/),


metadata (library.properties).

b. Tipos de bibliotecas

1. Bibliotecas estándar:

o Incluidas con el IDE (ej: Wire, SPI).

2. Bibliotecas de terceros:

o Desarrolladas por la comunidad


(ej: Adafruit_NeoPixel, DHT_sensor_library).

3. Bibliotecas de sistema:

o De bajo nivel, acceden directamente al hardware (ej: avr/pgmspace.h).

c. Instalación avanzada de bibliotecas

1. Gestor de bibliotecas integrado:

o Sketch > Include Library > Manage Libraries.

2. Instalación manual:

o Descargar ZIP y colocar en Documents/Arduino/libraries/.


ROBOTICA

Desde GitHub:

cd ~/Documents/Arduino/libraries/

git clone https://github.com/usuario/repositorio.git

d. Uso profesional de bibliotecas

 Versionado: Especificar versiones compatibles en library.properties.

 Namespaces: Evitar colisiones de nombres (aunque Arduino no soporta C++


namespaces por defecto).

Creación de Bibliotecas Profesionales

a. Estructura de directorios

MiGranBiblioteca/

├── library.properties // Metadata

├── keywords.txt // Resaltado en el IDE

├── src/

│ ├── MiGranBiblioteca.h

│ └── MiGranBiblioteca.cpp

├── examples/

│ └── DemoBasico/
ROBOTICA

│ └── DemoBasico.ino

└── README.md // Documentación

b. Archivo library.properties

name=MiGranBiblioteca

version=1.0.0

author=Tu Nombre <[email protected]>

maintainer=Tu Nombre <[email protected]>

sentence=Una biblioteca increíble para controlar dispositivos XYZ.

paragraph=Incluye soporte para protocolos avanzados y configuración flexible.

category=Device Control

url=https://github.com/tu-usuario/mi-gran-biblioteca

architectures=avr,esp32

c. Optimización para diferentes placas

#if defined(ARDUINO_AVR_UNO)

// Código específico para Arduino Uno

#elif defined(ESP32)

// Código para ESP32

#endif

d. Documentación con Doxygen

/**

* @class Motor

* @brief Controla motores DC con puente H.

*
ROBOTICA

* @param pin1 Número de pin para la dirección 1

* @param pin2 Número de pin para la dirección 2

*/

class Motor {

public:

Motor(int pin1, int pin2);

void adelante(int velocidad);

void atras(int velocidad);

};

Técnicas Avanzadas

a. Plantillas (Templates)

b. Sobrecarga de funciones
ROBOTICA

c. Herencia en bibliotecas

Flujo de Trabajo Profesional

a. Control de versiones con Git

b. Integración Continua (CI)

 Ejemplo con GitHub Actions (.github/workflows/ci.yml):

name: Arduino CI

on: [push]

jobs:

build:

runs-on: ubuntu-latest
ROBOTICA

steps:

- uses: actions/checkout@v2

- name: Setup Arduino CLI

uses: arduino/setup-arduino-cli@v1

- name: Compile examples

run: |

arduino-cli core install arduino:avr

arduino-cli lib install "DHT sensor library"

for example in examples/*; do

arduino-cli compile -b arduino:avr:uno $example

done

c. Pruebas unitarias

 Usar frameworks como AUnit:

Proyecto Integrador: Sistema de Monitoreo Ambiental


ROBOTICA

a. Componentes

 Sensor DHT22 (Temperatura/Humedad)

 Sensor MQ135 (Calidad del aire)

 Pantalla OLED I2C

 Módulo WiFi ESP8266

b. Diagrama de arquitectura

c. Código principal
ROBOTICA

Optimización y Rendimiento

a. Gestión de memoria

 PROGMEM: Almacenar datos en memoria de programa.

 tack vs Heap: Evitar desbordamientos con asignación dinámica cuidadosa.

b. Técnicas de bajo consumo


ROBOTICA

c. Tiempos críticos con micros()

Depuración Profesional

a. Técnicas avanzadas

 Depuración por hardware: Usar debuggers como Atmel-ICE.

 Trazas condicionales:

b. Análisis de rendimiento

 Medición de ciclos:
ROBOTICA

CREACIÓN Y USO DE FUNCIONES PROPIAS

Introducción a las Funciones Personalizadas

Una función es un bloque de código reutilizable que realiza una tarea específica. En
Arduino, crear funciones propias permite:

 Organizar el código: Dividir programas complejos en módulos lógicos.

 Evitar repeticiones: Ejecutar la misma lógica en múltiples lugares sin copiar


código.

 Facilitar el mantenimiento: Modificar la lógica en un solo lugar afecta a todo el


programa.

 Mejorar legibilidad: Nombres descriptivos hacen el código autoexplicativo.

Anatomía de una Función en Arduino

Una función se compone de:

 Tipo de retorno: El tipo de dato que devuelve (void si no devuelve nada).

 Nombre: Identificador único (usar convención camelCase o snake_case).

 Parámetros: Variables de entrada (opcionales).

 Cuerpo: Bloque de código entre {}.

Sintaxis General:

Tipos de Funciones por Retorno

a. Funciones sin retorno (void):


ROBOTICA

b. Funciones que devuelven un valor:

Paso de Parámetros

a. Parámetros por valor:

Se pasa una copia del valor (no modifica la variable original).

Parámetros por referencia (usando punteros):

Modifica la variable original.


ROBOTICA

Ejemplos Prácticos

Ejemplo 1: Función para parpadear un LED

Ejemplo 2: Función con múltiples retornos (usando struct):


ROBOTICA

Alcance de Variables (Scope)

 Variables locales: Declaradas dentro de una función, solo existen en ella.

 Variables globales: Declaradas fuera de funciones, accesibles en todo el


sketch.

 Variables estáticas: Mantienen su valor entre llamadas a la función.

Funciones Recursivas

Funciones que se llaman a sí mismas (útil para algoritmos matemáticos).

Buenas Prácticas

1. Nombres descriptivos: calcularPromedioTemperatura() en lugar de funcion1().


ROBOTICA

2. Una función, una tarea: Evitar funciones que hagan múltiples cosas no
relacionadas.

3. Comentarios útiles: Explicar qué hace, no cómo lo hace (a menos que sea
crítico).

4. Validar parámetros: Asegurar que los valores de entrada sean válidos.

5. Optimizar para SRAM: Usar PROGMEM para datos grandes y evitar variables
globales innecesarias.

Caso de Estudio: Sistema de Monitoreo de Temperatura

Objetivo: Leer un sensor LM35, calcular promedio cada 10 lecturas y mostrar en Serial.
ROBOTICA

Depuración de Funciones

Técnicas comunes:

5. Serial.println():

Valores de retorno temporales:

Errores Comunes y Soluciones


ROBOTICA

Integración con Bibliotecas

Las funciones propias pueden combinarse con bibliotecas para crear sistemas
complejos:

Rendimiento y Optimización

 Funciones inline: Para código pequeño y frecuentemente usado.


ROBOTICA

Evitar delay() en funciones: Usar máquinas de estado con millis().

Filosofía de Diseño de Funciones

 Principio KISS (Keep It Simple, Stupid): Funciones cortas y enfocadas.

 DRY (Don't Repeat Yourself): Nunca duplicar código; siempre usar funciones.

 Abstracción progresiva: Empezar con código concreto y luego generalizar.

EJERCICIOS PARA PRACTICAR

1. Semáforo modular: Crear funciones encenderRojo(), encenderVerde(), etc.

Código en Arduino:
ROBOTICA
ROBOTICA

Explicación del código:

1. Definición de pines : Se definen los pines donde están conectados los LEDs (rojo,
amarillo y verde). En este caso, usamos los pines 8, 9 y 10.

2. Configuración inicial (setup) : En la función setup(), se configuran los pines


como salidas y se apagan todos los LEDs llamando a la función apagarTodos().

3. Ciclo principal (loop) : En la función loop(), se simula el comportamiento de un


semáforo:

 El LED rojo se enciende durante 5 segundos.

 Luego, el LED amarillo se enciende durante 2 segundos.

 Finalmente, el LED verde se enciende durante 5 segundos.

 Este ciclo se repite indefinidamente.


ROBOTICA

4. Funciones modulares :
 encenderRojo() : Enciende el LED rojo y apaga los demás.

 encenderAmarillo() : Enciende el LED amarillo y apaga los demás.

 encenderVerde() : Enciende el LED verde y apaga los demás.

 apagarTodos() : Apaga todos los LEDs.

Conexión de hardware sugerida:

 LED Rojo : Conectado al pin 8.

 LED Amarillo : Conectado al pin 9.

 LED Verde : Conectado al pin 10.

 Resistencias : Usa resistencias de 220 ohmios en serie con cada LED para
limitar la corriente.

2. Calculadora científica: Funciones para potencia(), raizCuadrada(), logaritmo().

Código en Arduino:
ROBOTICA
ROBOTICA

Explicación del código:

1. Comunicación serial (Serial.begin) :

 Se inicializa la comunicación serial a 9600 baudios para que puedas


interactuar con el Arduino a través del monitor serial.

 El programa muestra un menú de opciones al usuario.

2. Menú de opciones :
 El usuario puede seleccionar entre tres opciones:
ROBOTICA

1. Potencia : Calcula la potencia de un número dado una base y un


exponente.
2. Raíz cuadrada : Calcula la raíz cuadrada de un número.
3. Logaritmo natural : Calcula el logaritmo natural (ln) de un número.
3. Funciones modulares :
 calcularPotencia() : Pide al usuario que ingrese una base y un

exponente, y luego calcula la potencia usando la función pow() .

 calcularRaizCuadrada() : Pide al usuario que ingrese un número y

calcula su raíz cuadrada usando la función sqrt() . Si el número es


negativo, se muestra un mensaje de error.
 calcularLogaritmo() : Pide al usuario que ingrese un número y calcula su

logaritmo natural usando la función log() . Si el número es menor o igual


a cero, se muestra un mensaje de error.
4. Interacción con el usuario :
 El programa espera a que el usuario ingrese datos a través del monitor

serial. Los valores ingresados se leen con Serial.parseFloat() para

números decimales y Serial.parseInt() para enteros.

 Después de cada cálculo, el programa vuelve a mostrar el menú para que


el usuario pueda realizar otra operación.
Ejemplo de uso:

1. Abre el Monitor Serial en el Arduino IDE.

2. Verás el siguiente menú:


ROBOTICA

Si seleccionas la opción 1 (Potencia), el programa te pedirá que ingreses la base y el


exponente. Por ejemplo:

Si seleccionas la opción 2 (Raíz cuadrada), el programa te pedirá que ingreses un


número. Por ejemplo:

Si seleccionas la opción 3 (Logaritmo natural), el programa te pedirá que ingreses un


número. Por ejemplo:

Notas importantes:

 Funciones matemáticas : El código utiliza las funciones matemáticas estándar


de C++ como pow(), sqrt() y log(), que están disponibles en Arduino.

 Validación de entrada : El código verifica que los números ingresados sean


válidos para las operaciones correspondientes (por ejemplo, no se permite
calcular la raíz cuadrada de un número negativo ni el logaritmo de un número no
positivo).
ROBOTICA

IMPORTACIÓN Y USO DE BIBLIOTECAS

¿Qué son las Bibliotecas?

Las bibliotecas son colecciones de código preescrito que simplifican el uso de hardware
complejo o implementan funcionalidades avanzadas. Contienen:

 Funciones: Para interactuar con dispositivos (ej: mover un servo, escribir en una
pantalla LCD).

 Clases: Estructuras que encapsulan variables y métodos relacionados.

 Ejemplos: Sketches de demostración incluidos en el IDE.

Instalación de Bibliotecas

a. Desde el Library Manager del IDE

1. Menú: Herramientas > Gestor de Bibliotecas.

2. Buscar: Ejemplo: "Servo" o "LiquidCrystal".

3. Instalar: Seleccionar versión y hacer clic en "Install".

b. Instalación Manual (archivo ZIP)

1. Descargar la biblioteca como ZIP desde GitHub u otro repositorio.


ROBOTICA

2. Menú: Programa > Incluir Biblioteca > Añadir biblioteca .ZIP.

3. Seleccionar el archivo descargado.

Sintaxis para Incluir Bibliotecas

Ejemplo 1: Uso de Servo.h para Controlar un Servomotor

a. Hardware Necesario

 Servomotor (ej: SG90).

 Arduino Uno.

 Fuente de poder externa (recomendado para servos grandes).

b. Conexiones

c. Funciones Principales de Servo.h

 attach(pin): Vincula el servo a un pin.

 write(angulo): Establece el ángulo (0-180°).

 read(): Devuelve el ángulo actual.

 detach(): Desvincula el servo.

d. Código Paso a Paso


ROBOTICA

Ejemplo 2: Uso de LiquidCrystal.h para Pantallas LCD

a. Hardware Necesario

 Pantalla LCD 16x2 (con interfaz HD44780).

 Potenciómetro (para ajustar contraste).

 Arduino Uno.

b. Conexiones
ROBOTICA

c. Código Paso a Paso

d. Funciones Principales de LiquidCrystal.h

 begin(columnas, filas): Inicializa la pantalla.

 print(texto): Muestra texto o números.

 setCursor(col, fila): Posiciona el cursor.

 clear(): Borra la pantalla.

 scrollDisplayLeft(): Desplaza el texto a la izquierda.

5. Solución de Problemas Comunes

Problemas con Servo.h:


ROBOTICA

Problemas con LiquidCrystal.h:

Mejores Prácticas

1. Revisar ejemplos incluidos: Acceder a Archivo > Ejemplos >


[NombreBiblioteca].

2. Consultar documentación:

o Referencia de Servo.h

o Referencia de LiquidCrystal.h

3. Optimizar memoria:

o Usar F () para almacenar strings en flash: lcd.print(F("Hola"));.

4. Manejar múltiples dispositivos:

o Crear objetos separados: Servo servo1, servo2;

Bibliotecas Alternativas y Avanzadas

 ServoESP32.h: Para manejar servos en placas ESP32.

 LiquidCrystal_I2C.h: Controlar LCDs via módulo I2C (reduce cables).

 AccelStepper.h: Para control preciso de motores paso a paso.


ROBOTICA

UNIDAD III

FUNDAMENTOS DE PWM

¿Qué es PWM?

PWM (Pulse Width Modulation, o Modulación por Ancho de Pulso) es una técnica
utilizada para controlar la cantidad de energía entregada a un dispositivo mediante la
variación del ancho de los pulsos en una señal digital. En lugar de proporcionar una
tensión continua, PWM genera una señal periódica que alterna entre dos estados: alto
(ON) y bajo (OFF).

La clave de PWM radica en ajustar el ancho de pulso , es decir, el tiempo durante el


cual la señal está en estado alto dentro de un período fijo. Esto permite simular señales
analógicas utilizando señales digitales.

¿Por qué usar PWM?

PWM es ampliamente utilizado debido a su simplicidad y eficiencia. Algunas de las


razones principales para usar PWM son:

 Control preciso : Permite ajustar la potencia entregada a dispositivos como


motores, LEDs, servomotores, etc.

 Eficiencia energética : Reduce el consumo de energía al apagar y encender


rápidamente un dispositivo en lugar de mantenerlo siempre encendido.

 Simulación de señales analógicas : Aunque la señal es digital, puede usarse


para emular valores analógicos (por ejemplo, atenuar un LED).

 Compatibilidad con microcontroladores : La mayoría de los microcontroladores


modernos tienen pines dedicados para generar señales PWM.

Conceptos clave de PWM

a) Ciclo de trabajo (Duty Cycle)


ROBOTICA

El ciclo de trabajo es la proporción del tiempo que la señal está en estado alto
(ON) respecto al período total de la señal. Se expresa como un porcentaje.

Ejemplo : Si el período total es de 10 ms y la señal está en alto durante 2 ms, el ciclo


de trabajo será:

b) Frecuencia

La frecuencia de una señal PWM es el número de ciclos completos (alto + bajo) que
ocurren en un segundo. Se mide en Hertz (Hz).

Ejemplo : Si el período total es de 10 ms (0.01 segundos), la frecuencia será:

c) Resolución

La resolución de PWM se refiere al número de niveles discretos que puede tener el


ciclo de trabajo. Por ejemplo, si un microcontrolador tiene una resolución de 8 bits, el
ciclo de trabajo puede variar entre 0 y 255 (2^8 niveles).

Aplicaciones comunes de PWM

PWM tiene una amplia gama de aplicaciones en electrónica y robótica. Algunas de las
más comunes son:

1. Control de brillo de LEDs :


ROBOTICA

 Variando el ciclo de trabajo, puedes ajustar el brillo de un LED. Un ciclo


de trabajo del 100% hará que el LED esté completamente encendido,
mientras que un ciclo de trabajo del 0% lo apagará.

2. Control de velocidad de motores DC :

 Al variar el ciclo de trabajo, puedes controlar la velocidad de un motor DC.


Esto es útil en robots, drones y otros sistemas mecánicos.

3. Servomotores :

 Los servomotores utilizan PWM para determinar la posición angular. La


duración del pulso alto (generalmente entre 1 ms y 2 ms) indica la
posición deseada.

4. Generación de señales analógicas :


 PWM puede usarse para generar señales analógicas mediante filtros RC
(resistencia-capacitor). Esto es útil en aplicaciones de audio y sensores.
5. Control de temperatura en sistemas térmicos :
 PWM se utiliza para controlar la potencia entregada a elementos
calefactores, permitiendo ajustar la temperatura de manera precisa.

Generación de PWM en Arduino

Arduino tiene pines específicos que admiten PWM. Estos pines están marcados con el

símbolo ~ (por ejemplo, ~3 , ~5 , ~6 , etc.). Para generar una señal PWM en Arduino,

puedes usar la función analogWrite() .

Sintaxis de analogWrite()
ROBOTICA

Ventajas de PWM

1. Eficiencia energética : Como la señal se apaga y enciende rápidamente, se


reduce el consumo de energía en comparación con una señal analógica
continua.

2. Precisión : Permite un control muy preciso de la potencia entregada a un


dispositivo.

3. Compatibilidad : La mayoría de los microcontroladores modernos tienen


soporte nativo para PWM.

4. Simplicidad : Es fácil de implementar y requiere pocos recursos.

Desventajas de PWM

1. Interferencia electromagnética (EMI) : Las señales PWM pueden generar ruido


electromagnético, lo que puede interferir con otros dispositivos electrónicos.

2. Limitaciones de frecuencia : Algunos dispositivos requieren frecuencias


específicas de PWM, y no todos los microcontroladores pueden generarlas.

3. Componentes adicionales : En algunas aplicaciones, como la generación de


señales analógicas, se necesitan filtros externos (RC).

Filtros RC para convertir PWM en señal analógica

Si necesitas convertir una señal PWM en una señal analógica continua, puedes
usar un filtro RC (resistencia-capacitor). Este filtro suaviza los pulsos de la señal
PWM para obtener un voltaje promedio.
ROBOTICA

Diagrama básico de un filtro RC

 Funcionamiento : El capacitor almacena carga durante los pulsos altos y la


libera durante los pulsos bajos, creando un voltaje promedio.

CUESTIONARIO II

1. ¿Qué significa PWM y para qué se utiliza?

2. ¿Qué es el ciclo de trabajo (Duty Cycle) y cómo se calcula?

3. ¿Qué representa la frecuencia en una señal PWM y cómo se calcula?

4. Menciona al menos tres aplicaciones comunes de PWM.

5. ¿Qué función se utiliza en Arduino para generar una señal PWM y qué
parámetros recibe?

6. ¿Cómo se puede convertir una señal PWM en una señal analógica continua?
ROBOTICA

También podría gustarte