Arduino programado como calculador de intermitencia 1.0


Esta es la primera de una serie de entradas que vamos a desarrollar dedicada a Arduino.

No pretendemos explicar que es, como se programa, cuales son sus posibilidades etc. de Arduino, tan solo se pretende buscar una serie de aplicaciones destinadas al automóvil, tanto de la placa de Arduino propiamente dicha como de algunas de sus placas periféricas, bien sean de entrada como de salida.

Lo ciento y verdad, es que la robotización del vehículo es cada día mayor. Esta serie de entradas, ayudara al alumno a comprender como se robotiza el vehículo. Igualmente, afianzara los conocimientos de señales digitales, analógicas, pulsos como los PWM y transmisiones de datos como CAM Bus.

En cualquier caso,  Arduino, tal cual se presenta, difícilmente se podría utilizar en el vehículo, ya que habría que aislarlo de las temperaturas y vibraciones que se producen en él.

En Arduino como calculador de intermitencia 1.0 proponemos un montaje que incluye dos placas.

- Arduino Uno.

arduino uno

- Arduino Reles. (placa formada por cuatro reles controlados por Arduino Uno de los cuales, solo utilizaremos uno de ellos)

ó relé convencional activado por optoacoplador.

placa reles

 

Además, para nuestro montaje se precisa:

  • Cuatro interruptores o pulsadores
  • Cuatro resistencia de 10K ohmios
  • Protoboard
  • Cable
  • Batería 12V
  • Placa de diodos.

 

Aspecto del montaje: 

 

Aspecto del circuito (montado con optoacoplador y relé externo)


 


Esquema:

circuito

Se trata del primer montaje de intermitencia (versión 1.0), el cual únicamente realiza las intermitencias con las frecuencias que nosotros programemos. Para iniciar la intermitencia de los diodos, hay que cerrar algunos de los cuatro pulsadores de que consta el circuito.

En nuestro montaje, hemos asignado las siguientes codificaciones:

- Pulsador S1 = Intermitencia normal. (Se inicia una intermitencia indefinida con una cadenciación de 400 milisegundos)

- Pulsador S2 = Intermitencia de cerrar puertas. (Se produce un único destello que dura 4 segundos)

- Pulsador S3 = Intermitencia de abrir puertas. (Se inicia una secuencia de cuatro destellos con una cadenciación de 150ms)

- Pulsador S4 = Intermitencia alarma. (Se inicia una intermitencia indefinida de con una cedenciación de 40 milisegundos)

En nuestro montaje, las intermitencias se inician de modo manual y actuando sobre unos pulsadores. En el vehículo, estas intermitencias se iniciarían cuando los circuitos o/y elementos del vehículo manden negativo/positivo ó comuniquen con CAM-bus la instrucciones de intermitencia. De esta manera, por ejemplo la maneta de intermitencia (derecha-izquierda) debería mandar positivo a Arduino para iniciar la intermitencia.

El calculador de cierre centralizado, igualmente debe mandar positivo a las lineas 3 ó 4 para realizar las intermitencias de cerrar puertas o abrir puertas.

Por último, la ECU de alarma debe mandar positivo a la línea cinco de Arduino para iniciar destellos de alarma.

Se estima normal que los tiempos tanto a nivel alto (HIGH) (luz encendida) como a nivel bajo (LOW) (luz apagada) sean de 0.45 segundos. Para variar estos tiempos, vasta con modificar las líneas donde aparecen. 

delay ( 450 ); // Espera 450 milisegundos ( 1 segundo = 1000 milisegundos )

En nuestro ejemplo, (vídeo) mostramos una parte donde se han modificado dichos tiempos a 45 ms, (función alarma) obteniéndose una frecuencia diez veces más alta.

delay ( 45 ); // Espera 45 milisegundos ( 1 segundo = 1000 milisegundos )

Para otras funciones como indicación de puertas cerradas (con el mando a distancia o llave), dichos tiempos se han modificado y programado a nuestro antojo.  (ver código)

 

 

Código para el intermitente, accionado por interruptor y utilizando placa de reles.

--------------------------

/*
 Control de la intermitencia de un vehiculo 1.0
Con este codigo y el notaje del circuito propuesto, conseguimos
 activar la salida 7 de Arduino, la cual alimenta a la bobina de un rele, que a su vez alimenta a las luces de los intermitentes del vehiculo.
Material utilizado.
 * Arduino Uno.
 * Placa de reles para arduino.
 * Cuatro pulsadores.
 * Cautro resistencias de 10K
 * Cable para conexiones.
 * Diodos de piloto trasero de vehiculo.
 * Batería.
Toda la informacion en:
 http://sistemaselectricosdelautomovil.com/
 */
// constantes (que no cambian).
 // Numero del pin donde se conectan los pulsadores 2,3,4,5
