Arduino და ციფრული DS18B20 ტემპერატურის სენსორი. ციფრული ტემპერატურის სენსორები Dallas Semicoductor ტემპერატურის სენსორი 18 20

Arduino- ში ტემპერატურის სენსორი ერთ-ერთი ყველაზე გავრცელებული სენსორებია. არდუინოს შესახებ თერმომეტრების პროექტების დეველოპერი ხელმისაწვდომია სხვადასხვა პარამეტრებიგანსხვავდება ქმედების, სიზუსტის, კონსტრუქციული აღსრულების პრინციპით. DS18B20 ციფრული სენსორი ერთ-ერთი ყველაზე პოპულარული ტემპერატურის სენსორულია, ხშირად გამოიყენება წყალგაუმტარი შემთხვევაში წყლის ტემპერატურის ან სხვა სითხეების გაზომვისთვის. ამ სტატიაში თქვენ იპოვით DS18B20 სენსორის აღწერას რუსულ ენაზე, ჩვენ განვიხილავთ Arduino- სთან დაკავშირებულ თვისებებს, სენსორის ფუნქციონირების პრინციპს, ბიბლიოთეკებისა და ესკიზების აღწერას.

DS18B20 არის ციფრული ტემპერატურის სენსორი სხვადასხვა სასარგებლო თვისებებით. არსებითად, DS18B20 არის მთელი მიკროკონტროლერი, რომელსაც შეუძლია შეინახოს გაზომვის ღირებულება, სიგნალი ტემპერატურის გამომავალი კომპლექტი საზღვრებისათვის (საზღვრები თავად შეიძლება დამონტაჟდეს და შეცვალონ), შეცვალოს გაზომვის სიზუსტე, კონტროლერის ურთიერთქმედების მეთოდი და ბევრი მეტი. ეს ყველაფერი ძალიან მცირე შენობაშია, რომელიც, გარდა ამისა, ხელმისაწვდომია წყალგაუმტარი შესრულებით.

DS18B20 ტემპერატურის სენსორი მრავალფეროვანი საბინაო ტიპებია. თქვენ შეგიძლიათ აირჩიოთ ერთი სამი - 8-pin ასე (150 მილი), 8-pin μsop, და 3-Pin to-92. ეს უკანასკნელი ყველაზე გავრცელებულია და წარმოებული სპეციალური ტენიანობის დაცვის შემთხვევაში, ისე, რომ ეს შეიძლება იყოს დაცული წყლის ქვეშ. თითოეულ სენსორს აქვს 3 კონტაქტი. To-92 შემთხვევაში, თქვენ უნდა გამოიყურებოდეს ფერის ხაზები: შავი - დედამიწა, წითელი კვება და თეთრი / ყვითელი / ლურჯი - სიგნალი. ინტერნეტ მაღაზიებში შეგიძლიათ შეიძინოთ მზა DS18B20 მოდული.

სად ვიყიდოთ სენსორი

ბუნებრივია, DS18B20 იაფია, რომ იაფად შეიძინოს AliExpress- ზე, მიუხედავად იმისა, რომ იგი არდუინოს ნებისმიერ სპეციალიზირებულ რუსულ ონლაინ მაღაზიებში იყიდება. აქ არის რამოდენიმე ბმული მაგალითი:

სენსორის მეხსიერება შედგება ორი ტიპისგან: ოპერატიული და არასტაბილური - SRAM და EEPROM. ეს უკანასკნელი კონფიგურაციის რეგისტრაცია და რეგისტრაცია ჩაწერილია, TLS, რომელიც შეიძლება გამოყენებულ იქნას როგორც რეესტრი. Ძირითადი მიზანითუ არ გამოიყენება დასაშვები ტემპერატურის ღირებულებების სპექტრი.

DS18B20 მთავარი ამოცანაა განსაზღვროს ციფრული თვალსაზრისით მიღებული შედეგების ტემპერატურა და ტრანსფორმაცია. ჩვენ შეგვიძლია დამოუკიდებლად შევქმნათ აუცილებელი ნებართვა სიზუსტის ოდენობით - 9, 10, 11 და 12-ის ოდენობით. ამ შემთხვევაში, რეზოლუცია იქნება 0.5 ° C, 0.25С, 0.125С და 0.0625с.

შედეგად ტემპერატურის გაზომვები შენახულია SRAM სენსორში. 1 და 2 ბაიტი შეინარჩუნებს ტემპერატურის ღირებულებას, 3 და 4 დაზოგეთ გაზომვის ლიმიტები, 5 და 6 დაცულია, 7 და 8 გამოიყენება მაღალი სიზუსტის ტემპერატურის განსაზღვრისთვის, ბოლო 9 ბიტიანი კოდის რეზისტენტული CRC კოდი.

კავშირი DS18B20 to Arduino

DS18B20 არის ციფრული სენსორი. ციფრული სენსორები გადასცემს ხარჯების ღირებულების გარკვეული ორობითი კოდექსის სახით, რომელიც შედის ციფრულ ან ანალოგური ქინძისთავები Arduino და შემდეგ დეკოდირებულია. კოდები შეიძლება იყოს ყველაზე განსხვავებული, DS18B20 მუშაობს 1 მავთულის მონაცემთა პროტოკოლის მეშვეობით. ჩვენ ამ ციფრულ პროტოკოლის დეტალებში არ მივდივართ, ჩვენ მიუთითეთ მხოლოდ საჭირო მინიმალური ურთიერთქმედების პრინციპების გაგება.

1 მავთობის ინფორმაციის გაცვლა შემდეგ ოპერაციებს წარმოადგენს:

  • ინიციალიზაცია - სიგნალების თანმიმდევრობის განსაზღვრა, საიდანაც გაზომვა და სხვა ოპერაციები იწყება. სამაგისტრო ვრცელდება გადატვირთვის პულსი, რის შემდეგაც სენსორი უნდა წარმოადგინოს იმ თანდასწრებით, რომელიც ახორციელებს ოპერაციის შესრულების მზადყოფნას.
  • მონაცემთა ჩაწერა - მონაცემთა ბაიტი სენსორს გადაეცემა.
  • მონაცემთა წაკითხვის - Byte იღებს სენსორი.

სენსორთან მუშაობა, ჩვენ გვჭირდება პროგრამული უზრუნველყოფა:

  • Arduino IDE;
  • Onewire ბიბლიოთეკა თუ რამდენიმე სენსორების გამოიყენება ავტობუსი, შეგიძლიათ გამოიყენოთ Dallastemperative ბიბლიოთეკა. ეს იმუშავებს onewire თავზე.

საწყისი აღჭურვილობა თქვენ დაგჭირდებათ:

  • ერთი ან მეტი DS18B20 სენსორები;
  • Arduino Microcontroller;
  • კონექტორები;
  • რეზისტორი 4.7 კ³ (ერთი სენსორის კავშირის შემთხვევაში, რეზისტორი 4-დან 10 კმ-მდე);
  • მიკროსქემის საბჭო;
  • USB კაბელი კომპიუტერთან დაკავშირების მიზნით.

Arduino ფორუმში, სენსორი აკავშირებს უბრალოდ: GND თერმული სენსორი თან ერთვის Arduino GND, VDD უკავშირდება 5V, მონაცემების ნებისმიერი ციფრული PIN.

DS18B20 ციფრული სენსორის დამაკავშირებელი მარტივი დიაგრამა წარმოდგენილია ფიგურაში.

ალგორითმი ტემპერატურის შესახებ ინფორმაციის მოპოვებისათვის შედგება შემდეგი ნაბიჯებისგან:

  • სენსორის მისამართის განმარტება, შეამოწმეთ კავშირი.
  • სენსორი ემსახურება ტემპერატურის წაკითხვის მოთხოვნას და რეესტრში გაზომვის ღირებულებას. პროცედურა უფრო დიდია, ვიდრე დანარჩენი, დაახლოებით 750 ms.
  • ბრძანება ემსახურება ინფორმაციის წაკითხვის რეესტრიდან და გაგზავნის ღირებულებას "პორტის მონიტორის",
  • საჭიროების შემთხვევაში, იგი გარდაიქმნება გრადუსით Celsius / Fahrenheit.

მაგალითი Simple Sketch for DS18B20

ციფრული სენსორით მუშაობის მარტივი ესკიზი ასეთია. (Sketch ჩვენ ვიყენებთ onewire ბიბლიოთეკა, რომელიც იქნება საუბარი უფრო ცოტა მოგვიანებით).

#Include. / * * ურთიერთქმედების ურთიერთქმედების DS18B20 ციფრული სენსორი * დამაკავშირებელი DS18B20 to Arduino მეშვეობით PIN 8 * / onewire DS (8); // შექმენით 1 მავთულის ავტობუსით, რომელთანაც თქვენ მუშაობთ ძალადაკარგულად Setup (Serial.Begin (9600);) ძალადაკარგულად loop () (// განსაზღვრა ტემპერატურა DS18B20 Byte მონაცემთა სენსორი ; // ადგილი DS.Reset () ტემპერატურის ღირებულება; // ჩვენ დავიწყებთ ურთიერთქმედებას ყველა წინა ბრძანების გადატვირთვისას და DS.Write პარამეტრების (0xcc); // ჩვენ ვაძლევთ DS18B20 ბრძანებას, რათა გამოტოვოთ მისამართი მისამართი. შემოსული ჩვენი საქმე, მხოლოდ ერთი firmware ds.Write (0x44); // მისცეს DS18B20 სენსორი ტემპერატურის გაზომვისთვის. თავად ტემპერატურის ღირებულება ჯერ კიდევ არ არის - სენსორი დაყოვნების შიდა მეხსიერებაში (1000); // მიკროკროგუზი ზომავს ტემპერატურას და ველოდებით. DS.Reset (); / / ახლა თქვენ მზად ხართ გაზომვის ღირებულების ღირებულება (0xcc); DS.Write (0xbe); // გთხოვთ გადარიცხოთ ტემპერატურის ღირებულების რეგისტრაციის ღირებულება // მიიღეთ და წაიკითხეთ მონაცემები \u003d ds.read () რეაგირება () // წაიკითხეთ ახალგაზრდა ბიტიანი მონაცემების ტემპერატურის ღირებულება \u003d ds.read (); / ახლა მთავარი // ჩამოყალიბდეს საბოლოო ღირებულება I: // - პირველი "წებო" ღირებულება, // - შემდეგ გაამრავლოთ ის კოეფიციენტზე, რომელიც შეესაბამება რეზოლუციას (12 ბიტისთვის - ეს არის 0.0625) float ტემპერატურა \u003d ((მონაცემები<< 8) | data) * 0.0625; // Выводим полученное значение температуры в монитор порта Serial.println(temperature); }

Sketch მუშაობა DS18B20 სენსორი დაუყოვნებლივ

თქვენ შეგიძლიათ გაართულონ პატარა პროგრამა DS18B20- ისთვის, რათა მოშორდეს ესკიზის შესრულების დამუხრუჭების მოშორება.

#Include. Onewire ds (8); // ობიექტის Onewire Int ტემპერატურა \u003d 0; // გლობალური შენახვის ცვლადი ტემპერატურის ღირებულება DS18B20 ხანგრძლივი LastUpdateTeime \u003d 0 სენსორი; // ცვლადი შესანახად ბოლო წაკითხვის დრო Const Int Temp_Update_time \u003d 1000 სენსორი; // განსაზღვრავს ძალადაკარგული კონფიგურაციის სიხშირე () შემოწმება (Serial.Begin (9600);) ძალადაკარგულად Loop () (DetectTemperature (); // განსაზღვრა ტემპერატურა DS18B20 Serial.Println სენსორი (ტემპერატურა); / აჩვენებს შედეგს ტემპერატურა // ტ. ტემპერატურული ცვლადი აქვს int ტიპის, ფრაქციული ნაწილი უბრალოდ გაუქმდება) int detecttemperature (byte მონაცემები; ds.reset (); ds.write (0xcc); DS.Write (0x44) ; თუ (Millis () - temp_updatetime \u003d Millis (); ds.reset (); ds.write (0xcc); ds.write (0xbe); მონაცემები \u003d ds.read (); მონაცემები \u003d ds.read () ; // ფორმირების ღირებულება ტემპერატურა \u003d (მონაცემები<< 8) + data; temperature = temperature >> 4; } }

Dallastemperature და DS18B20 ბიბლიოთეკა

თქვენს სკეტჩებში, ჩვენ შეგვიძლია გამოვიყენოთ Dallastemperature Library, რომელიც ამარტივებს რამდენიმე ასპექტს მუშაობის DS18B20 სენსორი 1 მავთულის. Sketch მაგალითი:

#Include. / / Arduino Pina- ის ნომერი Connected #define Pin_DS18B20 8 // შექმნა onewire onewire ობიექტი (PIN_DS18B20); / / შექმნა Dallastemperative ობიექტი მუშაობა სენსორების, რომელმაც გადასცა მას ბმული ობიექტი მუშაობა 1 მავთულის. Dallastemperature Dallassensors (& onewire); // სპეციალური ობიექტი მისამართი მოწყობილობის DeviceAddress Sensoraddress; BOID LOOP (ბათილად) (// / ტემპერატურის სენსორული სერიული გაზომვის მოთხოვნა ("შეაფასეთ ტემპერატურა ..."); dallassensors.requestemperatures () // ჩვენ ვთხოვთ DS18B20 მონაცემთა შეგროვება მონაცემთა Serial.Println ("შესრულებული" ) // მოითხოვოს შენახული printtemperature ტემპერატურის ღირებულების (SensorAddress); / / დაგვიანებით, რომ თქვენ შეგიძლიათ დაიშალოს რაღაც დაგვიანებით ეკრანზე (1000);) // დამხმარე ბეჭდვის ფუნქციის ტემპერატურის ღირებულებები DeviceAddress DeviceAddress- ისთვის (Float Tempc \u003d Dallassensors.gettempc (deviceaddress); serial.print ("Temp C:"); serial.println (TEMPC);) // დამხმარე ფუნქცია DS18B20 BADDADDDDDDRESS Sensor მისამართი (for (for (uint8_t i \u003d 0; i< 8; i++) { if (deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } }

Onewire ბიბლიოთეკა მუშაობის DS18B20

DS18B20 იყენებს 1 მავთულის პროტოკოლს Arduino- სთან ინფორმაციის გაცვლისთვის, რისთვისაც შესანიშნავი ბიბლიოთეკა უკვე დაწერილია. თქვენ შეგიძლიათ და თქვენ უნდა გამოვიყენოთ ისე, რომ არ განახორციელოს ყველა ფუნქცია ხელით. . ბიბლიოთეკის დაყენება, ჩამოტვირთეთ არქივი, თქვენი Arduino- ის დირექტორია ბიბლიოთეკის საქაღალდეში. ბიბლიოთეკა აკავშირებს # პუნქტის ბრძანებას

ყველა DS18B20 სენსორები დაკავშირებულია პარალელურად, მათთვის ყველა საკმარისი რეზისტორი. Neewire ბიბლიოთეკის გამოყენებით, შეგიძლიათ ერთდროულად წაიკითხოთ ყველა სენსორების ყველა მონაცემები. თუ დაკავშირებულ სენსორების რიცხვი 10-ზე მეტია, თქვენ უნდა აირჩიოთ რეზისტორი არაუმეტეს 1.6 კომისით. ასევე, უფრო ზუსტი ტემპერატურის გაზომვისთვის, თქვენ უნდა დააყენოთ დამატებითი რეზისტენტული 100 ... 120 ohms შორის მონაცემების გამომავალზე Arduino და მონაცემთა საბჭოს თითოეულ სენსორში. თქვენ შეგიძლიათ გაირკვეს, საიდანაც სენსორი ეს ან ღირებულება მიიღება უნიკალური სერიული 64-ბიტიანი კოდის გამოყენებით, რომელიც გაიცემა პროგრამის შესრულების შედეგად.

ნორმალურ რეჟიმში ტემპერატურის სენსორების დაკავშირება, თქვენ უნდა გამოიყენოთ ფიგურაში ნაჩვენები სქემა.

დასკვნები

Dallas DS18B20 Microcircuit არის ძალიან საინტერესო მოწყობილობა. ტემპერატურის სენსორები და თერმომეტრები, რომლებიც შექმნილია მის საფუძველზე, განკუთვნილია უმეტეს ამოცანებისათვის ფუნქციონალური, შედარებით არ არის გზის მიერ შემუშავებული მახასიათებლებით. სპეციალური პოპულარობის სენსორი DS18B20 შემცირდა, როგორც ტენიანობის ტემპერატურის გაზომვის მიზნით.

დამატებითი შესაძლებლობებისთვის, აუცილებელია სენსორთან მუშაობის ნათესავი სირთულეების გადახდა. DS18B20 დაკავშირების მიზნით, ჩვენ აუცილებლად გვჭირდება რეზისტორი 5 კგ-ზე. Sketches- ის სენსორთან მუშაობა Arduino- ში, თქვენ უნდა დააყენოთ დამატებითი ბიბლიოთეკა და მიიღოთ გარკვეული უნარები მასთან მუშაობა - ყველაფერი არ არის საკმაოდ ტრივიალური. თუმცა, თქვენ შეგიძლიათ შეიძინოთ უკვე მზა მოდული, და ესწმრები ხშირ შემთხვევაში, ამ სტატიაში მოცემულია საკმარისი მარტივი მაგალითები.

