Các bộ phận: Cảm biến nhiệt độ 1 dây (DS1822)

Các bộ phận: Cảm biến nhiệt độ 1 dây (DS1822)

June 4, 2023 Digital Electronics 0

Tải xuống: buspirate.v0d.zip

Giao thức 1 dây của Dallas / Maxim là sự bổ sung được yêu cầu nhiều nhất cho cướp biển xe buýt. Chúng tôi có một số phần 1 dây, và hôm nay chúng tôi sẽ chứng minh nhiệt kế kỹ thuật số 1 dây DS1822. Lấy biểu dữ liệu (PDF) và tuân thủ cùng.

Xuất bản này đã diễn ra cùng với phát hành V.0d của chương trình cơ sở cướp biển xe buýt cho phiên bản phần cứng 0. Điều này bao gồm thư viện giao thức 1 dây mới, nhiều tùy chọn cấu hình hơn và các cải tiến khác.

DS1822 Khí hậu kinh tế Nhiệt kế kỹ thuật số (Digikey # DS1822 + -Nd, $ 3,87) Chúng tôi đã phát hiện ra một dấu chân trong thư viện 1 dây cho Eagle trên trang tải xuống Cadsoft.

Giao thức 1 dây sử dụng một cáp duy nhất để truyền dữ liệu và đôi khi là nguồn điện. Dữ liệu được truyền theo ‘Slots’ nhạy cảm về thời gian vì không có một đồng hồ riêng biệt để phân định các khoảng thời gian bit.

Bus Pirate.

DS1822.

SDA.

Dq

+ 5Volts.
Vdd.

Đất

Gnd.

Các kết nối DS1822 được hiển thị trong bảng. Chúng tôi sử dụng nguồn cung cấp 5Volt của Bus Pirate để cung cấp năng lượng cho DS1822, tuy nhiên nó cũng hoạt động ở mức 3,3Volts. Một điện trở (R1, ~ 5k) giữ xe buýt cao.

Tất cả các lệnh 1 dây bắt đầu bằng một quy trình đặt lại, được tuân thủ bởi một trong năm lệnh rom.

Yêu cầu
Sự miêu tả

0x33.
Đọc ROM. kiểm tra địa chỉ tiện ích đơn.

0x55.
Phù hợp với rom. Nối địa chỉ tiện ích, được tuân thủ bởi địa chỉ 64 bit.

0xcc.
Bỏ qua ROM. Địa chỉ tất cả các tiện ích với nhau.

0xec.
Tìm kiếm báo động. Duyệt cho điều kiện báo động.

0xf0.
Tìm kiếm rom. một phần của thủ tục liệt kê địa chỉ.

Các lệnh ROM được giải thích trên trang 10 của biểu dữ liệu. Tất cả các lệnh rom được cung cấp dưới dạng macro trong thư viện 1 dây cướp biển, xem (0) cho một menu. Macro lệnh ROM bao gồm quy trình đặt lại 1 dây bus.

Thiết bị duy nhất.

Tất cả các tiện ích 1 dây có địa chỉ 64bit (8 byte) duy nhất và một số tiện ích 1 dây chỉ được sử dụng để cung cấp điện tử một số theo dõi duy nhất. Khi một tiện ích duy nhất được liên kết với bus 1 dây, lệnh ROM được kiểm tra sẽ trích xuất địa chỉ của nó.

1-Dây> {0x33 R: 8 <-Command XXX 1Wire Bus thiết lập lại OK XXX 1Wire Viết: 0x33 <-Read ROM XXX 1Wire Số lượng lớn đọc, 0x08 byte: 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 <-id # 1 dây>

Lệnh gửi thiết lập lại xe buýt ({), lệnh rom đã kiểm tra (0x33) và đọc địa chỉ 64 bit (R: 8, 8 byte * 8bits / byte = 64bits).

Byte đầu tiên (0x22) xác định đây là nhiệt kế DS1822. 6 byte tiếp theo là duy nhất cho thiết bị này và Byte cuối cùng là CRC của 7 byte trước đó.

Bây giờ chúng ta có thể giải quyết tiện ích với lệnh match rom và gửi thêm hướng dẫn.

1 dây> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0x44
XXX 1Wire Bus thiết lập lại OK
XXX 1Wire Viết: 0x55 <-Match ROM Command XXX 1Wire Viết: 0x22 <-Start ĐỊA CHỈ XXX 1Wire Viết: 0x47 XXX 1Wire Viết: 0x45 XXX 1Wire Viết: 0x22 XXX 1Wire Viết: 0x00 XXX 1Wire Viết: 0x00 XXX 1Wire Viết: 0x00 XXX 1Wire Viết: 0x29 XXX 1Wire Viết: 0x44 <-Prart chuyển đổi 1 dây>

Đầu tiên, chúng tôi gửi lệnh match rom (0x55) và địa chỉ tiện ích (8 byte). Tiếp theo là lệnh chuyển đổi T (0x44, biểu dữ liệu trang 11) bắt đầu chuyển đổi nhiệt độ.

Trình tự lệnh thứ hai lấy nhiệt độ đọc từ DS1822.

1-dây> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0xbe R: 9
XXX 1Wire Bus thiết lập lại OK
XXX 1Wire Viết: 0x55
XXX 1Wire Viết: 0x22
… Địa chỉ 1 dây dài …
XXX 1Wire Viết: 0x29
XXX 1Wire Viết: 0xbe <-Read lệnh Scratchpad XXX 1Wire Số lượng lớn đọc, 0x09 byte: 0x71 0x01 0xFF 0x00 0x7F 0xFF 0x0F 0x10 0xF8 1 dây>

Lệnh Cha ScratchPad (0xbe, biểu dữ liệu trang 11) trả về 9 byte. Chúng tôi chỉ quan tâm đến hai byte đầu tiên, phần còn lại có thể được giải mã theo bảng trên trang 7 của biểu dữ liệu. Nhiệt độ được tính theo trang 4 của biểu dữ liệu: 0x0171 hex = 369 tháng 12, 369 * 0,0625 = 23c (74F).

Nhiều thiết bị

Khi một số tiện ích 1 dây chia sẻ xe buýt, việc xác định tất cả các địa chỉ hay khó khăn hơn. Phương pháp nhanh nhất để khám phá các tiện ích được kết nối là với lệnh Duyệt ROM (0xF0) và quy trình phân nhánh nhị phân. Cướp biển xe buýt tự động hóa điều này với macro (240).

1-dây> (240) <-Macro 240 Lệnh xxx 1wire rom: Duyệt (0xf0) Tìm thấy tiện ích tại: Địa chỉ dây macro 1 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a <-Address * DS1822 ECON Dig Therm <-type theo mã gia đình 2.0 × 22 0xd0 0xc7 0x1a 0x00 0x00 0x00 0x01 * DS1822 ECON DIG Therm 3.0 × 22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 * DS1822 ECON Dig Therm Tìm thấy 0x03 thiết bị. 10 ID tiện ích đầu tiên được cung cấp bởi Macro, hãy xem (0). 1 dây>

Lệnh Duyệt ROM hiển thị các tiện ích mà nó tìm thấy và loại theo mã hộ gia đình.

Chúng tôi tin rằng việc gõ 8 byte Địa chỉ 1 byte thực sự tẻ nhạt, do đó, 10 địa chỉ tiện ích đầu tiên được giữ trong bộ nhớ và có thể được truy cập bằng các macro (1) … (10). Một bộ đệm cho 50 địa chỉ tiện ích có thể được xác định trong thư viện 1 dây tại thời điểm biên dịch. Lý tưởng nhất, dữ liệu này sẽ được giữ trong bộ đệm cào trên toàn thế giới được chia sẻ bởi tất cả các mô-đun trong bản cập nhật firmware trong tương lai.

1-Dây> (0) Danh sách Macro <-HOW Menu Menu.Macro Macr.o Địa chỉ 1 dây <Địa chỉ tiện ích được bảo vệ 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0A * DS1822 ECON Dig Therm 2.0 × 22 0xd0 0xc7 0x1a 0x00 0x00 0x00 0x01 * DS1822 ECON Dig Therm 3.0 × 22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 * DS1822 ECON Dig Therm Macro lệnh rom 1 dây: <- lệnh bình thường 51.Read ROM (0x33) * Đối với bus tiện ích đơn 85.Match ROM (0x55) * theo sau là địa chỉ 64 bit 204.skip rom (0xcc) * theo sau là lệnh 236.Alarm Duyệt (0xec) 240.search rom (0xf0) 1 dây>

Menu Macro (0) cũng sẽ bao gồm các địa chỉ tiện ích được giữ trong danh sách. Bây giờ chúng ta chỉ có thể giải quyết các tiện ích bằng macro, thay vì gõ toàn bộ địa chỉ 64 bit mỗi lần.

1-dây> (85) (1) 0x44 <-start chuyển đổi XXX 1Wire Bus thiết lập lại OK XXX 1Wire Soạn lệnh ROM: Match (0x55) * Theo dõi địa chỉ 64 bit XXX 1Wire Địa chỉ Macro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0A XXX 1Wire Viết: 0x44 1-dây> (85) (1) 0xbe R: 9 <-Fetch Reading XXX 1Wire Bus thiết lập lại OK XXX 1Wire Soạn lệnh ROM: Match (0x55) * Theo dõi địa chỉ 64 bit XXX 1Wire Địa chỉ Macro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0A XXX 1Wire Viết: 0xbe XXX 1Wire Số lượng lớn đọc, 0x09 byte: 0x81 0x01 0x4b 0x46 0x7f 0xFF 0x0F 0x10 0x71 1 dây>

(85) là một phím tắt cho một thiết lập lại xe buýt và lệnh khớp rom. (1) là macro địa chỉ tiện ích và 0x44 là lệnh để bắt đầu chuyển đổi nhiệt độ. Lấy màn hình đọc bao gồm các macro chính xác tương tự, tuy nhiên thay thế lệnh để kiểm tra tiện ích (0xbe) và lấy 9 byte (r: 9). Nhiệt độ là 0x0181 hoặc 24C bên cạnh quạt PC.

Lấy thêm nữa

Chúng tôi sử dụng Cướp biển xe buýt để cung cấp một bản trình bày trực quan về giao thức 1 dây, tuy nhiên độ khó thực sự đang tích hợp nó vào thiết kế của riêng bạn. MAXIM cung cấp mã ví dụ, Microchip có một ghi chú ứng dụng (PDF) và bạn có thể kiểm tra mã ví dụ mà chúng tôi đã sử dụng.

Tải xuống firmware: buspirate.vod.zip

Leave a Reply

Your email address will not be published. Required fields are marked *