Sunteți pe pagina 1din 55

MOTORES

Breve historia
Aguja de la brújula de Oersted
Hans Oersted fue un físico danés que estudió la relación entre la electricidad y el
magnetismo. En 1820, notó algo extraño: al cambiar la corriente en un cable, se movía la
aguja de una brújula cercana.

A pesar de su simplicidad, este experimento demuestra la interacción entre los dos


elementos básicos de un motor eléctrico: corriente cambiante y campo magnético. Cuando
estos dos componentes están muy cerca, el resultado es movimiento.
Auto-rotor de Jedlik
El experimento de Oersted causó una ráfaga de actividad en la comunidad científica. En
Francia, Andre-Marie Ampere desarrolló ecuaciones que relacionan la corriente en un cable
con el campo magnético alrededor del cable. En Inglaterra, Michael Faraday ideó una serie
de experimentos que demuestran cómo los cables que transportan corriente se mueven en
presencia de un campo magnético. Pero el crédito para el primer motor eléctrico práctico
pertenece al físico húngaro Anyos Jedlik. En lugar de colocar el cable fuera de una brújula,
lo enrolló en bobinas y colocó las bobinas dentro de un campo magnético. A medida que la
corriente cambia dentro de las bobinas, las bobinas rotan. En 1827, el Dr. Jedlik llamó a su
motor el auto rotor electromagnético.
Anatomía de un Motor
Estructura externa:

• Caso o carcasa: la carcasa externa que rodea el motor


• Eje: el cilindro de metal que se extiende desde el centro del motor
• Alambres o conductores: los conductores que llevan electricidad al motor
Estos términos deben ser fáciles de entender. La entrada eléctrica se entrega al motor a
través de sus cables. Cuando el motor funciona, gira el eje. Este eje está conectado a una
carga como el neumático de un automóvil RC.
Estructura interna:
La anterior imagen representa una sección transversal de un motor rotativo. A medida que
la corriente ingresa al motor, el elemento central gira dentro de la caja. Hay dos maneras
de ver la estructura del motor: mecánica y eléctricamente.
1. Desde un punto de vista mecánico, el motor se compone de dos partes. El rotor es la
parte que se mueve, y el estator es la parte que permanece en su lugar. El espacio que
separa el rotor y el estator se llama espacio de aire.
2. Desde el punto de vista eléctrico, la estructura de un motor se puede dividir en otras dos
partes. La armadura es la parte que recibe corriente. El elemento central del motor (el rotor)
es la armadura porque recibe la corriente entrante. La segunda parte eléctrica es
responsable de generar el campo magnético. Si el campo es producido por imanes
permanentes, la segunda parte se llama imán de campo. Si el campo magnético es
producido por un electroimán, la segunda parte se llama bobinado de campo.
Descripción general de los motores eléctricos
Los motores universales pueden funcionar con alimentación de CA y CC. Además, si
cualquier motor está conectado a un codificador o sensor de posición, su ángulo puede
medirse y controlarse.
Un motor que gira alrededor de un eje es un motor rotativo. Si se mueve en línea recta, es
un motor lineal. La gran mayoría de los motores eléctricos son giratorios. Pero los motores
lineales son importantes en muchas aplicaciones, especialmente en robótica.
Los motores eléctricos se pueden categorizar según la naturaleza de la potencia de entrada.
Un motor de CC recibe alimentación de CC (corriente continua), como por ejemplo desde
una batería o un regulador de potencia. Un motor de CA recibe alimentación de CA
(corriente alterna), como una toma de corriente de pared.
Motores de CC
Los motores de CC aceptan alimentación eléctrica de CC, como la que proporciona una
batería. Los motores de CC se dividen en motores con escobillas y sin escobillas, la
distinción principal entre ellos implica la necesidad de un conmutador. En pocas palabras,
un conmutador invierte la tensión a medida que el motor gira, garantizando así que el motor
siga girando. Los motores con un conmutador mecánico se llaman motores con escobillas
o motores conmutados. Estos motores son simples y de bajo costo, pero se necesita
mantenimiento periódico para mantenerlos funcionando correctamente. Los motores de
corriente continua sin escobillas, comúnmente llamados BLDC, no requieren mantenimiento
como lo hacen los motores con cepillos, pero su estructura es más compleja. Esto significa
que cuestan más dinero y les cuesta mucho más controlarlos.
Motores de CA
Los motores de CA son comunes en entornos industriales y domésticos, y los encontrará
en licuadoras, microondas y lavadoras. Los motores de CA vienen en dos tipos: síncrono y
asíncrono. La diferencia entre ellos depende de cómo se debe controlar la velocidad del
motor. La velocidad de un motor síncrono se sincroniza con la frecuencia de la alimentación
de CA entrante. Pero la mayoría de los motores de CA son asincrónicos, lo que significa
que su velocidad no está sincronizada con la frecuencia de la potencia entrante. Estos
motores, frecuentemente llamados motores de inducción, son populares, simples y
confiables.
MOTORES DC
Si su dispositivo está diseñado para funcionar con baterías, energía solar, una interfaz USB
o cualquier otra fuente de corriente continua (CC), los únicos motores que debe considerar
son los motores de CC.
Fundamentos del motor DC
Los motores de CC con escobillas y sin escobillas tienen diferentes estructuras internas y
diferentes métodos de control, pero tienen cuatro características en común:
• El par es aproximadamente proporcional a la corriente.
• La velocidad es aproximadamente proporcional al voltaje.
• Los circuitos de control emplean interruptores eléctricos para entregar potencia al motor.
• Un controlador puede controlar el funcionamiento del motor utilizando señales PWM
(modulación de ancho de pulso).
Circuitos de conmutación
La principal desventaja de usar electroimanes es el consumo de energía. Es por eso que
incluso los motores pequeños pueden necesitar decenas de amperios para funcionar
correctamente.
El circuito que controla la operación de un motor se llama controlador. En los sistemas
modernos, este es un circuito integrado. En la mayoría de los dispositivos centrados en los
fabricantes, este es un microcontrolador o un procesador de baja potencia. Estos
dispositivos funcionan con miliamperios, por lo que no pueden proporcionar directamente a
un motor la potencia que necesita. Por esta razón, los circuitos de motor necesitan
interruptores eléctricos.
Interruptores eléctricos
En un circuito eléctrico, un interruptor mecánico crea una ruta conductiva cuando se
presiona un botón. Un interruptor eléctrico funciona esencialmente de la misma manera.
Cuando el controlador aplica una pequeña tensión a un terminal, el interruptor crea una ruta
conductiva que permite que la corriente fluya a través de los otros terminales.
El lado izquierdo de la anterior imagen representa el símbolo estándar de dos terminales
para un interruptor mecánico.
El lado derecho presenta un símbolo de tres terminales que creé para representar un
interruptor eléctrico ideal. Cuando el voltaje de entrada es mayor que 0 V, el interruptor se
cierra y crea una ruta conductora entre los otros dos terminales. Si el voltaje de entrada es
cero o menor, el interruptor está abierto y no fluye corriente entre los otros dos terminales.
La siguiente figura cómo se ve esto. Cuando VCONTROLLER es cero, el interruptor está
abierto. No fluye corriente, por lo que el motor no gira. Pero cuando VCONTROLLER es
mayor que cero, el interruptor se cierra y entrega corriente desde VPOWER a través del
motor, causando que gire.
Transistores como interruptores eléctricos
Los interruptores eléctricos ideales no existen en realidad, pero podemos aproximar dicho
interruptor con un dispositivo llamado transistor.
Un transistor es un dispositivo electrónico semiconductor utilizado para entregar una señal
de salida en respuesta a una señal de entrada, que cumple funciones de amplificador,
oscilador, conmutador o rectificador.
Entre el flujo de corriente eléctrica y flujo de agua, resulta que con el agua tenemos una
cosa muy similar al transistor. Se llama grifo.
Si, usamos los grifos para abrir y cerrar para ducharnos o lavarnos las manos y que cumplen
básicamente dos funciones:
• Permitir abrir o cortar el flujo de agua (digitalmente SI/NO).
• Regular la intensidad de dicho flujo, abriendo más o menos el paso.

Pues básicamente un transistor es exactamente lo mismo pero construido de otro modo,


con diferentes materiales y un poco más rápido de accionar. Un transistor puede trabajar
de dos maneras:
• Permitir o cortar el flujo de corriente.
• Amplificando una señal de entrada (enseguida volvemos)
Cuando un transistor funciona de la primera manera, en modo pasa o no pasa, pero sin
medias tintas, decimos que funciona al corte (no pasa) o a saturación (pasa sin
restricciones). Y esto es el fundamento de toda tecnología digital moderna: Ordenadores,
teléfonos, consolas, relojes digitales. De hecho un transistor en corte es un 0 y en saturación
es un 1, (o TRUE / FALSE).
Los grifos, tiene tres partes: entrada, salida y control. Los transistores igual, pero se llaman
emisor, colector y base (E, C, B).

Si se hace funcionar un grifo y vamos moviendo sin parar el control en ambas direcciones,
el flujo de salida de agua es proporcional al Angulo del mando en cada momento. Y si la
tubería fuese lo bastante enorme se estaría amplificando enormemente nuestro movimiento
manual.
Cuando se hace eso con un transistor poniendo en la Base una señal eléctrica variable, el
flujo de corriente entre el Emisor y el Colector sigue la señal de la base pero amplificándola.
Se pueden conseguir ganancias enormes con este sistema y es la base de todos los
amplificadores electrónicos modernos.
Funcionamiento
• Cuando la base de un transistor se aterriza a (0v), no fluye corriente del emisor al colector,
el transistor está apagado y entra en corte.
• Si la base es polarizada directamente por al menos 0,6 volts, fluirá una corriente del emisor
al colector, el transistor esta encendido y entra en saturación.
Cuando se opera únicamente en estos dos modos, el transistor funciona como un
interruptor.
Transistor 2N2222

La flecha del emisor indica la dirección de la corriente y que es un transistor NPN, si la


flecha tuviera la dirección contraria sería un transistor PNP.
Modulación de ancho de pulso (PWM)
Con un interruptor eléctrico, el controlador puede activar o desactivar totalmente la corriente
de un motor. Pero, ¿y si quieres que el motor gire al 75% de su velocidad máxima? ¿Qué
sucede si desea que la velocidad del motor aumente gradualmente? Aumentar el voltaje
del controlador no ayudará; una vez que el voltaje de la base excede el voltaje umbral del
transistor, aumentar la tensión de la base adicionalmente no aumentará sustancialmente la
corriente.
En cambio, los controladores controlan el comportamiento del motor entregando pulsos que
abren y cierran el interruptor para cantidades de tiempo precisas. Esta entrega de impulsos
se conoce como modulación de ancho de pulso o PWM. El concepto subyacente de PWM
es simple. El controlador entrega una serie de pulsos a la puerta del interruptor. Estos
pulsos abren y cierran el interruptor y el interruptor entrega impulsos de corriente al motor.
El controlador genera impulsos a intervalos iguales, de modo que cuanto más ancho es el
pulso, más corriente alcanza el motor y más rápido se ejecuta. La siguiente figura muestra
cómo es un tren de pulsos PWM.

En este caso, el controlador entrega cuatro pulsos a la puerta del interruptor. Como se
indica en la figura, T es el tiempo entre los bordes ascendentes de dos pulsos adyacentes.
Este intervalo se conoce como el marco o el período. El controlador establece T al
configurar la frecuencia PWM, que equivale a 1 / T. t es el período de tiempo que la señal
del controlador es alta (mayor que la tensión umbral). Este tiempo se conoce como ancho
de pulso. El ciclo de trabajo es la relación entre el ancho del impulso y el marco, o t / T.
Motores con escobillas
Son los motores prácticos más simples, sus estructuras internas son simples y fáciles de
controlar. Como ejemplo, la siguiente figura muestra un motor de corriente continua con
escobillas de 12 voltios.
A pesar de su simplicidad, los motores de CC con escobillas tienen características que
pueden hacerlos inadecuados para ciertas aplicaciones. Para entender por qué este es el
caso, debe estar familiarizado con la idea de la conmutación mecánica.
Conmutación mecánica
Cada motor eléctrico contiene dos partes: corriente en un conductor y un campo magnético.
Es importante tener en cuenta que la corriente debe cambiar con el tiempo. Si la corriente
en el conductor es constante, el motor no hará una rotación completa.
Esto puede parecer extraño la corriente continua implica corriente constante. Para ayudar
a aclarar esto, la siguiente imagen presenta un bucle de alambre que transporta corriente
entre dos imanes. La orientación del cable cambia en cada caso, pero la corriente, I, es la
misma.

Un bucle rotativo que lleva corriente constante en un campo magnético


Las flechas etiquetadas F representan las fuerzas que actúan sobre el cable. Estas fuerzas
dependen de tres cosas: la orientación del cable (horizontal, vertical, en un ángulo), la
dirección de la corriente y la dirección del campo magnético (de N a S). La figura anterior
muestra tres situaciones que se explican de la siguiente manera:
• En la Figura a, el cable es horizontal. La corriente entra en su lado izquierdo y se va por
la derecha. Debido a la posición del cable y la dirección de la corriente, dos fuerzas actúan
sobre él: uno que empuja el lado izquierdo del cable hacia arriba y otro que empuja el lado
derecho hacia abajo. Como resultado, el cable gira en una orientación en el sentido de las
agujas del reloj.
• En la Figura b, el cable está posicionado en un ángulo. Nuevamente, se producen dos
fuerzas, pero ahora sus direcciones son diferentes. La parte superior izquierda del cable se
empuja hacia arriba y hacia la derecha, y la parte inferior derecha se empuja hacia abajo y
hacia la izquierda. Como resultado de estas fuerzas, el cable continúa girando en sentido
horario.
• En la Figura c, el cable es vertical. Debido a la posición del cable y la dirección de la
corriente, la fuerza neta que actúa sobre el cable cae a cero y la rotación del cable se
detiene.
Para un motor eléctrico, esta última situación es inaceptable. En 1832, Hippolyte Pixii
reconoció esto e ideó una solución mecánica inteligente. Él conectó contactos de metal a
la armadura que invierten la dirección de la corriente cada vez que la armadura hace media
revolución. Esto asegura que la fuerza siempre será mayor que cero y que la armadura
continuará girando. Esta inversión actual se llama conmutación. Los contactos de metal
forman un conmutador mecánico, que comúnmente se conoce como escobilla. El primer
motor eléctrico práctico, llamado auto-rotor de Jedlik, era un motor con escobilla, y hasta la
década de 1960, los motores cepillados eran los únicos motores de CC disponibles.

Tipos de motores con escobillas


Los motores con escobillas vienen en tres variedades, y las diferencias entre ellos
dependen de cómo el motor genera su campo magnético. Si el campo es generado por un
imán permanente, el motor se llama motor de imán permanente de CC (PMDC). Los otros
dos tipos de motores cepillados generan campos magnéticos usando electroimanes. Un
electroimán, cuando un cable que lleva corriente está envuelto en una bobina, se comporta
como un imán. Este comportamiento es temporal y se detiene cuando se elimina la
corriente. Si la bobina está envuelta alrededor de un núcleo de hierro, el comportamiento
magnético se vuelve más fuerte. Los imanes permanentes no necesitan energía para
funcionar y en general son fuertes. Desafortunadamente, sus polos siempre se fijan en las
mismas posiciones y tienden a ser costosos. Consisten en una bobina de alambre envuelta
alrededor de un núcleo de hierro. Estas bobinas de alambre se llaman bobinados de campo
o bobinas de campo. El campo magnético producido por un devanado de campo es
proporcional a la corriente que fluye a través de él.
Motores de imanes permanentes DC (PMDC)
Los motores PMDC son los motores cepillados más populares. Debido a sus imanes
permanentes, el campo magnético es confiablemente constante. Esto significa que la
relación de velocidad a voltaje, es constante. La siguiente imagen ilustra la estructura de
un motor de corriente continua con escobilla de imán permanente.
Una desventaja de estos motores es que los imanes permanentes pierden su
magnetización con el tiempo. Esto significa que el motor produce gradualmente menos
torque y velocidad. Esta desmagnetización se acelera cuando la armadura se impulsa con
grandes corrientes de arranque.
Ventajas y desventajas
Los motores con escobillas han mejorado en rendimiento y fiabilidad desde el siglo XIX,
pero sigue habiendo una desventaja importante: la escobilla hace contacto con el rotor a
alta velocidad. Como resultado, la fricción erosiona la escobilla con el tiempo. Puede tomar
meses o años, pero eventualmente, cada motor con escobilla requerirá mantenimiento para
continuar funcionando. Una segunda desventaja es que un motor con escobilla tiene que
girar el conmutador junto con el rotor. Esto coloca una carga adicional en el motor que
reduce su eficiencia. A pesar de estas desventajas, los motores con escobillas todavía se
fabrican y venden en grandes cantidades. Las razones son costo y simplicidad. Los motores
con escobillas son menos complejos que los motores sin escobillas, por lo que son menos
costosos de fabricar. Además, controlar un motor con escobillas es más simple que
controlar un motor sin escobillas, por lo que la circuitería es más rentable. Si está tratando
de ahorrar dinero en su proyecto y la confiabilidad a largo plazo no es un factor importante,
debe considerar utilizar
motores con escobillas.
Circuitos de control

