ในบทช่วยสอนนี้เราจะเชื่อมต่อโมดูลจอยสติ๊กกับไมโครคอนโทรลเลอร์ atmega8 JOY STICKเป็นโมดูลการป้อนข้อมูลที่ใช้สำหรับการสื่อสาร โดยพื้นฐานแล้วทำให้การสื่อสารกับเครื่องของผู้ใช้เป็นเรื่องง่าย จอยสติ๊กแสดงอยู่ในรูปด้านล่าง
โมดูลจอยสติ๊กมีสองแกน - แกนหนึ่งเป็นแนวนอนและอีกอันเป็นแนวตั้ง แกนของจอยสติ๊กแต่ละแกนติดตั้งกับโพเทนชิออมิเตอร์หรือหม้อหรือความต้านทานตัวแปร คะแนนกลางจะลดลงเป็น Rx และ Ry พินเหล่านี้ถือเป็นพินสัญญาณเอาต์พุตสำหรับ JOYSTICK เมื่อแท่งไม้เคลื่อนไปตามแกนแนวนอนโดยมีแรงดันไฟฟ้าอยู่แรงดันไฟฟ้าที่ขา Rx จะเปลี่ยนไป
แรงดันไฟฟ้าที่ Rx จะเพิ่มขึ้นเมื่อเคลื่อนไปข้างหน้าแรงดันไฟฟ้าที่ขา Rx จะลดลงเมื่อย้ายไปข้างหลัง ในทำนองเดียวกันแรงดันไฟฟ้าที่ Ry จะเพิ่มขึ้นเมื่อเลื่อนขึ้นแรงดันไฟฟ้าที่ขา Ry จะลดลงเมื่อเลื่อนลง
ดังนั้นเราจึงมีJOYSTICK สี่ทิศทางบนช่อง ADC สองช่อง ในกรณีปกติเรามี 1Volt ในแต่ละพินภายใต้สถานการณ์ปกติ เมื่อไม้ถูกย้ายแรงดันไฟฟ้าในแต่ละพินจะสูงหรือต่ำขึ้นอยู่กับทิศทาง สี่ทิศทางเป็น (0V, 5V บนช่อง 0) สำหรับแกน x; (0V, 5V ที่ช่อง 1) สำหรับแกน y
เราจะใช้ช่อง ADC สองช่องของ ATMEGA8 ในการทำงาน เราจะใช้ช่อง 0 และช่อง 1
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์: ATMEGA8, แหล่งจ่ายไฟ (5v), AVR-ISP PROGRAMMER, LED (4 ชิ้น), ตัวเก็บประจุ 1000uF, ตัวเก็บประจุ 100nF (5 ชิ้น), ตัวต้านทาน1KΩ (6 ชิ้น)
ซอฟต์แวร์: Atmel studio 6.1, progisp หรือ flash magic
แผนภาพวงจรและคำอธิบายการทำงาน
แรงดันไฟฟ้าทั่ว JOYSTICK ไม่เป็นเส้นตรงอย่างสมบูรณ์ มันจะมีเสียงดัง ในการกรองสัญญาณรบกวนตัวเก็บประจุจะถูกวางไว้บนตัวต้านทานแต่ละตัวในวงจรดังแสดงในรูป
ดังแสดงในรูปมี LED สี่ดวงในวงจร LED แต่ละดวงแสดงถึงแต่ละทิศทางของ JOYSTICK เมื่อแท่งไม้เคลื่อนที่ไปในทิศทางนั้นไฟ LED ที่เกี่ยวข้องจะติดสว่าง
ก่อนที่จะดำเนินการต่อไปเราต้องพูดถึง ADC ของ ATMEGA8
ใน ATMEGA8 เราสามารถให้อินพุตแบบอะนาล็อกไปยังช่องใดก็ได้ของ PORTC สี่ช่องไม่สำคัญว่าเราจะเลือกช่องใดเหมือนกันทั้งหมดเราจะเลือกช่อง 0 หรือ PIN0 ของ PORTC
ใน ATMEGA8 ADC มีความละเอียด 10 บิตดังนั้นคอนโทรลเลอร์สามารถตรวจจับการเปลี่ยนแปลงขั้นต่ำของ Vref / 2 ^ 10 ได้ดังนั้นหากแรงดันอ้างอิงคือ 5V เราจะได้รับการเพิ่มเอาต์พุตดิจิตอลทุกๆ 5/2 ^ 10 = 5mV. ดังนั้นสำหรับทุกๆ 5mV ที่เพิ่มขึ้นในอินพุตเราจะเพิ่มขึ้นหนึ่งครั้งที่เอาต์พุตดิจิตอล
ตอนนี้เราต้อง ตั้งค่าการลงทะเบียนของ ADC ตามเงื่อนไขต่อไปนี้
1. ก่อนอื่นเราต้องเปิดใช้งานคุณสมบัติ ADC ใน ADC
2. ที่นี่จะได้รับแรงดันไฟฟ้าอินพุตสูงสุดสำหรับการแปลง ADC คือ + 5V ดังนั้นเราจึงสามารถตั้งค่าสูงสุดหรือการอ้างอิงของ ADC เป็น 5V
3. คอนโทรลเลอร์มีคุณสมบัติการแปลงทริกเกอร์ซึ่งหมายความว่าการแปลง ADC จะเกิดขึ้นหลังจากทริกเกอร์ภายนอกเท่านั้นเนื่องจากเราไม่ต้องการให้เราต้องตั้งค่าการลงทะเบียนเพื่อให้ ADC ทำงานในโหมดการทำงานฟรีอย่างต่อเนื่อง
4. สำหรับ ADC ใด ๆ ความถี่ของการแปลง (ค่าอนาล็อกเป็นค่าดิจิตอล) และความแม่นยำของเอาต์พุตดิจิตอลจะแปรผกผัน ดังนั้นเพื่อความแม่นยำที่ดีขึ้นของเอาต์พุตดิจิตอลเราต้องเลือกความถี่ที่น้อยกว่า สำหรับนาฬิกา ADC ปกติเรากำลังตั้งค่าการขายล่วงหน้าของ ADC เป็นค่าสูงสุด (2) เนื่องจากเราใช้นาฬิกาภายใน 1MHZ นาฬิกาของ ADC จะเป็น (1000000/2)
นี่เป็นเพียงสี่สิ่งที่เราต้องรู้เพื่อเริ่มต้นใช้งาน ADC
คุณสมบัติทั้งสี่ประการข้างต้นถูกกำหนดโดยการลงทะเบียนสองรายการ:
RED (ADEN): ต้องตั้งค่าบิตนี้เพื่อเปิดใช้งานคุณลักษณะ ADC ของ ATMEGA
BLUE (REFS1, REFS0): บิตทั้งสองนี้ใช้เพื่อกำหนดแรงดันอ้างอิง (หรือแรงดันไฟฟ้าขาเข้าสูงสุดที่เราจะให้) เนื่องจากเราต้องการมีแรงดันอ้างอิง 5V จึงควรกำหนด REFS0 ตามตาราง
สีเหลือง (ADFR): ต้องตั้งค่าบิตนี้เพื่อให้ ADC ทำงานอย่างต่อเนื่อง (โหมดการทำงานฟรี)
PINK (MUX0-MUX3): สี่บิตนี้ใช้สำหรับบอกช่องสัญญาณเข้า เนื่องจากเราจะใช้ ADC0 หรือ PIN0 เราจึงไม่จำเป็นต้องตั้งค่าบิตใด ๆ ตามตาราง
BROWN (ADPS0-ADPS2): บิตทั้งสามนี้ใช้สำหรับตั้งค่า prescalar สำหรับ ADC เนื่องจากเราใช้ prescalar เป็น 2 เราจึงต้องตั้งค่าหนึ่งบิต
DARK GREEN (ADSC): บิตนี้ตั้งค่าสำหรับ ADC เพื่อเริ่มการแปลง บิตนี้สามารถปิดใช้งานได้ในโปรแกรมเมื่อเราต้องการหยุดการแปลง