მიკროკონტროლერის შესწავლის პროცესში ადრე თუ გვიან არის ასეთი მეტეოროლოგიური პარამეტრის შესაფასებლად. გარემოებელიმისი ტემპერატურის მსგავსად. თანამედროვე გლობალური ელექტრონული კომპონენტის ბაზარი გთავაზობთ ტემპერატურის სენსორების ფართო სპექტრს. მათ შორის ძირითადი განსხვავებები შედგება გაზომვის ტემპერატურის დიაპაზონში, მიწოდების ძაბვის, განაცხადის ფარგლებს, საერთო ზომებს, ტემპერატურის კონვერსიის მეთოდებს, ინტერფეისის ინტერფეისს, რათა შეარჩიონ მომხმარებლის კონტროლის სისტემა. ასე რომ, ისტორიულად ეს მოხდა, რომ ამ მომენტში ერთ-ერთი ყველაზე პოპულარული ტემპერატურის სენსორები სენსორია Ds18B20.dallas Semiconductor კორპორაცია. მის შესახებ შემდეგნაირად.

Ds18B20.- ციფრული ტემპერატურის სენსორი პროგრამირებადი კონვერტაციის რეზოლუციით.

Გამორჩეული მახასიათებლები:

1) 1 მავთულის მონაცემების ავტობუსის ინტერფეისის ავტობუსის გამოყენებით კონტროლის სისტემასთან ურთიერთქმედება;
2) შიდა ROM- ის მეხსიერებაში არსებული უნიკალური 64-ბიტიანი თანმიმდევრული საიდენტიფიკაციო კოდის არსებობა და მრავალპროფილიანი სისტემებისათვის განკუთვნილი, სადაც კონკრეტული სენსორი უნდა მიმართავენ;
3) მიწოდების ძაბვა არის 3-5.5V, რომელიც საშუალებას აძლევს არა მხოლოდ 5-ვოლტ სისტემას, არამედ 3.3 (ყველაზე მიკროკონტროლერს);
4) გაზომვის ტემპერატურის სპექტრი არის -55 ... + 125 ° C;
5) სიზუსტე ± 0.5 o C, თუმცა მართალია მხოლოდ სპექტრი -10 ... + 85 o გ;
6) კონვერტაციის რეზოლუცია განისაზღვრება მომხმარებლის მიერ და არის 9 ... 12 ბიტი;
7) აქვს შიდა და ქვედა ტრაქტოგრამების ზედა და ქვედა ტრაქტოგრამების სიგნალიზაციის სიგნალიზაციის სიგნალიზაციის სისტემები თერმოსტატული სამუშაო ლოგიკის გამოყენებით;
8) ეს სენსორები პროგრამით არის თავსებადი DS1822. ფართოდ გამოიყენება სამრეწველო თერმოსტატული მარეგულირებელი, სამრეწველო სისტემები, სამომხმარებლო ელექტრონიკაში და სხვა თერმული მგრძნობიარე სისტემებში.

მოწყობილობის აღწერა და პრინციპი:

ჩემს სტატიაში, მე აღწერს მაგალითს მუშაობის სენსორთან ერთად, რომელიც 92 საცხოვრებელში.

ეს ასე გამოიყურება:

Inside, ეს რამ არის მოწყობილი ძალიან უბრალოდ, შეხედეთ:

განიხილეთ უფრო დეტალურად ეს ბლოკი დიაგრამა.

თუმცა, კვების ამ გზით ხდის გარკვეული შეზღუდვები დროის პარამეტრების სენსორი. გარკვეული დროის მონაცემის ხაზის ჩატარება განიხილავს კონდენსატორს, რომელიც გამოიწვევს შიდა VDD ხაზის დე-ენერგიულობას და მთლიანად სენსორს, შესაბამისად. აქედან გამომდინარე, მაღალი ლოგიკური დონე უნდა შენარჩუნდეს DQ ხაზის გამოუყენებელ დროს. უნდა აღინიშნოს ერთი მნიშვნელოვანი შენიშვნა. EEPROM- ში (ერთ-ერთ რეგლამენტში) TempratchPad- ის მონაცემების კონვერტაციისას (ერთ-ერთ რეგლამენტში), ამჟამინდელი VDD- ის ამჟამინდელი მიმდინარე მოხმარება 1.5-ს შეუძლია მიაღწიოს 1.5-ს, რაც შიდა კონდენსატორის უძლურია და დიდი ძაბვის წვეთი იქნება შეჩერების რეზისტენტობის შესახებ, რომელიც მიუღებელია მოწყობილობის ფუნქციონირებაზე. ამისათვის აუცილებელია ამ სქემით განხორციელებული ძლიერი სჩენის ხაზის DQ სქემის ორგანიზება:

გუნდის გაცემის შემდეგ კონვერტაცია.თ. ან კოპირებაScratchpad. თქვენ უნდა ჩართოთ ძლიერი Mosfet-Transistor Lift Line DQ არა უგვიანეს 10 მლნ (მაქსიმუმ), სენსორის დეველოპერების მიხედვით, რის შემდეგაც კონვერტაციის დრო (TCONV) ან მონაცემთა გადაცემის დრო (TWR \u003d 10 MC), ხოლო იმ დროს არ არსებობს ქმედება ძლიერი ეჭვქვეშ DQ ხაზი არ უნდა იყოს!

შესახებ სტანდარტული საკვები თქვენ უნდა ვთქვა პატარა, რადგან ყველაფერი მარტივია, და კიდევ Mosfet არ არის საჭირო:

ქვესისტემის "64-bit rom და 1 მავთულის პორტი" შეიცავს უნიკალურ 64-ბიტიანი სერიული საიდენტიფიკაციო კოდს, რომელიც მდებარეობს არა-არასტაბილურ ROM მეხსიერებაში, ასევე ამ კვანძში, არის 1 მავთულის კონტროლის სისტემაში ურთიერთქმედების ინტერფეისი. მეხსიერების კონტროლის ლოგიკა ქვესისტემა გადასცემს მონაცემებს 1 მავთულის ინტერფეისის ქვესისტემსა და ScratchPad მეხსიერებას შორის, რაც, თავის მხრივ, დარეგისტრირებს. Ტემპერატურის სენსორისიგნალიზაციის, კონფიგურაციის რეგისტრაციის ზედა და ქვედა ზღვარსაწინააღმდეგო რეგისტრაცია და 8-ბიტიანი შემოწმების გენერატორი რეგისტრაცია სისტემაში არასწორი მონაცემებისგან დაცვის მიზნით.

როდესაც ძალაუფლება ჩართულია, სენსორს აქვს 12 ბიტის კონვერტაციის რეზოლუცია და დაუყოვნებლივ შემცირდა დენის რეჟიმი. კონვერტაციის დაწყების მიზნით, სამაგისტრო უნდა გაიაროს ბრძანება კონვერტაცია.თ. . ციფრული კოდექსის ტემპერატურის კონვერტაციის შემდეგ, ეს კოდი მდებარეობს ScratchPad მეხსიერებაში ორმაგი Byte Word- ის სახით, ხოლო სენსორი ენერგიის დაზოგვის რეჟიმში მიდის.

ტემპერატურის კონვერსია.

ახლა ჩვენ გაერკვევა, თუ როგორ ტემპერატურა სენსორში მოაქცია. სინამდვილეში, ADC მდებარეობს ტემპერატურის სენსორში და ტემპერატურის რეესტრში განთავსებული გამომავალი, გადაეცემა ScratchPad მეხსიერება. ტემპერატურის მონაცემებს აქვს შემდეგი ფორმატი:

S ხატულა დროშა გამოიყენება ნომრის ნომრებზე (S \u003d 0 - ბიტი 10-0 დადებითად და S \u003d 1, თუ იგივე ბიტითა რიცხვი უარყოფითია, ანუ ამ შემთხვევაში, ტემპერატურა როგორც ჩანს, დამატებით კოდექსში (დანამატის კოდი ორამდე)).

12 ბიტის კონვერტაციის რეზოლუციის კონფიგურირებლად, ყველა 12 ბიტი (ცოტა 11-ბიტიანი 0) ჩართულია და შეიცავს საიმედო მონაცემებს. 11 ბიტის რეზოლუციის შექმნისას, ცოტა რაოდენობის 0 შინაარსი არ უნდა იქნეს გათვალისწინებული, როდესაც 10 ბიტი არ უნდა იქნეს გათვალისწინებული 0 და 1 და ა.შ.

სიგნალი არის თერმოსტატიანი ფუნქცია.