Controlar un motor con escobilla es sencillo porque el funcionamiento del motor es tan fácil
de entender. Esta sección se enfoca en dos tipos de circuitos de control de motores
cepillados:

• Control de dirección única: si el motor solo necesita girar en una dirección, el circuito puede
construirse fácilmente con un transistor.

• Control de doble dirección: si es necesario cambiar la dirección del motor, se debe agregar
un puente H al circuito.

Control de una sola dirección

Si un motor con escobilla solo necesita girar en una dirección, diseñar el circuito es fácil. El
objetivo principal es permitir que el controlador active y desactive la corriente del motor, por
medio de un transistor.

Control de doble dirección


El circuito anterior puede encender y apagar un motor, pero no puede invertir la dirección
del motor. Para que esto sea posible, el circuito debe poder invertir la dirección de la
corriente que fluye a través del motor. Es decir, el circuito necesita una ruta que transmita
corriente a través del motor en una dirección y otra que transmita la corriente en la dirección
opuesta. Además, el circuito necesita una forma de activar y desactivar la corriente del
motor. Estos requisitos pueden cumplirse agregando un puente H al circuito. Este
componente tiene cuatro interruptores eléctricos (S0-S3) que se pueden controlar de forma
independiente. La siguiente figura a muestra cómo se ve esto. Hay muchos estados
posibles para los conmutadores de un puente H, pero tres son particularmente importantes:
• S0 y S3 cerrados, S2 y S1 abiertos: la corriente fluye a través del motor de izquierda a
derecha. Esto se muestra en la Figura b.
• S2 y S1 cerrados, S0 y S3 abiertos: la corriente fluye a través del motor de derecha a
izquierda. Esto se muestra en la Figura c.
• S0 y S2 abiertos: la posición del motor se mantiene en su lugar.
En lugar de construir un puente H a partir de transistores discretos, es más sencillo utilizar
un circuito integrado como el L293D.
EJEMPLO 1. Activar motor con un transistor
Plano:

Implementar el siguiente esquema:


Explicación del plano:
• El transistor 2N2222 tiene la siguiente configuración:

Tenga presente esta configuración para hacer el montaje anterior.


• El transistor es Q1, 2N2222
• M1 es el motor.
• Pin9 representa uno de los pines de control del Arduino
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 1:


1. Cambie los delay y analice los resultados.
2. Ahora realice el siguiente montaje:

Compare el funcionamiento de este con el primer montaje. Este montaje funciona igual o
diferente al primer montaje. Porque?.
Explicación del programa
En este ejemplo un valor de 5V en la Base permite el paso de la corriente sin restricciones.
En síntesis en este ejemplo el transistor funciona como un interruptor ON-OFF.
Una ventaja de usar un transistor es que aísla eficazmente el circuito de control de la base
de la carga entre Emisor y Colector, haciendo casi imposible que se quemé el Arduino con
un circuito como este.
Precaución: Dado que el motor tiene carga inductiva conviene añadir un diodo que proteja
el transistor.
EJEMPLO 2. Puente H.
Implementar el siguiente esquema:

Antes de implementar el esquema, lea los siguientes ítems.


Explicación del esquema:
• Voltaje de funcionamiento: Que especifica los rangos de tensión entre los que el motor
funcionará correctamente. Por ejemplo el que yo estoy usando se mueve entre 3 y 6V, pero
no es raro encontrarlos de 9, 12 y 24V
• Revoluciones por minuto: Que indica la velocidad que puede alcanzar a las distintas
tensiones y que se suele consignar como Rpm. Típicamente en motores de Hobby
andaremos entre 200 y 2.000 rpm
• Par motor: O potencia que el motor puede desarrollar y que indica la carga útil que puede
mover. En inglés se llama Torque.
El L293D, es un pequeño integrado que incluye dos puentes H-Bridge que se puede usar
para controlar dos motores CC

Funciona a 5V internamente, puede conmutar tensiones de hasta 36V para motores.


Configuración de los pines del L293D:

