Benchmarking the onboard temperature sensor

Posted on
  • After getting pretty inconsistent temperature measurements in my house, I put my entire Puck.js collection right next to each other. These are their comparative profiles after 2 hours of equilibration, top for the past 60 minutes, bottom for the past 24 hours. Even the one with the highest readings is consistently 1.2 degrees below my lab-grade thermometer.

    Only after they've arrived I saw on here that the readings are just an indication of temperature, not a reliable measurement. A real shame, because that's what I bought them for. Now considering soldering on a thermistor to the GPIO, hoping it fits into the case.

    Just thought I'd leave this here as a caveat.

    1 Attachment

    • temp_profiles.png
  • No surprise to me... if you do this with a Espruino Original, Pico, or Wifi, it is all the same: it is the temperature of the die. The Wifi fares most interesting: since on the other side of the board an ESP8266 (ESP-12) module is soldered on and that ESP8266 is a current sucker, you notice the 'heat' with bare finger tip... Modern chips have all a temp sensor on them since they could be in a cell phone laying on a dashboard of a car in the sun... And that's for sure outside of their operation environment for sufficient heat dissipation... and they shut down. Many things matter. Therefore I got myself a temperature chip that I can place outside of the context... yes, it needs some wiring, but I get the precision I need. What are your requirements for accuracy / resolution?

  • I wasn't aware that the other boards supported temperature readings. In fact, one of the reasons I backed the Kickstarter for the Puck.js was because it seemed to double as BLE thermometer. I'd say +/- 1 degree would be sufficient, so a good thermistor should do. Not like the random generator that's built in. :-)

  • Nice graph - says it all:-)
    I have to say that the three pucks I have currently tested are only consistent to within +- 3 degrees of each other at best. This is worse that I was expecting so I will be investing use of a DS18B20 when I find some time to do this. I was wondering whether this might be due to small differences in the config of each. Eg one may not have had its firmware updated yet. One may have had other code loaded previously.

  • I have to say the thought that previous configurations have an impact had occurred to me before. I played with 3 Pucks during development, and when ready, updated another 7 Pucks fresh from the box. So all Pucks are now running one and the same JavaScript. Interestingly, the bottom and the top outlier in these graphs are from the first 3 that I used for playing. I resetted them before the test, but I didn't wipe the firmware.

  • I was going for a MAX6608 rather than a DS18B20 sensor or thermistor. Sensor can be pin powered if 8..15uA constantly 'hurts'. Footprint LxWxH~ 2.0 x 2.2 x 0.9 .. 2.9 x 2.8 x 1.25 mm, W incl. legs/pins.

  • Thanks - it's a shame it varies so much. When I'd tested they seemed to all be within +/- 1 degree, but that was with pre-production nRF52 chips and I wonder whether they were manufactured differently :(

    There is also a temperature sensor on the MAG3110 - it's not exposed in the firmware yet, but I wonder if it might be calibrated better.

    What the graph does show is that the temperature readings are reliable to around 1 degree C once you take account of the temperature offset - so it wouldn't be too painful to do something like E.setBootCode("E._getTemperature=E.getTe­mperature;E.getTemperature=function(){re­turn E._getTemperature()-1.234};",true) with the calculated temperature offset.

    Finally: shows the available pads - there's a SOT23 part outline on the board connected to digital IO, and you may be able to solder a temperature sensor on there if you can find a OneWire digital one.

  • There seems to be only analog sensors available in SOT23-3 package (with 1-2 °C resolution).

    DS18B with 0,5°C resolution is available in 8-Pin SO (150 mils), 8-Pin µSOP, and
    3-Pin TO-92 Packages.

    There is a temp sensor combined with memory in a 8 pin µMAX package.

    Not sure what package fits best and is hand solderable ;-)

  • The 3-Pin TO-92 is probably easiest - you could bend one over and fit it on top without it protruding very far at all.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

Benchmarking the onboard temperature sensor

Posted by Avatar for badryan @badryan