ეს უზრუნველყოფს 2 8-ბიტიანი რეესტრს, ე და TL- ს. ტემპერატურის ზედა ზღვრების ღირებულება და TL- ში, შესაბამისად, ქვედა ერთი. თუ ტემპერატურა ზემოთ ან ქვემოთ TL- ის მნიშვნელობას ანიჭებს სიგნალს. ეს განგაშის დროშა აღმოჩენილია წამყვანი მოწყობილობით ბრძანების გაცემით. სიგნალიზაცია ძიება. DQ ხაზზე. განგაშის დროშა განახლებულია თითოეული ტემპერატურის კონვერტაციის ოპერაციაში. სხვათა შორის, 11-დან მე -4 ტემპერატურის რეესტრში მხოლოდ ბიტი გამოიყენება მე -4 ტემპერატურის რეესტრთან შედარებით, შემდეგნაირად, რომ თერმოსტატის ფუნქცია მხოლოდ მთელი რიცხვითი ტემპერატურის ღირებულებებისთვის მუშაობს. რეგისტრაცია ფიზიკურად EEPROM მეხსიერებით, ამიტომ ისინი შეინარჩუნებენ მათ ღირებულებებს, როდესაც ძალა გამორთულია. რეესტრი თავად ტემპერატურის რეგისტრაციის მსგავსია, მხოლოდ 8 ბიტიანი, დროშა S არის აბსოლუტურად იგივე ღირებულება, როგორც წინა საქმეში:

ეს კოდექსი, როგორც ადრე აღინიშნა, საჭიროა თითოეული მოწყობილობის იდენტიფიცირება მრავალმხრივი ტემპერატურის გაზომვის სისტემაში.

ამ მეხსიერების ფორმატი არის:

უმცროსი 8 ბიტი გათიშულია ოჯახის დანიშნულებაზე და შეიცავს 0x28 ღირებულებას. მომდევნო 48 ბიტი შეიცავს უნიკალურ სერიულ რაოდენობას. უძველესი ბაიტი შეიცავს CRC- ის შემოწმების ღირებულებას, რომელიც გამოითვლება ROM მეხსიერების უმცროსი 56 ბიტისთვის.

მეხსიერების ორგანიზაცია.

სენსორის ხსოვნა შედგება Notepad მეხსიერების სივრცის (ScratchPad) და EEPROM მეხსიერებისგან, ზედა და ქვედა სიგნალიზაციის ზღურბლების რეგისტრაციისთვის კონფიგურაციის მონაცემებისა და ღირებულებების შენახვისთვის.

როდესაც ძალა გამორთულია, Byte მონაცემები 2, 3 და 4 მათი ღირებულება EEPROM- ს. კარგად, როდესაც ჩართული, ღირებულება მათ უცვლელი რჩება. Byte 0 და 1 შეიცავს კონვერტირებული ტემპერატურის ღირებულებას, ბაიტებს 5, 6, 7 დაცულია შიდა გამოყენებისათვის და არ შეიძლება ხელმისაწვდომი იყოს მომხმარებლისთვის.

მე -8 ბაიტი შეიცავს CRC კოდექსის ფორმირების ჩაშენებულ ლოგიკას 0-დან 7-მდე ბაიტებს, რომლებიც ამცირებენ საბოლოო ტემპერატურის განსაზღვრის შესაძლებლობას.

უნდა აღინიშნოს, რომ თუ თერმოსტატის ფუნქცია არ გამოიყენება, მაშინ TH და TL რეგისტრაცია შეიძლება გამოყენებულ იქნას, როგორც ზოგადი დანიშნულების მეხსიერებად - თქვენ შეგიძლიათ შეინახოთ ინფორმაცია მათში.

მონაცემები ჩაწერილია Bytes 2, 3 და 4 დაწყებული ახალგაზრდა ცოტა bit 2 გამოყენებით ბრძანება დაწერეთ scratchpad.. ჩაწერილი მონაცემების მთლიანობის შესამოწმებლად, შეგიძლიათ წაიკითხოთ ისინი, რისთვისაც აუცილებელია სენსორის ბრძანება წაიკითხეთ scratchpad.რის შემდეგაც სამაგისტრო უნდა მიიღოს მონაცემები ახალგაზრდა bitte byte 0.

უფროსი, უმცროსი თერმოსტატის რეესტრის მონაცემების შენახვა, ასევე კონფიგურაციის რეესტრი EEPROM მეხსიერებაში, სამაგისტრო უნდა გაიაროს ბრძანება ბრძანება ასლი ScratchPad..

როგორც ზემოთ აღინიშნა, EEPROM- ში უკვე ჩაწერილი მონაცემები, როდესაც ძალა გამორთულია, შენახულია. მაგრამ როდესაც ძალაუფლება ჩართულია შესაბამისი EEPROM- ის უჯრედებისგან, ფასეულობები ავტომატურად გადმოწერილია შესაბამის ScratchPad მეხსიერების რეესტრში. მოსახერხებელი, არა? :)

გარდა ამისა, EEPROM- ში ჩაწერილი მონაცემები შეიძლება ნებისმიერ დროს გადაწეროთ ScratchPad მეხსიერებაში. ეს აუცილებელია მაგალითად, როდესაც თქვენ შეიცვალა კონფიგურაცია პროცესში, და მაშინ თქვენ უნდა მიიღოთ up "სტანდარტული რეჟიმი ოპერაცია", I.E. დავუბრუნდეთ იმ სამუშაოს კონფიგურაციას, რომელიც ადრე იყო ScratchPad მეხსიერების რეგისტრაციის შინაარსის შეცვლაზე. აქ რეალურად ამისთვის, წამყვანი მოწყობილობა უნდა გაიაროს ბრძანება სენსორი. გავიხსენოთ ე2 .

კონფიგურაციის რეესტრში მხოლოდ 2 ბიტი შეიძლება განისაზღვროს: R0 და R1. ეს ბიტი განსაზღვრავს ტემპერატურის კონვერტაციის რეზოლუციას, ხოლო ნაგულისხმევად არის მითითებული 1, რომელიც განსაზღვრავს პირველადი პარამეტრი 12-ბიტიანი კონვერტაციის რეზოლუციას.

ამ ბიტების ყველა შესაძლო კონფიგურაცია და შესაბამისი ნებართვები წარმოდგენილია ქვემოთ მოცემულ ცხრილში. უნდა აღინიშნოს, რომ კონვერტაციის კიდევ უფრო მეტი რეზოლუცია, მაგალითად, 12-ბიტიანი რეზოლუციისთვის, კონვერტაციის დრო 750ms (მაქსიმუმ).

კონტროლის სისტემასთან ურთიერთქმედება.

DS18B20, როგორც ადრე აღნიშნა, რომ ორიენტირებული მოწყობილობა გამოიყენოს 1 მავთულის ინტერფეისის მონაცემთა ავტობუსით. აქედან გამომდინარე, დაკავშირება, კონტროლის სისტემა უნდა უზრუნველყოს outlet outlet ან hi-z ხაზის სტატუსი.

შიდა სენსორული ინტერფეისის კონფიგურაცია ნაჩვენებია ქვემოთ:

უმოქმედო მდგომარეობაში (მოჩვენებითი სახელმწიფოში), DQ ხაზი გამოყვანილია "+" ძალაუფლებაზე. ამდენად, ეს ხაზი ყოველთვის უნდა იყოს დაცული ამ სახელმწიფოში ტრანზაქციებს შორის (მონაცემთა მონაცემთა გადაცემები). თუ რაიმე მიზეზით, გარიგება უნდა შეჩერდეს, DQ ხაზი უნდა იყოს დაცული მაღალი ლოგიკური დონეზე, თუ ეს გადაცემა გაგრძელდება. გარიგების შეჩერების პროცესში, ჩვენ შეგვიძლია შევინარჩუნოთ DQ ხაზი დიდი ხნის განმავლობაში მაღალი ლოგიკით, დაწყებული 1 SCS- ით. მაგრამ, თუ მონაცემთა ავტობუსი ინახება დაბალი ლოგიკის დონეზე, ვიდრე 480μs, სრული გადატვირთვა ყველა სენსორი ამ ავტობუსში მოხდება.

გაცვლის ოპერაციების თანმიმდევრობა.

ყოველ ჯერზე კონტროლის სისტემა ხელმისაწვდომია სენსორზე, მოქმედებების შემდეგი თანმიმდევრობა უნდა მოჰყვეს:

1) ინიციალიზაცია;
2) ROM ბრძანება (მოჰყვა საჭირო მონაცემების გაზიარებას);
3) სენსორის ფუნქციური ბრძანება (მოჰყვა საჭირო მონაცემების გაზიარებას).

თუ სენსორის წვდომისას არ არის დაკარგული - სენსორი არ პასუხობს. გამონაკლისი არის გუნდი ძებნა.რომი [ ვ.0 თ.] და სიგნალიზაცია.ძებნა. [ წა] , მათი აღსრულების შემდეგ, სამაგისტრო უნდა დაბრუნდეს კონტროლის თანმიმდევრობით.

Ისე. ყველა ტრანზაქცია იწყება ინიციალიზაციის გზით. ეს ოპერაცია თან ახლავს გადატვირთვის პულსის მოწყობილობის განვითარებას, რომელზედაც ორიენტირებული მოწყობილობები (ამ შემთხვევაში, სენსორი (ებ) ის) გადასცემს ყოფნის იმპულსს, რომ სენსორები დაკავშირებულია და მზად არიან მუშაობდნენ.

ზოგადად, სენსორში განხორციელებული 1 მავთულის ინტერფეისის ავტობუსი განსაზღვრავს მონაცემთა ხაზის რამდენიმე ტიპის სიგნალს: გადატვირთვა პულსი, PURSE PULSE, ჩაწერა 0, ჩანაწერი 1, წაკითხვის 0, წაკითხვის 1. ყველა ეს ოპერაცია ახორციელებს სამაგისტრო მოწყობილობას , გარდა იმისა, რომ ყოფნის პულსი. იგი ქმნის მხოლოდ სენსორს (ებ) ი.

ასე რომ, დამწყებთათვის, სამაგისტრო მოწყობილობა გადამრთველია გადამცემი რეჟიმში და ადგენს DQ ხაზს 0-ზე, ხოლო მინიმუმ 480μs (ხაზგასმით აღინიშნება თამამი შავი). ის განსაზღვრავს სენსორს. შემდეგ ხაზი უნდა გათავისუფლდეს და თარგმნა სამაგისტრო მოწყობილობის მიმღების რეჟიმში, ხოლო Pull-up Resistor იქნება მითითებული მონაცემების ხაზი მაღალი ლოგიკური დონეზე (ხაზგასმით თხელი შავი ფერი). სენსორის შემდეგ იზრდება მზარდი ფრონტი, სენსორი 15-60 მმ-ს მოუთმენლად ველით და მონაცემების ხაზს გადააჭარბებს და 60-240 მლნ. ამ დროის შემდეგ, სენსორი ხაზს უსვამს ხაზს და ეს იქნება ლოგიკური დონის 1-ში, მინიმუმ 480μs- ის გამოვლენის შემდეგ.

ახლა მოდით ვისაუბროთ იმაზე, თუ როგორ ხდება მონაცემთა გადაცემის პროცესი. ზოგადად, ბიტი. საქმე არის შემდეგი. დროის სეგმენტი გადაღებულია და ამ დროს სამაგისტრო გამოიყურება, რომ ჩვენ გვაქვს ხაზი, ვთქვათ 1 - ეს ნიშნავს, რომ ისინი 1-ს ჩაიწერეს, თუ 0 ნიშნავს, რომ ეს ნულოვანია. მაგრამ ეს მხოლოდ აბსტრაქტული ახსნაა. სინამდვილეში, არსებობს გარკვეული ნიუანსი, რომლებიც დაკავშირებულია ყველა ამ საქმის დროებითი ჩარჩოსთან.

ნახატები:

ეს ყველაფერი იწყება იმით, რომ წამყვანმა უნდა გამოაგზავნოს ხაზი დაბალი ლოგიკური დონისთვის, და ამ ეტაპზე, ჩაწერის / კითხვის სლოტი 1/0, რომელიც 60-დან 120 მლნ. ჩანაწერის / წაკითხვის სლოტებს შორის, მონაცემთა ხაზი უნდა იყოს დამონტაჟებული 1-ში, არანაკლებ აღდგენის დრო (1μs). რეკორდული სლოტების ორგანიზება 0, აუცილებელია მონაცემთა ხაზის შენარჩუნება 0 ყველა დროის სლოტი, მაგრამ თუ სენსორს 1-ს უნდა დაწერა, მაშინ ჩვენ პირველად გადავდგათ მონაცემთა ხაზის 0-მდე, მაშინ ჩვენ ველოდებით 1 MX და გაათავისუფლეთ ხაზი 1-ში, ჩანაწერის სლოტზე 1 (60- 120μs) 1 (60- 120μs) ჩაიწერება 1 სენსორში (იხილეთ ზედა მარჯვენა ფიგურა).

სინამდვილეში, თუ 15-60 მმ, დაწყებისთანავე, მონაცემების ხაზში 1 გამოვლინდება, მაშინ 1 ჩაიწერება და თუ 60-240 კაით გაათავისუფლებს.

მონაცემების წაკითხვა თან ახლავს წამყვანი მოწყობილობას, როდესაც ის ხაზს უსვამს ხაზს, ელოდება მინიმუმ 1 MX- ს, და გამოიყურება 15 MX- ზე, რომელიც მიმდინარეობს: თუ ის რჩება 0, სენსორული ტრანსმისიები 0, შემდეგ 1.

გუნდები.

ROM გუნდი.

ეს ბრძანებები უნდა დაიცვას საწყისი თანმიმდევრობა და შეიცავდეს ძიების ინსტრუქციებს შესაბამისი სენსორისთვის და ა.შ. თითოეული ბრძანების გამონადენი არის 8bit. შესაბამისი ბრძანების შესრულების შემდეგ, თქვენ შეგიძლიათ გადარიცხოთ ფუნქციური ბრძანება სენსორზე.

ძებნა rom

როდესაც სისტემა თავდაპირველად უკავშირდება, უნდა აღიაროს ყველა მოწყობილობა ავტობუსთან. ამისათვის ეს გუნდი. მაგრამ, რადგან ჩვენ მხოლოდ ერთი სენსორი გვაქვს, ჩვენ არ გამოვიყენებთ ამ ბრძანებას.

წაკითხული rom

ეს ბრძანება გამოიყენება მხოლოდ მაშინ, როდესაც ავტობუსზე მხოლოდ ერთი სენსორია. ეს საშუალებას აძლევს წამყვანი მოწყობილობის წაკითხვის შინაარსი 64 ROM მეხსიერების ბიტი გამოყენების გარეშე საძიებო ბრძანება. და თუ თქვენ ცდილობენ გამოიყენოთ ეს ბრძანება, როდესაც სენსორების რიცხვი დაკავშირებულია, 1-ზე მეტი, ისინი ყველაფერს დაიწყებენ ამ მეხსიერების შინაარსს, რაც არასასურველ შედეგებს გამოიწვევს.

მატჩი რომ

ეს არის ROM შესაბამისობის ბრძანება. ოსტატი ავრცელებს 64 ბიტს, რომელიც დაკავშირებულია სენსორულ ავტობუსთან დაკავშირებულ 64 ბიტს, ხოლო უკვე განისაზღვრება, რა უნდა გააკეთოს მასთან (შეაფასოს ტემპერატურა და ა.შ.). სხვა სენსორები საბურავზე დაველოდებით მათ მხრივ ამ დროს.

გამოტოვეთ ROM.

ეს არის ROM ბრძანება. არ ითვალისწინებს ავტობუსზე კონკრეტული სენსორის მისამართს და დაუყოვნებლივ ყველა. ამ ბრძანების შემდეგ, თქვენ შეგიძლიათ მისცეს, მაგალითად, ტემპერატურის კონვერტაციის ბრძანება და ყველა სენსორები დაიწყებენ კონვერტაციას. თუმცა, მეხსიერების წაკითხვის ბრძანება ამ ბრძანების გამოძახების შემდეგ გამოიწვევს არაპროგნოზირებადი შედეგების (რადგან ყველა სენსორების მონაცემების გადაცემას). ასე რომ, მხოლოდ ერთი დაკავშირებული სენსორი არის ასეთი სიტუაცია.

სიგნალიზაცია ძიება.

ეს ბრძანება იდენტურია პირველი ამ მაგიდაზე, გარდა იმისა, რომ სენსორები ეძებენ საბურავის სიგნალს.

ფუნქციური გუნდები.

ეს ბრძანებები განახორციელებს ნებისმიერი პროცესის ფუნქციურ ოპერაციებს, მაგალითად, ტემპერატურის კონვერტაციის ოპერაციის დაწყებას, მეხსიერების კოპირებას და ა.შ. სულ ბრძანებები 6, თითოეული 8bit- ის გამონადენი.

კონვერტაციის T.

ტემპერატურის კონვერტაციის გაშვება. ამ ბრძანების შესრულების შემდეგ, 2-byte მონაცემები შევიდა ტემპერატურის რეესტრში.

დაწერეთ scratchpad.

ჩანაწერებს მონაცემების რეგისტრაციაში 2-4 დაწყებული მეორე, უმცროსი ბიტი წინ. გადაცემისას სამი რეესტრში მონაცემები უნდა მონიტორინგი, ისე, რომ ოსტატი არ არის სენსორების არარსებობა, რადგან მონაცემთა დაკარგვა შესაძლებელია.

წაიკითხეთ scratchpad.

იგი იწყებს მონაცემების გადაცემის პროცესს ყველა ScratchPad მეხსიერების რეგისტრაციისთვის, დაწყებული ახალგაზრდა ბიტიანი 0-ით და დამთავრდება ხანდაზმული BITE 8 (CRC).

ასლი ScratchPad.

ეს ბრძანება ასრულებს Byte რეგისტრაციის შინაარსს 2, 3 და 4 შესაბამის EEPROM- ს უჯრედებს.

გავიხსენოთ ე2

ეს ბრძანება ასრულებს მონაცემებს EEPROM- დან ScratchPad- ის შესაბამის ადგილებში. როგორც ზემოთ აღინიშნა, როდესაც ხელისუფლებაში ჩართავთ, ეს ოპერაცია ავტომატურად ხდება.

წაკითხვის ელექტროენერგიის მიწოდება

აქ, ფაქტობრივად, ყველა სიბრძნე მუშაობის DS18B20 ტემპერატურის სენსორი. უფრო დეტალური ინფორმაციისთვის ჩვენ მივმართავთ datashet (). ახლა აუცილებელია განახორციელოს ყველა ეს ბიზნესი აპარატში.

მოწყობილობა სქემა:

ბეჭდური მიკროსქემის საბჭოს ასამბლეის ხატვა (მე ბოდიშს ვუხდი ხარისხს, მე მხოლოდ იმუშავებს, გამართვისთვის):

ნუ დაივიწყებთ საფასურის შეცვლას

მას შემდეგ, რაც ეს არის იმიტირებული, მე გამოვედი ის ძველი პროექტისგან, ასე რომ, ბორტზე, რომელიც ზემოთ არ არის ის, რაც მე არ მაქვს (ჩემს მე ახლა გადავწყვიტე ყველაფერი და ზუსტად ისევე როგორც ნახატების მსგავსად) .

ეს არის ის, რაც მოხდა ჩემთვის:

აღმოჩნდა ერთგვარი სენდვიჩი

პროგრამის კოდექსი დაიწერა განვითარების გარემოში. მე არ ვცდილობდი გამოიყენოს მაქსიმალური მზა AVR-GCC შემდგენელი ბიბლიოთეკების, მაგრამ წერდა ყველაფერი, როგორც ამბობენ, "ხელით." ჩემი მიზანი არ არის იმის დემონსტრირება Virtuoso მფლობელობაში SI, მაგრამ მხოლოდ მაგალითს დაწერილი ერთი საათის განმავლობაში შეუძლია უზრუნველყოს ახალბედა ზოგადი პრეზენტაცია მუშაობის სენსორით.
მოწყობილობა განკუთვნილია ოთახში, ამიტომ არ ითვალისწინებს უარყოფითი ტემპერატურის გაზომვას.

ჩამოტვირთეთ კოდის I. pCB განაწილება შეგიძლიათ ქვემოთ

ყველა დამატებითი კითხვა, სურვილები ელოდება მისამართზე: [Email protected]

ორ წინა სტატიაში შევხედე და. ამ სტატიაში, მიგვაჩნია, რომ ერთი ან მეტი სენსორების დამაკავშირებელი სქემა მიკროკონტროლისთვის და MK- ის ოპერაციის პროგრამას 1 მავთულის საბურავზე სენსორული (სენსორები)

ტიპიური DS18B20 სენსორული კავშირი სქემა Microcontroller:


როგორც ჩანს, სქემიდან ჩანს, DS18B20 სენსორი (ან სენსორები) უკავშირდება მიკროკონტროლერს, თუ მათ საერთო ძალა აქვთ, სამი დირიჟორი:
- დასკვნა ნომერი 1 - საერთო მავთული (მასა, დედამიწა)
- გამოყვანის ნომერი 2 - ეს არის dq , რისთვისაც კომუნიკაცია MK და DS18B20 ხდება, აკავშირებს ნებისმიერი დასასრულს ნებისმიერი პორტის MK. DQ გამომავალი უნდა იყოს "გამოყვანილი" მეშვეობით resistor ძალაუფლების პლუს
- გამომავალი ნომერი 3 - სენსორის ძალა - +5 ვოლტი
თუ მოწყობილობაში რამდენიმე ტემპერატურის სენსორი გამოიყენება, მათ შეუძლიათ მიიღონ MK პორტის სხვადასხვა დასკვნები, მაგრამ შემდეგ პროგრამა გაიზრდება. სენსორები უკეთესად აკავშირებენ დიაგრამაში, როგორც პარალელურად, MK- ის პორტის ერთი გამომავალი.
ნება მომეცით შეგახსენოთ, რომ გამკაცრების რეზისტენტობის სიდიდეზე:
"რეზისტენტობის წინააღმდეგობა უნდა შეირჩეს კომპრომისიდან საკაბელო და გარე ჩარევის წინააღმდეგობას შორის. რეზისტენტობის წინააღმდეგობა შეიძლება იყოს 5.1-დან 1-მდე კომ. მაღალი წინააღმდეგობის კაბელები, აუცილებელია უმაღლესი წინააღმდეგობის გამოყენება. და სადაც სამრეწველო ჩარევა იმყოფება - აირჩიეთ ქვედა წინააღმდეგობა და გამოიყენეთ საკაბელო უფრო დიდი ჯვარი სექციით. ტელეფონით Noodle (4 ვენების) 100 მეტრისთვის, რეზისტორი საჭიროა 3.3 კომ. თუ იყენებთ "გადაუგრიხეს წყვილს" კი 2 კატეგორიის სიგრძე შეიძლება გაიზარდოს დიახ 300 მეტრში "

პროგრამირების მიკროკონტროლერის ოპერაცია DS18B20 სენსორთან ერთად

როგორ არის DS18B20 სენსორი კომუნიკაცია Microcontroller, ჩვენ შევხედავთ გამოყენებით სენსორი Dailure და ალგორითმის აღმაშენებლის პროგრამა.

საკომუნიკაციო ოპერაციების თანმიმდევრობა
ძალიან მნიშვნელოვანია, რომ დადგინდეს დადგენილი თანმიმდევრობა (რომელიც შედგება სამი ქულისგან) ყოველ ჯერზე, როდესაც DS18B20- ის წვდომისას:
1. ინიციალიზაცია
2. ROM ბრძანება
3. DS18B20 ფუნქციური ბრძანება
მხოლოდ ორი გუნდი შესრულებულია ორი ნაბიჯით: ძებნა ROM. და უბედური შემთხვევა.

ინიციალიზაცია DS18B20.

ინიციალიზაციის თანმიმდევრობა შედგება ორი ნაწილისაგან:
- პულსის გამონადენი - რომელიც ქმნის მიკროკონტროლერს
- პულსი ყოფნა - რომელი ფორმები DS18B20
DQ ავტობუსის თავდაპირველი მდგომარეობა, რომლის მიხედვითაც MK და სენსორული კომუნიკაცია ხდება - ლოგიკური 1, რადგან DQ BUS არის "გამკაცრდა" მეშვეობით resistor ელექტროენერგიის მიწოდება.
DQ ავტობუსით, შეგიძლიათ განსაზღვროთ თუ არა სენსორი მიკროკონტროლერისთვის:
- თუ ლოგიკური 1 ავტობუსი არის სენსორი დაკავშირებული
- თუ ლოგიკური 1 არ ნიშნავს, სენსორი არ არის დაკავშირებული (ან დაავიწყდა დაკავშირება, ან დაარღვიოს DQ ხაზი)
აქედან გამომდინარე, ინიციალიზაციის თანმიმდევრობა შეიძლება დაემატოს სხვა პუნქტს - სენსორის კავშირის შემოწმება. მაგრამ გაითვალისწინეთ, რომ ეს შემოწმება შეიძლება განხორციელდეს მხოლოდ ერთი სენსორით.

შეამოწმეთ DS18B20 სენსორი კავშირი:

სადაც:
- ini_ds18b20. - პროგრამის ინიციალიზაცია
- dq_pin. - სახელი მე დანიშნა პორტის კატეგორია, რომელსაც სენსორი უკავშირდება (თუ სქემის მიხედვით გამოიყურება, მაშინ ეს არის PB0 პორტი)
- dq_pin \u003d 1 - სენსორული კავშირის შემოწმება - თუ გამომავალი DQ_PIN ლოგიკური ერთეული, მაშინ გავლა arrow, თუ არა, მაშინ:
- 1-\u003e Term_Errorსადაც Term_Error არის ცვლადი, რომელშიც შეცდომა ჩაწერილია ამ შემთხვევაში "1"
- show_term_error - გადადით შეცდომის გამომავალი ქვეპროგრამის ჩვენება
მაგალითად, როდესაც სამი ბიტიანი შვიდი სეგმენტის ჩვენების გამოყენებისას შეგიძლიათ ასეთი ხაზი:
- er1რას ნიშნავს - შეცდომა მოხდა, შეცდომა კოდი -1 (სენსორი არ არის დაკავშირებული)

ახლა შეხედეთ სენსორების სენსორებს და იხილეთ დაწყების პროცედურის დროის გრაფიკი:


