Vizitator Craciun Mihail_257568 Postat Noiembrie 25, 2016 Partajează Postat Noiembrie 25, 2016 Salut, Am urmatorul Senzor , 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
Elison Postat Noiembrie 26, 2016 Partajează Postat Noiembrie 26, 2016 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
deejay2k1 Postat Noiembrie 26, 2016 Partajează Postat Noiembrie 26, 2016 (editat) vezi in arduino exemplul pentru OneWire conexiunea asta #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 Noiembrie 26, 2016 de deejay2k1 Link spre comentariu
digix Postat Mai 10, 2017 Partajează Postat Mai 10, 2017 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
modoran Postat Mai 10, 2017 Partajează Postat Mai 10, 2017 Nu ti-as recomanda sa folosesti acest senzor la 120C, mai bine folosesti un PT100: https://www.amazon.com/uxcell%C2%AE-Thermocouple-Temperature-Control-Sensor/dp/B0087YBUJ6 Chestia e ca e mult mai scump, plus trebuie un amplificator dedicat, si acela destul de scump, dar nu o sa ai probleme. Link spre comentariu
deejay2k1 Postat Mai 10, 2017 Partajează Postat Mai 10, 2017 Pentru temperaturi mari cauta o termocupla cu max6675. Este SPI Link spre comentariu
digix Postat Mai 10, 2017 Partajează Postat Mai 10, 2017 Spre PT100 ma uitam si eu dar n-am gasit in tara breakout board pentru max31865, nu pot astepta prea mult sa-mi ajunga din afara. Link spre comentariu
rlodina Postat Mai 10, 2017 Partajează Postat Mai 10, 2017 @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
digix Postat Mai 10, 2017 Partajează Postat Mai 10, 2017 (editat) 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 Mai 10, 2017 de digix Link spre comentariu
rlodina Postat Mai 11, 2017 Partajează Postat Mai 11, 2017 @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
digix Postat Mai 11, 2017 Partajează Postat Mai 11, 2017 Multumesc pentru raspunsuri ! Gasisem o solutie cu MAX31850K care are interfata 1 wire si-mi permite sa ma lungesc cu firele dar tot am un dezavataj. Montajul trebuie sa stea in zona "calda" si asta nu-mi place. https://www.adafruit.com/product/1727 In final am optat tot pentru PT100+MAX31865 Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum