Imp002 hardware.voltage() returning incorrect values

Hi am looking for some help on the following problem that I am having.

I am running an Imp002 on a SmartMaker breakout board. All is working fine, other than hardware.voltage() returns between 1.2V and 1.5V. I am also getting invalid values from any analog read calls, all return very high values around 55000 to 65535, even though the measure voltage on the pin is somewhere between 1V and 2V, I assume that this might be due to the incorrect values from the hardware.voltage reference?

The voltage on the power input pins is 3.3V, so the input power is correct.

Could this be something that am doing wrong, or is there a problem with the Imp?

Have you connected Vref to e.g. 3V3?

No, I had assumed that this would be handled by the breakout board. Thanks for the advice, that has solved the problem.

Please excuse my ignorance, philmy, but how do I do that? I’m trying to read the hardware.lightlevel(), but getting values around 63500 whether the BlinkUp ‘eye’ is covered or brightly illuminated. I wonder if that’s because Vref (Vin?) is not connected to 3V3

if you have VREV connected to 3.3V, does this code give some different outputs?
function readSensors(){ local sensor = hardware.lightlevel(); server.log("sensor = " + sensor); imp.wakeup(1.0, readSensors); } readSensors();

The SmartMaker breakout doesn’t tie VREF to anything, so its going to float. In order to get good blink-up results, you should tie it to something, likely VDD, unless you have some other needed reference. I believe that the recommended blink-up components are designed to work best at 3.3V… can someone verify that?

I can (with the supplied resistors)

I have simply provided a connection from the VREF pin to the 3.3V point on the breakout and it all seems to working fine. Interestingly I did not have any problems with blinkup, just reading analog values, and the incorrect hardware.voltage() value, which was just returning the floating value of the Vref pin.

I did, but many folks are able to do it without tying VREF to anything. My guess is that the floating voltage is a sufficient reference in many cases, even if it isn’t optimal. Someday I’ll test this on a scope and make a video…

blinkup doesn’t use hardware.lightlevel()

I’m not sure what you mean? hardware.lightlevel() comes from the blink-up phototransistor with VREF as a reference voltage.

IMP-002 pin 34 (marked VDDA on our own datasheet, VREF on the SmartMaker breakout) is an input. BlinkUp won’t work unless it’s connected to a stable voltage; if you don’t have a specific analogue power-supply signal, it should be connected to digital 3v3.


yes, but you don’t have any code yet, you are just blinking up, besides that, hardware.lightlevel() is just a recent function.