გადარიცხეთ გრაფიკი სიტყვებით:
1. DQ ავტობუსის თავდაპირველი დონე ლოგიკური ერთეულია (გამკაცრების გამკაცრების გამო)
2. Microcontroller ქმნის გადატვირთვის პულსი:
- MK ითარგმნება DQ ავტობუსის ლოგიკური ნულის მდგომარეობის დროს, ხოლო მინიმუმ 480 მიკროექტორაციისთვის
- MK ავრცელებს საბურავს (ჩვენ თარგმნა გამომავალი მიღება რეჟიმში), ხოლო DQ ავტობუსი კვლავ ლოგიკური ერთეულის მდგომარეობაშია
3. DS18B20 ავტობუსზე დონის ვარდნა (ლოგიკური ნულოვანიდან ლოგიკური ერთეულისგან) 15-60 მიკროფონით გადადის ყოფნის პულსი - თარგმნის DQ ავტობუსს ლოგიკური ნულოვანი 60-240 მიკროსეკის ხანგრძლივობისთვის
4. თანდასწრებით Pulse- ის დასრულების შემდეგ DS18B20 დააბრუნებს DQ ავტობუსს ლოგიკური ერთეულის დონეს (გრაფიკის მიხედვით - 480 მიკროსეკის შემდეგ, გადატვირთვის პულსის დასრულების შემდეგ, საბურავი უნდა დაბრუნდეს ლოგიკურ ენაზე ერთეულის დონე)

ახლა ჩვენ ყველაფერს თარგმნებს პროგრამაში. მაგრამ უნდა აღინიშნოს, რომ ინიციალიზაციის პროცესში კიდევ ორი \u200b\u200bშეცდომა შეიძლება მოხდეს:
- DS18B20 არ იყო გასცემს იმპულსს
- DS18B20- ის ყოფნის შემდეგ, DQ BUS არ დაბრუნდა ლოგიკური ერთეულის მდგომარეობაში.


გრაფა გვიჩვენებს მინიმალური დროის მახასიათებლებს, ასე რომ, პროგრამაში ისინი გარკვეულწილად გადაჭარბებულ ან მაქსიმალურ (მინიმალური) ღირებულებებია:
- Impulse Reset საწყისი MK - არა 480 A 500 Microseconds
- პაუზის დასასრულს Pulse of Disculse of Enventions - 60 Microseconds
- საბურავის დაბრუნება ლოგიკური ერთეულის მდგომარეობაში 420 მიკროსეკის შემდეგ ყოფნა
იმედი მაქვს, პირველი შეკითხვა - ინიციალიზაცია, ჩვენ გამოვყავით
გადადით სავალდებულო თანმიმდევრობის მომდევნო ეტაპზე - "ROM ბრძანება"

ROM გუნდი

ჩვენი კომუნიკაციის შემდეგი ნაბიჯი DS18B20. აუცილებელია ეს აუცილებელი rom ბრძანება
შეგახსენებთ, რომ ROM ბრძანებები მხოლოდ ხუთია:
1. ძებნა ROM. - ის შეიძლება გამოყენებულ იქნას (და არ შეიძლება გამოყენებულ იქნას, მაგალითად, უმეტეს შემთხვევაში არ ვიყენებ მას) 1 მავთულის ავტობუსთან MK- სთან კომუნიკაციასთან დაკავშირებული მრავალჯერადი სენსორების ან სხვა მოწყობილობების გამოყენების შემთხვევაში
2. წაკითხვის ROM. - გამოიყენება ერთი დაკავშირებული სენსორი, რომ წაიკითხოთ მისი 64 ბიტიანი კოდი
3. შესატყვისი ROM. - გამოიყენება სენსორების შემთხვევაში, ვიდრე კონკრეტულ სენსორს
4. გამოტოვეთ ROM. - ბრძანება გამოიყენება დაუყოვნებლივ ყველა სენსორების (მოწყობილობები) MK- თან. იგი თითქმის გამოიყენება, რომ წარმოადგინოს ფუნქციური ბრძანება ტემპერატურის (ტემპერატურის დეფინიციის) კონვერტაციისთვის, ამავე სენსორების მიერ
5. საძიებო სიგნალიზაცია - თუ ჩვენ დავაყენებთ DS18B20 ზედა და ქვედა ტემპერატურას, რომელიც ჩვენ გვჭირდება კონტროლი. ამ შემთხვევაში, ჩვენ მხოლოდ პასუხობთ გაზომულ ტემპერატურულ სენსორებს, რომლებიც შეესაბამება მითითებულ ზღვარს.

თითოეული ROM ბრძანება აქვს თექვსმეტი ციფრი კოდი (ისევე როგორც ფუნქციონალური ბრძანებები), ასე რომ, პროგრამაში კომფორტულად შეგიძლიათ ძალიან იდენტიფიცირება მუდმივებმა, რომლებსაც აქვთ გუნდის სახელები, მაგალითად:


ეს მაგიდა ადგენს მუდმივ სამსახურებს ბრძანებათა სენსორებთან მუშაობისთვის.
პირველი ნაბიჯის შემდეგ - ROM- ის ბრძანების DS18B20 სენსორის ინიციალიზაცია და სენსორი მზად არის ფუნქციონალური ბრძანების შესასრულებლად.
წინა სტატიაში, მე დეტალურად ვუთხარი ROM ბრძანებებს და ფუნქციონალურ გუნდებს, მე არ ვიმეორებ (მე ვსაუბრობ ფუნქციურ ბრძანებებს).

DS18B20- ის მუშაობის ალგორითმის ორი მაგალითი:
1. ერთი სენსორის გამოყენებისას:
- შეასრულოს ინიციალიზაცია

- გამოიყენეთ სენსორული ფუნქციის გუნდი - "კონვერტაციის ტემპერატურა" (ტემპერატურის გაზომვა)
კონვერტაციის პროცესში, კონტროლი სენსორის ფუნქციონირებას - თუ ნულოვანი ავტობუსით, კონვერსია არ დასრულებულა, თუ ლოგიკური ერთეული დასრულდა საბურავზე.
ახლა თქვენ შეგიძლიათ განიხილოთ ტემპერატურა სენსორისგან:
- შეასრულოს ინიციალიზაცია
- მოდით სენსორული ბრძანება ROM - "Skip Rom"
- გამოიყენეთ სენსორის ფუნქციის ბრძანება - "წაკითხვის მეხსიერება"
"წაკითხვის მეხსიერების" ბრძანების თანახმად, სენსორი იწყებს მეხსიერების მონაცემების გადაცემას - ყველა ცხრა ბაიტი. მაგრამ ჩვენ გვჭირდება მხოლოდ პირველი ორი ბაიტი - სენსორის მიერ შეფასებული არსებული ტემპერატურა მათში ჩაწერილია. აქედან გამომდინარე, წაიკითხეთ მხოლოდ პირველი ორი ბაიტი და გამოვიდეთ სუბროუტინიდან.

ეს სენსორი იყენებს 1 მავთულის პროტოკოლს - კავშირი ჩამოყალიბებულია, რომელიც ავტობუსზე მხოლოდ ერთი კონტროლის სიგნალის გამოყენებით. საბურავი უნდა იყოს დაკავშირებული ელექტროგადამცემი წყაროდან გაიზრდება რეზისტორით.

სპეციფიკაციები DS18B20.
Პარამეტრიშეფასება
IC გამოყვანის ტიპიციფრული.
სენსორული სიზუსტის დიაპაზონი.± 0.5 ° C
ტემპერატურის ზონდირების დიაპაზონი.-55 ° C + 125 ° C
მიწოდება მიმდინარე1mA.
მიწოდების ძაბვის დიაპაზონი.3V to 5.5V.
რეზოლუცია (ბიტი)9...12
სენსორის საქმის სტილი.To-92.
№ ქინძისთავები.3
ბაზის ნომერი18
საოპერაციო ტემპერატურა მაქს85 ° C.
საოპერაციო ტემპერატურა მინ.-10 ° C.
Სამუშაო ტემპერატურის დიაპაზონი.-10 ° C დან + 85 ° C
გამომავალი მიმდინარე4mA.
გამოყვანის ტიპიციფრული.
პაკეტი / საქმე.To-92.
რეზოლუცია9...12
სენსორი / TRANSDUCER ტიპიტემპერატურა.
მიაწოდოს ძაბვის მაქს5.5V.
მიწოდების ძაბვის მინ.3V
შეწყვეტის ტიპიმეშვეობით ხვრელი.
საოპერაციო ტემპერატურა, ° C0...+55
ოპერაციის ტენიანობა,%%...55
წარმოებაDallas / Maxim
ოპერაციის გარანტიის პერიოდიშესყიდვის თარიღიდან 12 თვე
წონა, გ.10

