- Bố trí kiểu hình tam giác: a = 1,73 R
2. Giới thiệu vi điều khiển Atmega16L:
2.5.2 Cảm biến LM
Hình dạng của LM335 ngồi thực tế :
Nó có 3 chân chính : 2 chân cấp nguồn và 1 chân out tín hiệu Analog
điện áp tương ứng tại chân số 2 (Vout). Điện áp này được tỉ lệ với giải nhiệt độ mà nó đo được. Với độ giải của nhiệt độ đầu ra là 10mV/K. Hoạt động trong giải điện áp từ 0 cho đến 5V và giải nhiệt độ đo được từ 0 oC đến 100oC. Và cần chú ý đến những thơng số chính sau :
+ Hoạt động chính xác ở dịng điện đầu vào từ 0.4mA đến 5mA. Dịng điện đầu vào ngồi khoảng này kết quả đo sẽ sai
+ Điện áp cấp vào ổn định là 5V + Trở kháng đầu ra thấp 1 ôm
+ Giải nhiệt độ môi trường là từ 0 đến 100 C
Như vậy LM335 nó cho chúng ta tín hiệu tương tự (Analog) và chúng phải xử lý tín hiệu này thành nhiệt độ
+Tính tốn các giá trị của mạch đo
Do tín hiệu trả về từ cảm biến LM335 là tín hiệu tương tự . Như vậy để xử lý tín hiệu này và cho ra kết quả nhiệt độ tương ứng thì ta cần dùng bộ biến đổi tương tự sang số gọi tắt là ADC. Đầu bài là đo nhiệt độ từ 0 đến 100 C
Như ta đã biết độ phân giải nhiệt độ của LM335 là 10mV/ K nên ta có + Tại 0 C thì điện áp đầu ra tại LM335 là 2.73V
Gọi S là giải điện áp đo của tín hiệu : S = (2.73 – 3.73V) tức là 1V A là giải điện áp của ADC : A = 5V
Ta có trong con Dspic đã tích hợp sẵn bộ khối ADC 10 bit tốc độ cao và trong con Psoc nó cũng tích hợp sẵn bộ ADC 11 bit nên sử dụng bộ ADC này cho mục đích biến đổi. Ta có bước thay đổi của ADC 10 bit :
n = 5 /1024 = 4.9mV (Dspic) n1 = 5/2047 = 2.44mV (Psoc) Sai số tương đối của mạch đo ς= 0.0049/1 = 0.49% (Dspic) ς1 = 0.00244/1 = 0.244% (Psoc) + Tính giá trị nhiệt độ đầu ra
LM335 là cảm biến nhiệt độ , với nhiệt độ đầu ra là 10mV/K Sử dụng bộ biến đổi ADC_10bit :
+ có giá trị lớn nhất là 1024 + với V = V = 5V
+ Bước thay đổi là : (Của Dspic và Psoc)n = 5/1024 = 4.9 (mV) (Dspic) n1 = 5/2047 = 2.44(mV) (Psoc)
Nên tại ở 0 C hay 273K thì điện áp đầu ra LM335 có giá trị là 2.73V Nên tại ở 100 C hay 373K thì điện áp đầu ra của LM335 có giá trị là :
373.10mV/K = 3.73V. Như vậy giải điện áp đầu vào sẽ là (2.73 đến 3.73V) Tính tốn được giá trị ADC đọc được từ Lm335.
V_in = 2.73V =>ADC_value = (1024/5).2.73 = 559 (Dspic) V_in = 3.73V => ADC_value = (1024/5).3.73 = 764 (Dspic) V_in = 2.73V => ADC_value = (2047/5)*2.73 = 1118 (Psoc) V_in = 3.73 => ADC_value = (2047/5)*3.73 = 1527 (Psoc)
Mặt khác do ADC_value = 1 cho ra điện áp tương ứng là 4.9mV (dspic) và 2.44mV (Psoc). Trong khi đó LM335 cho ra điện áp là 10mV/K. Nên do đó để ADC _value thay đổi trong 1 đơn vị thì nhiệt độ phải thay đổi là : (4.9mV/10mV/K) = 0.5K (dspic) và (2.44mV/10mV/K) = 0.244K (Psoc)
Như vậy ta có cơng thức tính đầy đủ ra độ C tương ứng cho cả Psoc và Dspic: t = (ADC_value – 559)* (4.9mV/10mV) = (ADC_value – 559) * 0.49 (Đối với Dspic)
+ Tính giá trị điện trở đệm cho LM355
Muốn áp ra ứng với 10mV/oK thì phải cấp dịng cho nó từ 400uA đến 5mA, vậy phải có điện trở đệm.
LM335. Do điện trở 1.5K khơng có nên ta dùng biến trở để cho điện trở đệm là 1.5K.Điều chỉnh giátrijij điện trở này cho nhiệt độ đúng với giá trị nhiệt độ mẫu.
2.5.3 Cảm biến DS18B20
DS18B20 là IC cảm biến nhiệt độ, chỉ bao gồm 3 chân, đóng gói dạng TO-92 3 chân nhỏ gọn.
Đặc điểm chính của DS18B20 như sau: + Lấy nhiệt độ theo giao thức 1 dây (1wire)
+ Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit, tùy theo sử dụng. Trong trường hợp khơng config thì nó tự động ở chế độ 12 bit.
Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit
+Có thể đo nhiệt độ trong khoảng -55 -> +125°C. Với khoảng nhiệt độ là -10°C to +85°C thì độ chính xác ±0.5°C,±0.25°C ,±0.125°C,±0.0625°C. theo số bít config. + Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép. Người dùng có thể lập trình chức năng này cho DS18B20. Bộ nhớ nhiệt độ cảnh báo không bị mất
trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.
+ Cảm bien nhiệt do DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn có thể kiểm tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp với các IC này.
Với DS18B20 bạn hồn tồn có thể tạo cho mình mạch cảm biến nhiệt độ theo ý muốn.
+ Điện áp sử dụng : 3 – 5.5 V
+ Dòng tiêu thụ tại chế độ nghỉ rất nhỏ.
Tìm hiểu về các lệnh ROM liên quan đến DS18b20 - READ ROM (33h)
Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC. Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không sẽ xảy ra xung đột trên bus do tất cả các thiết bị tớ cùng đáp ứng.
- MATCH ROM (55h)
Lệnh này được gửi đi cùng với 64 bit ROM tiếp theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào. Chỉ có DS1820 nào có 64 bit trên ROM trung khớp với chuỗi 64 bit vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo. Cịn các cảm biến
DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ một xung reset. Lệnh này được sử dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp có nhiều cảm biến một dây.
- SKIP ROM (CCh)
Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ nhớ của DS1820 mà không cần gửi chuỗi mã 64 bit ROM. Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang hiệu quả khi chỉ có một cảm biến.
- SEARCH ROM (F0h)
Lệnh này cho phép bộ điều khiển bus có thể dị tìm được số lượng thành viên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dị tìm.
- ALARM SEARCH (ECh)
Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng. Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến.
chức năng DS1820. Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp (scratchpath) của cảm biến DS1820. khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức năng có thể được mơ tả ngắn gọn như sau:
- WRITE SCRATCHPAD (4Eh)
Lệnh này cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820. Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vào thanh ghi TL (byte 3 của bộ nhớ nháp). Dữ liệu truyền theo trình tự đầu tiên là bit có ý nghĩa nhất và kế tiếp là những bit có ý nghĩa giảm dần. Cả hai byte này phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có dữ liệu khác xuất hiện. - READ SCRATCHPAD (BEh)
Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp. Q trình đọc bắt đầu từ bit có ý nghĩa nhấy của byte 0 và tiếp tục cho đến byte rhứ 9 (byte 8 - CRC). Thiết bị chủ có thể xuất ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc.
- COPYSCRATCHPAD (48h)
Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3) vào bộ nhớ EEPROM. Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu việc đo. - CONVERT T (44h)
Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị phân). Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ nháp Thời gian chuyển đổi không quá 200 ms, trong thời gian đang chuyển đổi nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0. - READ POWER SUPPLY (B4h)
Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một đường dẫn riêng.
b. Cách config độ phân giải cho ds18b20 Sơ đồ bộ nhớ của ds18b20
Các byte thứ 5 của bộ nhớ đệm có chức năng đăng ký cấu hình (config) cho ds18b20, và các bít được tổ chức như sau:
Các bit từ 0 đến 4 ln được đọc giá trị là 1, bít số 7 luôn được đọc giá trị là 0. Cấu hình độ phân giải cho ds18b20 được quyết định bởi R1 và R0 ta có bảng thiết lập như sau.
c. Sơ đồ kết nối cảm biến nhiệt ds18b20 - Sơ đồ khi sử dụng một cảm biến.
- Sơ đồ khi mắc nhiều cảm biến. (Chúng ta cũng chỉ cần 1 dây để lấy mẫu nhiệt độ)
d. Đọc nhiệt độ
Khi bắt đầu chuyển đổi nhiệt độ thì chân DQ sẽ được kéo xuống mức thấp và khi chuyển đổi xong thì ở mức cao.Như vậy ta sẽ căn cứ vào hiện tượng này để xác định khi nào chuyển đổi xong nhiệt độ. Lưu ý luôn phải dùng một điện trở tầm 4.7k trở lên vào chân DQ treo lên nguồn như sơ đồ mắc.
Dưới đây là một ví dụ mẫu đo nhiệt độ bằng ds18b20 hiển thị LCD các bạn tham khảo sẽ hiểu rõ hơn về sử dụng cảm biến này như thế nào. Đồng thời tham khảo thêm datasheet của ds18b20.
2.6.1.Cảm biến LM35
2.7. Thiết bị mạch điều khiển, mạch động lực. Thiết bị bao gồm:
Kit ATMEGA16
Công tắc tơ
Domino
Máy bơm nước
Đường ống dẫn nước
Bộ nguồn biến áp cấp điện cho mạch điều khiển
2.8. Giới thiệu phần mềm codevision
CodeVisionAVR - là một môi trường phát triển tích hợp phần mềm cho vi điều khiển Atmel AVR. Nó cung cấp sự hỗ trợ rộng rãi cho các thiết bị AVR và tạo ra một đoạn mã nhỏ gọn và hiệu quả.
CodeVisionAVR bao gồm các thành phần sau: - Trình biên dịch ngơn ngữ C cho AVR;
- Trình biên dịch hợp ngữ cho AVR;
- Các máy phát điện của mã chương trình ban đầu cho phép khởi tạo thiết bị ngoại vi; - Module giao tiếp với debug board STK-500;
- Terminal.
CodeVisionAVR cho tập tin đầu ra là:
- HEX, BIN hoặc tập tin ROM để nạp vào thiết bị thơng qua lập trình; - COFF - file có chứa thơng tin cho trình gỡ lỗi;
- OBJ - file.
Hiện nay, CodeVisionAVR bao gồm các thư viện và các ví dụ sau đây: - Alphanumeric LCD modules for up to 4x40 characters;
- Philips I²C Bus;
- National Semiconductor LM75 Temperature Sensor;
- Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat; - Philips PCF8563 and PCF8583 Real Time Clocks;
- Maxim/Dallas Semiconductor DS1302 and DS1307 Real Time Clocks; - Maxim/Dallas Semiconductor 1 Wire protocol;
- Maxim/Dallas Semiconductor DS1820/DS18B20/DS1822 1 Wire Temperature - Sensors;
- Maxim/Dallas Semiconductor DS2430/DS2433 1 Wire EEPROMs; - SPI;
libraries;
- Power management; - Delays;
- BCD and Gray code conversion.
Nó hỗ trợ hầu hết các vi điều khiển Atmel AVR. Phiên bản mới thêm hỗ trợ cho vi điều khiển với một kernel ATxmega.
2.9. Tổng kết chương 2.
Chương 2 là toàn bộ cơ sở lý thuyết để thiết kế một Kit điều khiển cho tưới tự động theo nhiệt độ, độ ẩm và thời gian.
+ Chương 2 đã tổng kết lại toàn bộ các cơ sở thực tế cần cho q trình chăm sóc cây trồng. Từ đó, dựa trên cơ sở đó để thiết kế KIT điều khiển phù hợp với qua trình sinh trưởng và phát triển của cây trồng.
Chương 2 cũng đã giới thiệu về các linh kiện và phần mềm để thiết kế,chế tạo ra KIT điều khiển cho hệ thống tưới tự động. Giới thiệu về toàn bộ các thiết bị cần thiết cho việc thiết kế và lắp ráp một KIT hoàn chỉnh.