9

I've put a lot of DS18B20 sensors in place now on various sensor nodes - maybe 50 or so. I've learnt a bit about the readings returned from them. I know you have isolated some of these as not being the cause, but it is good to confirm that they are issues. I don't know if you are using Celsius or Fahrenheit, so the degree of the problem isn't clear. ...


9

The product page FAQ [https://www.maximintegrated.com/en/support/faqs/ds18b20-faq.html] has an entry: Q: Is the 4.7kΩ resistor needed for 5V and 3.3V operation? A: Yes, the 4.7kΩ pullup resistor is required for both 5V and 3.3V applications. The 1-wire bus requires that the control signal be pulled high so the master device can pull it low to ask for data, ...


8

The AM2301 and the DHT22(AM2303) are similar in a number of ways, both in price, specs, ranges and power consumption. They are usually cased a bit of a differently, with the DHT22/AM2303 being packaged with four pins (only three are in use), and the AM2301 (formerly called DHT21) is packaged with three cables and a small plug inside of the case. I would ...


7

You probably want to use a thermocouple. It'll give you the ability to measure much higher temps than regular temperature sensor. You'll also need a IC like the MAX6675 to interface with it. The MAX6675 performs cold-junction compensation and digitizes the signal from a type-K thermocouple. The data is output in a 12-bit resolution, SPI™-compatible, ...


6

One of the options to measure high temperatures would be to use thermocouples. This table provides a basic description of the types and the corresponding temperatures that they can sense. A simple search led me to these components. Thermocouple Type-K Glass Braid Insulated - A mid range thermocouple Thermocouple Amplifier MAX31855 breakout board - Board to ...


6

You need to implement hysteresis. Set two temperature points around set_temp. One a little higher to be a limit for turning the heater off and a one a little lower then set_temp to turn the heater on. You only need to change your if else condition a little if (current_temp < set_temp - HYST_VALUE) { digitalWrite(ssr_u, HIGH); } else if (current_temp &...


5

There is an even greater article on this topic: http://www.gammon.com.au/power It shows how to reduce your power usage for the Uno from about 50mA to 350nA (0.000350mA) - at this point, you need to factor in the natural drain of batteries. Also, I have had good success with a project that was activated by a pushbutton, by using a latch - the push button ...


5

What you need to do is take an averaged reading, this is because the sensor is always fluctuating, noise on the 5V line or the signal line. There are possible hardware solutions. Adding a capacitor between Vcc and Gnd near the sensor, 0.1µf Adding a low-pass filter on the signal line of the LM35 to Arduino heatsink on the LM35(they are very sensitive to ...


5

Because your program uses various String objects in several different sizes, there's a good chance that heap memory (in RAM) is getting fragmented to the point that String allocation begins to fail, or begins to allocate on top of stack variables. (Typically, heap and stack work toward each other, from opposite ends of memory that is free after static ...


4

The sensors have different accuracy, according to their datasheets. The TMP36 has ±2°C typical accuracy, while the the LM35 has 0.5°C typical accuracy (over 25°C). Read the datasheet carefully and pay attention to the characteristics, more specifically to the accuracy error graphs for each sensor. At your measured temperature (~17°C), you should expect the ...


4

I researched this once when I was getting consistent, exactly 85 degC readings from my sensors. The Maxim DS18b20 data sheet (rev 042208, page 4, in a footnote to Table 1) says: "The power-on reset value of the temperature register is +85°C. Double check that the Arduino code is follows the sensor communication protocol correctly.


4

I made a Temperature and humidity sensor - battery powered in 2013. It is powered from 3 x AA batteries, and lasted, as I recall, until a couple of months ago before I changed the batteries. That is, almost two years. It logs to an SD card every 15 minutes. You could change that interval of course, it would probably not last as long logging every minute. I ...


4

No, you cannot. The LM35 is rated for an absolute maximum junction temperature of 150°C. Any higher than that and you will damage it. For temperatures above that you are better using a thermocouple.


4

I do not know the accuracy that you will require in your temperature measurements. Your idea of using copper wire and connector sockets is reasonably ok as long as you are aware of the following : Where you make a connection from thermocouple wire to copper, that creates another thermocouple in itself. This isn't a great problem since the temperature ...


4

In principle, I don't see any problems. Your heating pad uses 12V and 10W, which means it would be consuming slightly less than one amp of current. The MOSFET you linked can go up to 5A (needing a heat sink with over 1A). You could use PWM (there are 6 pins on a Uno that can do that) to provide pulse-width modulation to control the amount of output you give ...


4

Unlike most Arduinos, the ESP8266 doesn't have a hardware TWI, so I²C is bit-banged in software. This means that you can use any GPIO pins. By default, Wire.begin() initializes pins 4 (SDA) and 5 (SCL), but you can specify other pins using Wire.begin(int sda, int scl). Documentation (Note: the datasheet specifies GPIO2 as SDA and GPIO14 as SCL, but that ...


4

Have you looked at OneWire temperature sensors? You connect them to a bus IC and the bus IC to your Mcu. This allows you to multiplex many sensors. You can also forego the master bus IC and just bit bang using a GPIO pin. The Arduino OneWire library uses this approach. You can learn a lot about from this one wire sensors tutorial.


4

As I mentioned in the comments, one way to do this is to use a multiplexer. You haven't said which temperature sensors you are planning to use, so I'll illustrate this example using the TMP36 Analogue temperature sensor. Now, if you were using just one of these, the connection would be trivial: But you want more sensors than available pins. That's where ...


4

The examples I can see from Adafruit say #include "DHT.h" or #include <DHT.h> But you wrote #include <dht.h> They aren't the same. Further, the examples for the Adafruit library show usage like: // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)...


4

You don't need interrupts for any of that. Your main loop just needs to test the switch, eg. void loop () { if (digitalRead (button) == HIGH) // assuming LOW means pressed return; // read thermocouple here // display results delay (5000); } I want to print the value of the thermistor on lcd using interrupts and i want the value to ...


4

At times like this it is useful to refer to the datasheet. You can, in that document, find this paragraph: 4. Power and Pin DHT11’s power supply is 3-5.5V DC. When power is supplied to the sensor, do not send any instruction to the sensor in within one second in order to pass the unstable status. One capacitor valued 100nF can be added between VDD ...


4

Looks like you have it wired wrong. A schematic would really help but it looks like you've got 5V going directly into the sensors data line (yellow wire) it's connected on your breadboard to the orange wire +5V. The power wire of your temperature sensor (red wire) is running through a 4.7K resistor which is not likely what you wanted here either.


3

I suggest you to modify the following lines of code to check which reading has issue. if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; }


3

This line: int temp1 = ((float)DHT11.temperature, DEC); casts DHT11.temperature to an float, throws away the value, then assigns DEC to temp1. That is not what you want. int temp1 = DHT11.temperature;


3

Your display is multiplexed, so you will need to monitor not only the segment lines but also the digit lines. First figure out if your display is "common anode" or "common cathode" as the logic in one case will be inverted from that of the other. For your test case, you can write the driving and reading arduinos to the display in the same way, but ...


3

There should be no difference between turning on your computer and plugging in a USB cable. The embedded devices typically plugged into a USB ports such as mice, keyboards, wireless adapters, hard drives, etc don't have their FLASH memory corrupted when the computer is turned on so it is unlikely that your Arduino would. To confirm there isn't something ...


3

There are many things, first different sensors have different accuracy or they may not have been calibrated from the factory. In addition both are analog and analog reading is susceptible to noise. My guess is there is a high frequency noise on power line coming from the computer interfering with your readings. Try putting a small (100nF) capacitor between ...


3

If you read the data sheet (on the site you point to) you see plenty of references to temperature: The BMP180 is designed to be connected directly to a microcontroller of a mobile device via the I 2 C bus. The pressure and temperature data has to be compensated by the calibration data of the E 2 PROM of the BMP180. and The BMP180 consists of a ...


3

I found, that the pin mapping printed at the board of the nodeMCU does NOT match the pin mapping in the library/software. Check out this issue/solution. It states the correct pin mapping (e.g. pin 2 is "D4" at the board) and provides also an according workaround. My DHT22s are working now... :-)


Only top voted, non community-wiki answers of a minimum length are eligible