Pages: [1] 2 3   Go Down
Author Topic: Problema con rele  (Read 2936 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tengo un problema, mi intencion es controlar una placa de reles, y que se activen diferentes reles segun la hora del dia.
Por que no se activan a la hora marcada.

Gracias de antemano

« Last Edit: June 18, 2013, 05:45:57 am by dboodb » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

PAso el codigo al un nuevo msj
« Last Edit: June 18, 2013, 06:05:36 am by dboodb » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nadie tiene idea de por que no hace el encendido del rele con este codigo varias veces al dia?
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 88
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No he mirado el código, pero te marca bien la hora??? Has mirado que por Serial te dé bien la hora??

Un saludo
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola gracias por contestar, lo tengo en hora, puesto con otro codigo anterior, que me marca la hora correcta con el otro codigo, y me mostraba la hora bien, la funcion poner en hora con este codigo no la utilizo, ya q supongo que el reloj ya esta en hora,
El problema biene que la primera activacion del rele de luces se lleva a cabo y por la mañana se encinde el foco, pero acto seguido tiene que empezar ha pensar en las lluvias cada hora y no las hace, se olvida....
Gracias por tu tiempo.
« Last Edit: June 17, 2013, 05:01:09 am by dboodb » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 88
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Haz una cosa,

Vete poniendo para ver por Serial cuando va pasando por los subprogramas y a ver cuando se para y donde.
Pon por ejemplo que empiece a las 14 y que acabe a las 14:01 y así lo haces rápido

Un saludo
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Con el otro codigo me mostraba la hora automaticamente, con este no me la muestra automaticamente, tengo que hacer algo?
Saludos y gracias
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

El motivo de no ponerlo en hora con este codigo, es que me dava un error en wire.h cuando le indicava la hora actual y intentava cargar el codigo.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ya se mostrar el reloj y lo tengo en hora, he visto otra forma de hacer que realice la activacion del rele, he codigo anterior lo he modificado, me veo con el problema de que permanecen encendidor los reles todo el timpo, fuera de la hora fijada y tampoco se desconectan.
« Last Edit: June 17, 2013, 08:05:24 am by dboodb » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

de las 90 personas que entraron a mirar nadie tiene idea de lo que pasa?
Pues si que tamos apañaos smiley-lol
Logged

Anaco, Venezuela
Offline Offline
Jr. Member
**
Karma: 8
Posts: 88
Electronic Engineer
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,

        Haz un codigo sencillo donde enciendas los dos reles al mismo tiempo, lo mas seguro es que el consumo de corriente sea mayor que el que entregan los puertos del dispositivo y no alcance para energizar ambos al mismo tiempo, espero no se te haya quemado nada.

        Deberias usar algun transistor, buffer, optoacopladot, puente H, o equivalente para energizar el rele y nunca directamente desde el arduino.

        Cambia el titulo a problema encendiendo dos relé segun la hora, y asi entra menos gente a ver a que llamas codigo novato.

        Y upara encapsular lo que sea código utiliza esto:
Code:
//Coloca tu codigo aqui dentro de las etiquetas correctas

Saludos.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es una placa de reles, que se puede conectar directamente al arduino, se pueden activar todos los reles a la vezsin problemas.
Lo que no consigo es que me haga la activacion a la hora marcada.

Alguien me puede decir que esta mal del codigo?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
#include <LiquidCrystal.h>
#include <Wire.h>
#define DS1307_I2C_ADDRESS 0x68
#include <RTClib.h>

RTC_DS1307 RTC; // Crea el objeto RTC
//temperatura
int Temp = 0;
char Grados = 'º';
int Ana1 = A0;   //Entrada analogica de LM35


int rele = 8; //rele, luces1.
int rele1= 7; //rele, luces1.




// Convierte números normales decimales a BCD (binario decimal codificado)
byte decToBcd(byte val)
{
  return ((val/10*16) + (val%10));
}

// Convierte BCD (binario decimal codificado) a números normales decimales
byte bcdToDec(byte val)
{
  return ((val/16*10) + (val%16));
}
byte second, minute, hour, dayofweek, dayofmonth, month, year;
// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers
void setDateDs1307(byte second,        // 0-59
                   byte minute,        // 0-59
                   byte hour,          // 1-23
                   byte dayOfMonth,    // 1-28/29/30/31
                   byte month,         // 1-12
                   byte year)          // 0-99
{
   Wire.beginTransmission(DS1307_I2C_ADDRESS);
   Wire.write(0);
   Wire.write(decToBcd(second));
   Wire.write(decToBcd(minute));
   Wire.write(decToBcd(hour));
   Wire.write(decToBcd(dayOfMonth));
   Wire.write(decToBcd(month));
   Wire.write(decToBcd(year));
   Wire.endTransmission();
}

// Establece la fecha y el tiempo del ds1307
void getDateDs1307(byte *second,
          byte *minute,
          byte *hour,
          byte *dayOfMonth,
          byte *month,
          byte *year)
{
  // Resetea el registro puntero
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  // Alguno de estos necesitan enmascarar, ciertos bits son bits de control   

  *second     = bcdToDec(Wire.read()&0x7f);
  *minute     = bcdToDec(Wire.read());
  *hour       = bcdToDec(Wire.read()&0x3f);
  *dayOfMonth = bcdToDec(Wire.read());
  *month      = bcdToDec(Wire.read());
  *year       = bcdToDec(Wire.read());
}

void setup()
{
    Serial.begin(9600);     

  pinMode(rele,OUTPUT);
  pinMode(rele1,OUTPUT);
  pinMode(13,OUTPUT);
  digitalWrite(13, HIGH);          //Activamos la retroiluminacion
  byte second, minute, hour, dayOfMonth, month, year;
  Wire.begin();
RTC.begin(); // Establece la velocidad de datos del RTC
   
 
  second = 0;
  minute = 59;
  hour = 13;
    dayOfMonth = 17;
  month = 1;
  year = 13;
  setDateDs1307(second, minute, hour, dayOfMonth, month, year);
 
}
//control de las luces segun la hora:
void luces()
{
if(hour == 11 && minute == 1)
{
digitalWrite (rele, HIGH);
}
if(hour == 12 && minute == 1)
{
digitalWrite (rele, LOW);
}
}
void lluvia()
{
if(hour == 13 && minute == 59)
{
digitalWrite (rele1, LOW);
}
if(hour == 14 && minute == 1)
{
digitalWrite (rele1,HIGH);
}
}





   void loop()
{
  byte second, minute, hour, dayOfMonth, month, year;
  getDateDs1307(&second, &minute, &hour, &dayOfMonth, &month, &year);
 
{
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

delay(1000); // La información se actualiza cada 1 seg.
}


 {
luces();

lluvia();
}
   //temperatura//
 
 
 
    Temp = analogRead(Ana1);          //Leemos el valor de la entrada analogica
  Temp = map(Temp,0,1024,20,150);  //Escalamos la señal a grados centigrados
 
  //Mostramos los grados en el serial
  Serial.print("Grados: ");
  Serial.print(Temp);
  Serial.print(Grados);
  Serial.println("C");
 
 
 
 
 
  delay(10000);                  //Al ser temperatura no hace falta leerlo tan seguido
}
« Last Edit: June 18, 2013, 06:06:27 am by dboodb » Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola

No se, yo probaría a sustituir hour por hour(), así coges la hora del sistema en lugar de una variable que no le envías a la función.

Saludos

Code:
//control de las luces segun la hora:
void luces()
{
if(hour() == 11 && minute() == 1)
{
digitalWrite (rele, HIGH);
}
if(hour() == 12 && minute() == 1)
{
digitalWrite (rele, LOW);
}
}
void lluvia()
{
if(hour() == 13 && minute() == 59)
{
digitalWrite (rele1, LOW);
}
if(hour() == 14 && minute() == 1)
{
digitalWrite (rele1,HIGH);
}
}


« Last Edit: June 18, 2013, 09:23:19 am by eb4cak » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por contestar ante todo y por emplear tu tiempo en intentar ayudarme.

« Last Edit: July 04, 2013, 03:47:38 pm by dboodb » Logged

Pages: [1] 2 3   Go Up
Jump to: