มีนาคม 2553
 
 123456
78910111213
14151617181920
21222324252627
28293031 
 
17 มีนาคม 2553
 

USB กับ คอนโทรลเลอร์

จับไมโครคอนโทรลเลอร์มาต่อ USB
อารัมภีย์ จันทร์ใย
งบประมาณ 1,200 บาท

นี่คือโครงงานที่สนับสนุนการเรียนรู้เพื่อใช้งานไมโครคอนโทรลเลอร์ PIC เชื่อมต่อกับพอร์ต USB เพื่อใช้เป็นแนวทางในการพัฒนาโครงงานไมโครคอนโทรลเลอร์ที่ติดต่อกับพอร์ต USB ได้อย่างกว้างขวาง

เมื่อกล่าวถึงช่องทางในการติดต่อกับอุปกรณ์ภายนอกของคอมพิวเตอร์ผู้พัฒนาจะมีความคุ้นเคยกับพอร์ตต่อเครื่องพิมพ์หรือพอร์ตขนาน (parallel port), พอร์ตอนุกรม (Serial Port) หรือกระทั่งพอร์ตจอยสติ๊ก (joystick) ซึ่งการติดต่อกับพอร์ตทั้งสามที่กล่าวมานั้นได้รับความนิยมสูงจากนักเล่นและนักทดลองไมโครคอนโทรลเลอร์ (มานานมากแล้ว) อย่างไรก็ตามในคอมพิวเตอร์ร่วมสมัยจะมีช่องทางการติดต่ออีกช่องทางหนึ่งที่ได้รับความนิยมสูงมากนั่นคือพอร์ต USB (Universal Serial Port) รวมทั้งในคอมพิวเตอร์โน้ตบุ๊กสมัยใหม่มักจะมีไม่มีพอร์ตอนุกรมหรือพอร์ตขนานมาให้ ดังนั้นการรับส่งข้อมูลกับอุปกรณ์ภายนอกจึงต้องพึ่งพอร์ต USB อย่างไม่มีทางเลือก
สำหรับนักทดลองการนำไมโครคอนโทรลเลอร์มาเชื่อมต่อกับพอร์ต USB โดยตรง (ไม่พิจารณาในกรณีใช้อุปกรณ์แปลงสัญญาณพอร์ต USB เป็นพอร์ตอนุกรม RS-232 ซึ่งทำให้ไมโครคอนโทรลเลอร์ติดต่อได้ในลักษณะเดียวกับพอร์ตอนุกรม) เป็นเรื่องที่ไม่ง่ายนัก เนื่องจากการติดต่อผ่านพอร์ต USB นั้นเป็นการสื่อสารข้อมูลในระบบบัสที่มีลักษณะพิเศษ มีรูปแบบการติดต่อหรือโปรโตคอลที่เป็นระดับชั้น ทั้งนี้เพราะสายสัญญาณของพอร์ต USB มีเพียงสองเส้น แต่สามารถที่จะต่อพ่วงอุปกรณ์ร่วมกันได้มากถึง 128 ตัว (ซึ่งปกติคือเครื่องคอมพิวเตอร์) มีความเร็วในการสื่อสารข้อมูลสูงถึง 480 เมกะบิต่อวินาที ซึ่งแตกต่างจากพอร์ตอนุกรม RS-232 หรือพอร์ตขนานอย่างสิ้นเชิง
ด้วยเหตุนี้ผู้ผลิตไมโครคอนโทรลเลอร์สมัยใหม่จึงพยายามอำนวยความสะดวกแก่นักพัฒนาไมโครคอนโทรลเลอร์เพิ่มมากขึ้น โดยเพิ่มความสามารถพิเศษด้วยการบรรจุโมดูลติดต่อพอร์ต USB ลงไปหรืออย่างน้อยก็มีการนำเสนอตัวอย่างการนำไมโครคอนโทรลเลอร์ของตนไปใช้กับพอร์ต USB (ก็คงต้องเป็นอย่างนั้นอยู่แล้ว) ซึ่งแน่นอนย่อมต้องใช้ความรู้ความเข้าใจไม่น้อย
สำหรับท่านที่ต้องการนำโครงงานนี้ไปพัฒนาเพิ่มเติมต่อไปนั้น ควรจะต้องมีความรู้เกี่ยวกับการเขียนโปรแกรมไมโครคอนโทรลเลอร์ด้วยภาษา C ด้วย เพราะในโครงงานนี้ได้มีการเขียนคำสั่งด้วยภาษา C ในการควบคุมการทำงานของไมโครคอนโทรลเลอร์ โดยในที่นี่ใช้ CCS C Compiler รวมทั้งควรมีความรู้พื้นฐานในการเขียนโปรแกรมประยุกต์บนคอมพิวเตอร์ด้วย ทั้งนี้เนื่องจากการพัฒนาระบบควบคุมอัตโนมัติด้วยไมโครคอนโทรลเลอร์ผ่านพอร์ต USB จำเป็นอย่างยิ่งที่ผู้พัฒนาต้องพัฒนาโปรแกรมทั้งในด้านไมโครคอนโทรลเลอร์ และด้านคอมพิวเตอร์

