I am using a Nano 33 BLE to control a robot. The robot has electronic speed controls for brushless motors, which have a 5V regulated battery eliminator circuit that I am using to power the robot. This setup worked fine previously with a Leonardo, but now I'm having issues with the 33 BLE. All externals, including switches and potentiometers, are connected to 5V. Testing the potentiometers, they hit 1023 at about 60% of their throw and then drop back down to ~800 beyond that. I believe the issue is the 5V supply. The 33 BLE must be using the 3.3V internal voltage as the reference, and the analog readings go haywire when it gets above that.
I looked into using the AREF pin, but found it wouldn't even compile with analogRead(EXTERNAL). After some more searching, it looks like EXTERNAL is not an option for this board, and the AREF pin is not actually even connected (another issue with the documentation, apparently...). Is there any solution other than a complete redesign of my wiring? That would be unfortunate, because I designed a custom PCB specifically for this board. Simply stepping it down to 3.3V isn't an option either, because the servos need 5V. Here is the circuit diagram. The 3-pin connectors on the right are for the pots; the ones on the left for the servos and ESCs, and the 2-pin connectors with resistors are for switches.
The key difference is that the Leonardo is a 5V processor and the 33 BLE isn't. That means any voltage you put into it greater than the 3V3 supply voltage will damage the chip and as you have found stop it working.
What you are trying to do is simply not viable. You need to change things so no input to the chip exceeds its supply.
Remember the Vin pin is not the voltage the processor runs at but the voltage that feeds into the 3V3 regulator.
Thanks. That's what I feared. It won't be a problem to keep the 5V isolated to the servos, ESCs, and Vin and use the 3.3V pin for everything else, but it means I need to start over. Too bad I didn't consider this issue before, but I guess that's how you learn.
Ok, just be aware that while feeding a servo with a 3V3 control pulse might work, it could be that needs a bit of a step up in signals. I normally use a 74HCT14 to do this. This has six inverting buffers in it so use two of the buffers in series for each servo.
That's another thing I didn't think of. I did some searching and found that R/C receivers usually (or maybe always?) use 3.3V signals even though 5V is the normal operating voltage, so I'm pretty sure the servos will work fine without boosting the signal to 5V. I will test with a breadboard to make sure, though.