Sari la conținut
ELFORUM - Forumul electronistilor

termometru cu pic


UnD3aD

Postări Recomandate

scoate controlerul din soclu si verifica partea de afisare (afisaj, tranzistori, conexiuni) punand la plus rezistenta ce duce la baza tranzistorului si apoi pe rand segmentele, dupa care baza tranzistorului urmator. Cine stie, poate acei tranzistori nu sunt asa de buni cum am crezut... Dupa ce sti ca partea de afisare functioneaza cum trebuie mai vedem.

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

Top autori în acest subiect

  • soulraven

    17

  • mecaboy

    14

  • fratello

    12

  • mely17

    11

Top autori în acest subiect

Am verificat Segmentele,am pus o rezistenta la un transformator ...segmentele sunt bune.Am incercat si inainte de tranzistoare dar nu se aprindea nimic.Ce alt tranzistor sa folosesc?As putea folosi BC107?

Link spre comentariu

Am si eu o problema cu mai multi senzori pe acelasi fir.

In simulator imi merge ok. Dar cand vine vorba de montaj, nu mai este ok.

Prezenta senzorilor este data de functia

//CCS C Compiler, ves 4.084//Returns 0 for one wire device presence, 1 for none int8 ow_reset(void) {    int8 presence;    output_low(DQ);    delay_us(488);          // Min. 480uS    output_float(DQ);    delay_us(72);           // Takes 15 to 60uS for devices to respond    presence = input(DQ);    delay_us(424);          // Wait for end of timeslot    return(presence);  }
iar in alta functie,

if(!owreset())    { ... }else{     //device not found }
Intotdeauna intra in else, deci presence returnat ar fi 1.

Daca fac un debugging, presence arata ca in imaginea de mai jos.

Link spre comentariu

S-ar putea sa nu fie concludent, dar mi s-a intamplat ca functia de delay sa fie implementata si gandita pentru un quartz de 8MHz si eu sa am unul de 4 si ducea de rapa delay-ul... Verifica si asta...

Link spre comentariu

S-ar putea sa nu fie concludent, dar mi s-a intamplat ca functia de delay sa fie implementata si gandita pentru un quartz de 8MHz si eu sa am unul de 4 si ducea de rapa delay-ul... Verifica si asta...

de unde am luat-o eu, era calculata pentru 20Mhz, eu folosesc oscilatorul intern de 20Mhz.
Link spre comentariu

scrie destul de clar "Takes 15 to 60uS for devices to respond "si tu astepti "delay_us(72); "ptr raspuns corect trebuie sa citesti senzorul intre 15 si 60uS

Am incercat cu 20uS. Funtia aia returneaza ca ar fi vreun senzor pe bus. Dar mai departe se buseste alta functie (Next())
// Searches for the next device on the one wire bus. If there are no more // devices on the bus then false is returned. int8 Next(void) {    int8 m = 1;             // ROM Bit index    int8 n = 0;             // ROM Byte index    int8 k = 1;             // Bit mask    int8 x = 0;    int8 discrepMarker = 0;    int8 g;                 // Output bit    int8 nxt;               // Return value    short flag;    nxt = FALSE;            // Reset next flag to false    dowcrc = 0;             // Reset the dowcrc    flag = ow_reset();    if (flag||doneFlag)     // If no parts return false    {       lastDiscrep = 0;     // Reset the search       return FALSE;    }    write_byte(0xF0);       // Send SearchROM command    do    {       x = 0;       if (read_bit() == 1)       x = 2;       delay_us(120);       if (read_bit() == 1)       x |= 1;   // And it's complement       if (x == 3)                   // There are no devices on the one wire bus       break;       else       {          if (x > 0)                 // All devices coupled have 0 or 1             g = x >> 1;             // Bit write value for search          // If this discrepancy is before the last discrepancy on a previous          // Next then pick the same as last time.          else          {             if (m < lastDiscrep)                g = ((Rom_Bit[n] & k) > 0);             // If equal to last pick 1             else                g = (m == lastDiscrep);  // If not then pick 0                // If 0 was picked then record position with mask k                if (g == 0) discrepMarker = m;          }          // Isolate bit in Rom_Bit[n] with mask k          if (g == 1)          Rom_Bit[n] |= k;          else          Rom_Bit[n] &= ~k;          write_bit(g);  // ROM search write          m++;           // Increment bit counter m          k = k << 1;    // and shift the bit mask k          // If the mask is 0 then go to new ROM          if (k == 0)          {  // Byte n and reset mask             ow_crc(Rom_Bit[n]);      // Accumulate the crc             n++;             k++;          }       }    } while (n < 8);  // Loop through until through all ROM bytes 0-7    if (m < (65||dowcrc))   // If search was unsuccessful then       lastDiscrep = 0;     // reset the last Discrepancy to zero    else  // Search was successful, so set lastDiscrep, lastOne, nxt    {       lastDiscrep = discrepMarker;       doneFlag = (lastDiscrep == 0);       nxt = TRUE; // Indicates search not yet complete, more parts remain    }    return nxt; } 
x devine 3, si face return din ea. :sparge:
Link spre comentariu

Salut.Am dat de capat montajului...se pare ca problema provenea dintr-un contact imperfect la senzor.Acuma fiseaza,dar...se pare ca afiseaza mai multe chestii adica:afiseaza ptr cateva secunde 185 care defapt cred ca sunt 18.5 asta fiind temperatora apoi afiseaza ptr ceteva secunde de exemplu 25 iar mai apoi 00.Am sa mai testez putin jucaria sa vad ce e totusi cu ea

Link spre comentariu
  • 8 luni mai târziu...
Vizitator danielcirstea

Schema + hex pentru termometru cu PIC16F628 + DS18B20+afisor LED 7 segmente. Mutumiri D-lui aionescu !P.S. Se redenumeste fisierul .txt in .hex !

Ce plaja de temperatura are acest termometru?Banuiesc ca,la trei digiti,afiseaza de la -9.9 la 99 grade.Rog un raspuns!
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