const int PulsaIntermitenica = 2;
 const int PulsaCerrarPuerta = 3;
 const int PulsaAbrirPuerta = 4;
 const int PulsaAlarma = 5;
// variables (que cambian)
int ControlLuzIntermitencia = 7; // Pin usado para el control del rele y por tanto de las luces de intermitencia
reading the pushbutton status // Iniciamos las cuatro variables
 int EstadoPulsaIntermitencia = 0;
 int EstadoPulsaCerrarPuerta = 0;
 int EstadoPulsaAbrirPuerta =0;
 int EstadoPulsaAlarma =0;
void setup() {
// declaramos los Pin de los cuatro pulsadores como entradas
 pinMode(PulsaIntermitenica, INPUT);
 pinMode(PulsaCerrarPuerta, INPUT);
 pinMode(PulsaAbrirPuerta, INPUT);
 pinMode(PulsaAlarma, INPUT);
 }
void loop(){
 // Lectura del estado de los pulsadores
 EstadoPulsaIntermitencia = digitalRead(PulsaIntermitenica);
 EstadoPulsaCerrarPuerta=digitalRead(PulsaCerrarPuerta);
 EstadoPulsaAbrirPuerta=digitalRead(PulsaAbrirPuerta);
 EstadoPulsaAlarma=digitalRead(PulsaAlarma);
// declaramos el Pin 7 como salida
 pinMode(ControlLuzIntermitencia, OUTPUT);
// checquea si los pulsadores son presionados
 // sí el estado del pulsasor es alto, pulsado HIGH:
// La intermitencia
 if (EstadoPulsaIntermitencia == HIGH) {
 digitalWrite(ControlLuzIntermitencia,HIGH);// activamos la salida 7 y por tanto los diodos se encienden
 delay(400); // lo mantenemos encendido 0.4 segundos
 digitalWrite(ControlLuzIntermitencia,LOW);// desactivamos la salida 7 y por tanto los diodos se apagan
 delay(400); // lo mantenemos apagados 0.4 segundos
 }
 else {
 // si no se pulsa, mantenemos apagado los led
 digitalWrite(ControlLuzIntermitencia,LOW
 }
// Los cuatro destellos de abrir puertas
 // Ahora el retado es de 150ms
if (EstadoPulsaCerrarPuerta == HIGH)
 {
 digitalWrite(ControlLuzIntermitencia,HIGH
 delay(150);
 digitalWrite(ControlLuzIntermitencia,LOW
 delay(150); //
 digitalWrite(ControlLuzIntermitencia,HIGH
 delay(150);
 digitalWrite(ControlLuzIntermitencia,LOW
 delay(150);
 digitalWrite(ControlLuzIntermitencia,HIGH
 delay(150);
 digitalWrite(ControlLuzIntermitencia,LOW
 delay(150);
 }
 else {
 digitalWrite(ControlLuzIntermitencia,LOW
 }
// EL destello de cerrar puertas
 // Ahora el retado es de 4s
if (EstadoPulsaAbrirPuerta == HIGH) {
 digitalWrite(ControlLuzIntermitencia,HIGH
 delay(4000);
 digitalWrite(ControlLuzIntermitencia,LOW
 delay(400);
}
 else {
 digitalWrite(ControlLuzIntermitencia,LOW
 }
// por último la rafaga de destellos interminable provocada por la alarma.
 // Ahora el retado es de 40ms
if (EstadoPulsaAlarma == HIGH) {
 digitalWrite(ControlLuzIntermitencia,HIGH);
 delay(40);
 digitalWrite(ControlLuzIntermitencia,LOW
 delay(40);
 }
 else {
 digitalWrite(ControlLuzIntermitencia,LOW
 }
 }
4 Comentarios en “Arduino programado como calculador de intermitencia 1.0
  1. olga dice:

    Hola, como se haría para que funcionaran los intermitentes de un coche, izquierdo, derecho y los 4 a la vez con arduino??

    • Sistemas Electrónicos del Automóvil Sistemas Electrónicos del Automóvil dice:

      En principio fácil; precisas:

      1 Pulsador/interruptor para el lado derecho (Que activaría el relé de "derecha"). (Utilizaría el código de intermitencia normal de "derecha").
      1 Pulsador/interruptor para el lado izquierdo (Que activaría el relé de "Izquierda"). (Utilizaría el código de intermitencia normal de "Izquierda").
      1 Pulsador/interruptor para los dos lados derecho-izquierdo simultáneamente. (Que activaría el relé de "derecha" y de "izquierda" simultáneamente). (Utilizaría el código de intermitencia normal de "derecha" y "izquierda simultáneamente").

      Un saludo.

      Espero haber aclarado un poco el asunto.

  2. Manuel dice:

    ¿Para cuando ls segunda versión?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.