XAN77 Postat Februarie 16, 2009 Partajează Postat Februarie 16, 2009 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
mecaboy Postat Februarie 16, 2009 Partajează Postat Februarie 16, 2009 A fost propusa in pagina 2.Singura diferenta este ca am folosit 16f628A si MPSA42-MBR====EDIT====Am sa verifica partea cu segmente,va voi anunta cu rezultatulMultumesc Link spre comentariu
mecaboy Postat Februarie 16, 2009 Partajează Postat Februarie 16, 2009 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
XAN77 Postat Februarie 17, 2009 Partajează Postat Februarie 17, 2009 da, sc himba un singur tranzistor cu un bc107 si verifica ca acel tranzistor se deschide si se aprind segmentii. Link spre comentariu
pyu Postat Februarie 17, 2009 Partajează Postat Februarie 17, 2009 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
sofian Postat Februarie 17, 2009 Partajează Postat Februarie 17, 2009 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 Link spre comentariu
crispus Postat Februarie 17, 2009 Partajează Postat Februarie 17, 2009 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
pyu Postat Februarie 17, 2009 Partajează Postat Februarie 17, 2009 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
pyu Postat Februarie 17, 2009 Partajează Postat Februarie 17, 2009 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 60uSAm 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. Link spre comentariu
mecaboy Postat Februarie 19, 2009 Partajează Postat Februarie 19, 2009 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
mecaboy Postat Februarie 20, 2009 Partajează Postat Februarie 20, 2009 Salutare.Functioneaza perfect acum.Am schimbat vechea sursa cu una dintr-un DVD.Acum afiseaza corect temperatura. Multumesc celor ce m-au ajutat Link spre comentariu
Vizitator danielcirstea Postat Noiembrie 4, 2009 Partajează Postat Noiembrie 4, 2009 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
mecaboy Postat Noiembrie 4, 2009 Partajează Postat Noiembrie 4, 2009 Nu stiu daca e din soft sau partea electronica dar mie nu-mi afiseaza "-" la temperaturile negative,inrest merge perfect Link spre comentariu
Vizitator danielcirstea Postat Noiembrie 4, 2009 Partajează Postat Noiembrie 4, 2009 Cum iti dai seama cind afiseaza temperaturi negative,de exemplu -1 grade...daca nu urmaresti evolutia temperaturii poti confunda cu +1 grade. Link spre comentariu
mecaboy Postat Noiembrie 4, 2009 Partajează Postat Noiembrie 4, 2009 Da,asa este. 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