Hardware issue needs a new board/serious bodge [Fixed]
Posted: Jan 30th, '22, 07:23
Personally, I'm quite thankful that so much work went into such a large board, and such a beautiful case for this project, but upon firing my Yocto 2 up for voices test, nothing was getting through. Upon investigation and probing, I've found a grievous issue with the hardware for sending accents to the various voices, one that necessitates a serious bodge or a new board entirely.
This is the part of the circuit that has the problem:
Atmerga1284 (MUXA/B/C/INHMUX1/INHMUX2) -> CD4049 inverter -> CD4051 address lines
The Atmega cycles through a 3 bit counter timed up with everything else in it's code to trigger the right voices at the right times. The CD4051's divvy out the voltage from the MCP4822 to all the respective voices fast enough to make it seem like if you had a bass and snare hitting at the same time, they certainly sound like they do. That's fine. The issue is the CD4049.
The CD4051 needs it's inputs to be seeing voltages in line with it's supply voltages, which happen to be 15V and GND. Not going to happen when the Atmega is a 5 volt device. So the CD4049 comes in, doing the important job of inverting the logic signals so the CD4051 gets the correctly referenced lines... and also level translating? No, the 4049 is not a logic level translator, nor does the "B" mean "B"uffered, it just means that it's the second revision of the 4000 series chips that came with an extensive amount of circuit protection to prevent static shock problems. The 4049 is literally a pair of push pull MOSFET's per channel along with associated protection diodes and resistors to source the gate with voltage. What ends up coming out of the 4049 is an inverted chain of pulses that wiggle between 15 volts and 10 volts because of the associated circuit inside of it. That 10 volts is not good enough to register as a logic low, so it never flicks over.
You need a basic logic level conversion before the Atmega lines go into the 4049, probably 2 transistors per channel would do it, or maybe 1, I forget, but it's really easy. I'd go with the transistors because even though you'd have some outlying floor above ground or ceiling below 15, it would still be enough to trigger the 4051 lines, and it's a lot easier than loading in a whole "TTL-CMOS Logic Level Translator(TM)" chip or, god forbid, a suite of opamps (Though the opamps alone could do this for you, given the proper slew rate specifications. Don't just use TL074's again).
Anyways, if I get a bodge working, I'll report back at some point, unless this problem has already been encountered and there's already a fix out there?
This is the part of the circuit that has the problem:
Atmerga1284 (MUXA/B/C/INHMUX1/INHMUX2) -> CD4049 inverter -> CD4051 address lines
The Atmega cycles through a 3 bit counter timed up with everything else in it's code to trigger the right voices at the right times. The CD4051's divvy out the voltage from the MCP4822 to all the respective voices fast enough to make it seem like if you had a bass and snare hitting at the same time, they certainly sound like they do. That's fine. The issue is the CD4049.
The CD4051 needs it's inputs to be seeing voltages in line with it's supply voltages, which happen to be 15V and GND. Not going to happen when the Atmega is a 5 volt device. So the CD4049 comes in, doing the important job of inverting the logic signals so the CD4051 gets the correctly referenced lines... and also level translating? No, the 4049 is not a logic level translator, nor does the "B" mean "B"uffered, it just means that it's the second revision of the 4000 series chips that came with an extensive amount of circuit protection to prevent static shock problems. The 4049 is literally a pair of push pull MOSFET's per channel along with associated protection diodes and resistors to source the gate with voltage. What ends up coming out of the 4049 is an inverted chain of pulses that wiggle between 15 volts and 10 volts because of the associated circuit inside of it. That 10 volts is not good enough to register as a logic low, so it never flicks over.
You need a basic logic level conversion before the Atmega lines go into the 4049, probably 2 transistors per channel would do it, or maybe 1, I forget, but it's really easy. I'd go with the transistors because even though you'd have some outlying floor above ground or ceiling below 15, it would still be enough to trigger the 4051 lines, and it's a lot easier than loading in a whole "TTL-CMOS Logic Level Translator(TM)" chip or, god forbid, a suite of opamps (Though the opamps alone could do this for you, given the proper slew rate specifications. Don't just use TL074's again).
Anyways, if I get a bodge working, I'll report back at some point, unless this problem has already been encountered and there's already a fix out there?