FEZ Cerbuino Bee and Relay ISOx16 Module

I am having some trouble with all the relays asserting on the relay board after reading an interrupt port event. Has anyone else see this behavior? I can supply code and what my application does on request.

How are you powering the relays? Please provide simple example to repro the issue.

Welcome to the community.

I have a 1 amp 12 volt wall wort powering the board. I am thinking it may be my supply. I have another one that I am going to try tomorrow. In testing I removed the interrupt port and an just using a timer to assert the relay I want but the board is exhibiting the same behavior. When my timer elapses I assert 2 relays but the board asserts the all some if the time. When this happens I can hear the bee assert the ones I want and deassert all the rest then they all click right back on. Thanks for the reply.

Are there any published specifications regarding the power supply requirements for the Relay ISOx16 Module?

12 v is required for the internal switching mechanism, however each relay can handle up to 250V at 10A Max. We were not able to reproduce your error, the relay module did not skip a beat (set at 500ms) using the following code.

using System;
using System.Collections;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Presentation;
using Microsoft.SPOT.Presentation.Controls;
using Microsoft.SPOT.Presentation.Media;
using Microsoft.SPOT.Touch;

using Gadgeteer.Networking;
using GT = Gadgeteer;
using GTM = Gadgeteer.Modules;
using Gadgeteer.Modules.GHIElectronics;
using Microsoft.SPOT.Hardware;

namespace RelayCerb
{
    public partial class Program
    {
        InterruptPort Readme = new InterruptPort((Cpu.Pin)6,false,Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeLow);
        Thread readings;

        // This method is run when the mainboard is powered up or reset.   
        void ProgramStarted()
        {
            /*******************************************************************************************
            Modules added in the Program.gadgeteer designer view are used by typing 
            their name followed by a period, e.g.  button.  or  camera.
            
            Many modules generate useful events. Type +=<tab><tab> to add a handler to an event, e.g.:
                button.ButtonPressed +=<tab><tab>
            
            If you want to do something periodically, use a GT.Timer and handle its Tick event, e.g.:
                GT.Timer timer = new GT.Timer(1000); // every second (1000ms)
                timer.Tick +=<tab><tab>
                timer.Start();
            *******************************************************************************************/


            // Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
            Debug.Print("Program Started");

            button.ButtonPressed += new GTM.GHIElectronics.Button.ButtonEventHandler(button_ButtonPressed);
            readings = new Thread(ReadThread);
            readings.Start();
        }

        void ReadThread()
        {
            while (true)
            {
                relayISOx16.EnableRelay(RelayISOx16.Relay.Relay_1);
                Thread.Sleep(500);
                relayISOx16.EnableRelay(RelayISOx16.Relay.Relay_2);
                Thread.Sleep(500);
                relayISOx16.EnableRelay(RelayISOx16.Relay.Relay_3);
                Thread.Sleep(500);
                relayISOx16.EnableRelay(RelayISOx16.Relay.Relay_4);
                Thread.Sleep(500);

                relayISOx16.DisableRelay(RelayISOx16.Relay.Relay_4);
                Thread.Sleep(500);
                relayISOx16.DisableRelay(RelayISOx16.Relay.Relay_3);
                Thread.Sleep(500);
                relayISOx16.DisableRelay(RelayISOx16.Relay.Relay_2);
                Thread.Sleep(500);
                relayISOx16.DisableRelay(RelayISOx16.Relay.Relay_1);
                Thread.Sleep(500);
            }
        }

        void button_ButtonPressed(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
        {
            Debug.Print(Readme.Read().ToString());
        }
    }
}

James,

Thank you very much for the reply and test. I noticed that you are only reading the button state on button press and not changing the relay state during that event. I have since removed my button from the bee and things seen to be behaving a but better not 100% but better. As I am not a hardware guy I learning on the fly. I am using the setup to control my hot tub and it was a little disturbing to have relays asserting at will. I will post my code tomorrow and take a voltage reading while powering the relay board to confirm my power supply is delivering 12v.

Thanks again for the excellent customer service.

Where did you power the relay bank?