[ บทความ : ทดลองใช้ LTC1298 บนบอร์ด ET-V6 ]

จากบทความ ทดลองสร้าง sensor แสงด้วย LDR อ่านบทความ .. เราจะได้บอร์ด sensor ที่มีหน้าตาดังนี้ครับ

ให้เรานำบอร์ดเสียบเข้ากับพอร์ตของ LTC1298 ดังรูปต่อไปนี้

เรามาลองใช้โปรแกรมตัวอย่างที่มากับบอร์ดกันเลยครับ ... เริ่มต้นกดปุ่ม FUNC แล้วที่ 7-Segment จะแสดงดังนี้

ตอนนี้ให้เรากดแป้น 2 เพื่อเลือกใช้โปรแกรมตัวอย่าง หลังจากนั้นที่ 7-Segment ก็จะเปลี่ยนการแสดงผลออกมาเป็นดังนี้

หลังจากนั้นก็กดแป้น 0 ตามดัวย E

ขั้นตอนสุดท้ายให้เรากดแป้น Inc เพื่อเริ่มต้นทำงาน หลังจากนั้น 7-Segment ก็จะแสดงออกมาดังนี้

เอาล่ะเรามี Sensor กับบอร์ดควบคุมที่พร้อมจะทำงานแล้ว ... มาดูสนามทดสอบกัน (...จริงแล้วก็คือ กระดาษ A4 ที่แปะเทป กาวสีดำเท่านั้นแหละครับ) ... เป็นดังรูปต่อไปนี้ครับ

ว่าแล้ว เราก็เอา sensor ไปตรวจจับเส้นสีดำดูสักหน่อย ... อ้อ ... ผลลัพธ์ออกมาเป็นดังนี้เลย (ค่าที่ได้นี่จะเปลี่ยนแปลงตาม VR ที่เราปรับด้วยนะครับ)

,

คราวนี้มาดูพื้นที่ที่เป็นสีขาวดูบ้าง

,

มาดู source code ของตัวอย่างที่ 15 ของบอร์ด Et-V6 กันดีกว่าครับ




	;
	;***********************
	;      EXAMPLE #15     *
	;     ATOD LTC1298     *
	;***********************
	;
	          CPU   "Z80.TBL"
	          HOF   "INT8"
	
	SCAND     EQU   0104H
	UNPK      EQU   0107H
	SORT      EQU   0115H
	RD_AD12   EQU   0153H
	;
	DISPY     EQU   0BFE7H
	BUF       EQU   0BFEFH
	;
	CLE16     EQU   0132H
	CLX32     EQU   0137H
	CLMP      EQU   0138H
	CLHD      EQU   013CH
	;
	          ORG   8000H

	START:    CALL  READ_AD
	          CALL  CLE16             ;PUSH A/D VALUE TO CLSTK
	          LD    HL,122            ;1.22 mv * 100
	          CALL  CLE16             ;PUSH 122 TO CLSTK
	          CALL  CLMP              ;A/D VALUE * 122
	          CALL  CLHD              ;RESULT CONVERT TO DECIMAL
	          LD    IX,B_DATA         ;ADDRESS OF DATA BUFFER
	          CALL  CLX32             ;POP RESULT TO B_DATA
	;
	          LD    A,(IX+1)          ;SKIP (IX+3) = RESULT / 100
	          LD    (BUF),A
	          LD    A,(IX+2)
	          LD    (BUF+2),A
	          CALL  UNPK
	          LD    IX,DISPY
	          LD    (IX+0),0
	          LD    (IX+1),0
	          SET   7,(IX+2)
	          JR    START
	;
	;***********************
	;       READ A/D       *
	;***********************
	;
	READ_AD:  LD    C,9               ;9 BUFFER
	          LD    IX,BUF_AD         ;ADDRESS OF A/D DATA
	;
	READ_AD1: LD    B,5
	          CALL  SCAND
	          LD    A,0               ;CHANNELL 0
	          CALL  RD_AD12
	          LD    (IX+0),E          ;SAVE DATA
	          INC   IX
	          LD    (IX+0),D
	          INC   IX                ;NEXT BUFFER
	          DEC   C
	          JR    NZ,READ_AD1
	;
	          LD    IY,BUF_AD
	          LD    C,9
	          CALL  SORT
	          LD    IY,BUF_AD+4*2     ;A/D DATA AT BUFFER 5
	          LD    L,(IY+0)
	          LD    H,(IY+1)
	          RET

	          ORG   9000H
	BUF_AD    DFS   2*9
	B_DATA    DFS   4
	          END

ความแตกต่างระหว่าง การใช้ Z80 กับ MCS-51 เท่าที่ผมสังเกตพบก็คือว่า Z80 นั้นทำงานช้ากว่า MCS-51 แต่เวลาที่เราทำหุ่นยนต์นั้น ... เรายังมีขีดจำกัดอีกหลายอย่าง ไม่ว่าจะเป็นเรื่องของความเร็วสูงสุดที่จะเป็นไปได้ (ถ้าเราสั่ง ให้วิ่งเร็วเกินไป นอกจาก motor ทำงานไม่ทันแล้ว ... บางที sensor อาจจะอ่านค่าผิดพลาดอีกด้วย) ... ดังนั้น เลือก ระบบที่เราถนัดนั่นเป็นทางเลือกที่ดีที่สุดครับ ....


เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง : ๑ ก.พ.. ๒๕๔๔