Trouble with Relay Boards and Mega 2560


i'm having trouble here , thought reach out first time on forum.  i'm building simple solar tracker device turns rotating platform forward 15 degrees every hour, landing @ 180 degrees south @ noon each day.   all have 4 relays.  1 advance forward energizing relay short time (<1 sec, or long takes platform move 15 degrees) 1 reverse @ end of day (sum of each forward advance), 1 energize alarm 4 seconds prior each forward or reverse motion, , fourth relay energizing dht11 controlled small cooling fan in charge controller housing.  know there more elegant ways this…. forgive me have go 1 step @ time here. 
 
my trouble these 2 relay boards.  it's if coils energized, when disconnect jumpers , measure voltage @ digitalpins, i'm right on intention of code (write high 1 sec, every hour, else write low) meaning, have 5v out second.  when measuring voltage in1 or in2 pins on relay board ground, odd voltages… 1.8v or 2.4v out.   the relays audibly click when plug these jumper wires in.  should mention led lights on relay board on, except 1 corresponding cooling fan.
could odd voltage 'coming out' of in1 , in2 grounding issue?  possibly has jumper @ ry voc? i've read how these boards use 2nd 5v power source , maintain optical isolation.  i'd rather stay away power source unless it's necessary.
this relay board i'm using.   clear, have 2 of these hooked now. 

 
also, when energize 12v power source alarm relay closes few seconds, regardless of time is.  have thought code issue, dont see when applying 5v power via usb.
 
and…. idea size fuse use protect board? i've searched , have not found direct answer.    there 1 amp automotive fuse between 12v power source , mega 2560. 
 
ok….thank read , can offer guidance




code: [select]

#include <wire.h>
#include "rtclib.h"
#include "dht.h"
#define dhtpin 2
#define dhttype dht11

dht dht(dhtpin, dhttype);
rtc_ds1307 rtc;

void setup() {

  serial.begin(9600);
  serial.println("dht test");
 
  dht.begin();
  wire.begin();

  rtc.begin();

  if (! rtc.isrunning())
  {
    serial.println("rtc not running!");
    rtc.adjust(datetime(__date__, __time__));
  }
  //assigning functions pins
 
  pinmode(4, output); //tracker motor forward relay
  pinmode(5, output); //tracker motor reverse relay
  pinmode(6, output); //future tracker motor alarm relay
  pinmode(7, output); //control box cooling fan relay

}

void loop() {
 
  float h = dht.readhumidity();
  float t = dht.readtemperature();
 
  if (isnan(t) || isnan(h)) {
    serial.println("failed read dht");
    } else {
    serial.print("humidity: ");
    serial.print(h);
    serial.print(" %\t");
    serial.print("temperature: ");
    serial.print(t);
    serial.println(" *c");
    }
 
  datetime = rtc.now();

  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.print(")");
    serial.println();

    serial.println();
    delay(2000); //add 2 second delay accommodate slow sensor, before when reading temperature/humidity , time

    //thermostat control
    //lines immediatey following thermostat section enclosure cooling fan
    //pin6 5v output cooling fan relay

    if ((t) >= 30) //if temperature greater or equal 30c, or 86f
    {
      digitalwrite(7,high); //turn on cooling fan relay
    }
    else
    {
      digitalwrite(7,low); //otherwise cooling fan relay off
    }

     //clock timer motor control
     //following lines clock control section forward , reverse action of motor, , alarm control
     //the time set 24 hours
     //0 sunday,1 monday.
     //0 12am,1 1am
     //pin 4 on short 'bursts' @ , between every hour between 9am , 5pm
     //pin 4 on time equivalent 15 degrees (360deg/24hrs) clockwise rotation of tracker every 1 hour.
     //estimating 1 second on time equivalent of 15 degrees
     //pin 5 on @ 6pm 9 seconds return starting position.
     //pin 6 on 4 seconds prior each forward or reversing motion

    if (now.hour() == 9 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4,high); //energizes relay 1 second @ 9am
      delay(1000); //amount of time moving in forward direction
    }
    else if (now.hour() == 10 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 10am
      delay(1000);
    }
     else if (now.hour() == 11 & now.minute() == 00 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 11am
      delay(1000);
    }
    else if (now.hour() == 12 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 12pm
      delay(1000);
    }
      else if (now.hour() == 13 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 1pm
      delay(1000);
    }
      else if (now.hour() == 14 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 2pm
      delay(1000);
    }
      else if (now.hour() == 15 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 3pm
      delay(1000);
    }
      else if (now.hour() == 16 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 4pm
      delay(1000);
    }
      else if (now.hour() == 17 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(4, high); //energizes relay 1 second @ 5pm
      delay(1000);
    }
      else if (now.hour() == 18 & now.minute() == 0 & now.second() == 0)
    {
      digitalwrite(6,high); //energizes alarm relay
      delay(4000); //for 4 seconds, then,
      digitalwrite(5, high); //energizes reversing relay total of forward time since 8am.
      delay(9000); //sum of each forward movement delay time
    }
    else
    {
      digitalwrite(4, low); //de-energizes relay @ times other entered above
      digitalwrite(5, low); //de-energizes reversing relay @ times other entered above
      digitalwrite(6, low); //de-energizes alarm relay
    }
}

5v usb isn't enough power run 4 relays.
usb maximum 500 ma.




Arduino Forum > Using Arduino > Project Guidance > Trouble with Relay Boards and Mega 2560


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts