home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.sys.raspberry-pi      Raspberry Pi computers & related hardwar      26,127 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 25,429 of 26,127   
   The Natural Philosopher to John R Walliker   
   Re: Anyone gotta clue? TMP36 Pi PICO.   
   29 Mar 25 19:54:38   
   
   From: tnp@invalid.invalid   
      
   On 29/03/2025 15:40, John R Walliker wrote:   
   > On 29/03/2025 14:51, The Natural Philosopher wrote:   
   >> On 29/03/2025 13:34, The Natural Philosopher wrote:   
   >>>   
   >>> I have a PI PICO W which I am developing code for amongst which is a   
   >>> TMP36 temperature sensor   
   >>> The code I have reused form other thermostat projects but its   
   >>> suddenly giving the odd false reading.   
   >>>   
   >>> #define CHIP_TEMP_IO 28   
   >>> #define CHIP_ADC 2   
   >>> #define RELAY_IO 21   
   >>> #define IN 0   
   >>> #define OUT 1   
   >>> #define ON 1   
   >>> #define OFF 0   
   >>>   
   >>> void initialise_hardware()   
   >>>      {   
   >>>      adc_init();   
   >>>      adc_gpio_init(CHIP_TEMP_IO);   
   >>>      gpio_init(RELAY_IO);   
   >>>      gpio_set_dir(RELAY_IO,OUT);   
   >>>      }   
   >>> void set_relay(int flag)   
   >>>      {   
   >>>      cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, flag); // set the lamp   
   >>>      gpio_put(RELAY_IO,flag);    //set the relay   
   >>>      }   
   >>> float read_temperature()   
   >>>      {   
   >>>      static int index;   
   >>>      static int flag;  //initialised to zero at startup   
   >>>      static uint32_t rawbuf[32];   
   >>>      const float conversion_factor = 3.3f / (1<<12);   
   >>>      float result;   
   >>>      float last;   
   >>>      int i;   
   >>>      uint32_t raw;   
   >>>      adc_select_input(CHIP_ADC);   
   >>>      raw = adc_read();   
   >>> //wtf?   
   >>>      printf ("Raw=%0X\n",raw);   
   >>>   
   >>>      result=((float)raw)*conversion_factor;   
   >>>   
   >>>      return (100*result-54);   // the pcb warms them up by about 4   
   >>> degrees   
   >>>      }   
   >>>   
   >>> I am reading the temperature every two seconds as in   
   >>>      while (1)   
   >>>          {   
   >>>          sleep_ms(2000);   
   >>>          flag=(flag? OFF:ON);   
   >>>          set_relay(flag);   
   >>>          temperature = read_temperature();   
   >>>          printf("Temperature is %.1f C\n",temperature);   
   >>>          }   
   >>>   
   >>> about one time in ten the output jumps to about 20°C less than   
   >>> expected e.g.   
   >>>   
   >>>   
   >>> Raw=3BE   
   >>> Temperature is 23.2 C   
   >>> Raw=3BE   
   >>> Temperature is 23.2 C   
   >>> Raw=3BE   
   >>> Temperature is 23.2 C   
   >>> Raw=29B   
   >>> Temperature is -0.3 C /************************   
   >>> Raw=3C0   
   >>> Temperature is 23.3 C   
   >>> Raw=3C0   
   >>> Temperature is 23.3 C   
   >>> Raw=3BF   
   >>> Temperature is 23.3 C   
   >>> Raw=3BF   
   >>> Temperature is 23.3 C   
   >>> Raw=3BF   
   >>> Temperature is 23.3 C   
   >>> Raw=3C1   
   >>>   
   >>>   
   >>> I have added decoupling to the TMP36 supply which is fed from the ADC   
   >>> 3.3v supply which seems to be a steady 3.29V according to my DVM.   
   >>>   
   >>> Do I have a bad PICO W? TMP 36 or what?   
   >>>   
   >>> Other PICOs with the same chip don't do this...   
   >>> The only difference is that this PICO is running different and a lot   
   >>> more wifi/server code   
   >>> Is it possible that some interrupt is - er - interrupting the ADC   
   >>> read with dire results?   
   >>>   
   >>>   
   >>>   
   >>> I cannot but think this is a hardware issue.   
   >> I found another TMP36 from an old project and switched it in.   
   >> No joy.   
   >> Looks like its PI related   
   >>   
   >> “it should be clear by now to everyone that activist environmentalism   
   >> (or environmental activism) is becoming a general ideology about   
   >> humans, about their freedom, about the relationship between the   
   >> individual and the state, and about the manipulation of people under   
   >> the guise of a 'noble' idea. It is not an honest pursuit of   
   >> 'sustainable development,' a matter of elementary environmental   
   >> protection, or a search for rational mechanisms designed to achieve a   
   >> healthy environment. Yet things do occur that make you shake your head   
   >> and remind yourself that you live neither in Joseph Stalin’s Communist   
   >> era, nor in the Orwellian utopia of 1984.”   
   >>   
   >> Vaclav Klaus   
   >>   
   >   
   > I'm sure you have good reasons for using that device, but maybe consider   
   > the TMP1075.  It is cheap and reasonably accurate. I2C should not be a   
   > problem on the Pico.   
      
   I looked at that, but really the TMP36 is more than good enough usually   
   and takes very little code to get it working.   
      
   If I were using other I2C peripherals I would probably use it   
      
   > John   
   >   
      
   --   
   New Socialism consists essentially in being seen to have your heart in   
   the right place whilst your head is in the clouds and your hand is in   
   someone else's pocket.   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca