MFC Bypass help

Todd248

New elf
Joined
Dec 20, 2023
Messages
2
I've read the wiki's and some forum posts on bypassing Multi Function Controllers (MFC's) and could use some help figuring out how to modify these controllers to just be always on.

I think removing the surface mount transistors and connecting the two side pins next to each other may work but don't know enough about circuits yet to confidently reverse engineer these.

I'd like to just get rid of the MFC all together but haven't been able to find a simple solution to provide power and reverse the voltage polarity 50/50 that doesn't involve custom circuit boards. These are the DC lights that only come on half the lights when direct voltage is provided. When polarity is reversed the other half come on. I know Hanson sells a board but it's not available in the US and I need something that controls just 1 or 2 strands distributed over a larger area. This was interesting https://www.mattmillman.com/projects/simple-2-wire-led-christmas-light-controller/ and I may print some boards up to try it out but still looking for a more direct solution.

Anyhow, if I can get these to always on, I intend to dip them in electronics grade epoxy since water and moisture are a major problem here. It will be easy enough to hide/cover the MFC's then.

Pics attached with 2 of the back as it was difficult to get a good angle. Thanks in advance.

Todd
 

Attachments

  • Burr Lights Back2 (Custom).jpg
    Burr Lights Back2 (Custom).jpg
    511.7 KB · Views: 6
  • Burr Lights Front (Custom).jpg
    Burr Lights Front (Custom).jpg
    712 KB · Views: 6
  • Burr Lights Back (Custom).jpg
    Burr Lights Back (Custom).jpg
    549.1 KB · Views: 6

Skymaster

Crazy elf
Global moderator
Generous elf
Joined
Dec 19, 2021
Messages
1,130
Location
Western Sydney
As you've noted you wont be able to bypass the MFC without a custom PCB - it needs to have the polarity switched for both sides of the string to come on.
You might be able to get a large H-bridge, a simple 555 timer circuit running at a few hundred Hz, and feed that into the direction pin. Then an appropriate power supply. And now just reading the link, that board seems to be exactly what I'm describing.

@AAH would you post across to the USA? Or sell via Ken or something?
 

Notenoughlights

400,000+ twinkly lights
Joined
Oct 16, 2016
Messages
662
Location
Christchurch, New Zealand

AAH

I love blinky lights :)
Community project designer
Joined
Dec 27, 2010
Messages
4,228
Location
Eaglehawk
As you've noted you wont be able to bypass the MFC without a custom PCB - it needs to have the polarity switched for both sides of the string to come on.
You might be able to get a large H-bridge, a simple 555 timer circuit running at a few hundred Hz, and feed that into the direction pin. Then an appropriate power supply. And now just reading the link, that board seems to be exactly what I'm describing.

@AAH would you post across to the USA? Or sell via Ken or something?
I sell and ship all of my stuff everywhere. I've actually sold my ready to run DMX2-24 to US, UK and Czech Republic among other places. The boards without enclosure, power supply etc I've probably shipped to 10 countries as the 2 wire 2 channel lights are now highly common everywhere.
 

Todd248

New elf
Joined
Dec 20, 2023
Messages
2
Appreciate the responses. I understand you ship internationally and while the DMX2-24 is a neat piece of kit, I've got lights distributed all over and want to keep the power lines localized.

@Notenoughlights that will work, I've got 3-4 strands that are 30v and a few sets of each. Do you happen to have your esp32 code on github or something? Any chance you've posted pics before or have pics of the build? I ordered 5 of those to get started, already have a bunch of esp32's.
 
  • Like
Reactions: AAH

AAH

I love blinky lights :)
Community project designer
Joined
Dec 27, 2010
Messages
4,228
Location
Eaglehawk
Appreciate the responses. I understand you ship internationally and while the DMX2-24 is a neat piece of kit, I've got lights distributed all over and want to keep the power lines localized.

