Lo primero que realizaremos será que crear una placa a medida para poder tener todos los componentes electrónicos en un único espacio con unas dimensiones específicas y que permita un fácil conexionado del resto de componentes que estarán en distintas partes del helicóptero: LEDs, servomotor, motor, interruptor y alimentación.
Para ello he utilizado una placa de topos de baquelita que he cortado hasta dejar las siguientes medidas: 5,5 cm x 3,1 cm. Es importante no excederse de estas medidas ya que si lo hacemos luego no podremos encajarla correctamente dentro del helicóptero.
En el siguiente esquema podemos ver los componentes y el conexionado que tendrá nuestro circuito:
Donde:
-
- A: Conector para el motor que hará girar las aspas del helicóptero.
- B: Conector para el servomotor.
- C: Conector para el foco delantero.
- D y E: Conectores para las luces parpadeantes superiores efecto sirena.
- F: Conector para la luz de posición parpadeante trasera.
Para controlar el encendido del motor que hace girar las aspas así como para variar su velocidad utilizaremos una salida PWM de nuestro Arduino junto con una resistencia, un transistor y un diodo tal y como se muestra en el siguiente esquema:
Nuestro Arduino a través de los pines de digitales de entrada /salida solo es capaz de suministrar una corriente máxima de unos 40mA siendo lo recomendable 20mA. El motor consumirá una corriente máxima de unos 360mA (aproximadamente), por tanto es necesario utilizar un conexionado como el mostrado anteriormente para hacer funcionar correctamente el motor y no dañar el Arduino.
Si trasladamos el esquema anterior a una protoboard para probar el correcto funcionamiento quedaría de la siguiente manera:
Cálculo de la resistencia base del transistor
El transistor utilizado para nuestro circuito es el TIP41C NPN. Para calcular el valor de la resistencia de base (RB) tendremos que mirar las especificaciones del fabricante (descargar datasheet tip41c). Consultando las especificaciones podemos ver que para una corriente de Ic = 360mA (que es la máxima corriente que el motor va a consumir) el hfe tiene una valor de unos 50 a 25ºC aproximadamente. También vemos que el voltaje Vbe en saturación es de unos 0.8V aproximadamente.
Por tanto:
Ic = 360 mA (corriente máxima)
Ic = hfe.Ib → Ib = Ic / hfe = 0,360 / 50 = 0,0072 A
RB = V / I → (5V – 0,8V) / 0,0072 A = 583,33 Ohms → 560 Ohms (valor de resistencia estándar escogido)
Cálculo de las resistencias de los LEDs.
Para todas las luces presentes en el helicóptero utilizaremos LEDs de 3 mm que emiten luz blanca. La intensidad máxima que queremos que circule por los LEDs será de 20mA y para este tipo de LEDs la caída de tensión es de unos 3,6 V.
Por tanto:
R = (V – Vled) /I = (5V – 3,6V) / 0,02 A = 70 Ohms → 82 Ohms (valor de resistencia estándar escogido).
Una vez trasladado el diseño de nuestro circuito a la placa de topos quedaría de la siguiente manera (teniendo en cuenta que la placa no puede exceder de las medidas de 5,5 cm x 3,1 cm) :
NOTA: A la hora de soldar los terminales de conexión de las resistencias de los LEDs dentro de la placa he tenido que dejar únicamente una separación de 3 agujeros entre los terminales de cada resistencia. Esto provoca que las resistencias no queden de la mejor forma posible dentro de la placa y que a la hora de poner los conectores macho de conexión quede todo demasiado junto pero ha sido necesario para no exceder de los 3,1 cm de ancho de la placa.
Para finalizar esta sección y antes de realizar el montaje de los distintos componentes en las piezas de LEGO realizaremos un test con todos los componentes para ver que todo está funcionando correctamente.
El código a programar en nuestro Arduino lo tenéis disponible para descargar en el siguiente enlace (descargar sketch).
El comportamiento que queremos que tenga nuestro helicóptero será el siguiente:
-
- Poner el foco en su posición inicial en caso de que no lo esté (mirar que el servomotor se encuentre a 90º).
- Activar el motor que hace girar las aspas, aumentando su velocidad poco a poco.
- Cuando el motor adquiera su máxima velocidad se activarán las luces superiores haciendo un efecto sirena y la luz de posición trasera.
- Cada 10s se activará el foco delantero haciendo la siguiente secuencia de giro: de 90º a 135º → de 135º a 45º → de 45º a 135º y finalmente de 135º a 90º.
La única cuestión que tenemos que tener presente a la hora de programar todo lo descrito anteriormente es que no podemos utilizar ni bucles ni instrucciones tipo delay(), es decir, no podemos parar el programa en ningún punto ya que tenemos que hacer que todas las acciones parezcan que se están ejecutando en paralelo.
Por tanto si la programación de la acción que hace que el servomotor mueva el foco delantero la hiciéramos mediante un bucle lo que haríamos es parar el programa en ese punto hasta que terminara esa acción haciendo que el efecto parpadeo de las distintas luces presentes en el helicóptero no funcionara hasta que terminara ese bucle.
¿Cómo hacer que se realicen estas acciones en paralelo? Pues aunque Arduino no puede hacer acciones en paralelo (no es multitarea) si que podemos hacer que ejecute cada una de las acciones cada cierto tiempo y como lo hará “muy rápido” parecerá que todo lo hace a la vez. Para realizar lo descrito anteriormente haremos uso de la instrucción millis().
Únicamente dejaremos un bucle inicial que solo se ejecuta al principio del encendido del helicóptero el cual hará aumentar progresivamente la velocidad del motor que hace girar las aspas.