Elektronika.lt
 2025 m. gruodžio 24 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2025 12 24, 00:15. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » DS18B20 prie atskirų pin'ų.
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 23
Pereiti prie Atgal  1, 2, 3  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 01, 19:30 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Edzma
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
vitukas1 rašo:
Edzma rašo:
vitukas1 rašo:
Dar kartą noriu padėkoti JOnis, kad "užvedė ant kelio". Aš likau su 1-Wire protokolu. Turint kintamuosius (ds18b20) atlikti veiksmus su jais "juokų darbas".
.
Gal gali kokia nuoroda.... Rolling Eyes


Kokiu klausimu nuorodą?
.....1-Wire
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 01, 20:43 Pranešti apie taisyklių pažeidimą Atsakyti su citata
A&V
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Gal kas galetu paaiskint?
Pasileidau per proteus ds18s20 temperatura rodo kaip priklauso
o ds18b20 i lcd isveda temperatura 4 laipsniais maziau.Isbandziau ir realiai,
paklaida ta pati.
Tai taip ir likau nesuprates kame reikalas Rolling Eyes

_________________
Kas yra virš drąsos? Bėgti prieš traukinį ir šaukti suvažinesiu...!
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 01, 21:03 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Evaldas_S
Veteranas
Veteranas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
A&V rašo:
Gal kas galetu paaiskint?
Pasileidau per proteus ds18s20 temperatura rodo kaip priklauso
o ds18b20 i lcd isveda temperatura 4 laipsniais maziau.Isbandziau ir realiai,
paklaida ta pati.
Tai taip ir likau nesuprates kame reikalas Rolling Eyes


Skirtingi yra šie temperatūros davikliai, skiriasi bitų skaičius, gal dar kas nors. Paskaityk datasheetą.
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 01, 21:27 Pranešti apie taisyklių pažeidimą Atsakyti su citata
vitukas1
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
A&V rašo:
Gal kas galetu paaiskint?
Pasileidau per proteus ds18s20 temperatura rodo kaip priklauso
o ds18b20 i lcd isveda temperatura 4 laipsniais maziau.Isbandziau ir realiai,
paklaida ta pati.
Tai taip ir likau nesuprates kame reikalas Rolling Eyes


DS18S20 9 bitų daviklis, DS18B20 rezoliuciją galima keisti nuo 9 iki 12 bitų. DS18B20 iš gamyklos "išeina" su 12 bitų rezoliucija. Jeigu dirbi su 12 bitų rezoliucija (DS18B20) tai gautą rezultatą dalini iš 16. Dirbant su 9 bitais dalinti reikia iš 2.
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 01, 21:34 Pranešti apie taisyklių pažeidimą Atsakyti su citata
vitukas1
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
.....1-Wire[/quote]

Jeigu teorija tai Jums reikėtų čia -> http://www.maxim-ic.com. Jeigu paruoštos funkcijos tai pas mane tik PIC'ui. Jeigu rusų kalba nekelia sunkumų tai galima pažiūrėti čia -> http://www.elin.ru/1-Wire/?topic=whatis
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 01, 23:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
A&V
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Su rusu draugauju labiau nei su anglu.
apie tuos bitu skirtumus skaiciau, tik su savo anglu ziniom
maniau kad ten kalba eina apie skaiciu po kablelio tiksluma Embarassed
Bandysiu dalint.

_________________
Kas yra virš drąsos? Bėgti prieš traukinį ir šaukti suvažinesiu...!
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 02, 20:21 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JOnis
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Patikrini pirma daviklio ROM baita ir atitinkamai naudoji matematika:

DS1820_ReadScratchPad();
*result = ReadData1W(16);
unsigned char buf[9];
buf[0] = *result;
buf[1] = (*(unsigned short*)result)>>8;
buf[2] = ReadByte1W();
buf[3] = ReadByte1W();
buf[4] = ReadByte1W();
buf[5] = ReadByte1W();
buf[6] = COUNT_REMAIN = ReadByte1W();
buf[7] = COUNT_PER_C = ReadByte1W();
buf[8] = ReadByte1W();
if (*SensorAdress == 0x10)// jei DS18S20
{
*result = *result*50 - 25 + (COUNT_PER_C-COUNT_REMAIN)*100/COUNT_PER_C;;
}
else
{
*result = (*result>>4)*100 + (*result&0xF)*100/16 - 25;
}