หลักการและเหตุผล
USB ย่อมาจาก Universal Serial Bus ถ้าแปลแบบตรงตัวก็จะได้ความหมายว่า บัสอนุกรมอเนกประสงค์ มีคุณสมบัติทางเทคนิคโดยสรุปดังนี้
1. สามารถเชื่อมต่ออุปกรณ์หลายๆ ชนิดรวมเข้าสู่คอนเน็กเตอร์ตัวเดียว สูงสุด 127 ตัว (ไม่รวมอุปกรณ์มาสเตอร์)
2. ไม่เกิดการขัดแย้งกันของการเข้าใช้ทรัพยากรของระบบ (IRQ)
3. ตรวจสอบการเชื่อมต่อและตั้งค่าการทำงานต่างๆ อัตโนมัติ ระหว่างที่เครื่องกำลังทำงานอยู่
4. ความเร็วในการถ่ายทอดข้อมูลจะขึ้นอยู่กับมาตรฐาน มีรายละเอียดดังนี้
มาตรฐาน USB 1.0/1.1 มีอัตราในการถ่ายทอดข้อมูลความเร็วต่ำ (low speed) เท่ากับ 1.5 เมกะบิตต่อวินาที (Mbit/sec) และความเร็วเต็มที่ (full speed) เท่ากับ 12 เมกะบิตต่อวินาที (Mbit/sec)
มาตรฐาน USB 2.0 จะมีอัตราเร็วในการถ่ายทอดเพิ่มขึ้นอีก 1 ระดับคือ ความเร็วสูง (high speed) ซึ่งมีความเร็วสูงถึง 480 เมะบิตต่อวินาที
5. ที่ขาของพอร์ต USB มีแรงดันไฟตรง +5V จ่ายออกมาด้วย ทำให้อุปกรณ์ต่อพ่วงที่ใช้พลังงานไม่มากนัก สามารถใช้แรงดันจากพอร์ต USB นี้เป็นไฟเลี้ยงเพื่อทำงานได้ โดยไม่ต้องอาศัยแหล่งจ่ายไฟจากภายนอกเพิ่มเติมอีก แต่กระแสไฟฟ้ารวมต้องไม่เกิน 100 มิลลิแอมป์

การส่งข้อมูลภายในบัส USB 1.0/1.1
USB เป็นการส่งข้อมูลที่อุปกรณ์ทุกๆ ตัวจะต้องส่งสัญญาณรวมกันไปในสายสัญญาณเพียงคู่เดียว ดังนั้นอุปกรณ์ทุกๆ ตัวที่เชื่อมต่อกับบัสจะต้องส่งข้อมูลเรียงลำดับกันไปเพื่อไม่ให้เกิดการชนกันของข้อมูล ทำให้ในช่วงเวลาหนึ่งๆ จะมีข้อมูลวิ่งไปได้เพียงทิศทางเดียวเท่านั้น ไม่สามารถรับและส่งข้อมูลไปในเวลาเดียวกันได้
จังหวะการรับส่งข้อมูลของ USB จะถูกควบคุมจากโฮสต์ (host) ซึ่งก็คือเครื่องคอมพิวเตอร์ที่เป็นจุดรวมของอุปกรณ์ทุกตัวที่เชื่อมต่ออยู่นั่นเอง การรับส่งข้อมูลจะถูกกำหนดเป็นเฟรม โดยทุกๆ 1 มิลลิวินาที (ms) จะเกิดการรับส่งข้อมูลขึ้น 1 เฟรม ในแต่ละเฟรมจะแบ่งย่อยออกเป็นแพ็กเก็ต (packet) เริ่มต้นการทำงานของแต่ละเฟรมโดยโฮสต์จะส่งสัญญาณเริ่มต้นเฟรมหรือ SOF (Start Of Frame) ออกไปเพื่อให้อุปกรณ์ทุกตัวรู้จังหวะการเริ่มเฟรม หลังจากนั้นโฮสต์ก็จะเริ่มส่งหรือรับข้อมูลต่างๆ ตามที่ได้จัดลำดับความสำคัญไว้ โดยอุปกรณ์ต่างๆ ที่อยู่ภายในบัสจะต้องทำงานตามจังหวะที่โฮสต์กำหนดไว้เท่านั้น การส่งข้อมูลกลับไปยังโฮสต์จะสามารถทำได้ก็ต่อเมื่อได้รับการถามหรือร้องขอจากโฮสต์

ซอฟต์แวร์และฮาร์ดแวร์ที่จำเป็นสำหรับระบบ USB มีดังนี้
ส่วนซอฟต์แวร์
1. ไดรเวอร์อุปกรณ์ USB (USB device drivers)
2. ไดรเวอร์ USB (USB driver)
3. ไดรเวอร์โฮสต์คอนโทรลเลอร์ (USB host controller driver)
ส่วนฮาร์ดแวร์
1. USB โฮสต์คอนโทรลเลอร์ (USB host controller) / รูตฮับ (root hub) พูดง่ายๆ ก็เครื่องคอมพิวเตอร์นั่นเอง
2. USB ฮับ (USB hub) อาจไม่มีก็ได้ถ้าจำนวนช่องของพอร์ต USB ที่คอมพิวเตอร์มีมากเพียงพอ
3. อุปกรณ์ USB (USB device) มีให้เห็นมากมายทั้งพรินเตอร์, สแกนเนอร์, ฮาร์ดดิสก์, โมเด็ม, เมาส์, คีย์บอร์ด และแน่นอนบอร์ดทดลองที่กำลังเสนออยู่นี่ก็เป็นหนึ่งในอุปกรณ์ USB

PIC18F4550 ไมโครคอนโทรลเลอร์ USB พระเอกของโครงงานนี้
ไมโครคอนโทรลเลอร์หลักที่นำมาใช้ในโครงงานนี้คือ PIC18F4550 จาก Microchip เนื่องจากภายในไมโครคอนโทรลเลอร์เบอร์นี้บรรจุส่วนติดต่อพอร์ต USB ที่รองรับทั้ง USB1.0/1.1 และ 2.0 คุณสมบัติทางเทคนิคที่น่าสนใจมีดังนี้
คุณสมบัติเด่นของส่วนติดต่อพอร์ต USB
• รองรับทั้ง USB1.0/1.1 และ 2.0
• รองรับการถ่ายทอดข้อมูลความเร็วต่ำ 1.5 เมกะบิตต่อวินาที และความเร็วเต็มที่ 12 เมกะบิตต่อวินาที
• รองรับการถ่ายทอดข้อมูลในแบบคอนโทรล (Control), อินเตอร์รัปต์ (Interrupt), ไอโซโครนัส (Isochronous) และบัลก์ (Bulk)
• รองรับอุปกรณ์ถึง 32 เอ็นด์พอยต์ (16 เอนด์พอยต์ ในกรณี 2 ทิศทาง)
• หน่วยความจำแรม 1 กิโลไบต์ สำหรับส่วนติดต่อ USB เข้าถึงได้แบบคู่ (dual access)
• บรรจุตัวรับส่งข้อมูล USB และวงจรควบคุมแรงดันคงที่
• นำไปใช้เป็นส่วนเชื่อมต่อพอร์ต USB ให้แก่อุปกรณ์ที่ไม่มีส่วนติดต่อพอร์ต USB
• สามารถจัดการข้อมูลพอร์ตขนานเพื่อถ่ายทอดในรูปแบบการจัดการข้อมูลของ USB
คุณสมบัติเด่นของวงจรกำเนิดสัญญาณนาฬิกา
• มี 4 โหมด รวมทั้งวงจรกำเนิดสัญญาณนาฬิกาด้วยคริสตอลแบบเฟสล็อกลูปความเที่ยงตรงสูงสำหรับส่วนติดต่อพอร์ต USB ซึ่งเมื่อใช้งานกับพอร์ต USB ต้องเลือกใช้โหมดของสัญญาณนาฬิกาโหมดนี้
• สามารถเลือกใช้สัญญาณนาฬิกาภายนอกได้ 2 โหมด คาวมถี่สูงถึง 48 เมกะเฮิรตซ์
• วงจรกำเนิดสัญญาณนาฬิกาที่สองใช้ไทเมอร์ 1 ความถี่ 32 กิโลเฮิรตซ์
• สามารถเลือกสัญญาณนาฬิกาของการทำงานปกติของไมโครคอนโทรลเลอร์กับโมดูล USB ให้มีความถี่แตกต่างกันได้
คุณสมบัติของโมดูลเพอริเฟอรัล
• High-current sink/source 25 mA/25 mA
• Three external interrupts
• Four Timer modules (Timer0 to Timer3)
• Up to 2 Capture/Compare/PWM (CCP) modules:
- Capture is 16-bit, max. resolution 6.25 ns (TCY/16)
- Compare is 16-bit, max. resolution 100 ns (TCY)
- PWM output: PWM resolution is 1 to 10-bit
• Enhanced Capture/Compare/PWM (ECCP) module:
- Multiple output modes
- Selectable polarity
- Programmable dead time
- Auto-Shutdown and Auto-Restart
• Enhanced USART module:
- LIN bus support
• Master Synchronous Serial Port (MSSP) module supporting 3-wire SPI™ (all 4 modes) and I2C™
Master and Slave modes
• 10-bit, up to 13-channels Analog-to-Digital Converter module (A/D) with programmable acquisition time
• Dual analog comparators with input multiplexing
คุณสมบัติSpecial Microcontroller Features:
• C compiler optimized architecture with optional extended instruction set
• 100,000 erase/write cycle Enhanced Flash program memory typical
• 1,000,000 erase/write cycle Data EEPROM memory typical
• Flash/Data EEPROM Retention: > 40 years
• Self-programmable under software control
• Priority levels for interrupts
• 8 x 8 Single-Cycle Hardware Multiplier
• Extended Watchdog Timer (WDT):
- Programmable period from 41 ms to 131s
• Programmable Code Protection
• Single-Supply 5V In-Circuit Serial Programming™ (ICSP™) via two pins
• In-Circuit Debug (ICD) via two pins
• Optional dedicated ICD/ICSP port (44-pin devices only)
• Wide operating voltage range (2.0V to 5.5V)


การทำงานของวงจร
เริ่มจากภาคแหล่งจ่ายไฟซึ่งจะได้รับจากแหล่งจ่ายไฟภายนอก (Adapter Power Supply) โดยจะป้อนเข้ามาทาง CON3 โดยจะผ่าน SW4 เพื่อเปิด/ปิดแหล่งจ่ายเพื่อใช้เลี้ยงวงจรหลัง หลังจากที่ SW4 ถูกเปิด แรงดันจะถูกป้อนให้กับ BD1 ซึ่งทำหน้าที่เป็นบริดจ์เร็คติไฟล์เออร์ (Bridge Rectifier) ดังนั้นผู้ใช้จะสามารถป้อนแรงดันแหล่งจ่ายภายนอกได้เลยโดยไม่ต้องคำนึงเรื่องตำแหน่งขั้ว (แต่ต้องระวังเรื่องระดับแรงดันด้วย) หลังจากที่ได้แรงดันจะถูกลดลงเหลือ 5 โวลต์โดย IC1 และเนื่องจากโครงงานนี้สามารถเลือกรับแรงดันได้จากสองแหล่ง คือ แรงดันที่ได้จาก CON3 และแรงดันที่ได้จากพอร์ต USB ซึ่งผู้ใช้สามารถเลือกแหล่งจ่ายได้จาก JP1 หากต้องการใช้แหล่งจ่ายไฟที่มาจากพอร์ต USB ก็ไม่ต้องรับแรงดันจาก CON3 แต่ควรระมัดระวังไม่ให้กระแสรวมทั้งหมดเกิน 100 มิลลิแอมป์ ด้วยสาเหตุที่หนึ่งในคุณสมบัติการทำงานของเครื่องสามารถเชื่อมต่อกับชุดอ่านเขียน SD/MMC Card ได้ ซึ่งในส่วนนี้จำเป็นต้องใช้แรงดัน 3.3 โวลต์ ดังนั้นจึงต้องใช้ IC2 เพื่อลดแรงดันจาก 5 โวลต์ให้เหลือแรงดันขนาด 3.3 โวลต์
สำหรับส่วนประกอบอื่นๆ เพื่อใช้ในการทดลองผู้เขียนขอแบ่งออกเป็นสี่ส่วนดังนี้
1. การเชื่อมต่อกับแอลซีดี ซึ่งจะต่อใช้งานในโหมด 4 บิต โดยใช้พอร์ต D ของไมโครคอนโทรลเลอร์ (IC3) สามารถปรับความเข้มของตัวอักษรที่ปรากฏบนหน้าจอแอลซีดี โดย VR3 และที่ขา 15 ของแอลซีดีจะต่อตัวต้านทาน 10 โอห์มเพื่อจำกัดกระแสที่จ่ายให้กับไฟพื้นหลัง (Black Light) ของตัวแอลซีดี
2. การเชื่อมต่อกับ SW2 และ SW3 โดยที่สองขานี้จะต่อตัวต้านทานพูลอัพ (Pull-Up) ไว้ เพราะฉะนั้นไมโครคอนโทรลเลอร์จะทำงานที่สภาวะสถานะลอจิกต่ำ (Logic Low)
3. การทดลองเกี่ยวกับการใช้งานในส่วนที่เป็นภาคการแปลงสัญญาณอะนาลอกให้เป็นข้อมูลทางดิจิตอล โดยการต่อกับตัวต้านทานแบบปรับค่าได้ ผู้เขียนจะออกแบบไว้สองพอร์ต (RA0, RA1) ซึ่งเป็นการทดลองจะนำค่าที่อ่านได้ส่งข้อมูลมาแสดงผลยังหน้าจอ PC
4. การทดลองเกี่ยวกับการควบคุมการติด/ดับของแอลอีดี (LED1-LED4) ที่ต่อกับพอร์ต RB2, RB3, RB4 และ RB5 โดยจะทำงานที่สถานะลอจิกต่ำ หากต้องการให้แอลอีดีติดสว่างต้องให้สถานะโลจิคต่ำแก่พอร์ตนั้นและหากต้องการให้แอลอีดีดับจะต้องให้สถานะโลจิคสูงแก่พอร์ตนั้น
5. การสร้างสัญญาณเสียงออกทางบัสเซอร์ (Buzzer) ซึ่งจะควบคุมการทำงานโดยพอร์ต RE2 ในการขับบัสเซอร์นั้นจำเป็นต้องต่อผ่านทรานซิสเตอร์ เพราะกระแสที่ได้จากพอร์ตของไมโครคอนโทรลเลอร์นั้นไม่เพียงพอที่จะขับบัสเซอร์ได้โดยตรง
6. การอ่าน/เขียนการ์ดความจำ SD/MMC เนื่องจากขาสัญญาณของการ์ดความจำ SD/MMC จำเป็นต้องใช้แรงดันไม่เกิน 3.3 โวลต์ ดังนั้นจึงต้องมีตัวต้านทานต่อแบบดิไวเดอร์ (Divider) เพื่อลดทอนแรงดัน ยกเว้นที่ขา 7 ของการ์ดความจำ SD/MMC เพราะที่ขานี้ใช้สำหรับส่งข้อมูลออกไป ดังนั้นจึงไม่จำเป็นต้องต่อวงจรลดทอนแรงดัน แต่ต้องมีพูลอัพตัวต้านทาน 10 กิโลโอห์มเข้ากับแรงดันไฟที่ 3.3 โวลต์
a. CS จะเหมือนค่าสัญญาณ Clip Select เพื่อควบคุมการติดต่อกับตัว SC/MMC หากต้องการติดต่อกับตัวการ์ด จะให้สถานะโลจิคต่ำ (Logic Low)
b. MOSI จะเป็นขาสัญญาณ เพื่อคำสั่ง หรือแม้แต่ข้อมูล (Command , Data) ไปยังตัวการ์ด
c. MISO จะเป็นขาสัญญาณ เพื่อรับข้อมูลที่ส่งออกมายังตัวการ์ด
d. SCK เป็นขาสัญญาณนาฬิกาเพื่อป้อนให้กับตัวการ์ด

หากผู้ใช้ต้องการต่ออุปกรณ์ภายนอกเพิ่มเติมจากที่ได้เตรียมไว้ในบอร์ดก็สามารถต่อเพิ่มได้อย่างง่ายดาย เพราะผู้เขียนได้ออกแบบคอนเน็กเตอร์รอไว้แล้ว 2 จุด โดยจุดแรกคือ CON1 โดยที่จุดนี้จะเชื่อมต่ออยู่กับพอร์ต RA2, RA3 และ RA4 และอีกหนึ่งจุดคือ CON2 จะต่อเข้ากับพอร์ต RC0, RC1 และ RC2
สำหรับการโปรแกรมลงบนหน่วยความจำของไมโครคอนโทรลเลอร์จะใช้ขา RB6 และ RB7 ดังนั้นที่ขานี้จึงไม่มีการใช้งานร่วมกับอุปกรณ์ตัวอื่น สำหรับการโปรแกรมจะต่อเข้ากับคอนเน็กเตอร์ชนิด RJ-11 (CON4) โดยสามารถเชื่อมต่อเข้ากับเครื่องโปรแกรมหรือดีบักเกอร์ภายนอก อาทิเช่น ICD2 หรือ Pickit2 ของบริษัท Microchip หรือเครื่องโปรแกรมของบริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด เช่น ICDX-30 หรือ PX-800 เป็นต้น
สำหรับคุณสมบัติของ PIC18F4550 นั้นผู้ผลิตได้ออกแบบมาเพื่อให้สามารถเชื่อมต่อกับพอร์ต USB ของเครื่องคอมพิวเตอร์ได้ โดยมีการกำหนดขาสัญญาณไว้ โดยให้พอร์ต RC4 เป็น D- และ RC5 เป็น D+ ซึ่งผู้เขียนได้เพิ่มตัวต้านทาน 22 โอห์ม เพื่อเป็นการป้องกันหากเกิดการชอร์ตวงจรหรือข้อผิดพลาดอื่นๆ ที่อาจจะทำให้เกิดความเสียหายกับพอร์ต USB ของเครื่องคอมพิวเตอร์ได้




