DS18B20 readings faster than usual

I received a new batch of waterproof DS18B20 sensors and noticed my code was running faster than usual so i ran a test code to print the read speed of the DS18B20 sensor @ 12bit and its reading every 40ms instead of 750ms!!!

Here is my test code:

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS A3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
long previous;

void setup() {
  sensors.begin();
  sensors.setResolution(12);
  sensors.setWaitForConversion(true);
  Serial.begin(57600);
}

void loop() {
    sensors.requestTemperatures(); // Send the command to get temperatures
    Serial.print(sensors.getTempCByIndex(0));
    Serial.print("C ");
    Serial.print(millis()-previous);
    Serial.println("ms");
    previous = millis();
}

And here is the Serial Output

18.44C 40ms
18.62C 40ms
18.62C 40ms
18.50C 40ms
18.62C 40ms
18.62C 40ms
18.56C 40ms
18.56C 40ms
18.44C 40ms
18.50C 39ms

I retested the code with waitforconversion set to false just to check and it sped up a little to 30ms

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS A3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
long previous;

void setup() {
  sensors.begin();
  sensors.setResolution(12);
  sensors.setWaitForConversion(false);
  Serial.begin(57600);
}

void loop() {
    sensors.requestTemperatures(); // Send the command to get temperatures
    Serial.print(sensors.getTempCByIndex(0));
    Serial.print("C ");
    Serial.print(millis()-previous);
    Serial.println("ms");
    previous = millis();
}

And here is the serial output

18.50C 29ms
18.56C 29ms
18.50C 29ms
18.56C 30ms
18.56C 28ms
18.50C 29ms
18.50C 30ms
18.56C 28ms
18.56C 30ms
18.56C 30ms
18.56C 28ms
18.56C 30ms
18.50C 29ms

Anyway it’s not really an issue but i can’t wrap my head around why these are suddenly faster. The only way the dallastemp library can go faster than 750ms @ 12bit is if the sensor is returning isConversionComplete() == true and setting setCheckForConversion(false) forces it to wait 750ms
So the sensor is setting the bit but is this an error or are these sensors really running that fast?

Can anyone explain?

Can anyone explain?

Do you power them directly or parasitic? The 750ms are only necessary if the sensor is powered by the data line.

Conversion time is dependent on resolution only, not power mode. You can only poll for conversion
complete in 3 wire mode, not parasite mode (I'd strongly recommend not using parasite mode if possible)

These will be counterfeits I suspect.

pylon:
Do you power them directly or parasitic? The 750ms are only necessary if the sensor is powered by the data line.

I'm always power directly, it only affects the new sensors i bought the older ones run at ~700ms under identical configuration

MarkT:
These will be counterfeits I suspect.

Yep eBay el cheapos

Definitely not genuine sensors. Probably not even laser trimmed (genuine DS18B20's I've measured have
a standard deviation under 0.1 degrees at normal temperatures - because of the laser-trimming, which is
partly why they are expensive.)

The recent posting in this thread will be of interest: Fake DS18B20 - General Electronics - Arduino Forum