การเชื่อมต่อ DS1820 และแสดงผลออก 7 segments โดยใช้ Hitech PIC - C ร่วมกับ MPLAB-ICD

ตอนที่ 1 (ชื่อยาวจริงๆ)

คราวนี้ถึงตาภาษา C บ้างแล้วครับ ต้องขอเอ่ยปากไว้ก่อนเลยครับว่า นี่เป็นโปรแกรมภาษา C โปรแกรมแรกของผมเลยครับ (จริงๆ นะ) หลังจากเขียน assembly อยู่นาน เค้าว่าดีนักดีหนา ก็เลยลองซะเลย อ่ะแฮ่ม จะลองดูสิว่า HT-PIC ใช้กับ MPLAB-ICD ได้เจ๋งจริงๆ อย่างที่ฝรั่งเค้าโม้ไว้หรือปล่าว ก็เลยลองทำดูเลยครับ บวกกับอยากรู้เรื่อง 1 wire interface ของ Dallas ก็เลยออกมาเป็น project นี้ครับ

เริ่มด้วย DS1820 หน้าตาเจ้าเป็นยังงัยหนอ

ได้มาครั้งแรกนึกว่า transister ครับมีแค่สามขา ตัวนึงก็แพงเอาเรื่องทีเดียวครับ ไปซื้อที่ Electronic source มา ต่อจากนั้นก็ไปหาโหลด datasheet ครับ ที่ downloads ของ thaimcu มีอยู่ครับ ลักษณะการต่อเข้ากับ pic ผมจะต่อแบบใช้ supply ภายนอกช่วยครับ ดังรูปข้างล่างครับ


ข้อมูลอุณหภูมิที่เราอ่านจาก DS1820 จะมีขนาด 2 bytes ครับ แสดงผลได้ดังตารางข้างล่าง ง่ายๆก็คือ ถ้า byte แรกเป็น 0 แสดงว่าอุณหภูมิเป็น + ถ้าเป็น FFh ก็หมายความว่าอุณหภูมิ เป็นลบครับ

สัญญาณ RESET

ในการเริ่มติดต่อกับ DS1820 เราจะต้องเริ่มด้วยสัญญาณ RESET ก่อนทุกครั้งครับ จากรูปเส้นสีดำคือสัญญาณ RESET จากตัว MCU ครับ ส่วนสีเทาคือ สัญญาณที่ DS1820 จะ RESPONSE กลับมา ความกว้างของสัญญาณนี่ต้องแม่นยำทีเดียวครับผมต้องปรับ delay times หลายครั้งเพราะภาษา C มักจะมีปัญหาเรื่องความแม่นยำของ Delay times ที่เป็นช่วงสั้นมากๆ ซึ่งก็มีจริงๆ อย่างที่ผมคาดไว้

สัญญาณ READ/WRITE

รูปแบบ pattern ชองสัญญาณ READ/WRITE ก็จะเป็นดังรูปครับ สังเกต MIN, MAX time ของ DS1820 SAMPLES นั่นคือเวลาที่ DS1820 ต้องใช้ในการอ่านข้อมูลบิตที่เราส่งให้ เหมือนเดิมครับระวังเรื่อง timing ให้มากๆ เลยครับ

คำสั่งใน DS1820

คำสั่งเพิ่มเติมใน DS1820 ก็มีดังข้างล่างครับ แต่ที่เราจะใช้กันก็คือ คำสั่ง 44h กับ BEh ซึ่งเป็นคำสั่งให้ Convert T และ Read Scratchpad ครับ ยังมี command อีกหลาย command ในระบบ 1 wire ครับ ไว้มีโอกาสผมจะเขียนเป็นบทความครับ

รูปแบบ pattern คำสั่งที่จะส่งไปยัง DS1820

รูปแบบการรับส่งจะเป็นดังตารางข้างล่าง จะเป็นรูปแบบที่ง่ายที่สุด อธิบายเพิ่มเติมนิดนึงครับใน 1 wire component ทุกตัวจะมีรหัสอยู่ครับ ในการติดต่อทุกครั้งเราต้องอ้างรหัสของอุปกรณ์ ตัวนั้นๆ ซึ่งจะมีรหัสไม่เหมือนกันในแต่ละตัว แต่เนื่องจากว่าในตอนนี้เราต่ออยู่เพียงตัวเดียว เราไม่จำเป็นต้องอ้างรหัสนั้นครับ เราก็ใช้คำสั่ง CCh เพื่อข้ามขั้นตอนการอ้างรหัสของอุปกรณ์ที่เราจะติดต่อไปได้เลยครับ

ก็เป็นอันเสร็จแล้วครับตอนนี้ก็ถึงตอนออกแบบวงจรครับผมใช้ Eagle อันนี้ก็ครั้งแรกครับอยากรู้ว่าใช้ได้ดีหรือปล่าว ก็ใช้ได้ดีทีเดียวครับ แต่ยังไม่คล่องเท่าไหร่

ถ้าต้องการดูรูปใหญ่ให้ คลิ๊กที่รูปเลยครับ

ก็เป็นอันว่าจบสำหรับบทความตอนนี้นะครับ คราวหน้าเราจะว่ากันถึงเรื่องการเขียนโปรแกรมครับ

 

 

BACK