• El pin 16, Vss, son los 5V con los que alimentamos el chip y el pin 8, Vs, es la tensión con
la que alimentamos el motor.
• Los pines del 1 al 7 controlan el primer motor y los pines 9 a 15 controlan el segundo
motor.
• El pin 1, Enable1, Activa el uso del motor 1. Con un valor HIGH, el motor puede girar
dependiendo del valor de I1 e I2. Si es LOW se para independientemente de los valores del
resto de pines
• Los pines 2 y 7 son los pines de control para el motor 1, e irán conectados a nuestros
Arduino para controlar el sentido de giro.
• Los pines 3 y 6 son la salida a la que se conecta el motor 1, cuya polaridad se invierte en
función los valores de 2 y 7.
• En el diagrama de arriba veis que hay pines equivalentes para el motor 2 y cuales son.
• Los pines 4, 5,12 y 13 van a GND.
Tabla lógica que sigue el giro del motor en función de los tres pines:

Por tanto tenemos que activar el pin enable para que el motor gire y después usamos los
pines Input1 e Input2 con valore opuestos para hacer girar el motor en una dirección o en
la contraria
Conexiones:
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 2:


1. Active los códigos que están deshabilitados, que pasa con el movimiento del motor.
Cambia su movimiento.

2. Deshabilite la primera instrucción: , que pasa con el


movimiento del motor.
Explicación del programa
Se activa el Enable1 para arrancar Motor1, se usa I1 e I2 con valores invertidos, el motor
arranca por tres segundos, luego para por 3 segundos, el motor arranca se invierte I1 e
I2, cambia de dirección el motor y luego para por 3 segundos.
SALIDAS CASI ANALÓGICAS
Hasta ahora se ha visto como activar las salidas digitales de Arduino, para encender y
apagar un LED por ejemplo. Pero no hemos visto como modificar la intensidad del brillo de
ese LED. Para ello, tenemos que modificar la tensión de salida del Arduino, o en otras
palabras tenemos que poder presentar un valor analógico de salida.
Para empezar se tiene que dejar claro que los Arduino carecen de salidas analógicas puras
que puedan hacer esto (con la notable excepción del Arduino DUE).
Por tal motivo, se emplea un truco, para que con una salida digital se pueda conseguir que
casi se parezca una salida analógica.
A este truco se le llama PWM, siglas de Pulse Width Modulation, o modulación de ancho
de pulsos. La idea básica es poner salidas digitales que varían de forma muy rápida de
modo que el valor eficaz de la señal de salida sea equivalente a una señal analógica de
menor voltaje.
El valor eficaz: es un parámetro que se utiliza para caracterizar formas de onda y se define
como el valor de tensión continua que sería capaz de suministrar la misma potencia (a un
elemento del circuito que disipa toda la potencia que se le suministra), que la potencia que
le proporciona la forma de onda con dicho valor eficaz, también se puede llegar a la
conclusión de que el valor RMS es el valor del voltaje o corriente en Corriente alterna que
produce un efecto de disipación de calor que su equivalente de voltaje o corriente directa.
Lo sorprendente es que el truco funciona.
Si nos fijamos en la anchura del pulso cuadrado de arriba. Cuanto más ancho es, más
tensión promedio hay presente entre los pines, y esto en el mundo exterior es equivalente
a un valor analógico de tensión comprendido entre 0 y 5V.
Al 50% es equivalente a una señal analógica del 50% de 5V, es decir 2,5. Si mantenemos
los 5V un 75% del tiempo, será el equivalente a una señal analógica de 75% de 5V = 3,75
V.
Para poder usar un pin digital de Arduino como salida analógica, lo declaramos en el Setup()
igual que si fuera digital:

La diferencia viene a la hora de escribir en el pin:

analogWrite escribe en el pin de salida un valor entre 0 y 5V, dependiendo de V (que debe
estar entre 0 y 255).
De este modo si conectamos un LED a una de estas salidas PWM se pueda modificar su
brillo sin más que variar el valor que se escribe en el pin.
Pero hay una restricción. No todos los pines digitales de Arduino aceptan poner valores
PWM en la salida. Solamente aquellos que tienen un símbolo ~ delante del número.
Observe la imagen:

• Solamente los pines 3, 5, 6, 9, 10 y 11 pueden hacer PWM y simular un valor analógico


en su salida.
• Si se intenta hacer esto con un pin diferente, Arduino acepta la orden tranquilamente, sin
error, pero para valores de 0 a 127 entiende que es LOW y para el resto pone HIGH y sigue
con su vida satisfecho con el deber cumplido.
Estos elementos reciben señales de PWM y sirven para:
EJEMPLO 3. Encender un Led por PWM

Implementar el siguiente esquema:


Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 3:


1. Cambie delay por diferentes valores, analice el resultado.
Explicación del programa
El LED va aumentando el brillo hasta un máximo y vuelve a empezar bruscamente
EJEMPLO 4.
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Explicación del programa


Para que la transición sea menos violenta, el ciclo de subir y bajar el brillo del LED se hace
con un único bucle. La función abs(num), devuelve el valor absoluto o sin signo de un
número num, y por eso mientras que i viaja de -255 a 255, abs(i) va de 255 a 0 y vuelta a
subir a 255.
EJEMPLO 5.
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Explicación del programa


Se enciende proporcionalmente un LED cuando llega a su máximo punto de brillo comienza
a apagarse proporcionalmente.
EJEMPLO 6. Variar la velocidad de giro de un motor con un transistor.
Utilice el mismo montaje del ejemplo 1.
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 6:


