buenas! nuevo por aqui y con un problema que no se solucionar, espero que podais echarme un cable:
estoy tratando de usar una entrada analogica como si fuera digital para activar el led 13 ( por ejemplo) cuando recibe 5v
esta es la parte del void loop:
val = digitalRead(inPin14); // leemos el estado del pulsador
if (val == HIGH) { // verificamos si el valor es alto (HIGH)
// que corresponde al boton pulsado
digitalWrite(pin13, HIGH); // encendemos el LED
} else {
digitalWrite(pin13, LOW); // apagamos el LED
el caso es que funciona pero es muy muy sensible y con solo hacercar la mano al arduino se enciende el led 13
existe alguna solucion? esto a sido con la arduino uno, en el proyecto final usare nano de ahi que instalar un arduino mega me va muy mal por el espacio
esto mismo usando un pin digital me funciona perfecto, pero no tendre libres cuando este todo
Si, a mi se me queda como medio encendido siempre, y se acaba de encender al pulsar. Se me ocurre como solución, usar una resistencia PULL UP interna. A mi me funciona:
int pin13 = 13;
int inPin14 = 14;
int val;
void setup() {
pinMode (inPin14, INPUT_PULLUP);
pinMode (pin13, OUTPUT);
}
void loop() {
val = digitalRead(inPin14); // leemos el estado del pulsador
if (val == LOW) { // verificamos si el valor es alto (HIGH)
// que corresponde al boton pulsado
digitalWrite(pin13, HIGH); // encendemos el LED
} else {
digitalWrite(pin13, LOW); // apagamos el LED
}
}
muchas gracias por la ayuda carmeloco,
lo probe pero aun me falla, con una resistencia externa haciendo PULL UP o PULL DOWN se solucionaria? crees que viene por ahi el fallo?
Al poner la resistencia PULLUP interna, tienes que conectar el pulsador, de forma que lleves la entrada a masa cuando quieras activarla, no darle 5V. a la entrada. ¿Lo has hecho así?
aaaaaaa...claro eso era lo que me fallaba!!....ahora si funciona perfecto!!!usando tu skecht tal cual
lo malo es que los pulsos son de 12v ( realmente seran 3 pulsos) no me va del todo bien darlos con masa, pensaba instalar tres reguladores lm2596 en la entrada de cada pulso para dejarlos en 5v, pero bueno sera pensar un modo de cambiar los 12v en masa como usando unos reles de 12v
Buenas, yo había puesto la resistencia PULLUP interna por simplificar, pero si lo haces con una PULLDOWN física, y he haces entrar señales de 5V, también funciona perfectamente, es decir, una resistencia entre masa y la entrada analógica del arduino (yo he usado una de 10K - 1/4W). La señal la aplicas en la unión entre la resitencia y la entrada analógica., y te ahorras los relés (una resistencia es bastante más barata). Para ello, el sketch sería el siguiente:
int pin13 = 13;
int inPin14 = 14;
int val;
void setup() {
pinMode (inPin14, INPUT);
pinMode (pin13, OUTPUT);
}
void loop() {
val = digitalRead(inPin14); // leemos el estado del pulsador
if (val == HIGH) { // verificamos si el valor es alto (HIGH)
// que corresponde al boton pulsado
digitalWrite(pin13, HIGH); // encendemos el LED
} else {
digitalWrite(pin13, LOW); // apagamos el LED
}
}
Se me acaba de ocurrir que, si esas señales de 12V son más o menos estables, puedes ahorrarte los reguladores, usando un divisor de tensión con resistencias. Es más barato, y matas dos pájaros de un tiro, ya que la segunda resistencia del divisor, hace a su vez de resistencia pulldown. El esquema sería algo así:
genial!
y solo con esas resistencias podre meterle 12v al arduino?
lo malo es que es para un coche ,que muy estables los 12v no son, pero la idea me gusta muchisimo con otra resistencia se podria? como para el rango entre 11 a 14v ?
Se puede poner una resistencia de 20K arriba, y una de 10K abajo. Con eso consigues tener 4,7v de entrada al arduino, con una tensión de 14V, y 3,6V con una de 11V. Habria que probarlo, pero creo que es suficiente como para que el arduino lo tome como un "1" en la entrada.
Cuando tratas con señales de entrada que presentan variacioens debes PROTEGER la entrada de tu micro usando un simple zener de 5.1 Volts haciendole circular una corriente de 5mA.
Eso asegurará que no importa cuando entregue el alternador del auto, tu entrada siempre quedará conformada a un nivel lógico aceptable para tu ARDUINO.
Una solución que yo he empleado también en vehículos (en mi caso en una moto) es usar un optoacoplador, de forma que aíslas completamente la tensión del vehículo, de las entradas del arduino.
buenas de nuevo
carmeloco y surbyte disculpadme no habia visto las ultimas respuestas
el caso es que creia tenerlo solucionado usando el sistema de la resistencia interna y dandole masa, funcionaba todo perfecto hasta el momento en que lo instale en el coche, el problema es que se me activan solos los ciclos al encender algun componente mas del coche (por ejemplo un compresor), aunque no tengan nada que ver con el arduino
pongo aqui un ejemplo de sketch este con entrada de 5v ( y resistencia fisica )
es super simple, al dar 5v al pin 14 se encienden los pines 5,6,7 y8 durante 4 segundos
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int pin8 = 8;
int inPin14 = 14;
int val;
void setup() {
pinMode (inPin14, INPUT);
pinMode (pin5, OUTPUT);
}
void loop() {
val = digitalRead(inPin14); // leemos el estado del pulsador
if (val == HIGH) { // verificamos si el valor es alto (HIGH)
// que corresponde al boton pulsado
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH); delay(4000);
} else {
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW); // apagamos el LED
}
}
A ver si me podeis echar una mano, que no consigo hacerlo funcionar
e probado a alimentar el arduino mediante usb usando un cargador de movil de esos pequeños por ver si emtraba mas regulada la corriente y los reles por otro lado usando el "lm" pero me sige fallando
alguien a conectado reles y usado algun tipo de entradas en un coche y no tubo este probema?
Porque no comienzas del principio: cuentanos de que trata tu proyecto, pero mejro aun, explica cuantas entradas/salidas digitales necesitas, cuantas AD, PWM, etc.
Tal vez podriamos redefinir el mismo desde el comienzo sin tener que hacer artilugios que mas alla que funcionen hay que ver su comportamiento en el ambiente de un vehiculo.
Puedes usar cd4021 como 8 entradas digitales que pueden sumarse de a 8 x cada integrado que uses expandiendo tus entradas.
Para las salidas puedes usar el 74HC595 como shif out register
Realmente lo que quiero hacer es de lo mas básico, pero no logro que funcione en un coche pero si funciona perfectamente en entornos sin distorsiones o ruidos
lo que tengo son 3 entradas( pulsadores a gnd o 5v segun si lo pongo pullup o pulldown) y 12 salidas( reles octoacoplados), simplimente
e probado con configuracion pullup y pulldown y ambas me funcionan perfectamente hasta el momento de poner el arduino en el coche que entonces el coche en cuanto que pongo un simple trozito de cable aunque sea de 20 cm ya el arduino toma como señales de entradas con casi cualquier cosa que se encienda en el coche y activa las salidas que le manda el skectch
por ejemplo al pulsar el boton 1 deberia encender el rele 1 3 segundos
pues una vez puesto el arduino en el coche estaria constantemente encendiome el rele "1" 3 segundos como si le pulsara el boton, esto pasa aunque no haya ni boton, solo un pequeño trozo e cable suelto sin conectar a nada
E probado en varios coches y en todos pasa lo nismo
Yo empezaría por armarme de paciencia, llevar un portátil al coche, conectar el arduino y poner ese cable en el pin de entrada, a partir de ahí, leería los valores que entran una vez conectado y los monitorizaría, dar de alguna forma una respuesta de salida con las lecturas, después hacer la conexión directa al coche y repetir la operación, viendo si los valores son diferentes.
El asunto de lecturas y tratamientos de señales de entrada, sea con botones o cualquier otra cosa que varíe voltajes, es muy delicado y hay que "pegarse" con ello para dejarlo bien afinado.
Bueno amigo, lo que te ocurre es lo que nos pasa a todos cuando pasamos del Laboratorio o nuestra mesa de trabajo al ambiente real.
Tienes que extremar las precauciones empezando por leer como inmunizar las entradas y salidas del ambiente del vehículo.
Lee en la sección proyectos el correspondiente al ARDUINO PLC y verás que se usan optoacopladores para las entradas e incluso para las salidas.
Lee tambien como se desacopla la alimentación con filtros para evitar que las perturbaciones reseteen el arduino.
Luego deberías montar todo esto en una jaula de faraday o basicamente una caja metálica. Con estas precauciones no vas a tener problemas.
Entonces resumiendo: Entradas con optoacolplador, salidas idem. Alimentación con filtrado RF. Todo en caja metálica.
Mira en tu vehículo, mira como esta la computadora de tu vehículo, si NO encuentras una caja metálica que cubre o envuelve la computadora lo comentas acá.
Este es el link del proyecto que llevan adelante varios compañeros del foro http://forum.arduino.cc/index.php/topic,108109.0.html
este es un link de un proyecto aparentemente terminado, mira las entradas y salidas http://www.openplcproject.com/#!downloads/ccjb
Muchas gracias por las respuestas, a ver si logro sacar esto adelante, lo malo es que no entiendo muchas de las cuestiones tecnicas que se hablan y el esquema elecetrico de las entradas no logro interpretarlo
miraré también como se instalan los octoacopladores psra probarlos en las entradas, ya que en las salidas tengo pero por que ya vienen en los reled
hay alguien aqui que trabaje haciendo skectchs/arduinos/circuitos? Pagaria encantado a alguien que tenga los conocimientos que a mi me faltan y me ayudara dar una solucion a esto