I’m not sure what I did in a previous life to keep getting these niggles, but it must’ve been pretty bad!
Bit of an odd one:
Eratic behaviour from Proffie, traced to the MAIN switch often being stuck ON.
Except - it’s only stuck ON when the Proffie is powered. When the Proffie is unpowered the switch is mechanically disconnected until you press it. (i.e. working normally - according to my test meter anyway).
This video shows the symptoms:
The switch board is the one that came with the KR Eco Hero kit, and the reason I’m asking on here first before I dig any further is because I don’t think that switchboard will survive being unglued. Hence I was just wondering if anyone else has had anything like this before?
Initially I suspected the switch, but the fact that continuity seems to change based on whether the Proffie is powered or not has made me think maybe not.
I tried measuring reistance across the switch terminals and resistance between the MAIN switch terminals is 14 milliohms and on the AUX switch terminals it’s 2.2 milliohms. This compares to zero ohms (completely open) on a loose tactile switch which I had knocking about. I’ve no idea if these numbers are significant or to be expected or not.
Any thoughts welcome before I start unpicking stuff any more.
I just looked again at the serial monitor data. Interesting that it was running for about 40 seconds and the durations of the power holds and releases are consistent but climb steadily, starting at around 38,000 milliseconds and climbing through the 40 second window to around 72,000 milliseconds.
Seems a bit too uniform to be a random wiring fault.
Heat related perhaps?
You can’t really measure continuity and resistance in a live circuit. Those measurements requires the meter to put some current through the circuit and measure what happens to it, but a powered circuit will already have current/voltage and so measurements will be wrong. Sometimes this can work anyways, but unreliable measurements are pretty much useless.
However, we can measure if the circuit behaves like expected when on by measuring the voltage. When the board is on, it puts a voltage across the switch, which should normally be 3.3 volts. Once you push the button, it creates a short, and so the voltage should be zero across the button.
Aha! In that case the plot may have just thinnened!
I just checked the voltage between both switch lines and ground and the AUX switch was indeed giving 3.3 volts (well, 3.27, but close enough) but the MAIN switch was only giving 1.5 volts. I tried reflowing the solder joint in case that might be the cause but it made no difference.
I also tried checking for shorts and resistance between all of the pads that are used on the switch pcb, the pads in closest proximity to the MAIN switch pad, and the speaker pads for good measure. There were no shorts but there was micro amounts of resistance as follows:
MAIN - AUX = 6 milliohoms
MAIN - 3.3 volt = 19 milliohoms
MAIN - GND = Zero milliohoms
MAIN - LED Pad 5 = 18 milliohoms
MAIN - LED Pad 6 = 19 milliohoms
MAIN - LED Pad 1 = Zero milliohoms
MAIN - LED 2/3 = Zero milliohoms
MAIN - Speaker + = 13 milliohoms
MAIN - Speaker - = 17 milliohoms
Can’t help thinking though that only 1.5 volts is the key.
Is there an easy fix?
1.5 volts is definitely not normal, the question is what’s causing it.
There are a few possibilities:
It’s a short to something that fluctuates quickly, making it look like 1.5 volts, but it’s really alternating between 0 and 3.3 volts. Depending on the speed of the fluctuation, you might be able to measure this using AC measurements.
You’ve enabled something in your config file that uses that pin, like maybe SPDIF or I2C output. (Try the default_proffieos_config.h, do you still see 1.5 volts?)
There is a high-resistance short to ground, something around 40kOhm. This type of short is unusual, but can be caused by flux and other semi-conductive material on or around the boards. Maybe the glue is doing it?
The pullup resistor inside the CPU broke somehow, so it’s not able to do it’s job. This can be fixed, either by using a different pad, or by adding a resistor between the button1 pad and 3.3v.
I think the first thing I would do is to try an ultra-simple config file to rule out config file problems.
After that, I would de-solder the wire from the button1 pad and then try to figure out if the problem is somewhere on/near the board, or if it’s on/in/near the button.
OK, so it looks like it’s the config. Loaded up the base config from the proffie page and we’re up to 3.3 volts.
The question now is why?
My guess is it’s something to do with the OLED as this is the only aspect of this build that I’ve never done before.
Config is here:
OLED is wired as per the manual with Positive from the SD power pad and neg to ground.
Any thoughts welcome. At least we know it’s not a hardware problem which is good.
OK, with the OLED defines all taken out, the voltage would pulse between 3.3 volts and around 2.2 volts.
I suspected this was in time with the accent LED animation in the KR switch pcb, so I changed those blade presets to just being Black.
Voila - 3.3 volts back at the switch pad.
I then reinstated the OLED defines and config.ini, reloaded and the 3.3 volts still worked.
So the issue is with the switch pcb LEDs somehow causing problems for the switch lines.
I guess all I can do is get back to KR and let them know, but I suspect even if the manufacturer tested it, they’d say there’s no fault and it’s within spec, and as such it wouldn’t surprise me if any replacement board exhibited the same problem. But I’ll drop Khal a line and see what he says.
Thanks so much for your help tracing this one Prof. Without that little nugget of knowledge about the 3.3 volts at the switch pad, I know I’d never have figured it out. I’m in your debt as always.
No I haven’t separated anything yet, but I’m confused. Surely a short is physical? But my test meter says there is no short anywhere. Also how would a short be manifest when the LED is lit/animating, but disappears when the LED is off?
When the LED is off, the FET that controls it basically cuts off the connection.
So when the LED is off, the button can function as normal. When the LED is on, it will pull down down through the short.
If I had to guess, I would think the short would be between the LED and the resistor, and that’s why you’re seeing 1.5 volts instead of 0 or 3.3. But it could also be because the FET is actually turning the LED on/off 800 times per second, and so what you’re seeing is an average value.