Mình tình cờ biết được có giao thức truyền và điều khiển qua giao tiếp 1 dây, thấy có nhiều ứng dụng rất hữu ích vì nó có thể giảm chi phí và độ phức tạp khi thiết kế mạch. Đọc mãi datasheet của mấy con 1-wire và cả mấy bản hướng dẫn search mà không hiểu được làm sao có thể qui định ID cho từng con và các con slave tránh được xung đột trên đường truyền. Ai đã từng làm hay tìm hiểu về giao thức này, có thể cho xin chút chia sẻ được không ?
Thông báo
Collapse
No announcement yet.
[UNI/O] Giao tiếp 1 dây (1-wire interface)
Collapse
X
-
Ờ hơ, cuối cùng cũng hiểu sơ sơ vài vấn đề, hóa ra ID của mỗi con đc nhà sản xuất khắc sẵn trong chip,mình chỉ cần đọc và sử dụng giá trị đó là đc.
Lúc đầu không hiểu rõ tưởng là chỉ 1 bus mà có thể định địa chỉ cho từng con trên một bus (cứ nghĩ mãi làm thế quái nào đc ?!)
Mình tải file đã search đc lên, anh em ai có hứng thì tìm hiểu. Quả thật là code thì đầy, nhưng mà ko hiểu thì cũng chịu ! Giờ thì yên tâm rùiAttached Files
-
Nguyên văn bởi thientaisodo Xem bài viếtỜ hơ, cuối cùng cũng hiểu sơ sơ vài vấn đề, hóa ra ID của mỗi con đc nhà sản xuất khắc sẵn trong chip,mình chỉ cần đọc và sử dụng giá trị đó là đc.
Lúc đầu không hiểu rõ tưởng là chỉ 1 bus mà có thể định địa chỉ cho từng con trên một bus (cứ nghĩ mãi làm thế quái nào đc ?!)
Mình tải file đã search đc lên, anh em ai có hứng thì tìm hiểu. Quả thật là code thì đầy, nhưng mà ko hiểu thì cũng chịu ! Giờ thì yên tâm rùi
Bạn có làm mạch đo nhiệt độ dùng ds1820 với 8951 chưa, Mình rất muốn làm cái này nhưng kien thức của mình cũng ít lắm, cũng chỉ biết chút xíu thôi, nếu bạn đã nghiên cứu và làm qua rồi, bất cứ mạch gì dùng chuẩn 1 wire này cũng được, xin hướng dẫn lại giứp mình,mình cảm ơn ban nhiều.
Comment
-
KHông biết các bạn đã làm được với con này chưa, mình có thư viện cho con này rồi, mình thấy con này hay phết, tuy đắt một chút nhưng mà nhạy, chính xác và khả năng mở rộng cao, gửi các bạn lib con này, khi cắm con này vào mạch, chỉ cần search rom của nó, ghi lại 8bytes địa chỉ và dùng hàm read_multi_temp(* địa chỉ rom) là nó trả về.
Trong file đính kèm có cả thư việ lcd luôn, nhưng mà làm với pic, mình lâu lắm ko dùng 89 nên ko có, nếu bạn nào có thể dịch code c ra cho các con khác thì ok.
good luck!Attached Files
Comment
-
Chào các bạn!
Mình mới vào chuyên ngành nên hơi bỡ ngỡ một chút. Mình đang tìm hiểu về giao thức onewire. Tình cờ đọc trong diễn đàn có bài biết về con DS18B20 này. Mình đọc code mà không hiểu lắm. Dưới đây là đoạn code của nó:
//chuong trinh con cho ds18b20
#include<reg8252.h>
#include<stdio.h>
sbit DQ = P2^0; // connect with DS1820 Data pin
void DelayMs(unsigned int count)
{ // mSec Delay 11.0592 Mhz
unsigned int i; // Keil v7.5a
while(count) {
i = 115;
while(i>0) i--;
count--;
}
}
void DelayUs(int us)
{
int i;
for (i=0; i<us; i++);
}
// Reset DS1820
bit ResetDS1820(void)
{
bit presence;
DQ = 0; //pull DQ line low
DelayUs(29); // leave it low for about 490us
DQ = 1; // allow line to return high
DelayUs(3); // wait for presence 55 uS
presence = DQ; // get presence signal
DelayUs(25); // wait for end of timeslot 316 uS
return(presence); // presence signal returned
} // 0=presence, 1 = no part
// Read one bit from DS1820
bit ReadBit(void)
{
unsigned char i=0;
DQ = 0; // pull DQ low to start timeslot
DQ=1;
for (i=0; i<3; i++); // delay 17 us from start of timeslot
return(DQ); // return value of DQ line
}
// Write one bit to DS1820
void WriteBit(bit Dbit)
{
unsigned char i=0;
DQ=0;
DQ = Dbit ? 1:0;
DelayUs(5); // delay about 39 uS
DQ = 1;
}
// Read 1 byte from DS1820
unsigned char ReadByte(void)
{
unsigned char i;
unsigned char Din = 0;
for (i=0;i<8;i++)
{
Din|=ReadBit()? 0x01<<iin;
DelayUs(6);
}
return(Din);
}
// Write 1 byte
void WriteByte(unsigned char Dout)
{
unsigned char i;
for (i=0; i<8; i++) // writes byte, one bit at a time
{
WriteBit((bit)(Dout & 0x1)); // write bit in temp into
Dout = Dout >> 1;
}
DelayUs(5);
}
// Read temperature
void ReadTemp(unsigned char * buff)
{
unsigned char n;
EA=0; // disable all interrupt
ResetDS1820();
WriteByte(0xcc); // skip ROM
WriteByte(0x44); // perform temperature conversion
while (ReadByte()==0xff); // wait for conversion complete
ResetDS1820();
WriteByte(0xcc); // skip ROM
WriteByte(0xbe); // read the result
for (n=0; n<9; n++) // read 9 bytes but, use only one byte
{
buff[n]=ReadByte(); // read DS1820
}
EA=1;
}
Còn đây là chuơng trình chính
#include<reg8252.h>
#include<stdio.h>
#include<ds1820.h>
unsigned char MyTemp[9];
// Main program
void main(void)
{
unsigned char tp,tpd,i;
while(1)
{
ReadTemp(&MyTemp[0]);
tp = MyTemp[0] >> 1;
tpd = ((MyTemp[0] >> 1)&1) ? 5:0;
DelayMs(200);
}
}
Thắc mắc của mình là sau khi chạy chuơng trình, giả sử nhiệt độ đo được là 38 độ thì các biến tp và tpd có giá trị bằng bao nhiêu?
Cám ơn các bạn!
Comment
-
Nguyên văn bởi techfirepro Xem bài viếtanh cho em xin số điện thoại của anh đc ko ạ?
poohnhonha@gmail.com
à, nói lun là mình dùng codevision, nên nó được hỗ trợ hàm gần như toàn bộ cho cảm biến này , nếu bạn cũng dùng chương trình này thì nên đọc kỹ phần HELP(F1) của ch trình, nó ghi rất dễ hiểu và cụ thể, nếu làm không được nữa thì mail cho mình những thắc mắc của bạn, mình sẽ giúp hết khả năng có thể
chúc bạn thành công!
Comment
-
-
Nguyên văn bởi thientaisodo Xem bài viếtHic hic, hình như chẳng có ai có hứng thú tìm hiểu chuẩn này thì phải, cuối cùng sau mấy ngày lọ mọ vừa code vừa đọc vừa tra từ điển thì cũng ok rùi , ngủ phát đã
bằng chuẩn giao tiếp modbus rtu trên rs485.
thì lúc mình đọc nhiệt độ DS18B20 ở slave thì có dùng giao tiếp ONE WIRE để truyền dữ liệu nhiệt độ về slave không anh nhỉ?
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nhathung1101Lão Đinh Vặn học giải phương trình hồi đi trẻ mà. Mẫu giáo học lập trình AI rồi. Lớp lão ấy gần lớp em nên em biết....
-
Channel: Điện tử công suất
26-01-2025, 23:11 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vậy chú đã hỏi hãng SIEMEN chưa? Tại sao cái PLC S7-200 cổ lỗ mà họ vẫn thiết kế riêng cho thị trường TQ với chữ SMART? Thậm chí phần mềm riêng để đọc file ngu.smart?
Vấn đề không còn là công nghệ "cốt lõi" nữa, mà là giá thành quyết định. Ham rẻ là trả giá mà....-
Channel: Điện tử công suất
26-01-2025, 23:01 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamĐồng ý với Bqv.
50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
- Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...-
Channel: Điện tử công suất
26-01-2025, 08:09 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
-
Channel: Điện tử công suất
26-01-2025, 06:19 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietCuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
-
Channel: Điện tử công suất
24-01-2025, 19:40 -
Comment