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 Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
hôm nay, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
hôm nay, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 22:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 22:14 -
-
Trả lời cho Tự làm máy đo Cuộn cảmbởi bacthoHay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:48 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 21:43 -
-
Trả lời cho các bạn giúp mình về file HEX với!!!bởi bacthoBạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
-
Channel: Vi điều khiển họ 8051
Hôm qua, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 20:43 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Màn của e là LCD , e muốn thay thế bằng màn led thì có cáp chuyển đổi nào thực hiện đc việc đó ko nhỉ, nếu có bác mách e với....
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 16:34 -
Comment