Nguyên văn bởi nguyenhuuson
Xem bài viết
Thông báo
Collapse
No announcement yet.
Đo nhiệt độ dùng DS18b20! Help!
Collapse
X
-
chào các bạn. mình đang phải làm đồ án về thiết kế mạch đo nhiệt độ cho lò nhiệt trở sử dụng cảm biến nhiệt độ thông minh DS18B20. mong mọi ngưởi giúp mình với.cảm ơn mọi người, xin liên lạc với mình qua địa chỉ mail hetgaoroi_bg9x@yahoo.com
Comment
-
Nguyên văn bởi tranpic Xem bài viếttrời định nhờ tui làm luôn hay sao vậy, trong file tui gửi kèm là gần như xong đồ án của bạn rồi chỉ còn việc báo cháy nữa thôi mà. Còn các vấn đề bạn hỏi thì cứ xem trong datasheet đây, xem chừng nào hiểu thì thôi (người ta đã bỏ công viết datasheet cho bạn rồi mà bạn ko coi à)
gửi lại file đính kèm cho bạn xem nè, mở bằng Proteus (ko mở bằng Orcad được đâu )
Comment
-
bài của bác tranpic cách đây nhiều năm khi thế hệ chúng mình chưa là sinh viên cùng thời bác tranpic chỉ còn bác chung1608 còn lên 4rum chia sẻ kiến thức cho thế hệ bây giờ,bạn lenhoc91 muốn hỏi bác tranpic thì phải hỏi nhiều năm về trước,còn bây giờ thì không biết tìm bác ấy ở đâu
Comment
-
Led 7 đoạn nhấp nháy khi dùng ds18b20
Nguyên văn bởi tranpic Xem bài viếtcái này tui post lên rồi ma, mấy bạn chẳng chịu khó tìm tài liệu j hết mà chỉ lo hỏi không hà, vào đây mà xem(mạch đã chạy ngoài thực tế)
Bộ đo và khống chế nhiệt độ
nếu dùng led 7 đoạn thì sẽ có trường hợp là led bị chớp, do thời gian đọc dữ liệu về, để khắc phục việc này thì cần viết chương trình hoặc sử dụng mạch chốt(cách này dơ do tốn tiền làm phần cứng) tốt nhất dùng lcd mà hiển thị vừa đơn giản vừa ít tốn tiền.
Mình dùng cách khác là bộ timer0 khi làm trên pic16f876A để định kỳ quét led với thời gian là 51,2*(255-105) = 7ms. Nhưng không hiểu sao vẫn bị nhấp nháy.
Phần dữ liệu thì chắc không sai do mình đã hiển thị tốt trên Laptop dùng RS232
Có ai có cao kiến gì giúp mình ko?Attached Files
Comment
-
Nguyên văn bởi vinh1411176 Xem bài viếtMình thấy bác tranpic146668 nói về mạch chốt để led bảy đoạn không bị chớp khi đọc dữ liệu.
Mình dùng cách khác là bộ timer0 khi làm trên pic16f876A để định kỳ quét led với thời gian là 51,2*(255-105) = 7ms. Nhưng không hiểu sao vẫn bị nhấp nháy.
Phần dữ liệu thì chắc không sai do mình đã hiển thị tốt trên Laptop dùng RS232
Có ai có cao kiến gì giúp mình ko?
;===============================DOC_NHIET: ;chuong trinh giao tiep voi cam bien nhiet DS18B20
;===============================
RELOAD:
CALL TEM_BGN ; goi ctrinh con khoi dong DS18B20
MOV A,#4EH ; lenh de ghi TH va TL
CALL WRT_DATA
MOV A,#TH
CALL WRT_DATA
MOV A,#TL
CALL WRT_DATA
LCALL DL_X2 ; DL + CHONG NHAY LED 7SEG
;doc lai noi dung tu DS18B20
CALL TEM_BGN
MOV A,#0BEH ; read Scratchpad
CALL WRT_DATA
; nhan 9 byte du lieu tu DS18B20
CALL GET_9BYTE ;chuong trinh con nhan 9 byte du lieu
; kiem tra lai xem viec ghi TH va TL dung chua?
MOV A, #TH
CJNE A, BYTE2, RELOAD ; TH=Byte2?
MOV A, #TL
CJNE A, BYTE3, RELOAD ; TL=Byte3?
LCALL DL_X2 ; DL + CHONG RUNG LED
; viec ghi TH va TL hoan tat va da duoc kiem tra dung, ghi TH va TL vao EEPROM
; cho DS18B20 ghi vao EEPROM, nen cho DQ high > 10us
CALL TEM_BGN
MOV A,#48H
CALL WRT_DATA ; copy Scratchpad vao EEPROM
SETB DQ
LCALL DL_X2 ; DL + CHONG RUNG LED
; yeu cau DS18B20 thuc hien viec do nhiet do
CALL TEM_BGN
MOV A,#44H ; convert T
CALL WRT_DATA
; cho DS18B20 do nhiet do, nen set DQ high tren 750ms
LCALL DL_X2
LCALL DL_X2
; doc lai gia tri nhiet do tu DS18B20
CALL TEM_BGN
MOV A,#0BEH ; read Scratchpad
CALL WRT_DATA
; nhan 9 byte du lieu tu DS18B20
CALL GET_9BYTE
LCALL DL_X2
;chuyen doi gia tri nhiet do trong BYTE0 va BYTE1 thanh nhiet do.
CALL DECODE_T
RET
DL_X2: ;240us
LCALL HIEN_THI
LCALL HIEN_THI
RET
Last edited by pctcom; 29-05-2012, 19:05.PCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
Theo mình nhận thấy timer ở trong các đoạn code cần nhiều thời gian như ds18b20 sẽ làm thời gian bị giãn ra hay sao đó. Nên mình chuyển sang cách thủ công hơn là làm một hàm quet_led() để chèn vào trong khi ds18b20 đang chuyển đổi nhiệt độ. Hiệu quả khá rõ. Sau đó mình chèn thêm một vài nơi nữa, nhưng tránh ở các chỗ đang read hay write hay đang làm phép toán. Tuy nhiên có vẻ cũng còn nhấp nháy khi nhìn lâu! Mình sẽ cải tiến tiếp, sau đó lại post lên.
Comment
-
Nguyên văn bởi vinh1411176 Xem bài viếtUhm, từ khi làm quen pic đến nay mình chỉ dùng C, bạn có thể giải thích giúp mình đoạn code "LCALL DL_X2" có tác dụng gì không? Theo như mình tính thì cứ mỗi 7ms chạy chương trình ngắt để quét 6 led 7 đoạn thì có ổn?
DL_X2: ;240us
LCALL HIEN_THI
LCALL HIEN_THI
RETPCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
Nguyên văn bởi vinh1411176 Xem bài viếtTheo mình nhận thấy timer ở trong các đoạn code cần nhiều thời gian như ds18b20 sẽ làm thời gian bị giãn ra hay sao đó. Nên mình chuyển sang cách thủ công hơn là làm một hàm quet_led() để chèn vào trong khi ds18b20 đang chuyển đổi nhiệt độ. Hiệu quả khá rõ. Sau đó mình chèn thêm một vài nơi nữa, nhưng tránh ở các chỗ đang read hay write hay đang làm phép toán. Tuy nhiên có vẻ cũng còn nhấp nháy khi nhìn lâu! Mình sẽ cải tiến tiếp, sau đó lại post lên.PCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
Đã khắc phục được
Thanks bạn, mình đã dùng lại timer và đã khắc phục được hiện tượng nhấp nháy trên.
Đây là code dùng C của mình, PIC 16F876A
Code:#include "DS18B20 on led 7 segment.h" #include "1-wire.c" int8 const bangso_led[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; int8 const bangso_led_dot[10] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; signed int16 temperature, temperature2; int8 i, j, led[7]; #int_TIMER0 void TIMER0_ISR() { set_timer0(100); // Set timer0 tu 80 tro len quet_led(); } signed int16 ds1820_read() { int8 busy=0, temp1, temp2; signed int16 temp3; onewire_reset(); onewire_write(0xCC); onewire_write(0x44); while (busy == 0) { busy = onewire_read(); } onewire_reset(); onewire_write(0xCC); onewire_write(0xBE); temp1 = onewire_read(); temp2 = onewire_read(); temp3 = make16(temp2, temp1); return(temp3); } void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); set_timer0(100); enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER0); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); //TODO: User Code led[6] = 0xFF; led[2] = 0x9C; led[1] = 0xC6; while(true) { temperature = ds1820_read(); if (bit_test(temperature,15)) { led[6] = 0xBF; temperature = ~(--temperature); } else { led[6] = 0xFF; } temperature2 = temperature >> 4; led[5] = bangso_led[(temperature2*10)/100]; led[4] = bangso_led_dot[((temperature2*10)%100)/10]; led[3] = bangso_led[((temperature & 0x000F)*10)>>4]; } }
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho tìm mua đồng hồ vạn năngbởi matnetgia99Ồ, cái này mình cũng có nè, có ai mua không, đồ cũ dùng từ năm 2008, hư 1 2 giai gì đấy bỏ xó hơn năm nay...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 14:40 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80À, sản phẩm họ thiết kế ra, họ yêu cầu mình chứng minh là sau chỉnh sửa thì 1 là gỡ jump cắm lại không hư mạch, 2 là gỡ jump thì 220Vdc vẫn dùng được led áp thấp 20V mà không hư led như mình báo, nên họ hiểu rõ mà....
-
Channel: Điện tử công suất
Hôm qua, 06:08 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Tôi biết và tôi biết.
Sẽ bắt đầu với cái Sồn La, rồi mấy mạch nguồn vớ vỉn.... Rồi sẽ đèn led...
Cuộc đời là những chuyến xe, nên sẽ có:
Xe đạp điện, xe máy điện, xe ô tô điện, xe cấp cứu điện, xe tang điện.
Rồi xem.-
Channel: Điện tử công suất
Hôm qua, 01:38 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vấn đề là thu ánh sáng rồi phát ra ánh sáng cơ. Hồi mẫu giáo cô bảo đừng làm, lão không nhớ à?
Tốt nhất im mồm....-
Channel: Điện tử công suất
Hôm qua, 01:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietBài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
-
Channel: Tâm tình dân kỹ thuật
14-02-2025, 16:15 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanỞ đtvn này mới biết đến 2 loại mạch
1 step down
2 step up
Bây giờ anh lưu vong làm thuê bên nước lạ còn làm ra cái mach vừa up vùa dow luôn.
Tính chất là:
1 Đầu vào bằn ra cho nối thẳng
2 Đầu vào cao hơn...-
Channel: Điện tử công suất
14-02-2025, 00:51 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanHa ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....-
Channel: Điện tử công suất
14-02-2025, 00:42 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
-
Channel: Điện tử công suất
13-02-2025, 17:02 -
-
Trả lời cho Tiếng Anh cho người Việtbởi hankhungdtMình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
-
Channel: Tâm tình dân kỹ thuật
13-02-2025, 08:43 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi ti500Chúc mừng bác đã chỉnh sửa thành công, nhưng theo em thì video hơi rối nếu bác muốn gửi cho bên supplier xem.
Nếu là em thì em chỉ cần nối dây để hiển thị liên tục điện áp ở ngõ ra là 220Vdc trước khi gắn LED, kế đến là cắm...-
Channel: Điện tử công suất
13-02-2025, 07:39 -
Comment