buf naudoju del crc patikrinimo
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 14, 08:39 Pranešti apie taisyklių pažeidimą Atsakyti su citata
vitukas1
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Iškilo dar vienas klausimas. Embarassed Susitvarkiau su daviklių priskyrimu man reikalinga tvarka, bet truputį neaišku kaip reikėtų elgtis kurio nors daviklio gedimo atveju? Pakeitus sugedusį daviklį vėl iš naujo visus iki vieno perskirstyti perskaičius jų ROM adresus? Ir dėl temperatūrų skirtumų numačiau galimybę jį įsivesti mygtukų pagalba, kad būtų galimybė parinkti bandymo keliu. Bet vėl klausimas kolektoriaus siurbliukas turi dirbti cikliškai pvz. 2sek darbas 15sek pauzė, o gal geriau įvesti antrą temperatūrų diferencialą? Pvz. siurbliuko įjungimas skirtumas 10 laipsnių o išjungti kai temperatūrų skirtumas sumažėja iki tarkim 7 laipsnių, ar geriau darbas laiko ciklais?
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 14, 09:22 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JOnis
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Operuok davikliu adresais ne fliashe, o eeprome. Pasidarai dvimati adresu masyva ir davikliu priskirimo procedura. Joje is pradziu surandi visus 1w buse pajungtus daviklius ir juadresus sukemsi i rama. Tada norima davikli (pav pasildes fenu matai kuris syla) priskiri prie norimo virtualaus numerio ir irasai i eeproma jau reikiama tvarka. Paieskos ir priskirimo proceduroi tikrini ar dabar pasirinkto davyklio numeris rame sutampa su eeprome esanciais. Jei nera - naujas. Taipogi tikrini kuriu virtualiu numeriu davikliai matomi linijoje. Ka tas duoda? Gali bet kada bet kokia tvarka bet kuri davikli prisiskirt prie norimo numerio. Jei nuemi viena ar jis sugenda, paieskos proceduroi matai kad fiziskai nera tokio daviklio bei matai kuris naujas ir ji priskiri i ta vieta
Apie procedura is vartotojo puses http://jonis.eu/images/PIDmanual.pdf
O siurblio valdymui naudotinas ir pulsinis rezimas ir temepraturu histerezise. Nemaiso turet viska
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 14, 20:40 Pranešti apie taisyklių pažeidimą Atsakyti su citata
vitukas1
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ačiū už išsamų atsakymą. Tai mano pirmi žingsniai programavime, todėl jeigu ne paslaptis norėčiau paklausti kaip tikrinti dvimatį masyvą RAM su esančiu EEPROM - po vieną baitą? Embarassed
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 14, 20:51 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JOnis
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Ciklu prasuki astuonis baitus ir palyginta. Bet lygint reiks visu rastu davikliu adresus, kad nustatyt ar toks daviklis priskirtas jau kurioje atmintije. Siaip as darau taip: migtukais kairen desinen pasirenku daviklio numeri (numeri, kuriuo ir operuojau atety). Perjungiant numeri patikrinu ar tokiam numeriui yra gyvas veikiantis daviklis. Jei randamas - parodau koks priskirtas, jei nerandamas - rodau kad atmintis tuscia (net jei adresas i eeproma irasytas, nes gali but daviklis sugedes). Jei tuscia, klavisias aukstyn zemyn pasirenku suindeksuoto paieskos metu daviklio numeri. Pakeitus daviklio numeri kaskart prabegu eepromo masyva ir jei tokio serijinio nera - pazymiu raide N kad cia naujas daviklis
Cia pilna mano paieskos ir priskirimo funkcija, kai ka dabar galima bt daug optimaliau parasyt, nes tada dar buvau zaliasnis kai rasiau:
unsigned char SetTemper(unsigned char start) //davikliu paieska
{
static unsigned char * mass;
static unsigned char sensor_num, number;
unsigned char num, num1, num2;
unsigned char SensorAdress[8];
if (start)
{
blockmeasure = 1;
ClrScr();
::SetPos(0, 0); printf_P("Davikli\x05 paie\x04ka");
::SetPos(0, 1); printf_P(" RS485 linijoje");
::SetPos(0, 2); printf_P(" palaukite... ");
TermoCur = 33;
Input_select = 0;
num = DS1820_SerchDevices();
ClrScr();
::SetPos(0, 0); printf_P("Davikli\x05 paie\x04ka");
::SetPos(0, 1); printf_P("vienlaid\x02je linijoje");
::SetPos(0, 2); printf_P(" palaukite... ");
TermoCur = 33;
Input_select = 1;
num1 = DS1820_SerchDevices();
TermoCur = 33;
Input_select = 2;
num2 = DS1820_SerchDevices();
number = num + num1 + num2;
mass = new unsigned char[9 * number];
Input_select = 0;
for (TermoCur = 0; TermoCur < num; TermoCur++)
{
DS1820_SerchDevices();
for (unsigned i= 0; i<8; i++) *(mass+(TermoCur*9)+i) = AddrBuff[i];
*(mass+(TermoCur*9)+Cool = Input_select;
}
DS1820_StartConvertAll();
Input_select = 1;
for (TermoCur = 0; TermoCur < num1; TermoCur++)
{
DS1820_SerchDevices();
for (unsigned i= 0; i<8; i++) *(mass + (TermoCur*9) + (9*num) + i) = AddrBuff[i];
*(mass + (TermoCur*9) + (9*num) + Cool = Input_select;
}
DS1820_StartConvertAll();
Input_select = 2;
for (TermoCur = 0; TermoCur < num2; TermoCur++)
{
DS1820_SerchDevices();
for (unsigned i= 0; i<8; i++) *(mass + (TermoCur*9) + (9*num) + (9*num1) + i) = AddrBuff[i];
*(mass + (TermoCur*9) + (9*num) + (9*num1) + Cool = Input_select;
}
DS1820_StartConvertAll();
sensor_read_fin = 0;
key = KEY_YES;
}
if ((number) == 0 && key != KEY_YES)
{
delete [] mass;
ClrScr();
::SetPos(0, 0); printf_P("Davikli\x05 nerasta. ");
::SetPos(0, 1); printf_P("Patikrinkite, ar ");
::SetPos(0, 2); printf_P("davikliai teisingai ");
::SetPos(0, 3); printf_P("prijungti ");
blockmeasure = 0;
return OK;
}
if (key == KEY_ARR_UP) {if (TermoCur< number-1) TermoCur++;} // rasto daviklio numeris
if (key == KEY_ARR_DN) {if (TermoCur>0) TermoCur--;}
if (key == KEY_ARR_RT) {if ((++sensor_num) >= sizeof(temper_e)) sensor_num = 0;} // atminties lastele
if (key == KEY_ARR_LF) {if ((--sensor_num) == 255) sensor_num = sizeof(temper_e)-1;}
if (key == KEY_ENTER)
{
unsigned char res = 1;
__disable_interrupt();
for (unsigned char i = 0; i<8; i++)
{
if ((ee.sensors[sensor_num][i] != *(mass+(TermoCur*9)+i)) || (ee.sensor_select[sensor_num] != *(mass+(TermoCur*9)+Cool))
{
ee.sensors[sensor_num][i] = *(mass+(TermoCur*9)+i);
res = 0;
}
}
if (res)
{
for (unsigned i = 0; i<8; i++)
ee.sensors[sensor_num][i] = 0;
} else ee.sensor_select[sensor_num] = *(mass+(TermoCur*9)+Cool;
__enable_interrupt();
}

if (TermoCur >= number) TermoCur = 0; // îãðàíè÷èòåëü

if (key != KEY_NO)
{
for (unsigned char j = 0; j < number; j++)
{
unsigned char res = 1;
__disable_interrupt();
for (unsigned char i = 0; i<8; i++)
{
if(*(mass+(j*9)+i) != ee.sensors[sensor_num][i]) res = 0;
}
if (ee.sensor_select[sensor_num] != *(mass+(j*9)+Cool) res = 0;
__enable_interrupt();
if (res)
{
if (key != KEY_ARR_RT || key != KEY_ARR_LF)
TermoCur = j;
j = number;
}
::SetPos(0, 0);
if ((number == 1) || (number == 21) || (number ==31)) printf_P(" Rastas %d daviklis", number);
else if (((number > 9) && (number < 21)) || (number == 30)) printf_P(" Rasti %d davikli\x05", number);
else printf_P(" Rasti %d davikliai", number);
::SetPos(0, 1);
if (!res) printf_P("%2d Nr. nepriskirta ", sensor_num+1); else printf_P("%2d Nr. priskirta: ", sensor_num+1);
}
}
signed short val;
if ((timeflag) || (key != KEY_NO))
{
Input_select = *(mass+(TermoCur*9)+Cool;
::SetPos(0, 3);
printf_P("p#%d ", Input_select + 1);
for (unsigned i = 0; i<8; i++)
{
SensorAdress[i] = *(mass+(TermoCur*9)+i);
printf_P("%.2X", SensorAdress[i]);
}
::SetPos(0, 2);
printf_P("Daviklis %2d ", TermoCur+1);
if (sensor_read_fin > 2)
{
if (DS1820_GetTemperatureJ(&val, SensorAdress))
{
::printf_P("T=%5.1fC", ((float)val)/100.0);
} else ::printf_P(" ----- ");
sensor_read_fin = 0;
DS1820_StartConvertAll();
}
timeflag = 0;
}
if (key == KEY_MENU)
{
delete [] mass;
blockmeasure = 0;
return OK;
}
return KO;
}
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 21, 12:20 Pranešti apie taisyklių pažeidimą Atsakyti su citata
vitukas1
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ačū už pavyzdį. Noriu išgirsti Jūsų (JOnis) nuomonę, kadangi pas mane tai tik saules kolektoriaus valdiklis, aš nedėjau laikrodžio nei išorinio (pvz. ds1307) nei naudojant kurį nors vidinį PIC'o taimerį. O jeigu prijungus dar vieną daviklį, kuris matuotų lauko temperatūrą ir priklausomai nuo jos keistų temperatūrų diferencialą. Kylant lauko temperatūrai jį mažintų ir atvirkščiai? Kokia Jūsų nuomonė?
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 02 21, 13:15 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JOnis
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Originaliuose nera diferencijavimo pagal lauko temperatura. Logiskai mastant siek tiek turet but priklausomybe, nors, jei gerai uzizoliuotas nuleidimo vamzdis, nelabai turet priklausyt diferencialas nuo aplinkos temperaturos. Per salcius vistiek kolektoriaus efektas nulinis, o kai silta - ne tiek daug temperatura skiriasi. AUsimas vamzdeliuose labjau priklauso nuo vamzdzio ilgio ir debito. Asmeniskai as nenaudoju saules kolekttoriaus, bet tie kurie naudoja su mano kontroleriu - nepageidavo tokio dalyko, matomai neaktualu
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 03 20, 19:18 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Edzma
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Visdelto renkuosi varianta - davikliai ant atskiru pin"u. Kodel ? Taip tikiuosi isvengti man neiveikiamo (nei dabar, nei ateityje) priskyrimo...Manau daug paprasciau tiesiog uzklausti davikli ir pasiimti T is jo, nei juos ieskoti / nuskaityt kiekvieno koda / priskirti / issaukti....Mikrovaldiklio pinu gaila ? Sociai ju.
Manau 1wire principas geras, kai devaisu skaicius limituoja MC pinu skaiciu..
O dar prisiskaiciau apie pamiehus tarp davikliu, kai ant vienos synos ju galybes..
 DS18B20 prie atskirų pin'ų.
PranešimasParašytas: 2010 03 20, 20:31 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JOnis
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
O is kur tiems trukdziams atsirast? Jei daviklio neklausi, jis sinoj sedi pasyviai ir isvis nieko nesiuncia. Trukdziai atsiras jei klausinesi darydamas shipROM, kai nenurodai adreso, tada bardakas bus jei keli atsakys iskart
O davikliai ant atskiru pinu turi dar nepatoguma 0 kiekvienam davikliui atskiras kabelis, proce vistiek teks junginet prievada.
Pas mane kabeliu galybe name, jokiu bedu su davikliais, iki 32 ant vieno kontakto galima jungt
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie Atgal  1, 2, 3  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

Programuotojas Tautvydas – interneto svetainių-sistemų kūrimas

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Must have farming mods
Farming simulator modhub, Best farming simulator mods
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
Mokslo festivalis „Erdvėlaivis žemė“
www.mokslofestivalis.eu
Reklama


Reklama