Sari la conținut
ELFORUM - Forumul electronistilor

Senzor temperatura 1 wire


Vizitator Craciun Mihail_257568

Postări Recomandate

Vizitator Craciun Mihail_257568

Salut,

 

Am urmatorul Senzorpost-262496-0-19453800-1480117619_thumb.png , cum e cu legatura aia GND-VDD? senzorul meu are 2 iesiri si nu are cablurile colorate, banuiesc ca unul e pentru data.

HELP!!

 

PS. Primul post

Link spre comentariu
  • Răspunsuri 10
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

Legatura GND-VDD este exact cum se vede in poza respectiva.DS1820 se poate alimenta in doua moduri, unul normal cu GND legat la masa si VDD la plusul sursei, iar al doilea mod este cel expus aici, cu GND si VDD legate la masa(parasite power).Acest senzor are nevoie de un curent foarte mic si acesta poate sa si-l ia de pe pinul I/O atunci cand acesta este pus la plusul sursei de alimentare.

Folosirea acestui mod de alimentare (parasite power) presupune ca atunci cand dai o comanda de conversie sau citire, in maxim 10 ms sa pui linia I/O la plusul sursei cu un MOSFET o perioada de timp suficient de mare care sa asigure incarcarea unui condensator intern.

Acest condensator mentine alimentarea cipului pe durata citirii temperaturii sau pe durata transmiterii comenzii de conversie .

Durata de mentinere a pinului Data in/out la plus, difera in functie de rezolutia de masurare(ex.:rezolutie 12 biti-durata conversie 750ms).

Lucrurile sunt mult mai simple cu alimentarea normala, un fir in plus te scuteste de multe complicatii.

Link spre comentariu

vezi in arduino exemplul pentru OneWire

 

conexiunea asta Posted Image

#include <OneWire.h>// OneWire DS18S20, DS18B20, DS1822 Temperature Example//// http://www.pjrc.com/teensy/td_libs_OneWire.html//// The DallasTemperature library can do all this work for you!// http://milesburton.com/Dallas_Temperature_Control_LibraryOneWire  ds(10);  // on pin 10 (a 4.7K resistor is necessary)void setup(void) {  Serial.begin(9600);}void loop(void) {  byte i;  byte present = 0;  byte type_s;  byte data[12];  byte addr[8];  float celsius, fahrenheit;    if ( !ds.search(addr)) {    Serial.println("No more addresses.");    Serial.println();    ds.reset_search();    delay(250);    return;  }    Serial.print("ROM =");  for( i = 0; i < 8; i++) {    Serial.write(' ');    Serial.print(addr[i], HEX);  }  if (OneWire::crc8(addr, 7) != addr[7]) {      Serial.println("CRC is not valid!");      return;  }  Serial.println();   // the first ROM byte indicates which chip  switch (addr[0]) {    case 0x10:      Serial.println("  Chip = DS18S20");  // or old DS1820      type_s = 1;      break;    case 0x28:      Serial.println("  Chip = DS18B20");      type_s = 0;      break;    case 0x22:      Serial.println("  Chip = DS1822");      type_s = 0;      break;    default:      Serial.println("Device is not a DS18x20 family device.");      return;  }   ds.reset();  ds.select(addr);  ds.write(0x44, 1);        // start conversion, with parasite power on at the end    delay(1000);     // maybe 750ms is enough, maybe not  // we might do a ds.depower() here, but the reset will take care of it.    present = ds.reset();  ds.select(addr);      ds.write(0xBE);         // Read Scratchpad  Serial.print("  Data = ");  Serial.print(present, HEX);  Serial.print(" ");  for ( i = 0; i < 9; i++) {           // we need 9 bytes    data[i] = ds.read();    Serial.print(data[i], HEX);    Serial.print(" ");  }  Serial.print(" CRC=");  Serial.print(OneWire::crc8(data, 8), HEX);  Serial.println();  // Convert the data to actual temperature  // because the result is a 16 bit signed integer, it should  // be stored to an "int16_t" type, which is always 16 bits  // even when compiled on a 32 bit processor.  int16_t raw = (data[1] << 8) | data[0];  if (type_s) {    raw = raw << 3; // 9 bit resolution default    if (data[7] == 0x10) {      // "count remain" gives full 12 bit resolution      raw = (raw & 0xFFF0) + 12 - data[6];    }  } else {    byte cfg = (data[4] & 0x60);    // at lower res, the low bits are undefined, so let's zero them    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms    //// default is 12 bit resolution, 750 ms conversion time  }  celsius = (float)raw / 16.0;  fahrenheit = celsius * 1.8 + 32.0;  Serial.print("  Temperature = ");  Serial.print(celsius);  Serial.print(" Celsius, ");  Serial.print(fahrenheit);  Serial.println(" Fahrenheit");}
Editat de deejay2k1
Link spre comentariu
  • 5 luni mai târziu...