การประกอบ
เนื่องจากผู้เขียนได้ออกแบบแผ่นวงจรพิมพ์สองหน้ามีทองแดงในรู (PTH หรือ Plated Through Hole) การลงอุปกรณ์บนแผ่นวงจรพิมพ์จึงต้องใช้ความระมัดระวังเป็นพิเศษเพราะหากเกิดความผิดพลาดขึ้นการแก้ไขจะทำได้ยากมาก เริ่มด้วยการลงอุปกรณ์ที่มีความเตี้ยมากที่สุดก่อน เช่น ตัวต้านทาน ซ็อกเก็ตไอซี ตัวเก็บประจุ ตามด้วยอุปกรณ์ที่เหลือทั้งหมด
หลังจากที่ลงอุปกรณ์ตามตำแหน่งเรียบร้อยแล้ว ให้สำรวจความถูกต้องอีกครั้ง โดยให้ความสนใจกับอุปกรณ์ประเภทที่มีตำแหน่งขาและขั้วเป็นพิเศษ เพราะหากเกิดความผิดพลาดขึ้นนอกจากจะทำให้วงจรไม่สามารถทำงานได้แล้วอาจจะทำให้อุปกรณ์ตัวนั้นๆ เสียหายได้

ทดสอบการทำงานเบื้องต้น
หลังจากที่ผ่านขั้นตอนการประกอบอุปกรณ์ลงแผ่นวงจรพิมพ์และตรวจสอบความถูกต้องจนแน่ใจว่าไม่มีจุดผิดพลาด จากนั้นให้โปรแกรมข้อมูลลงบนหน่วยความจำของ PIC18F4550 และเลือกตำแหน่ง JP1 ที่อยู่บนบอร์ด เพื่อเลือกตำแหน่งของแรงดันไปที่แหล่งจ่ายไฟภายนอกหรือแรงดันจากพอร์ต USB ซึ่งในขั้นตอนการทดลองนี้จะใช้แหล่งจ่ายภายนอกผ่านทาง CON3 ซึ่งขั้นตอนการทดสอบการทำงานสามารถทำได้ดังต่อไปนี้
เลือกตำแหน่ง SW1 (Switch Power) ไปในตำแหน่ง ON สังกตุแอลอีดี (LED6) จะติดนั่นแสดงว่ามีแรงดันในวงจรแล้ว (แต่หากเลือกตำแหน่งตำแหน่งแรงดันไฟจากพอร์ต USB การเลือกตำแหน่งจะไม่มีผล) โดยในขณะนั้นบัสเซอร์จะเปล่งเสียง “บี๊บ” และที่หน้าจอแอลซีดีจะแสดงข้อความ “J.Nut Test USB” ในบรรทัดที่หนึ่ง และ “EVK PIC18F4550” ในบรรทัดที่สอง หาก LCD ไม่ติดทดลองโดยการปรับค่า VR3 เพื่อเป็นการปรับระดับความเข้มของตัวอักษรที่ปรากฎบนจอแอลซีดี หากไม่มีอะไรปรากฎบนหน้าจอให้ทำการปลดแหล่งจ่ายออกแล้วทำการทดสอบเรื่องการลงอุปกรณ์ใหม่อีกครั้ง
ขั้นตอนต่อไปทำการเชื่อมต่อบอร์ดเข้ากับคอมพิวเตอร์โดยใช้สาย USB ในขณะนั้นให้ผู้ใช้สังเกตที่มุมล่างขวามือที่หน้าจอจอคอมพิวเตอร์ ซึ่งระบบวินโดวส์จะแสดงข้อความ “Hardware New Device” เพื่อแจ้งให้ผู้ใช้งานลงไดรเวอร์ (Driver) ที่ใช้งานร่วมกับบอร์ดที่เราสร้างขึ้น (โดยไดรเวอร์นี้สามารถดาวน์โหลดได้จาก //electronics.se-ed.com) หากทำการติดตั้งตัวไดรเวอร์เรีบร้อยแล้วจะปรากฎหน้าต่างดังรูปที่ 4 

 

หลังจากที่มีการติดตั้งไดรเวอร์เรียบร้อยแล้ว หากคอมพิวเตอร์สามารถติดต่อกับบอร์ด PIC18F4550 ได้ แอลอีดี LED5 (LED Rdy) จะติดสว่างเพื่อบ่งบอกว่าบอร์ดสามารถติดต่อสื่อสารกับคอมพิวเตอร์ได้แล้ว สำหรับการทดสอบการทำงานบนเครื่องคอมพิวเตอร์ ผู้เขียนได้ทดสอบบนระบบปฏิบัติการวินโดวส์ XP และก่อนทำการเปิดไฟล์ทดสอบการทำงาน เนื่องจากผู้เขียนใช้โปรแกรม VC# 2005 ดังนั้นการใช้ Component บางตัวจำเป็นต้องมีการติดตั้ง หากผู้อ่านท่านใดที่มีการติดตั้ง Microsoft Framework 2.0 ก็สามารถใช้งานได้เลย หากเครื่องคอมพิวเตอร์ที่ไม่มีการติดตั้ง Microsoft Framework 2.0 สามารถดาวโหลดได้ที่ //www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=en เมื่อทำการติดตั้งเสร็จเรียบร้อยแล้ว ให้ทำการเปิดไฟล์ Application EXE เพื่อทดสอบการทำงานของบอร์ด โดยจะมีรายละเอียดดังต่อไปนี้



โปรแกรมที่ผู้เขียนใช้ทดสอบนี้จะมีตำแหน่ง Bottom Icon จำนวน 4 ปุ่ม เพื่อเลือกการควบคุมการติดดับของแอลอีดีจำนวนสี่ดวงเช่นกัน กล่าวคือ หากคลิก Bottom Icon ที่ตำแหน่งใดๆ จะมีผลทำให้แอลอีดีที่ตำแหน่งนั้นๆ ติดและเมื่อกดซ้ำอีกหนึ่งครั้งที่ Bottom Icon ตำแหน่งเดิมก็จะทำให้แอลอีดีตัวนั้นดับนั่นเอง
การทดสอบการแสดงผลของแอลซีดี สามารถทดสอบโดยการพิมพ์ตัวอักษรลงในช่อง SEND TEXT (ต้องไม่เกิน 16 ตัวอักษรเพราะแอลซีดีมีขนาด 16 ตัวอักษรต่อบรรทัด) แล้วทำการคลิกปุ่ม “SEND TEXT” จากนั้นข้อความที่ถูกพิมพ์เก่อนหน้านี้ก็จะปรากฎที่แอลซีดีในบรรทัดที่สอง
การทดสอบการทำงานของการรับค่า A/D (Analog to Digital) โดยการปรับการหมุนซ้ายและขวาของตัวต้านทานแบบปรับค่าได้ (VR1 และ VR2) และให้สังเกตุการเปลี่ยนแปลงของระดับบาร์ที่หน้าจอคอมพิวเตอร์
ในส่วนของการทดสอบสภาวะการกด SW1 และ SW2 ให้สังเกตุที่ช่องด้านล่างสุด ซึ่งจะปรากฎข้อความสถานะการกดสวิตช์แต่ละตัว
สำหรับการทดสอบการทำงานของบัสเซอร์จะเป็นลักษณะ ON/OFF เช่นเดียวกับการทดสอบแอลอีดี กล่าวคือ หากคลิก Bottom Icon ที่ตำแหน่งใดๆ จะมีผลทำให้บัสเซอร์ที่ตำแหน่งนั้นๆ ดังและเมื่อกด Bottom Icon ซ้ำอีกหนึ่งครั้งที่ Bottom Icon ตำแหน่งเดิมก็จะทำให้บัสเซอร์ตัวนั้นไม่มีเสียง


สุดท้ายสำหรับการทดสอบการทำงานของการ์ด SD/MMC ซึ่งจะมีสวิตช์เพื่อเลือกอ่านค่าสถานะของการ์ด SD/MMC หากไม่มีการ์ด SD/MMC อยู่ในซ็อกเก็ต ที่หน้าจอแอลซีดีก็จะแสดงข้อความ “SD/MMC Fail” แต่ถ้าหากมีการ์ดอยู่ในซ็อกเก็ต โปรแกรมจะทำการอ่านและแสดงผลที่หน้าจอแอลซีดีเป็นชื่อของการ์ด SD/MMC และค่าความจุที่อ่านได้ในขณะนั้น
สำหรับวิวัฒนาการในเรื่องของไมโครคอนโทรลเลอร์ที่เกิดขึ้นนั้น ไม่ว่าจะเป็นการพัฒนาในเรื่องของความเร็ว ในเรื่องของคุณลักษณะอื่นๆ เช่น การสื่อสาร หรือ หน่วยความจำ เป็นต้น หากเราไม่ศึกษาค้นคว้าไว้ก็อาจจะได้ชื่อว่าเป็นคนล้าหลังคนอื่นเขา แต่อย่างไรผู้เขียนหวังเป็นอย่างยิ่งว่าสิ่งที่ผู้เขียนได้นำเสนอนี้ พอจะเป็นหนึ่งในลู่ทางเพื่อการศึกษาหาความรู้กันต่อไป หากผู้อ่านท่านใดมีความประสงค์ที่จะติชม แนะแนวความคิดสามารถติดต่อผู้เขียนได้ที่ E-mail : arampee@jnutthailand.com และสำหรับคอมไพเลอร์ที่ผู้เขียนใช้สำหรับกำหนดการทำงานของ PIC16F4550 คือ CCS Compiler เวอร์ชัน 3.249 หากใช้เวอร์ชันอื่นที่นอกเหนือจากนี้อาจจะทำให้เกิดปัญหาจากการคอมไพล์ได้ เนื่องจาก CCS เวอ์ชั่น 3.249 นั้นมีการแก้ปัญหาเกี่ยวกับ Bug บน PIC 18F หากใช้เวอร์ชั่นไม่ตรงกับผู้เขียนใช้ หรือเวอร์ชั่นที่เก่ากว่าอาจจะมีปัญหา
สำหรับและที่โครงงานนี้สำเร็จลุล่วงไปด้วยดีก็เนื่องจากได้รับความช่วยเหลือจาก Mr.J1M เจ้าของเว็บไซต์ //www.hobbypic.com จึงขอขอบคุณมา ณ ที่นี้ด้วย

รายการอุปกรณ์
ตัวต้านทานขนาด 1/4 วัตถ์ 5 %
R1,R11,R12 10k 3 ตัว
R2,R3 22 2 ตัว
R4,R8,R9,R10 3.3k 4 ตัว
R5,R6,R7 2.2k 3 ตัว
R13 1k 1 ตัว
R14,R21 10 2 ตัว
R15-R20 220 6 ตัว
VR1-VR3 10k 3 ตัว

ตัวเก็บประจุ
C1-C4,C7 220uF 16V อิเล็กทรอไลต์ 5 ตัว
C5,C6 22pF 50V เซรามิค 2 ตัว
C8 0.1uF 50V โพลีเอสเตอร์ 1 ตัว
C9 47uF 16V อิเล็กทรอไลต์ 1 ตัว

อุปกรณ์สารกึ่งตัวนำ
IC1 7805 1 ตัว
IC2 1587T33 1 ตัว
IC3 PIC18F4550 1 ตัว
Q1 2N4403 1 ตัว
D2 1N4148 1 ตัว
BD1 บริดจ์แบบกลมขนาด 1A 100V 1 ตัว

อื่นๆ
XTAL1 คริสตอล 20MHz 1 ตัว
SW1,SW2,SW3 สวิตช์กดติดปล่อยดับ 3 ตัว
SW4 สวิตช์เลื่อน 3 ขา 1 ตัว
CON1,CON2 คอนเน็กเตอร์ 5 ขา 2 ตัว
CON3 แจ๊คอะแด็ปเตอร์ 1 ตัว
CON4 คอนเน็กเตอร์ RJ-11 1 ตัว
CON5 คอนเน็กเตอร์ USB 1 ตัว
CON6 ซ็อกเก็ตการ์ด SD/MMC 1 ตัว
LCD1 คอนเน็กเตอร์ IDC 16 ขา 1 ตัว
LED1-LED6 แอลอีดีสีแดง 3 มม 6 ตัว
BZ1 บัสเซอร์ 5 โวลต์ 1 ตัว





ที่มา : //www.wara.com/modules.php?name=project&file=showproject&sid=201





 

Create Date : 17 มีนาคม 2553
2 comments
Last Update : 17 มีนาคม 2553 21:20:08 น.
Counter : 7602 Pageviews.

 
 
 
 
สุขสันต์วันเกิดครับ





ให้ชีวิต ๙ กระโดด มั่นคงไปทุก ๙
๙ไป ๙ไป ไม่รู้จบ ๙ผ่านอุปสรรค
๙ข้ามอันตราย ๙ต่อไป
แค่คิดที่จะ๙ ขอให้คุณ๙หน้า
๙ต่อไป ให้คุณสมหวัง
 
 

โดย: ต้นกล้า อาราดิน วันที่: 28 กรกฎาคม 2556 เวลา:9:28:12 น.  

 
 
 
สุขสันต์วันเกิดนะครับ มีความสุขมากๆ คิดสิ่งใดสมปราถนาทุกประการนะครับ
 
 

โดย: fnhero125 วันที่: 28 กรกฎาคม 2556 เวลา:17:33:45 น.  

Name
* blog นี้ comment ได้เฉพาะสมาชิก
Opinion
*ส่วน comment ไม่สามารถใช้ javascript และ style sheet

The wings สู้เพื่อฝัน
 
Location :


[ดู Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 9 คน [?]




[Add The wings สู้เพื่อฝัน's blog to your web]

 
pantip.com pantipmarket.com pantown.com