0% encontró este documento útil (0 votos)
4 vistas25 páginas

Introducción a Arduino UNO y Programación

Clase de arduino
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas25 páginas

Introducción a Arduino UNO y Programación

Clase de arduino
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 PDF, TXT o lee en línea desde Scribd

LABORATORIO 3 - DF - FCEyN - UBA

1er cuatrimestre - 2023


¿Qué es Arduino? Plataforma de creación de electrónica [Link]
Placa Arduino Software de programación
(Arduino IDE)

Hardware y software abiertos


El proyecto nació en 2003, impulsado por
estudiantes del Instituto de Diseño
Interactivo de Ivrea, Italia, con el fin de
facilitar el acceso y uso de electrónica y
programación.
¿Cómo funciona?
Entradas → Procesamiento → Salida
Analógicas (conversor ADC) Interruptores
Microprocesador
Digitales (lógicas) Control de motores
Comunicación con PC
Señales
...
Arduino UNO: conversor ADC

Precio Aproximado $ 4000


• Conversor Analógico Digital (ADC) 10 bits
• 6 Entradas analógicas Rango [0 ,5] V
• Sample rate aprox. 10 kS/s (0.1 ms de tiempo de medición)

10 bit → 2^10 = 1024 divisiones


analogRead() devuelve un número entre 0 y 1023
Donde 0 es 0 V y 1023 es Vref

• Se puede usar un voltaje de referencia distinto al 5 V por defecto en el pin Vref


• Con Vref = 5 V, la sensibilidad es de 4.9 mV
Arduino UNO Pines del microcontrolador

Comunicación Serie
• Microcontrolador: (USB)

Atmel ATmega328p 8bits,


clock: 16MHz 32KB Flash + potencia
(τ ~ 60 ns) + lenta
Comunicación con
otros periféricos
+ rápida
Alimentación (salida) - potencia
Pulse Width Modulation

Entradas analógicas
(ADC) Interrupciones externas
0 V < Vin < 5 V Comunicación Serie
14 Entradas/Salidas digitales
6 salidas PWM
Para programar otros microcontroladores → (5V – 20 mA)
Arduino UNO Elementos sobre la placa

Alimentación (entrada)
Fuente externa
Otras placas de Arduino
Due Mega

Microcontrolador de 32 Bits Microcontrolador ATmega2560.


Tiene 54 entradas/salidas digitales 54 entradas/salidas digitales 16 (PWM)
12 entradas analógicas, 16 entradas analógicas
Funcionan todos los módulos basados en 3.3V Tiene 6 interrupciones externas.
(no soporta 5V) 4 UART 2 buses modos PWI ,1 SPI
2 buses TWI, SPI y 4 UART
Dos puerto USB para controlar periféricos.

• Más barato
• Necesita regulador externo para la tensión de entrada
Nano • Necesita soldar los pines
Programar Arduino UNO

Programa de placa Arduino + Serial Plot

Instalación / Programación Adicionales

Guía de instalación para Windows y otros Aprendiendo Arduino (Curso)


[Link] [Link]
[Link]
(seguir las instrucciones)
Algo sobre microcontroladores
Guía para la instalación específica de UNO [Link]
[Link] [Link]

Guía para la programación (en Español) [Link]


[Link] del-atmega8/
Programar Arduino UNO 1. Conectar Arduino via USB
2. Seleccionar placa y puerto
¡A diferencia de Python, cuando se crea una variable hay que determinar su tipo!
Programar Todas las líneas terminan en ; excepto bucles y condicionales
Arduino UNO
(similar a C++)

Aquí se declaran las variables


globales y su tipo
Ej.: int led = 9;

Aquí se determinan algunos


parámetros ligados al
microcontrolador, los pines y
las comunicaciones

Aquí se especifica la rutina que se


ejecutará a modo de Loop
8 bits = 1 byte
Tipos de variables
int → 2 bytes (2^16 posibilidades: 2^15 ~ 32k + signo)
long → 4 bytes
float → 4 bytes
double → en Arduino UNO es igual que float
Las operaciones con enteros (int, long) son EXACTAS!
boolean → 1 byte. True o False