@Notenoughlights that will work, I've got 3-4 strands that are 30v and a few sets of each. Do you happen to have your esp32 code on github or something? Any chance you've posted pics before or have pics of the build? I ordered 5 of those to get started, already have a bunch of esp32's.
That module would potentially do the job but I suspect that the dimming rate would be limited to a fairly low speed due to the size of the mosfet transistors. For a motor that's not a huge issue but having to have a low "clock rate" will mean that there's the likelihood of quite noticeable flickering. Those modules are high power but only 2 channels. This means that you could potentially have dozens of strings connected but they can only be dimmed in 2 groups.
The software and timing as well as the H bridges are the key to driving the 2 wire 2 channel lights. The DMX2-24 has 12 H bridges on it which allows 12 strings and 24 channels to be controlled independently. Because the lights are highish voltage and very low current there is no problem running them up to 10's of metres away from the controller. I have quite a number in my own display that have about 20m of lead wire before the lights.
I describe these lights as the "evil 2 wire 2 channel lights" quite often on ACL and elsewhere as they are cheap for the manufacturers to make but they are awful to control from xlights or similar.
The DMX2-24 has 2A rated current protected outputs. As the lights are typically under about 0.25A you can actually parallel up multiple sets of lights on each output if you want more lights to be dimmed but don't want or need the individual string control.

To go back to your earliest post. If you're just looking at making the lights to be "always on" and not require dimming or control from xlights or whatever then you can remove the controller and run the lights off a suitably sized AC transformer. For 31V DC lights the transformer to give a matching amount of light is potentially in the 24V AC range.
 

Notenoughlights

400,000+ twinkly lights
Joined
Oct 16, 2016
Messages
662
Location
Christchurch, New Zealand
Appreciate the responses. I understand you ship internationally and while the DMX2-24 is a neat piece of kit, I've got lights distributed all over and want to keep the power lines localized.

@Notenoughlights that will work, I've got 3-4 strands that are 30v and a few sets of each. Do you happen to have your esp32 code on github or something? Any chance you've posted pics before or have pics of the build? I ordered 5 of those to get started, already have a bunch of esp32's.
Me being me, I didn't write the majority of the code myself and just used Dr. Google and added small bits here and there to suit my setup, however this seems to run just "fine" to give a twinkle effect and a static effect on two pins at once. I just used the Arduino IDE to program it.
Code:
TaskHandle_t Task1;
TaskHandle_t Task2;

// the number of the LED pin
const int ledPin = 16;  // 16 corresponds to GPIO16


// setting PWM properties
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;


void setup() {
pinMode(2, OUTPUT);

ledcSetup(ledChannel, freq, resolution);
 
  // attach the channel to the GPIO to be controlled
ledcAttachPin(ledPin, ledChannel);

  //create a task that will be executed in the Task1code() function, with priority 1 and executed on core 0
  xTaskCreatePinnedToCore(
                    Task1code,   /* Task function. */
                    "Task1",     /* name of task. */
                    10000,       /* Stack size of task */
                    NULL,        /* parameter of the task */
                    1,           /* priority of the task */
                    &Task1,      /* Task handle to keep track of created task */
                    0);          /* pin task to core 0 */                 
  delay(500);

  //create a task that will be executed in the Task2code() function, with priority 1 and executed on core 1
  xTaskCreatePinnedToCore(
                    Task2code,   /* Task function. */
                    "Task2",     /* name of task. */
                    10000,       /* Stack size of task */
                    NULL,        /* parameter of the task */
                    1,           /* priority of the task */
                    &Task2,      /* Task handle to keep track of created task */
                    1);          /* pin task to core 1 */
    delay(500);
}

//Task1code: Static lights
void Task1code( void * pvParameters ){


  for(;;){
    digitalWrite(2, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(1);                       // wait for a second
    digitalWrite(2, LOW);    // turn the LED off by making the voltage LOW
    delay(1);                       // wait for a second
  }
}

//Task2code: Twinkle lights
void Task2code( void * pvParameters ){


  for(;;){
  // increase the LED brightness

  for(int dutyCycle = 4; dutyCycle < 251; dutyCycle++){   
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);
    delay(1);

  }

  // decrease the LED brightness
  for(int dutyCycle = 251; dutyCycle > 4; dutyCycle--){
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);
    delay(1);

      }
  }
}

void loop() {
 
}
 
Top