He estado armando un proyecto algo grande pero tengo algunos problemas con las entradas digitales, resulta que algunas por lo general las entradas 2 y 3 digitales oscilan mucho entre sus valores actuales, aun teniendo todas las entradas desconectadas, por la comunicación serial detecto que cambian su valor a ( 1 ) en vez de permanecer en ( 0 ), creen que sea un problema con mi Arduino UNO?, alguna solución?
hay que ver el circuito, que placa arduino, y como estan configurados esos pines.
Puede ser ruido electrico. Prueba haciendo un pull-up o pull-down segun tengas configurado tu circuito. puedes activar incluso el pull-up interno con pinMode(ledPin, INPUT_PULLUP);
Muchas gracias por la respuesta.
El proyecto que tengo es algo delicado ya que tengo que garantizar que un dispositivo resguarde del dañino granizo a las cosechas de hortalizas de la región este proyecto esta actualmente implementándose con el PLC LOGO! de siemens, pero en el se presentan algunas fallas de programacion decidí tratar de migrarlo y tratar de hacerlo funcionar con un Arduino UNO que justamente es el mínimo necesario para la tarea (refiriéndome a el numero de entradas y salidas nesesarias).
bien pues estas son mis entradas y salidas declaradas y explicadas
#define boton 2 //pin para el botón de encendido local -Entrada-
#define remoto 3 //pin para el arranque remoto -Entrada-
#define SwLocal 4 //pin para el switch de arranque local (si es = 1 SwRemoto = 0) ------Entrada------
#define SwRemoto 5 //pin para el switch de arranque Remoto (si es = 1 SwLocal = 0) ------Entrada------
#define compuertaCL 6 //pin para el switch de compuerta cerrada (si es = 1 compuertaOP = 0) ---Entrada---
#define compuertaOP 7 //pin para el switch de compuerta abierta (si es = 1 compuertaCL= 0) ---Entrada---
#define abortar 8 //pin para botón de aborto del programa y acceso a info del sistema -Entrada-
#define luz 10 //pin para la luz de encendido -Salida-
#define sirena 11 //pin para la sirena de encendido (opcional) -Salida-
#define gas 12 //pin para el solenoide de entrada de gas -Salida-
#define chispa 13 //pin para la chispa de ignición -Salida-
y así es como están actualmente configurados los pines actuales
void setup(){
Serial.begin(9600); //Inicialización de comunicación serial
pinMode(luz,OUTPUT); //Inicio asignación de salidas
pinMode(sirena,OUTPUT);
pinMode(gas,OUTPUT);
pinMode(chispa,OUTPUT); //Fin asignación de salidas
pinMode(boton,INPUT); //Inicio asignación de entradas
pinMode(remoto,INPUT);
pinMode(abortar,INPUT);
pinMode(SwLocal,INPUT);
pinMode(SwRemoto,INPUT);
pinMode(compuertaCL,INPUT);
pinMode(compuertaOP,INPUT); //Fin asignación de entradas
digitalWrite(luz,LOW); //Inicio puesta en baja todas las salidas
digitalWrite(sirena,LOW);
digitalWrite(gas,LOW);
digitalWrite(chispa,LOW); //Fin puesta en baja
}
Las salidas deben de activar relevadores o relay's que aran la tarea pesada
y las entradas irían a sus respectivos botones o switches que serian:
-
boton pin 2: Un simple botón pulsador normalmente abierto
-
remoto pin 3: En algún futuro cuando y si es que mi proyecto tiene éxito trataría de adaptarle un Shield GSM para tener un control toral vía celular
-
SwLocal pin 4: Un switch giratorio de 2 posiciones en el cual cuando esta en posicion de arranque local esta entrada estaría en estado 1 y forzosamente la entrada SwRemoto en estado 0
-
SwRemoto pin 5: Lo mismo que SwLocal.
-
compuertaCL pin 6: El funcionamiento de esta entrada junto con la de compuertaOP es vital para el buen funcionamiento del programa ya que gracias a estas 2 señales se detecta si una pequeña explosion controlada se genera abriendo la compuerta y si al final de ella la compuerta vuelve a cerrarse y de paso a otro ciclo. El switch utilizado es un pulsador o un sensor de proximidad con 3 conexiones que son: 1.- normalmente cerrado, 2.- común, 3.- normalmente abierto
-
compuertaOP pin 7: lo mismo que en compuertCL, esta entrada estaría conectada a la conexión 3 ya descrita
-
abortar pin 8: Otro simple botón pulsador normalmente abierto
Tengo que repetir que actualmente todo esta desconectado, pero prácticamente todo esta como debe de estar a excepción de los pines 4 a 7 que deberían de estar 1 de cada uno en un estado alto y otro en bajo obligatoria mente,
todos los demás pines deberían de estar en estado 0 cuando no se esta manipulando
Gracias.
para los botones y mas si no estan cerca del impreso debes proteger la entrada con diodos ( aunque ya lo traiga internamente el micro) y un capacitor de .1 y los pull-up activados o externos. si el pulsador esta conectado con un cable hasta un tablero, actua como antena captando cualquier ruido electrico (arranques de motores, chispas, etc)
y para las salidas siempre un pull-down al transistor que controla el relay, te asegura que no se dispare solo.
Muchas gracias por la ayuda y los diagramas.
Una duda mas: crees que en la entrada pueda activar el PULLUP interno con
pinMode(boton,INPUT_PULLUP);
y dejar de tener ese molesto ruido, y si no le hace daño el estar en ese modo por mucho tiempo (semanas o meses) encendido?
Gracias.
no le hace daño, son tecnicas viejas para asegurar que lo que lo hace bajar a cero es lo que realmente entra y no ruido
Hola bestgustavo30,
Yo tengo casi casi el mismo problema con la activación de unos leds mediante el registro de desplazamiento TPIC6A595NE. Quisiera saber si resolviste el problema y de qué manera?
Saludos,