Control de tiempos
delay() → Tiempo de espera, en milisegundos. Bloquea el código
millis() → Milisegundos desde el encendido de la placa
Comunicación con Arduino UNO: Serial

[Link]

La información entra en una cola (buffer)


Serial Monitor o Plot
Void Loop en ejecución que se borra cuando se produce la lectura.
Se configura en void setup() {} Configuración: BAUD (bits por segundo) data parity stop bits
Típ. 9600 8 bits no 1 stop bit

[Link](9600) Por defecto

5V
0V
Comunicación con Arduino UNO: Serial
[Link]() → Transforma el contenido en caracteres ASCII (1 byte por caracter)
Ej.: [Link](78) envía dos bytes con los números 55 y 56
[Link]() → Igual pero agrega un caracter de salto de línea (\n)

[Link]() → Envía un byte con el contenido


[Link](78) envía un byte con el número 78 (comunicación más rápida)
La pantalla muestra “N” porque Serial Monitor asume ASCII
Representación hexadecimal

• Es útil para representar un byte.


• 1 byte = 8 bit → 28 = 256 posibilidades:
• 4 bit → 24 = 16 posibilidades:
• 0, 1, 2, ... , 9, A, B, C, D, E, F
• 2 hex = 162 = 256 posibilidades

• Ejemplo: Uso en representación de colores


(256 colores por canal RGB)
DECIMAL 9 11 255
HEX 09 0B FF
Control por Ancho de Pulso PWM (pulse width modulation)
Se varia el ciclo de trabajo (Duty Cycle). Hay dos periodos fijos para elegir.

En dispositivos con respuesta temporal lenta, permite regular intensidades de


luz, velocidades de giro, mediante una señal digital.
Acondicionamiento de señal utilizando un divisor resistivo

Arduino mide solo señales positivas. Entonces hay que sumar un offset
a señales < 0 V. ¿Cómo lo hacemos?

5V
Una señal de 2 Vpp va entre 1 y -1 V
V1 C R
V2
Acondicionada se mueve entre 0 V y 2 V
R Ahora es posible medirla con Arduino
Resistencias pull-up o pull-down

El estado lógico (tensión) de una entrada desconectada no está definido.

INDEFINIDO PULL-UP EXTERNO PULL-UP INTERNO PULL-DOWN INTERNO


Control de Arduino con Python

[Link]
Algunos sensores
Temperatura Sensor corriente
Sensor ultrasonido Sensor de movimiento Sensor Touch capacitivo
y Humedad (efecto hall)

Sensor monóxido Sensor Luz Sensor intensidad


Sensor Humedad Suelo Celda de carga
de carbono Fotoresistor de luz
Actividades
1. Encender un LED externo cada cierto tiempo. Limitar la corriente < 20 mA!
1. [Link]
2. Blink without [Link]
2. Leer una señal analógica con un potenciómetro
1. [Link]
3. Controlar intensidad de LED usando una señal PWM + potenciómetro
1. Usando analogWrite()
4. Medir con el osciloscopio el tren de bits en la comunicación Serie e
interpretar.
5. Acondicionar una señal del generador de funciones para poder medirla
con Arduino.
Cómo destruir un Arduino….o todo lo que hay que evitar!!!

• Voltaje inverso • Exceso de corriente


• Sobrevoltaje • Otras...

Voltaje inverso (V<0 V) aplicado a la Sobrevoltaje (V>5 V) aplicado a un pin


alimentación (VIN), a las entradas/salidas analógico/digital o a un pin de alimentación
digitales o analógicas (VIN)
Cómo destruir un Arduino….o todo lo que hay que evitar!!!

Cortocircuito en placa! Sobrecorriente en pin digital (> 20 mA)


Para evitarla, usar siempre una R>=220 ohm
para este tipo de conexión
Algunos ejemplos [Link]
Arduino UNO
• Leer una señal analógica
Conectar la salida de un potenciómetro a una entrada analógica
Permitira poner la entrada A0 a una tensión intermedia entre 0 y 5 V.

Utilizar un potenciómetro de 10 kW
Leer una señal Analógica

Leer una tensión


Destello de un LED Blink
Desvanecimiento de un LED Fading a LED
Mediante PWM Salidas digitales con ~

También podría gustarte