Va salut !

Am o aplicatie la care acest senzor va trebui sa lucreze la 120°C adica foarte aproape de limita sa maxima de 125°C.

De controlul temperaturii se ocupa un dispozitiv industrial, rolul sau este sa transmita la distanta (cu un montaj adecvat)

masuratorile catre un server de monitorizare.

Daca l-ati folosit in asemenea conditii, m-ar interesa cat de stabil este in functionarea spre maxim ?

Link spre comentariu

@digix: dacă situația o permite poți folosi o termocupla tip K cu MAX6675. Este si relativ ieftin ~25 lei:

Tensiune de alimentare: 3V - 5V;
Curent de operare: 50mA;
Temperatură măsurată: 2℃ - 1024, cu o rezoluție de 0.25;
Rezoluție ADC de 12 biți;
Input diferențial cu impedanță mare;
Termocuplă tip K;
Comunicație SPI:
Detecție conexiune întreruptă termocuplă.
Daca este ok si nu gasesti de unde sa o achizitionezi da-mi un semn.
Link spre comentariu

MAX6675 pare o solutie rezonabila si am vazut ca se gaseste breakout la optimus digital, ar fi ok ?

 

Trebuie sa montez 3 module intr-un panou de comanda existent, problema este ca cel mai departat punct

de masura se afla la cam 10-15m, deci trebuie prelungit cablul termocuplei.

 

Recipientii lucreaza sub presiune si am la dispozitie tecile, montate, de la niste PT100 dezafectati cu diametrul ~ 6mm (ds18b20 in cilindru waterproof intra perfect).

 

As avea nevoie de ajutor cu o recomandare de termocupla K de calitate cu cabluri mai lungi, bugetul alocat este generos.

 

 

P.S. Am scotocit prin mostrele gratuite primite de la Maxim si am constatat ca am 4 x MAX31855, am vazut

ca este succesorul lui MAX6675 si are ADC pe 14 biti.

Editat de digix
Link spre comentariu

@digix:

MAX6675 pare o solutie rezonabila si am vazut ca se gaseste breakout la optimus digital, ar fi ok ?

Eu de la ei am luat (acum ~6 luni) - am făcut un termometru simplu pentru un amic care are o brutărie (cadou de ziua lui).
Trebuie sa montez 3 module intr-un panou de comanda existent, problema este ca cel mai departat punct de masura se afla la cam 10-15m, deci trebuie prelungit cablul termocuplei.
Nu cred ca prelungirea cablurilor de la termocuplă este cea mai buna soluție. Probabil că ar fi mai ok să faci citirea termocuplelor în zonă - poți imagina diverse scenarii.
Ex: dacă senzorii sunt la distanțe mai mari decat lungimea firelor termocuplei:
Termocupla-breakout-MC(Arduino?) <---- i2c (calblu UTP + te rezolvi si cu alimentarea) -----> adaptor-panou
Unde adaptor-panou poate fi un MC care citește toți senzorii, la un interval prestabilit, și se interfațează cumva cu sistemul (panoul de comandă existent) .
Recipientii lucreaza sub presiune si am la dispozitie tecile, montate, de la niste PT100 dezafectati cu diametrul ~ 6mm (ds18b20 in cilindru waterproof intra perfect).
Nu mai stiu dimensiunile senzorului - ce metric era acel filet - poate-l poți adapta cumva.
As avea nevoie de ajutor cu o recomandare de termocupla K de calitate cu cabluri mai lungi, bugetul alocat este generos.
Din păcate eu nu-ți pot face o recomandare în acest sens. Privind acum mai atent ce am scris cred că solutia propusă pare a complica inuti lucrurile.
Scuze Mihai - pt. off-topic
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări