Professional Documents
Culture Documents
INDICE
Sesin 3 (5 horas)
Utilizamos un transistor NPN para aumentar la corriente de salida del pin y poder
excitar el rel. Primero medimos la resistencia de la bobina del rel. La resistencia de la bobina
del rel que usaremos es RL=320 . Como necesita una tensin de 12V:
= = 37.5
37.5
= = 0.5 = 500
75
Esta es la corriente que debe suministrar nuestro pin del microcontrolador Atmega. Para
este valor de corriente, podemos obtener un valor de la resistencia de base R1:
5 0.6
= = = 8800 8K2
0.5
Con este valor de R1, nos aseguramos que tendremos una corriente en la base de un
poco mas de 0.5mA y por tanto, una corriente de colector un poco mayor de 37.5 mA. Ms que
suficiente para excitar nuestro rel. Podemos montar el siguiente conexionado y comprobar el
funcionamiento del sistema con el cdigo que acompaa al esquema.
Aunque en la siguiente sesin hablaremos de las salidas PWM de nuestra placa Arduino,
vamos a realizar un control PWM manual sobre la lmpara indicadora de 24V para conseguir
una regulacin de su intensidad. Slo vamos a utilizar un pulsador para la conexin y la
desconexin y su propia regulacin en los dos sentidos.
En este ejemplo hemos visto como tratando de forma adecuada un pulsador, podemos
conseguir que una nica entrada digital, tenga varias funciones como aumentar el brillo de la
lmpara, disminuirlo o fijarlo en un determinado valor. Tambin observamos la importancia de
crear funciones para estructurar mejor las tareas a realizar.
La funcin modular, permite realizar un control PWM sobre un pin de salida digital, pero
necesita ejecutarse de forma continua y el tiempo invertido por el microcontrolador en el resto
de cdigo, impide un comportamiento adecuado. En la siguiente sesin aprenderemos a realizar
un control PWM por hardware que no necesita de toda la atencin del microcontrolador para
realizar de forma correcta la tarea.
c) Zumbador piezoelctrico.
Tendremos que generar una seal cuadrada de una determinada frecuencia, para que
nuestro buzzer, emita un sonido de esa frecuencia. Si queremos reproducir la escala musical
por ejemplo tendremos en cuenta la siguiente tabla:
La duracin de la nota depender de lo largo que sea el tren de pulsos. Esta duracin la
podemos controlar mediante el tiempo o mediante un contador de pulsos como en el
siguiente cdigo de ejemplo.
Esta funcin no tiene efecto alguno si previamente no se haba generado la seal con
la funcin tone(). Podemos utilizar esta funcin en nuestros cdigos cuando queramos emitir
una seal acstica por ejemplo de aceptacin de activacin de pulsador:
Podemos realizar por ejemplo.
= = = 0.00488 = 4.88analogReference (DEFAULT)
.
= = = 0.00107 = 1.07analogReference (INTERNAL)
. ( )
=
=
= 0.00244 = 2.44analogReference (EXTERNAL)
En la placa Arduino los 6 canales analgicos, corresponden a los pines A0,A1,A5 que
como vimos en la primera sesin, tambin pueden ser tratados como GPIO y trabajar como
entrada digital o salida digital. Su enumeracin, en ese caso, es 14,15,19. Tenemos que tener
la precaucin, en caso de tratarlos como pines digitales y haber activado la resistencia de pullup
o haber escrito un valor HIGH en el pin, de desconectar la resistencia de pullup o reescribir un
estado digital LOW y configurarlo como entrada digital, antes de usarlos en una lectura
analgica. Serecomienda hacer un pequeo delay (10) antes de realizar una lectura
analgica en un pin analgico, usado digitalanteriormente como digital, o entre dos
lecturas analgicas consecutivas.
Podemos encontrarnos en la necesidad de leer el valor analgico de un potencimetro
controlado manualmente, de un sensor que nos presente una resistencia variable en funcin de
algn parmetro (LDR) o de un sensor que nos proporcione una tensin analgica en funcin de
un parmetro determinado (sensor de temperatura LM35).
a) Lectura de un potencimetro con tensin de referencia de 5V interna:
Vamos a realizar una lectura de la entrada analgica 0 (entre 0V y 5V) con
analogReference (DEFAULT)y mostraremos por el LCD 3 valores distintos:
a) El valor devuelto por analogRead () que variar entre 0 y 1023.
b) La tensin en voltios que variar entre 0V y 5V.
c) El tanto por cien que variar entre 0% y 100%.
Lectura=714
v=3.49V 69%
200K
Lectura=801
Intensidad= 79%
Antes de empezar, hay que tener precaucin, al usar una tensin de referencia externa,
de que esta no sea menor de 0Vni tampoco mayor de 5V. Tampoco debemos conectar una
tensin directa al pin AREF, si no usamos la instruccin analogReference (EXTERNAL). Estas
acciones pueden daar el microcontrolador.
Si necesitamos cambiar la tensin de referencia durante la ejecucin del programa,
como por ejemplo si tenemos que leer dos sensores y nos interesa que uno se lea con la tensin
de referencia de 5V (analogReference (DEFAULT) y el otro con una tensin de referencia de 3V
externa (analogReference (EXTERNAL)), deberemos conectar la tensin de referencia externa a
travs de una resistencia en serie de 5K. Con esto al usar la tensin de referencia interna, no
daaremos el microcontrolador, aunque la tensin de referencia real no ser exactamente la que
hemos conectado sino un poco menor.
En ocasiones puede ser til conectar un condensador a masa desde la tensin externa
para librarnos de ruido electromagntico.
Si por ejemplo conectamos una tensin al pin AREF de 3V a travs de una resistencia de
5K, esta resistencia junto con una interna del microcontrolador de 32K, formaran un divisor de
tensin que desvirtualizaria la tensin de referencia real, de la siguiente manera:
32
= = 2.59
32 + 5
Observamos que cuando tenemos una intensidad medida del 50% o menos, conectamos
una salida digital y cuando la intensidad medida es mayor del 50%, desconectamos la salida
digital. Hemos escogido la salida 13 ya que tiene el led indicador ya incorporado.
Con el potencimetro proporcionando una tensin de 5V al pin AREF y con un grado
de iluminacin dada, observamos que acercando la mano a la LDR, a una determinada distancia,
la salida digital 13 se activa. Si disminuimos el valor del potencimetro por ejemplo hasta que
tengamos 2,5V en el pin AREF, deberemos acercar ms la mano a la LDR, para hacer bascular
la salida.
En el siguiente punto, veremos como hacer uso del sensor de temperatura LM35DZ
usando la instruccin analogReference (INTERNAL) i trabajar con 1,1V de tensin de referencia.
Vamos a realizar una lectura de la temperatura utilizando nuestra placa Arduino con una
tensin de referencia interna de 1.1V. Fijmonos que 1.1V correspondera a una temperatura
de 110C y no vamos a llegar a ella. Montemos el siguiente conexionado y carguemos en
nuestra placa, el cdigo siguiente:
Temperatura=26C
Tmax=28 Tmin=25
Temperatura=26C
Estado R=ON
Fijmonos en el cdigo hasta ahora. Hemos declarado una matriz de nmeros reales
(float) de tamao 5. En la funcin setup (), hacemos una primera lectura que desechamos y
despus llamamos a dos funciones para pedir al usuario la temperatura mxima y la mnima.
El cdigo de estas funciones las pondremos despus de la funcin principal, loop ().
Observamos que en esta ocasin, mientras se ejecuta la funcin principal, se llama a dos
funciones diferentes para mostrar informacin por el LCD. Mientras no se active el pulsador, se
muestra informacin de ejecucin, es decir, mostramos la temperatura leda en tiempo real y el
estado del calefactor. Al presionar el pulsador, se muestra los valores de configuracin,
temperatura mxima y temperatura mnima. Se deja para el lector avispado la tarea de modificar
el cdigo de forma que tambin sea posible modificar estos dos valores en tiempo de ejecucin.