1. Compare este ejercicio con el ejemplo 1, ambos programas tienen igual funcionamiento.
Porque?.
Explicación del programa
Al oír el Motor, se escucha como va aumentando la velocidad del motor hasta pararse y
volver a empezar. La razón es que al variar la tensión en la base del transistor, este limita
la corriente que lo atraviesa modificando así la velocidad del motor al que esta conectado.
Sería bastante sencillo añadir al ejemplo un potenciómetro, de modo que usemos su valor
para variar la velocidad del motor.
Como se observa, se pone un valor analógico en el pin 9. De esa manera se controla la
velocidad del motor variando la intensidad de tensión que se pone en la base del transistor,
ya que esta regula la resistencia que el transistor presente entre emisor y colector.
A 0V el transistor entra en corte (Resistencia infinita) y a 5V está en saturación, con lo que
presenta resistencia nula.
• No suponga que se puede hacer que el motor gire de forma continua para todos los
valores de tensión en la base. Por debajo de un cierto umbral se parará y solo girará cuando
este se supere.
• Al hacer crecer el valor de tensión que se le da al motor, la velocidad de giro, irá
aumentando progresivamente.
EJEMPLO 7. Variar la velocidad del motor con el puerto análogo
Para este montaje utilizar un potenciómetro en el puerto A1.
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 9:


1. Gire toda la perilla del potenciómetro hacia sus extremos, que observa en el motor.
Explicación del programa:
Vamos a probar ahora a colocar un potenciómetro conectado a la puerta analógica A1, cuya
lectura usaremos para variar la señal que ponemos en la base del transistor. Con ella
variaremos la velocidad de giro.
La idea es que a medida que aumentamos o disminuimos la tensión en la base del
transistor, la caída de tensión en este varia de forma acorde haciendo que el motor reciba
más o menos tensión y esto se traduce en una cambo de su velocidad de giro.
EJEMPLO 8. Variar la velocidad del motor con el puerto análogo L293D
Utilice el mismo montaje del ejemplo 2.
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Explicación del programa


Si se dio cuenta de que no hemos variado la velocidad de giro y dado que en el programa
anterior todos los valores son digitales lo vamos a tener mal para variar la velocidad de
forma analógica.
Pero el truco está en que hemos conectado el pin Enable1 al pin Arduino 10 que es PWM
(Así, como sin querer) y los L293D vienen diseñados para variar la velocidad de giro de los
motores correspondientes con la tensión aplicada a este pin, por lo que resulta trivial variar
la velocidad del motor, sin más darle valores analógicos. Si por ejemplo añadimos un
potenciómetro de nuevo conectado al A1, podemos escribir este valor directamente
(dividido por 4, claro) al pin 10 como analógico, sustituyendo la línea
digitalWrite(E1, HIGH); // Activamos Motor1
Por esta otra que escribe un valor analógico:
analogWrite(E1, analogRead(A1) /4 ) ;
EJEMPLO 9. Variar velocidad y cambio de giro de un motor con un potenciometro
Plano:

Esquema a implementar:
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 9:


1. Gire toda la perilla del potenciómetro hacia sus extremos, que observa en el motor.
Explicación del programa:
En ejemplo se controla la velocidad y el giro del motor con un solo potenciómetro.
Para hacerlo se utilizara el PWM (véase PWM). Se utiliza los pins 8 y 9 del L293D desde
dos salidas del Arduino. En estas dos salidas habrá un PWM a cada una. Pero se tiene que
invertir un PWM. Cuando en un PWM se tenga un pulso a un valor alto, en el otro PWM el
mismo pulso sea valor bajo.
FUNCIONES
Las funciones se utilizan para organizar las acciones realizadas en bloques funcionales. La
funcionalidad del código depende de entradas bien definidas (información dada a una
función) y salidas (información provista por una función) que hacen más fácil estructurar,
mantener y reutilizar su código.
Una declaración de una función es un prototipo: la especificación del nombre, los tipos de
valores que se pueden pasar a la función y el tipo de devolución de la función.
EJEMPLO 10. 2 Funciones
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.
Análisis del Ejemplo 10:
1. En el void Loop, en la función LED2(5,1000), cambie 5 por 3 y 1000 por 200, analice el
resultado.
2. Agregue otra función LED1();, así:

Analice el resultado.
3. Deshabilite los delay, su funcionalidad final es igual o diferente, con los delay.
Explicación del programa:
Usted crea una función declarando su tipo de devolución (la información que proporciona),
su nombre y cualquier parámetro opcional (valores) que la función recibirá cuando se llame
a la función.
El cuerpo de la función es el código dentro de los corchetes que se ejecuta para realizar
alguna acción cuando se llama a la función.
En el ejemplo anterior hay una función simple llamada LED1, que solo hace parpadear un
LED. No tiene parámetros y no devuelve nada (el vacío que precede a la función indica que
no se devolverá nada):
La siguiente función llamada LED2, tiene dos parámetros (la variable entera llamada ciclos
y la variable entera llamada tiempo) que determinan cuántas veces parpadeará el LED y
por cuanto tiempo:

Esta funciona versión comprueba si el valor de ciclos es mayor a z. Esto se repetirá hasta
que ciclos sea menor a z.
En el void loop, se ejecuta primero la función 1 LED1, después la función 2 LED2 y por
último la función 1 LED1.
EJEMPLO 11. La función retorna con un valor
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 11:


1. Al presionar varias veces el interruptor en el monitor serial se observa la siguiente
imagen:

2. Presione varias veces el interruptor, analice el Led que cambios observa.


3. Que función cumple el ciclo de repetición while en el programa y que tiene que ver con
el monitor serial.
4. Cambie en 250 por otro valor, analice el resultado, para que
sirve esta instrucción.
Explicación del programa
El LED parpadea cuando el programa arranca y se detiene cuando se presiona un
interruptor conectado al pin digital 2. El programa imprime la cantidad de veces que se
presiona el interruptor.
Este ejemplo da pie para tres formas de llamada de función:
1. blink1 no tiene parámetro ni valor de retorno. Su forma es:

2. blink2 toma un solo parámetro pero no devuelve un valor:

3. blink3 tiene un solo parámetro y devuelve un valor:

El tipo de datos que precede al nombre de la función indica el tipo de devolución (o el tipo
de devolución si no es nulo). Al declarar la función (escribir el código que define la función
y su acción), no se pone un punto y coma siguiendo el paréntesis al final.
Cuando se llama la función, se necesita un punto y coma al final de la línea que llama a la
función.
Por ejemplo, aquí hay una función que toma un parámetro y devuelve un valor:

El nombre de la función es sensorPercent. Se le da un número de pin analógico para leer y


devuelve el valor como un porcentaje. El int delante de la declaración le dice al compilador
(y le recuerda al programador) que la función devolverá un entero. Al crear funciones, elija
el tipo de devolución apropiado para la acción que realiza la función. Esta función devuelve
un valor entero de 0 a 100, por lo que un tipo de retorno de int es apropiado.
Se recomienda que otorgue a sus funciones nombres significativos, y es una práctica
común combinar palabras al poner en mayúscula la primera letra de cada palabra, a
excepción de la primera palabra. Usa el estilo prefiera, pero ayuda a otros a que lean su
código si mantiene constante el estilo de su nombre.
sensorPercent tiene un parámetro llamado pin (cuando se llama a la función, pin se le da el
valor que se pasa a la función).
El cuerpo de la función (el código entre paréntesis) realiza la acción que desea, aquí lee un
valor de un pin de entrada analógica y lo mapea a un percent. En el ejemplo anterior, el
percent se mantiene temporalmente en una variable llamada percent. La siguiente
declaración hace que el valor retenido en el percent variable temporal se devuelva a la
aplicación que realiza la llamada:

Se puede lograr la misma funcionalidad sin usar la variable temporal de porcentaje:

Así es como se puede llamar a la función:


EJEMPLO 12. Devolver más de un valor de una función
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 12:


1. En el monitor serial se observa la siguiente imagen:

2. En las instrucciones: , cambie 10 por 100. Analice el resultado en el


monitor serial.
Explicación del programa
En el ejemplo anterior se desea devolver dos o más valores de una función, como las
variables x y y, son variables globales, no se necesita especificar en la función que se
retorna o devuelve con dichos valores, al ser globales los valores almacenados allí, son de
fácil acceso en el void loop.
EJEMPLO 13. Variables globales
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 13:


1. En el monitor serial se observa la siguiente imagen:

Explicación del programa


La función de retorno, cambia dos valores mediante el uso de variables globales. Las
variables globales son fáciles de entender (las variables globales son valores accesibles en
todas partes y todo puede cambiarlas), pero los programadores expertos las evitan porque
es fácil modificar el valor de una variable inadvertidamente o dejar de funcionar una función
porque se cambió el nombre o el tipo de una variable global en otro lugar del programa.
Una solución más segura y más elegante es pasar referencias a los valores que desea
cambiar y dejar que la función use las referencias para modificar los valores.
función swap de retorno es similar a las funciones con los parámetros descritos en el
ejemplo 12, pero con el símbolo (&) que indica que los parámetros son referencias. Esto
significa que los cambios en los valores dentro de la función también cambiarán el valor de
la variable que se da cuando se llama a la función.
La ejecución del código muestra que los valores no se intercambian: los cambios realizados
dentro de la función son locales para la función y se pierden cuando la función retorna.
BREAK
EJEMPLO 14. Switch Case
Montar el siguiente ejemplo con cinco resistencias, utilizar el monitor serial.
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 14:


1. Al oprimir la letra a en el monitor serial se enciende el led 9.
2. Al oprimir la letra b en el monitor serial se enciende el led 10.
3. Al oprimir la letra c en el monitor serial se enciende el led 11.
4. Al oprimir la letra d en el monitor serial se enciende el led 12.
5. Al oprimir la letra e en el monitor serial se enciende el led 13.
6. Al oprimir cualquier otra letra todos los leds se apagan.
Explicación del programa
La estrutura “switch case”, es una estructura de selección múltiple, permite escoger una
opción entre varias opciones, por ejemplo el panel de botones en un ascensor dentro de un
edificio, si se pulsa 1 se va al primer piso, si se pulsa 2 se va al segundo piso, si se pulsa 3
se va al tercer piso………
Esta estructura funciona de la siguiente manera:

El “break” al final de cada bloque de instrucciones dentro de cada “case” es opcional. De


no ponerlo, tras haber ejecutado ese bloque se seguirían analizando los demás casos hasta
el final.
Por tanto, es conveniente incluir la instrucción “break” al final de cada bloque si se quiere
impedir que el código se siga ejecutando dentro del “switch” (esto hará que el código sea
más eficiente).
La instrucción “default” es también opcional. Se utiliza cuando se quiere que se realicen
una serie de acciones concretas en caso de que ninguno de los casos anteriores haya sido
activado.
En el ejemplo 14 al oprimir por ejemplo la letra t, entonces todos los case son falsos, por
“default” se apagan todos los leds.
EJEMPLO 14.2
Montar el siguiente ejemplo con una resistencia, utilizar el monitor serial.
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.
Análisis del Ejemplo 14.2:
1. Al oprimir la letra 1 en el monitor serial se ejecuta la función apargarprender.
2. Al oprimir la letra 2 en el monitor serial se ejecuta dos veces la función apargarprender.
3. Al oprimir el símbolo + en el monitor serial queda el led 13 encendido.
4. Al oprimir el símbolo - en el monitor serial queda el led 13 apagado.
5. Al oprimir cualquier letra en el monitor serial se imprime el letrero: fue recibido pero no
ejecutado.
EJEMPLO 15. Repetir un bloque de instrucciones mientras una expresión es
verdadera
Esquema a implementar:
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 15:


1. Al colocar el potenciómetro en el extremo derecho, en el monitor serial se imprime:
2. Al colocar el potenciómetro en el extremo izquierdo, en el monitor serial se imprime:

Y el Led empieza aprender y apagar.


3. Empiece a girar el potenciómetro y observe el resultado en el monitor serial.
Explicación del programa
Este código ejecutará las instrucciones en el bloque dentro de los corchetes, {}, mientras
que el valor de analogRead es mayor que 100, el bloque consiste en llamar la función leds
e imprimir en pantalla puntos. Esto podría usarse para mostrar un LED como una alarma
mientras que un valor excede un umbral o valor.
El LED está apagado cuando el valor del sensor es 100 o menos; parpadea continuamente
cuando el valor es mayor que 100.
Los {} símbolos que definen un bloque de código reciben varios nombres, incluidos
corchetes, llaves y llaves. Esta guía se refiere a ellos como corchetes.
Los corchetes definen la extensión del bloque de código que se ejecutará en un bucle. Si
no se usan corchetes, solo la primera línea de código se repetirá en el ciclo:

Los bucles sin paréntesis pueden comportarse inesperadamente si tiene más de una línea
de código.
El ciclo do ... while es similar al ciclo while, pero las instrucciones en el bloque de código se
ejecutan antes de verificar la condición. Utilice este ciclo de repetición cuando debe tener
el código ejecutado al menos una vez, incluso si la expresión es falsa:

El código anterior parpadeará el LED al menos una vez y seguirá parpadeando siempre
que el valor leído de un sensor sea mayor que 100. Si el valor no es mayor que 100, el LED
solo parpadeará una vez.
EJEMPLO 16. Salir de un bucle
Escriba, compile, ejecute, analice y explore, el programa siguiente, abra un archivo nuevo
por cada ejemplo. Utilizar las sangrías respectivas, para mejorar la interpretación del
programa.

Análisis del Ejemplo 15:


1. Al colocar el potenciómetro en el extremo derecho, en el monitor serial se imprime:

2. Al colocar el potenciómetro en el extremo izquierdo, en el monitor serial no se imprime


ningún valor y led empieza a parpadear.
3. En el momento de escribir cualquier letra en el monitor serial, se sale del ciclo while y se
imprime el valor censado en el potenciómetro en el monitor serial.
4. Porque el led sigue parpadeando. Explicar al profesor.
5. Empiece a girar el potenciómetro y observe el resultado en el monitor serial.
Explicación del programa
Solo el código dentro de un ciclo while se ejecutará hasta que las condiciones lo permitan.
Pero si su programa necesita salir de un bucle en respuesta a alguna otra condición, como
un tiempo de espera, estado del sensor u otra entrada, puede usar break:
EJERCICIO A CALIFICAR

Implementar los siguientes ejercicios con la tarjeta Arduino, para mayor facilidad montar los
ejercicios en la protoboard, que al final solo sea conectar solo el Arduino a cada ejercicio
en la protoboard.
Se califica:
- Presentación, los cables de conexión deben ir a ras de la superficie de la protoboard.
- Funcionamiento del circuito.
- El programa tenga comentarios y las sangrías respectivas.
- El seudocódigo de cada programa

Ejercicios
1. Investigue y explique al profesor, los conceptos físicos de torque en un motor y velocidad
angular en un motor.
2. Investigue y explique al profesor la diferencia o igualdad, entre los conceptos de puertos
PWM y los puertos Análogos.
3. Hacer el siguiente programa con ocho leds:

a. Cuando se oprima la letra t: Los leds se moverán de izquierda a derecha.


b. Cuando se oprima la letra n: Los leds se moverán de derecha a izquierda.
c. Cuando se oprima la letra c: Los leds pares se encienden y titilan, los impares se apagan.
d. Cuando se oprima la letra f: Los leds impares se encienden y titilan, los pares se apagan.
e. Cuando se oprima la letra p: Los cuatros leds izquierdos se prenden y los derechos se
apagan y después de un segundo pasa lo contrario.
g. Cuando no se oprima cualquier diferentes a las anteriores todos los leds se apagan.
4. Montar el siguiente circuito ahora con dos motores, utilizando el integrado L293D y el
monitor serial:

a. Cuando se oprima la letra A: El movimiento de ambos motores es hacia adelante.


b. Cuando se oprima la letra T: El movimiento de ambos motores es hacia atrás.
c. Cuando se oprima la letra D: El movimiento de ambos motores es hacia a la derecha.
d. Cuando se oprima la letra I: El movimiento de ambos motores es hacia a la izquierda.
e. Cuando se oprima la letra P: Se detienen ambos motores.

S-ar putea să vă placă și