16n Faderbank: build help, dev suggestions

It was installed already. I don’t think the firmware would even let me finish compiling without it. Gonna get the oscilloscope and start probing the circuit. Wondering if overheating the multiplexer or op-amps might have been the issue.

FWIW - i’ve had the same problem and it may just be a symptom of the analog read being in-between two values.

@okyeron thanks for your input, that’s good to know I’m not the only one who’s run into this. Hmm, I guess I’ll go through the firmware and see if there’s a way I can possibly optimize it.

Adding a tiny bit of hysteresis is probably sufficient.

1 Like

I’m having a weird issue I don’t know how to correct. I finally finished the unit last night and can’t get the firmware to load (getting the same /302 message that @Rodrigo saw above).

I checked the Teensy and I’m getting 0.06v - not 3.3v somehow (checking the GND pin, top left (if top is the USB connector), and the 3.3v pin, 3rd down on the right). I checked this same cable connected to another Teensy and get 3.3v. Diodes appear to be soldered correctly with the line on the bottom (although you can barely see it at all). I’m also getting 0.86v on Vin.

EDIT: I am also successfully able to reprogram another Teensy (3.1 I think) with same computer and cable.

Here are the diodes:

So I removed and resoldered C1 and D1 (where the 3.3v trace appears to make its first connections) and no changes in behavior. I reflowed all pins of the Teensy and no changes.

At this point, I think I somehow got a dud Teensy which is frustrating. Has this happened to anyone else? Anything else I should try? Again, I’m getting a proper 3.3v on a 3.1 board I have and I’m able to reprogram it as well - all with the same cable and computer. Replacing the Teensy itsn’t the end of the world - just expensive and time consuming to desolder all the pads and break it loose.

Have you checked the board for shorts? If you’re not getting any voltage from the pin it’s likely a short. A short anywhere on the PCB, even not on the teensy, will cause this.

@okyeron @infovore

Just wanted to continue the discussion about the +/- 1 MIDI jumping issue, since apparently I’m not the only one experiencing this on occasion. Correct me if I’m wrong, but if this is periodically occurring for people then it means the ResponsiveAnalogRead library doesn’t always completely eliminate the noise on the Analog IN pin of the Teensy, and after looking at the code, it seems inevitable that this will cause problems due to the firmware not accounting for the noise:

notShiftyTemp = currentValue[q];

// shift for MIDI precision (0-127)
shiftyTemp = notShiftyTemp >> 7;

// if there was a change in the midi value
if (shiftyTemp != lastMidiValue[q])
{

So this section looks problematic to me. Essentially it maps a value range of 0-16383 to 0-127. Now, if there’s even a bit of noise, let’s say the reading 127 but the noise makes it jitter between 127-128 then that will translate to a jump being MIDI values of 0 and 1. When I have time this week I’ll try and add an update that doesn’t allow a value change unless the change in the raw value exceeds the maximum possible noise.

1 Like

Of course I’ve visually inspected everything but just to be sure, I went through all the resistors with a DMM and didn’t find anything unusual. I’m not the most technically inclined but usually have no problem with DIY projects. I’m still trying to understand the Eagle files - particularly the board layout - so that I can figure out if something is shorting to ground.

Originally, there was a small manual hysteresis array here, storing previous history in array objects and then averaging them. I removed that when we moved to ResponsiveAnalogRead, precisely because that was the point of that library for us - smoothing and removing noise whilst remaining responsive.

Ideally, I’d prefer to solve this through configuration options for ARR. We’ve already set the snapMultiplier very low; however, it might be worth increasing the activityThreshold which is currently set to the default of 4 - a default designed for 10 bit dacs, rather than the 13-bit dac we have on the Teensy 3.x.

If that’s a no-go, I’m all ears on alternatives.

2 Likes

Thanks for the suggestion! Do you know how I would insert that into the code? I see in the library that activity threshold is set by this function:

void setActivityThreshold(float newThreshold)

But I am actually kind of a noob C programmer, I’ve programmed some complicated firmware for my own projects, but in a pretty uneloquent way, I still have lots to learn because I’ve never used classes or structures or anything. I don’t even understand the use of the arrow operator you have in certain areas. I’m assuming I need to insert the setActivityThreshold() in some special way that references the library or the array of analog reads?

I had a couple boards with shorts that could not be visually detected, especially between pins on the ICs. With the consistency mode on your multi-meter you should check to make sure there is not consistency between adjacent pins on all of your op amps and the multiplexer chip. Pins 1+2, 6+7, 8+9, and 13+14 however are already shorted on the op amps via the PCB, however there should be no consistency between pins 2+3, or 10+11, etc etc. (Make sure your faders are in the middle position though while you do this check!) No adjacent pins at all on the multiplexer should be shorted. And then after that, you can check for shorts between resistors that are close together. The bottom sides of the op amp resistor pairs are connected on the circuit, so don’t worry about them, but the tops should not be.

If you still don’t detect any abnormal shorts, then you can use your consistency mode on the multi-meter to check that all the components are connected to where they should be. You will need to open up the boards file on eagle and follow the traces. By default the boards file only shows the top layer, but you will need to activate the bottom layer of traces as well so you can follow them.

If after all this you still haven’t found anything either shorted or not connected to where it’s suppose to then you may have a bad teensy, but that’s a very unlikely scenario.

Well my “good” DMM isn’t with me at the moment so I’m using a cheaper unit which is generally reliable but doesn’t have a continuity setting.

That being said, I put the DMM in resistance mode and set to the smallest granularity to check the ICs. I read 2.2-2.4 ohms across pins 1&2, 6&7, 8&9, and 13&14 which is consistent from what you said. I had infinite ohms on all other pins. Washed the board in alcohol and no changes.

Posting more pictures of my soldering (pardon the roughness - this might be my last 0603 project :unamused:):

The only thing I see on your board is possibly some solder that may not have flowed. Did you use a soldering iron, heating gun or some sort of diy reflow skillet or oven method?

But yea, troubleshooting a board with issues can take time. And you really need to be able to use the brd file in eagle as reference. Start by making sure everything is connected to ground as it should be, then check if everything is connected to the 5V as it should be and then start working your way through the circuit, making sure all the traces are connecting their respective pins together.

1 Like

I can read the file but I’m afraid I have no idea how the grounding scheme works - I’m not seeing any ground connections on the brd file and up to this point I was afraid to ask. I’m not a total newb, I swear. Just never used Eagle up until now. Any pointers?

So there aren’t any ground traces because the board has what’s called a ground pour FYI. So if you zoom into a component you will see that it is just labelled “GND” but there are no wires because that pin is literally surrounded by a big copper plate that is connected to ground. Example: Ground pour video

But if you wanna know if a pin is actually connected to ground all you need to do is connect one of your DMM leads to the Teensy gnd pin: Teensy 3.2 pinout
and then the other lead attach it to the gnd pin (not the pad!) of the component, and you will want there to be essentially no resistance between them, then the connection is good

Feel free to direct message me if you want more help, I think we should stop taking up space on this forum regarding this issue. OP feel free to delete some of these posts.

Ah, to be totally certain, the teensy has not had the usb power jumper cut, correct?

1 Like

Impossible to tell now. I didn’t do it, that’s certain.

Are there any examples in the wild of 16n’s with the sides covered or some sort of wall design?