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,428 of 26,127   
   John R Walliker to The Natural Philosopher   
   Re: Anyone gotta clue? TMP36 Pi PICO.   
   29 Mar 25 15:40:48   
   
   From: jrwalliker@gmail.com   
      
   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.   
   John   
      
   --- 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