Two or 3 wire isolated 1 bit data line between stompboxes

Started by composition4, March 02, 2021, 09:18:42 AM

Previous topic - Next topic

composition4

Hi all

Please bear with me here as I think I'll struggle to explain this clearly. Just for background, what I'm trying to come up with is a system where I can have three separate stompboxes and turning one on turns the others off - I want to achieve this without the use of an external looper though. My thoughts were as follows:

I am trying to send out a logic level HIGH pulse to all stompboxes in a chain over a data line for up to three stompboxes. The idea is that when one stompbox is activated, the pulse is received by all stompboxes to turn them off (no problem if the stompbox which is activated receives the HIGH on the data line too, as I can either have it ignore the high signal or turn itself back on immediately after everything turns off). Each stompbox has a microcontroller so the processing of the HIGH signal is flexible.

My idea was to parallel the data and ground lines for each stompbox as per the picture below. Easily enough done I think, just share a ground line and a data line between all stompboxes, connect the data lines to MCU inputs pins which have pulldown resistors, and when a stompbox is activated, change the input pin on the activated stompbox to an output and have it inject a HIGH signal onto the data line.




I can do all of this with just the two conductors between each stompbox, data and ground. My problem is that I now want to optically isolate between connections (both the data lines and gound lines) for each stompbox. Ideally I'd like to keep it at a maximum of three conductors between each box, so that a stereo patch cable can be used as the data line. I just can't seen to wrap my head around how to do this.  I hope I've explained it properly, would love some guidance on this from those more experienced!

Thanks,
Jonathan

iainpunk

why would you want optoisolation on the data line? those isolators draw more current than your pull downs, so the data current would be bigger and create more ground fault.
use a dual momentary switch that's normally in the state depicted here, and use large resistors for the pull down, like 100k or more, so the current through he ground path is smaller! the other side of the switch can be connected to one of the gpio pins to turn it on.


cheers
friendly reminder: all holes are positive and have negative weight, despite not being there.

cheers

amptramp

If you still want microprocessor control, this looks like an application for an I2C circuit and some processors have the necessary hardware that allows it to be used with simple software commands.

PRR

Your MCU surely has a "one wire" interface for minimum wiring in medium-large systems.

If all these pedals are on the same Audio ground, I don't see why they need "isolation". They share a common. Yes, dumping digitals in audio common is poor practice. But your MCUs are not chattering constantly like FaceBook. They send "everybody but me shut up", which can be less than one byte, and far less than one milliSecond even on long wires working 9600 baud.
  • SUPPORTER

ElectricDruid

The way I'd do this uses two IO pins on your MCU, but only two wires for the comms - ground and a comms wire.

Each MCU has an input with a pull-up resistor. Use a largeish value like 100K, since you're going to have a few of them in parallel, but it won't be fussy. This input is the comms line and is connected to all the others.

Each MCU also has a output, connected (via 10K, say) to the base of a transistor that pulls the comms line down, so collector to comms line, emitter to ground. Since any pedal can pull the line down, there's no "master pedal" in this system. Each pedal monitors the comms line and sets its state accordingly. Each pedal's footswitch can then set the output to pull the comms line down however you like, so one pedal could toggle them all on and off on each press, whereas another pedal might only have a momentary effect while you hold the footswitch down. That's a question of doing in each pedal.

This is about as simple as it gets. No I2C, no SPI, no UART, nothing. Just a wire, a few resistors and a transistor per pedal. The downside is one state is dominant over the other, so if one pedal is taking the line low, another one can't take it high. Whether that dominant state is "On" or "Off" is also up to you as the programmer to decide.

HTH.


PRR

That's a lot of bumph to wade through. But it's really for systems exchanging non-trivial data. Temperature at many pipes, channel and volume settings....

In THIS system as described, the bus data is simple. RESET! Not re-boot, just stop. When bus is asserted, go to neutral/bypass. Except the device which asserted Reset did it so that IT can go to Active mode after everybody else has reset.
  • SUPPORTER

composition4

Thanks everybody for your input, some good points and ideas in there. I've got a bit of reading to do between working hours in the next couple of days and I'll report back on what I come up with.