Buen día tengo una curiosidad, después de hacer un programa en arduino, al quitar la alimentación se borra la información, como tendría que hacer para que se mantenga mi programación así le quite la energía accidentalmente o deliberadante.
Se va la información...
No creo que sea el programa...
No será que estás hablando de las variables más bien?
seguramente, la verdad que soy nuevo, pero a ver , programo mi sketched lo subo al arduino, me ejecuta sin problemas, pero lo desconecto el arduino, vuelvo a conectarlo y no ejecuta el programa que tenia subido. espero me entiendan si no cualquier consulta en el post saludos.
Ejecuta solo la primera vez...
Podrías decirme qué hace el programa y postear el código?
Ahora que menciono eso de "postear el código", en este foro hay un regla para eso: si no supera los 9000 caracteres, se debe copiar y pegar al post, PERO ENTRE TAGS GENERADOS POR EL BOTÓN </>
bueno te lo copio es menor de 9k de caracteres, y bien subo el código a arduino y me ejecuta perfectamente, pero el problema es al quitar la alimentación y energizar nuevamente parecería que se borro mi sketched subido.
Saludos
#define RELAY1 10
#define RELAY2 9
#define RELAY3 8
void setup(){
// Se configuran los pines como salidas
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
}
void loop(){
digitalWrite(RELAY1,LOW); // Se enciende el relay 1
delay(2000); // Se espera 2 segundos
digitalWrite(RELAY1,HIGH); // Se apaga el relay 1
digitalWrite(RELAY2,LOW); // Se enciende el relay 2
delay(2000); // Se espera 2 segundos
digitalWrite(RELAY2,HIGH); // Se apaga el relay 2
digitalWrite(RELAY3,LOW); // Se enciende el relay 3
delay(2000); // Se espera 2 segundos
digitalWrite(RELAY3,HIGH); // Se apaga el relay 3
Por lo que veo, es probable que estas conectado los reles directamente a los pines del arduino, si fuera así estas perdiendo energía para mantener el equipo funcionando.
La programación se mantendrá siempre en el Microprocesador aunque le quites la energía.
Al encenderlo nuevamente deberá ejecutarse.
Saludos
Muchas gracias por las prontas respuestas, y si estoy usando los pines del arduino, como debería alimentar entonces los reles?.
PD: y otra consulta cada vez que energizo el arduino, deberia iniciar mi programa desde el inicio del sketch o desde donde se quedo cuando le quite la energia?
Saludos.
En efecto, tal y como lo pensaba.
No puedes, no debes conectar un rele directo al pin de arduino, ruega a que no se haya quedado ese Puerto.
Para conectar un rele se hace por medio de un transistor, y una resistencia en la base, también debes colocar un diodo en antiparalelo para proteger al transistor de la bobina del rele. Hay bastantes circuitos en Internet sobre eso, Googlea un poco y busca conectar rele arduino.
Respondiendo a tu otra consulta, el programa iniciará desde el principio siempre, es decir, iniciará constantes, calculará las variables que hayas definido luego corre el setup() y entra en el loop().
Si deseas mantener valores aún cuando la energía se quite entonces debes usar la memoria EEPROM interna. (no recomendado para escrituras y lecturas continuas).
Saludos
Amigo visionario aprovechando tu disponibilidad por favor te quiero pedir un favor, necesito crear un código, en el cual tengo 3 relays quiero que se active el primero y el segundo y pasado 3 segundos el primer relay que siga prendido y el segundo se apague dando paso a que prenda el tercero,
y a todo este sistema a maniobrar con un pulsador de arranque y otro de corte
el arranque que inicio la secuencia que te comento y el de corte que pare toda la función
Espero me ayudes saludos.
Mira los ejemplos con botones
Define un boton y luego consultas por un cambio de estado.
Este boton está definido como pull-up. busca Arduino pull-up para saber como conectarlo
#define RELAY1 10
#define RELAY2 9
#define RELAY3 8
#define Boton 7
bool valor;
bool valorAnt = false;
void setup(){
// Se configuran los pines como salidas
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(Boton, INPUT);
}
void loop(){
valor = digitalRead(Boton);
if (valor && !valorAnt) {
digitalWrite(RELAY1,LOW); // Se enciende el relay 1
delay(2000); // Se espera 2 segundos
digitalWrite(RELAY1,HIGH); // Se apaga el relay 1
digitalWrite(RELAY2,LOW); // Se enciende el relay 2
delay(2000); // Se espera 2 segundos
digitalWrite(RELAY2,HIGH); // Se apaga el relay 2
digitalWrite(RELAY3,LOW); // Se enciende el relay 3
delay(2000); // Se espera 2 segundos
digitalWrite(RELAY3,HIGH); // Se apaga el relay 3}
}
valorAnt = valor;
}
gracias por la ayuda pero parece que no explique bien yo estoy queriendo realizar este proceso,
en el cual con el arduino puedo simular la conexión de mando, osea comandar el accionamiento de contactores que son como unos relays mas grandes a través de relays pequeños, para eso tengo que simular que al energizar el arduino, todo se quede en stand by hasta que pulse por decir un botón verde y se accione la acciona requerida la cual seria
(me prenda el relay uno y el relay 2, pasado 3 segundos se apague el relay 2 dando paso al relay 3, se activen mi motor eléctrico terminado el trabajo con otro pulsador sea rojo corte todo los relays, dejando en espera a que en la siguiente oportunidad que quiera usas mi motor eléctrico lo pueda activar de nuevo con el botón verde y así la veces que quiera)
ayuda amigos por favor cualquier consulta en el post de antemano gracias.
Tu solución para que arranquen donde deseas.
void setup(){
// Se configuran los pines como salidas
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(Boton, INPUT);
// si los relays son de logica positiva asi estará bien
// si son de lógica negativa los fijas en HIGH
digitalWrite(RELAY1, LOW):
digitalWrite(RELAY2, LOW):
digitalWrite(RELAY3, LOW):
Lo que quieres exactamente es el arranque de un motor estrella/triángulo.
Prueba este código:
int pinMarcha = 7;
int pinParada = 6;
int pinLinea = 10;
int pinEstrella = 9;
int pinTriangulo = 8;
int Marcha = 0;
int Parada = 0;
void setup()
{
Serial.begin (9600);
pinMode (pinMarcha, INPUT);
pinMode (pinParada, INPUT);
pinMode (pinLinea, OUTPUT);
pinMode (pinEstrella, OUTPUT);
pinMode (pinTriangulo, OUTPUT);
digitalWrite (pinMarcha, LOW);
digitalWrite (pinParada, LOW);
digitalWrite (pinLinea, LOW);
digitalWrite (pinEstrella, LOW);
digitalWrite (pinTriangulo, LOW);
}
void loop()
{
Marcha = digitalRead (pinMarcha); // Pulsador de Marcha NA
Parada = digitalRead (pinParada); // Pulsador de Parada NC
// Contactor linea
if ((Marcha == HIGH || pinLinea == HIGH) & (Parada == HIGH))
{
digitalWrite (pinLinea, HIGH);
Serial.print ("Salida Linea: ");
Serial.println (pinLinea);
}
// Contactor estrella
if ((Marcha == HIGH || pinLinea == HIGH) & (Parada == HIGH))
{
delay (2000);
digitalWrite (pinEstrella, HIGH);
Serial.print ("Salida Estrella: ");
Serial.println (pinEstrella);
}
// Contactor triangulo
if ((Marcha == HIGH) || (pinEstrella == HIGH) & (Parada == HIGH))
{
delay (200); // Tiempo para evitar que estrella y trianguno esten
// activados al mismo tiempo
digitalWrite (pinEstrella, LOW);
delay (2000);
digitalWrite (pinTriangulo, HIGH);
Serial.print ("Salida Triangulo: ");
Serial.println (pinTriangulo);
}
// Pulsador de parada
if (Parada == LOW)
{
digitalWrite (pinLinea, LOW);
}
}
El pulsador de Parada no lo tienes definido, he supuesto el pin digital 6.
Como bien te dice Visionario a las salidas del Arduino solo debes conectar relés a través de un transistor o mejor a través de un acoplador optoelectrónico.
Yo no usaría relés si no usas snubbers.
En su reemplazo usaría Relés de estado solido con cruce por cero para minimizar el ruido electrico.
Tu prueba como se comporta todo tal como lo tienes y si se presentan problemas entonces considera esto consejo.
pero, estuve averiguando y creo que no pasa nada al conectar los relees directo al arduino, claro usando los módulos de relees ya que traen toda la electrónica acoplada, si bien tu código para estrella triangulo estaría bueno, te soy sincero que de momento no podría conectarlo en físico para hacer la prueba con componentes, a causa de que soy novato, espero me puedas a ayudar a hacer el esquema de conexión de los componentes que sean necesarios para ejecutar el código, muchas gracias por la ayuda saludos estaré a la espera de que me ayuden a terminar con este proyecto
Yo lo que te digo es que al accionar con módulos de reles las bobinas de tus CONTACTORES y éstos actuar sobre la configuración estrella/triángulo se produce un ruido de línea que va a provocar o puede provocar problemas en el arduino. Te invito a que hagas una prueba simple con un módulo rele accionado un motor pequeño monofásico y dime si no hay problemas.
Si hay problemas entonces prepárate para la que se viene en tu arranque estrella triángulo.
Pregunto porque no usar un arrancador suave? o un variador de velocidad o el motor es de mucha potencia?
mira la verdad no entiendo un poco ese tema del ruido de linea, lo que masomenos puedo hacer coincidir con ese termino seria, el pico de arranque, puesto que al arrancar cualquier motor sea de, a ver un ejemplo, al arrancar un motor monofasico de 1HP, se puede producir un pico de 7 a 8 amperio, al inicio del arranque, y una vez ya en marcha baja y podria consumir 3, 2 o un amperio, y bien ahora eso en que me afectaria a un circuito electronico, me afectaria en que al arranque baje la tension electrica, lo cual podria hacer llegar menos voltaje de alimentacion, por decir a mi arduino, y ahora a cuanto amperaje trabaja la bobina del contactor pues solamente entre 2 a 10 amperios dependiendo del tipo de contactor, y bueno espero no confundirme y me ayuden a completar el el diagrama de conexion del arduino, para hacer la prueba del arranque estrella triangulo y traerles novedades.
PD:que pasaria si alimento es arduino y el modulo de relees a un estabilizador.
En vez de conjeturar de algo que no sabes, porque no pruebas lo que te he dicho. Prueba con un rele usando su módulo, y accionando un contactor y éste a su vez poniendo o no en marcha un motor y me dices que ocurre. Si todo va bien, no hay problema pero si la accionarlo el arduino se reinicia, lo verás porque hará cosas raras.
Las soluciones son un paquete de medidas pero para que empezar por ellas si no has hecho la prueba.