DS1820, DS18S20, DS18B20 - პოპულარული Dallas-Maxim ციფრული თერმული სენსორები ერთი მავთულის 1 მავთულის ინტერფეისი. ციფრული თერმული სენსორების მონაცემებზე მარკირების და სიმრავლის სიმრავლის გამო, რომელიც გამოჩნდა სამოყვარულო ლიტერატურაში, მიგვაჩნია, რომ საჭიროა გარკვეული ახსნა-განმარტება.
ნამტვრევი DS1820 ამოღებულია წარმოებისგან და მისი ჩანაცვლება, მიკროკრედიტატი რეკომენდირებულია DS18S20.. თუმცა, უნდა გადაიხადოს ის ფაქტი, რომ ჩიპი DS18S20 in-92 შემთხვევაში აღინიშნება წარწერა "DS1820" (გარეშე წერილი s). ახალი მიკროკლამა DS18S20 პროგრამული უზრუნველყოფა თავსებადია ძველი DS1820 და, მწარმოებლის აზრით, ხშირ შემთხვევაში შეიძლება პირდაპირ შეიცვალოს ძველი DS1820. ალბათ მარკირების გარეშე წერილი S მწარმოებლის სურდა განსაზღვროს ეს თავსებადობა. ახალი DS18S20- ის პროგრამის თავსებადობა ძველი DS1820- ით გარანტირებულია, თუ პროგრამა გამოიყენება მონაცემთა ფურცლის ალგორითმისგან.
როგორც ჩანს, მაგიდადან ჩანს, ახალი DS18S20 მიკროკრედიტაცია შედგება სტანდარტული to-92 შემთხვევაში, ხოლო ძველი DS1820 ჰქონდა წაგრძელებული საცხოვრებელი. ამ საფუძველზე, თქვენ ასევე შეგიძლიათ დარწმუნდეთ, რომ გამყიდველები არ "squeeze" მოძველებული ჩიპი.
იგივე DS18B20 მიკროკრედიტაციას ყოველთვის აქვს შესაბამისი ეტიკეტი "DS18B20" და არ შეიძლება შეიცვალოს DS1820 / DS18S20 და უკან გადაცემის გარეშე პროგრამის კოდი.

ციფრული მაქსიმალური ტემპერატურის სენსორების სპეციფიკაციები
სენსორის ტიპიDS1820. DS18S20.DS18B20.
აღნიშვნაDS1820. DS1820.DS18B20.
განთავსებაPR-35
(Udlen. - 92)
To-92.To-92.
ძვირფასი9-ბიტი 9-ბიტი9 ... 12bit
კონვერტაციის დრო200ms (ტიპი.)
500ns (max)
750ns (max)750ns (max)
გაზომვის სიზუსტე ± 0.5%
ტემპერატურის დიაპაზონში
0 .... + 70 ° С -10 .... + 85 ° С-10 .... + 85 ° С
მიწოდების ძაბვა
გაზომვის სიზუსტე ± 0.5%
4.3-5.5V 3.0-5.5V3.0-5.5V
აღწერილობა

DS18B20. - Dalc Dallas ციფრული ტემპერატურის სენსორი. აგზავნის ტემპერატურის მონაცემებს მხოლოდ ერთი ციფრული გამომავალი და სპეციალური ოქმით, რომელსაც 1 მავთული მოუწოდა. თქვენ შეგიძლიათ დაუკავშირდეთ რამდენიმე სენსორს ერთ კონტაქტში. სენსორი ზომავს ტემპერატურას გრადუსით.

სპეციფიკაციები DS18B20.

  • სენსორი შეიძლება გამოყენებულ იქნას ძაბვის 3-დან 5.5 კვ
  • სენსორი შეიძლება შეაფასოს ტემპერატურა -55-დან 125 ° C- მდე
  • სენსორს აქვს ციფრული რეზოლუცია 9-დან 12-მდე
  • გაზომვის სიზუსტე +/- 0.5 ° C დიაპაზონში -10 დან 85 ° C
  • გაზომვის სიზუსტე: + / - 2 ° C სპექტრი -55-დან 125 ° C
  • გაზომვის დრიფტი +/- 0.2 ° C

DS18B20 კავშირი სქემა

რა არის ნებართვა?

-ში სპეციფიკაციები ცნობილია, რომ DS18B20 სენსორი შეიძლება შეაფასოს ტემპერატურა სხვადასხვა რეზოლუციით. რეზოლუცია მმართველს ჰგავს: მმ-იანებლებს შორის სანტიმეტრი. გარდა ამისა, DS18B20 რეზოლუციით არის ნაბიჯი გრადუსების თანმიმდევრულ ნაბიჯებს შორის.

რეზოლუცია შეირჩევა ბიტების რაოდენობის გამოყენებით. არჩევანი 9-დან 12 ბიტიდან. ნებართვის არჩევანი გარკვეულ შედეგებს გულისხმობს. უმაღლესი რეზოლუცია, აღარ თქვენ უნდა დაველოდოთ გაზომვის შედეგს.

9 ბიტიანი ნებართვით, რიგითი დონეებს შორის 2 ნაბიჯია:

  • 0.0 ° C.
  • 0.5 ° C.

10 ბიტიანი ნებართვებისთვის არის 4 ნაბიჯები რიგითი დონეზე:

  • 0.0 ° C.
  • 0.25 ° C.
  • 0.5 ° C.
  • 0.75 ° C.

ამ შემთხვევაში, ჩვენ ვკითხულობთ ტემპერატურას 0.25 ° C- ს რეზოლუციით. 10 ბიტიანი რეზოლუციის საზომი დროა 187.5 ms, რომელიც საშუალებას გაძლევთ შეასრულოთ 5.3 გაზომვა წამში.

11 ბიტიანი ნებართვისთვის, თანმიმდევრულ დონეზე 8 ნაბიჯია:

  • 0.0 ° C.
  • 0.125 ° C.
  • 0.25 ° C.
  • 0.375 ° C.
  • 0.5 ° C.
  • 0.625 ° C.
  • 0.75 ° C.
  • 0.875 ° C.

ანუ, რეზოლუცია არის 0.125 ° C. ხანგრძლივობა 11 ბიტიანი ნებართვებისთვის არის 375 ms. ეს საშუალებას გაძლევთ შეასრულოს 2.6 გაზომვები წამში.

12 ბიტიანი ნებართვისთვის, თანმიმდევრულ დონეზე 16 ნაბიჯია:

  • 0.0 ° C.
  • 0.0625 ° C.
  • 0.125 ° C.
  • 0.1875 ° C.
  • 0.25 ° C.
  • 0,3125 ° C.
  • 0.375 ° C.
  • 0.4375 ° C.
  • 0.5 ° C.
  • 0.5625 ° C.
  • 0.625 ° C.
  • 0,6875 ° C.
  • 0.75 ° C.
  • 0.8125 ° C.
  • 0.875 ° C.
  • 0.9375 ° C.

შესაბამისად, რეზოლუცია არის 0.0625 ° C. გაზომვის დრო 12 ბიტიანი ნებართვისთვის 750 MS. ანუ, შეგიძლიათ გააკეთოთ 1.3 გაზომვა წამში.

რა არის სიზუსტე გაზომვის?

არაფერია მსოფლიოში, განსაკუთრებით კი ელექტრონიკაში, არ არის სრულყოფილი. თქვენ შეგიძლიათ მხოლოდ მიუახლოვდეთ სრულყოფილებას, უფრო მეტ ფულს და უფრო მეტ ფულს ხარჯავს. ასევე ამ სენსორით. მას აქვს გარკვეული უზუსტობები, რომლებიც უნდა იცოდეთ.

ტექნიკური მახასიათებლები აცხადებენ, რომ გაზომვის დიაპაზონში -10-დან 85 ° C- მდე, DS18B20 სენსორს აქვს სიზუსტე +/- 0.5 ° C დონეზე. ეს იმას ნიშნავს, რომ როდესაც ჩვენ გვყავს ტემპერატურა 22.5 ° C ოთახში, სენსორი შეიძლება დაბრუნდეს გაზომვის შედეგი 22 დან 23 ° C ჩვენთვის. ანუ, მას შეუძლია ნახოთ 0.5 ° C მეტ-ნაკლებად. ეს ყველაფერი დამოკიდებულია სენსორის ინდივიდუალურ მახასიათებლებზე.

დიაპაზონში -55-დან 125 ° C- მდე, გაზომვის შეცდომა შეიძლება გაიზარდოს +/- 2 ° C. ანუ, როდესაც თქვენ შეაფასებთ რამე 100 ° C ტემპერატურაზე, სენსორი შეიძლება აჩვენოს ტემპერატურა 98-დან 102 ° C- მდე.

ყველა ეს გადახრები გარკვეულწილად განსხვავდება თითოეული ტემპერატურისთვის, მაგრამ იმავე ტემპერატურის გაზომვისას, გადახრა ყოველთვის იქნება იგივე.

რა არის გაზომვის დრიფტი?

გაზომვის დრიფტი არის უზუსტობების ყველაზე ცუდი ფორმა. გაზომვის არსი არის ის, რომ მუდმივი ტემპერატურის გაზომვისას - ერთი გაზომვით, სენსორს შეუძლია აჩვენოს ერთი ტემპერატურა და შემდგომ სხვა (დრიფტის ღირებულებით).

Draf ds18b20 +/- 0.2 ° C. მაგალითად, როდესაც მუდმივი ტემპერატურა 24 ° C ოთახშია, სენსორს შეუძლია 23.8 ° C- მდე 24.2 ° C- მდე.

(379.0 KB, გადმოწერილი: 913)