ฉันควรใช้ไมโครคอนโทรลเลอร์ชนิดใด


10

ฉันพยายามค้นหาแพ็คเกจคอนโทรลเลอร์ไมโครที่ดีที่สุดสำหรับโปรแกรมคอมพิวเตอร์ของฉันเพื่อสื่อสารกับโลกแห่งความจริง ฉันหวังว่าหมุด I / O จำนวนมาก (จนถึง 64 ดิจิตอลเป็นสิ่งที่ฉันต้องการไม่มีอะไรที่น่าประหลาดใจอย่างอะนาล็อกและ PWM) ที่ฉันสามารถอ่านและเขียนโดยตรงโดยการเรียกฟังก์ชั่นจากโปรแกรมของฉันที่ทำงานบน CPU

ฉันไม่ต้องการดาวน์โหลดโปรแกรมไปยังตัวควบคุมขนาดเล็กเพื่อให้ทำงานได้ แต่ฉันต้องการสิ่งที่เพียงแค่เสียบเข้ากับ USB ของฉันและให้ CPU จำนวนมากที่ควบคุม I / O pin ที่ฉันสามารถควบคุมได้จากโปรแกรม C ++ ของฉัน

แพคเกจไมโครคอนโทรลเลอร์ที่ดีที่สุดสำหรับฉันจะเป็นอย่างไร? ฉันหวังว่าจะมีบางสิ่งที่ค่อนข้างไม่แพง แต่มีข้อพิสูจน์ในอนาคตเนื่องจากมันทำงานบน USB และมีไดรเวอร์ 64- บิตสำหรับระบบปฏิบัติการที่ทันสมัยเช่น Windows 7 ความสามารถในการเชื่อมต่อมากกว่าหนึ่งในคอนโทรลเลอร์ไมโครคอนโทรลเลอร์เหล่านี้ด้วยโปรแกรมคอมพิวเตอร์เดียวกัน โบนัสที่ดีเช่นกัน (การขยายตัวในอนาคต)

แก้ไข: ฉันไม่ต้องการอัตราการสุ่มตัวอย่างสูง (อาจจะ 10 Hz สำหรับการอ่านอินพุต, 1 kHz สำหรับสัญญาณขาออก) และหมุดส่วนใหญ่ใช้สำหรับเอาต์พุตเท่านั้น ฉันทำงานกับคอมพิวเตอร์ใหม่เอี่ยม (คอร์ i7 860) ดังนั้นแม้ว่าการสุ่มตัวอย่างจะไม่มีประสิทธิภาพหรือช้าไปหน่อยมันก็น่าจะโอเค (มีเพียงหนึ่งเธรดที่ทุ่มเทให้กับ I / O และให้โปรแกรมหลักสื่อสารกับมัน)

ฉันไม่ต้องการหมุด I / O 64 ตัวทั้งหมดบนแพ็คเกจไมโครคอนโทรลเลอร์ชุดเดียว หากฉันสามารถเชื่อมต่อแพ็คเกจคอนโทรลเลอร์ไมโครคอนโทรลเลอร์จำนวนมากได้ในเวลาเดียวกันมันก็ใช้ได้เหมือนกัน (อันที่จริงแล้วมันจะเหมาะอย่างยิ่งที่จะสามารถเชื่อมต่อแพ็คเกจไมโครคอนโทรลเลอร์ขนาดเล็กจำนวนมากได้นั่นหมายความว่ามันง่ายต่อการขยาย)

ฉันเคยดูที่: http://www.schmalzhaus.com/UBW32/index.html

มีใครเคยมีประสบการณ์กับสิ่งนี้บ้างไหม? ความคิดใด ๆ ถ้ามันจะทำงานหรือไม่? ข้อกังวลหลักคือมันเป็นไมโครคอนโทรลเลอร์ที่ใช้งานโปรแกรมไม่ใช่ CPU ของฉัน


1
คุณต้องการอัตราข้อมูลใด
Kevin Vermeer

@reemrevnivek: ฉันคาดว่าฉันจะต้องมีอัตราการสุ่มตัวอย่าง 10 Hz สำหรับอินพุตและ 1 kHz สำหรับเอาต์พุต I / O ช้ามาก
2010

ในกรณีของคุณโครงการที่คุณพบอาจทำงานได้ค่อนข้างดี มันเป็นระบบที่รวมกันแล้ว (ไม่จำเป็นต้องใช้การบัดกรีเป็นสิ่งที่ดีเสมอไป) และดูเหมือนว่าจะมีเฟิร์มแวร์พื้นฐานมากที่จะให้คุณเข้าถึงพอร์ตทั้งหมดที่คุณต้องการ อัตราการสุ่มตัวอย่างต่ำหมายความว่าการเชื่อมต่อแบบอนุกรมจะทำงานได้ดีพอสมควร 40 $ จะไม่ล้มละลายคุณใช่ไหม ถ้าเป็นเช่นนั้นให้ลองก่อนที่จะดูวิธีแก้ปัญหาที่แพงกว่า
Wouter Simons

คำตอบ:


4

Faken,

UBW32 เป็นวิธีที่ดีมากในการไปจากสิ่งที่ฉันสามารถบอกได้ถึงความต้องการของคุณ มันจะรองรับสิ่งที่คุณต้องการตราบใดที่คุณใช้ได้กับ 3.3VI / O (บางตัวรองรับ 5V แต่ไม่ใช่ทั้งหมด) มันราคาไม่แพง ($ 40) และง่ายที่จะพูดคุยกับการใช้ภาษาที่รองรับ พอร์ตอนุกรม (ซึ่งสวยมากของพวกเขาทั้งหมด - พื้นฐาน, C, C #, การประมวลผล ฯลฯ )

คุณสามารถใช้พิน I / O 76 เป็นอินพุตหรือเอาต์พุต เฟิร์มแวร์หุ้นที่จัดส่งจะช่วยให้คุณทำสิ่งที่คุณต้องการโดยไม่จำเป็นต้องเขียนโปรแกรมทางด้านฝัง การรับข้อมูลที่สูงถึงพีซีผ่าน USB (ที่ 10Hz เท่านั้น) จะไม่มีปัญหา การรับเอาต์พุตไปที่ 1KHz อาจจะใช้ได้ดีเช่นกัน

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

* ผู้สร้าง Brian Schmalz UBW32


คณะกรรมการที่ดีนาย Schmalz
Wouter Simons

นี่คือการปลอบโยนที่ท้าทาย เป็นวิศวกรเครื่องกลเพื่อเริ่มต้นและรู้เพียงเล็กน้อยเกี่ยวกับการเขียนโปรแกรมและแม้แต่น้อยเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์ แพลตฟอร์มที่สร้างไว้ล่วงหน้าซึ่งเชื่อมต่อกับ C / C ++ เป็นสิ่งที่ฉันต้องการอย่างแท้จริง ขอบคุณสำหรับความช่วยเหลือของคุณ!
Faken

9

ฉันแนะนำTeensy ++ 2.0 (หรือบอร์ดพัฒนา AT90USB1286 อื่น ๆ )

แฟลช 128KB, 8KB RAM, 46 I / O พิน, 8 อินพุตแบบอะนาล็อก

$ 24

บอร์ด Teensy นั้นใช้พลังงานจาก USB และสามารถให้พอร์ต COM เสมือน (คลาสอุปกรณ์สื่อสาร USB) คุณสามารถใช้ประโยชน์จากลิงค์อนุกรมนี้สำหรับโปรโตคอลการควบคุมพินของคุณ สิ่งนี้ทำงานได้โดยไม่ต้องมีไดรเวอร์ที่กำหนดเองบน Windows, OSX และ Linux

ในการสร้างเฟิร์มแวร์ควบคุมพินมีTeensyDuinoหรือ C เก่าแบบธรรมดา

เมื่อทำการกระแทกบิตคอขวดจะเป็นอินเตอร์เฟส USB ของไมโครคอนโทรลเลอร์ ดังนั้นคุณอาจต้องการเปลี่ยนโปรโตคอลเช่น I2C และ SPI ลงไปที่ไมโครคอนโทรลเลอร์ สำหรับสิ่งนี้คุณสามารถใช้Bus Ninjaของฉันได้

การเพิ่ม Teensies เพิ่มเติมในการตั้งค่าของคุณนั้นง่ายคุณเพียงแค่ต้องมีพอร์ต USB หนึ่งพอร์ตต่ออุปกรณ์โดยแสดงพอร์ต COM เสมือนหนึ่งพอร์ตต่ออุปกรณ์

(หมายเหตุวิธีการนี้จะทำงานได้ดีพอ ๆ กันกับโปรเซสเซอร์ ARM ทั้งหมดและอื่น ๆ ฉันไม่ทราบว่าบอร์ดการพัฒนาราคาถูกใด ๆ พร้อมซอฟต์แวร์ที่มีอยู่)

อีกวิธีหนึ่งคือการใช้ Arduino และCaterpillar Shieldเพื่อขยาย I / O บนกระดานที่กำหนดเองฉันสร้างขึ้นด้วย I / O expander ตัวเดียวฉันสามารถอัพเดต 256 เอาต์พุตที่มากกว่า 1KHz


4

ผมคิดว่าสิ่งที่คุณต้องการไม่ได้เป็นไมโครคอนโทรลเลอร์ แต่สิ่งที่ต้องการบัตรตราสารแห่งชาติ PCI-6509 I / O คุณสามารถรับรุ่น USB ได้เช่นกัน แต่มี I / O น้อยกว่า PCI-6509 National Instruments จะขายไดรเวอร์ C ++ ให้คุณเช่นกัน

ถ้ารูปลักษณ์ที่มีราคาแพงเกินไปคุณอาจจะลองสิ่งที่ต้องการU3 Labjack


ฉันใช้แล็บแจ็คแล้วมันจะทำให้คอมพิวเตอร์ของคุณช้าลงจริง ๆ ถ้าคุณทำอะไรที่หนักหนาสาหัสกว่า (อัตราการสุ่มตัวอย่างที่สูงขึ้น) แต่มันก็เป็นการดีสำหรับตรรกะอย่างง่ายของอัตราตัวอย่างช้า ระบบ NI นั้นยอดเยี่ยม แต่แพ็คเกจซอฟต์แวร์นั้นแพงเกินไปสำหรับใช้ในบ้าน (อย่างน้อยสำหรับใช้ในบ้านของฉัน)
Wouter Simons

4

โซลูชันที่คุณอธิบายไม่มีอยู่สำหรับราคาที่ต่ำกว่า ปัญหาคือคุณต้องการเรียกใช้ซอฟต์แวร์ควบคุมบนระบบที่ไม่ได้ออกแบบมาให้ พอร์ตอนุกรม 64 พอร์ตและส่งผ่าน USB ด้วยอัตราการสุ่มตัวอย่างสูงจะทำให้คอมพิวเตอร์โฮสต์ช้าลงอย่างมาก

มีโซลูชั่นที่ทำงานกับแอปพลิเคชั่นที่มีประสิทธิภาพต่ำเช่น labjack ที่กล่าวถึง แต่ทางออกที่แท้จริงที่คุณต้องจัดการกับอัตรา IO สูงจะเกี่ยวข้องกับระบบที่ตั้งโปรแกรมไว้ คำถามคือสิ่งที่โปรแกรมที่คุณต้องใช้ในการใช้ระบบ

LabView เป็นซอฟต์แวร์ที่มีราคาแพงมาก (ใช้งานได้ดีไม่ผิดฉัน) มันใช้ภาษากราฟิกในการออกแบบซอฟต์แวร์และคอมไพล์รหัสทำงานบนระบบ FPGA หรือ ARM ส่วนประกอบทั้งหมดมีราคาแพงเกินไปสำหรับแอพฝังตัวที่มีปริมาณสูง แต่ยอดเยี่ยมมากในสภาพแวดล้อมการทดสอบเนื่องจากมีการพัฒนาอย่างรวดเร็วมีประสิทธิภาพสูง

ทางออกที่ราคาไม่แพงคือการหาระบบที่รัน linux ด้วย I / O จำนวนมาก EmbeddedARM.comเป็นเว็บไซต์ที่เสนอผลิตภัณฑ์หลายประเภทสำหรับสิ่งนี้ รหัสที่คุณสามารถเขียนอาจอยู่ในเชลล์สคริปต์, จาวา, C, ฯลฯ

Arduinoระบบให้ไมโครคอนโทรลเลอร์ที่สามารถพัฒนากับการพัฒนาสภาพแวดล้อมที่เรียบง่าย ลักษณะโอเพนซอร์ซของพวกเขาหมายความว่ามีโครงการมากมายให้เรียนรู้


3

ฉันไม่รู้อะไรเลยด้วยพิน 64 GPIO นั่นมันเยอะมากคุณอาจต้องสร้างมันขึ้นมาเอง

ฉันใช้สิ่งนี้สำหรับการทดสอบ bench bench interface แต่มันก็มี 23 GPIO pin

หากคุณเพียงแค่ google สำหรับ 'USB to GPIO' มีโปรเจ็กต์มากมายที่ทำเช่นนี้ฉันไม่เห็นหน้าใด ๆ ในสองหน้าแรกที่มี 64 GPIO นี่เป็นสิ่งที่ฉันใกล้เคียงที่สุดที่พบ 32 pin

อาคารหนึ่งจะไม่ยากมากฉันอาจใช้ 100pin pic18 กับ USB PHY ในตัว (ขึ้นอยู่กับความต้องการความเร็วของคุณซีพียูที่มีประสิทธิภาพมากขึ้นอาจเป็นไปตามลำดับ)

คุณไม่จำเป็นต้องทำการเข้ารหัสมากเกินไปเพื่อให้มันทำงานได้ตราบใดที่ผู้ขาย uC ของคุณเสนอโครงข่ายไดรเวอร์ USB

คุณจะต้องสร้าง PCB เพราะเป็นไปได้มากว่าชิปที่มีขนาดใหญ่พอที่จะมีหมุด GPIO 64 ตัวโดยทั่วไปไม่ได้มาในแพ็คเกจผ่านรู คุณยังสามารถใช้ไมโครคอนโทรลเลอร์ขนาดเล็กลงและใช้ตัวขยายพอร์ตภายนอกของ IC สำหรับ GPIO ของคุณ แต่นั่นจะเป็นการออกแบบที่ซับซ้อนและซับซ้อนกว่าในการเขียนโปรแกรม

คุณสามารถดูบอร์ด dev ที่กำหนดเส้นทาง I / O พินทั้งหมดไปยังส่วนหัวและมี USB สิ่งเหล่านี้อาจมีราคาแพงกว่ามากเนื่องจากอาจมีสิ่งที่คุณไม่ต้องการ

หนึ่งเคล็ดลับสุดท้ายถ้าคุณพบบอร์ดที่มี RS232 แต่มี 64 GPIO pin ให้ใช้คุณสามารถใช้อะแดปเตอร์ RS232 เป็น USB ได้ฉันมีสองสามตัวที่ทำงานได้ดีสำหรับฉัน นี่เป็นการ จำกัด ความเร็วของอินเตอร์เฟส RS232 อย่างไรก็ตาม


3

สภาพแวดล้อมของ NI Labview นั้นมีราคาแพง แต่จะทำในสิ่งที่คุณต้องการ (ผ่าน USB, Ethernet หรือ PCI ขึ้นอยู่กับสิ่งที่คุณได้รับ)

Arduino Mega มี 54 พินที่ทำให้คุณใกล้ชิดกับราคา $ 60 อย่างไรก็ตามมันไม่ใช่ตัววิเคราะห์เชิงตรรกะนอกกรอบ คุณต้องเขียนหรือหาภาพร่างเพื่อทำสิ่งนี้ อาจมีสักอันฉันไม่รู้ นี่ควรจะค่อนข้างง่ายในอัตราบัสที่ต่ำ คำแนะนำเกี่ยวกับ Mega แต่ละครั้งเกิดขึ้นที่ 16MHz ดังนั้นคุณจะมีอัตราการรับส่งสัญญาณที่ค่อนข้างช้าคุณจะโชคดีหรือฉลาดมากถ้าคุณได้รับสัญญาณ 115200

ในท้ายที่สุดนี่เป็นโครงการที่แตกต่างกันมากถ้าคุณสุ่มตัวอย่างที่ 9600 baud หรือที่ 50MHz โปรดจำไว้ว่า USB ทำงานที่ 480 MHz (ในทางทฤษฎีอัตราข้อมูลจริงของคุณจะลดลงเนื่องจากเวลาในการตอบสนองและโอเวอร์เฮด) ดังนั้นคุณจึงไม่สามารถทำได้ดีกว่า 480/64 = 7.5MHz โดยไม่ต้องบัฟเฟอร์ ด้วยจำนวนเงินบัฟเฟอร์และลามกอนาจาร (มากกว่ารถยนต์ของคุณ) นักวิเคราะห์เชิงตรรกะสามารถรับ 68, 102 หรือ 136 ช่องทางที่อัตราการส่งข้อมูลกิกะเฮิร์ตซ์

ฉันขอแนะนำให้คุณลองคิดดูหากคุณสามารถใช้เครื่องมือที่ให้ 8 ช่องสัญญาณหรือมากกว่านั้นและลองวิเคราะห์แยกต่างหาก

แก้ไข: Aargh ฉันกำลังคิดอะไรอยู่ หากคุณไปที่อัตราช้าเช่นนั้นการทำงานผ่านลิงค์อนุกรมเป็นวิธีที่จะไปแน่นอน ฉันใช้ระบบโมดูลADAM 4000จาก Advantech ตลอดเวลาที่ทำงาน พวกมันแข็งแกร่งใช้งานง่าย (เชื่อมต่อกับโปรโตคอล ASCII ผ่านพอร์ต COM หรือใช้ซอฟต์แวร์ GUI ที่รวมมาด้วย) ขยายได้และรองรับได้ดี ทำให้ตัวเองเป็น 4500 (RS-232 ใช้ตัวแปลง USB หรือพอร์ต COM บนคอมพิวเตอร์ของคุณ (ถ้ายังมีอยู่)) หรือ 4501 (อีเธอร์เน็ตพร้อมเว็บเซิร์ฟเวอร์แบบฝังตัว) ลิงก์ในโมดูล 4053, 4055 และ 4056 และคุณก็พร้อมที่จะไป


โอ้ แต่พวกเขาค่อนข้างแพง .... เช่น $ 100 ถึง $ 150 สำหรับ 16 ช่อง
Kevin Vermeer

ฉันมีตัววิเคราะห์ลอจิกพอร์ต intronix 34 เพื่อทดสอบซอฟต์แวร์ของฉัน (เช่นเชื่อมต่ออินพุตกับเอาต์พุตของขาควบคุมไมโครคอนโทรลเลอร์) ฉันคิดว่าประมาณ 500 $ แต่มันไม่ใช่ I / O แบบดิจิทัลจริงๆเหรอ? มันไม่ได้มีไว้เพื่อโปรแกรมตรรกะที่กำหนดเองด้วยเพียงเพื่อวิเคราะห์ช่องทาง ฉันสามารถทำงานที่อัตราการสุ่มตัวอย่าง 500Mhz แต่ฉันไม่ต้องการความเร็วนั้นเว้นแต่อุปกรณ์ต่อพ่วงที่ฉันต้องการให้ไมโครคอนโทรลเลอร์ควบคุมความเร็วได้ถึง 200Mhz หรือมากกว่านั้น - อย่างไรก็ตามเรื่องสั้นสั้นยาว ฉันเชื่อว่าตัววิเคราะห์เชิงตรรกะไม่ใช่สิ่งที่ผู้ขอคำถามต้องการ
Wouter Simons

แน่นอนว่าฉัน แต่ไม่ใช่ O. ไม่ฉันจะยอมรับว่าตัววิเคราะห์เชิงตรรกะไม่ใช่สิ่งที่คนต้องการได้รับข้อมูลใหม่
Kevin Vermeer

2

สิ่งนี้มี 70 GPIO และอินเตอร์เฟส USB ราคา $ 50


คุณสามารถใช้ฟังก์ชั่นการโทรเพื่ออ่านและเขียนข้อมูลพินได้โดยตรงจากโปรแกรม C ++ ที่รันบน CPU ของคุณหรือไม่?
Faken

ฉันกำลังจะแนะนำว่า NXP จะมีบางสิ่งบางอย่าง ARM ตามด้วย I / O บางส่วนและถ้าคุณไม่ได้รับเพียงพอที่จะตบที่ขยาย I2C IO คุณไม่สามารถเอาชนะราคาของสิ่งนั้นได้และมันก็เป็นเรื่องของปลั๊ก ทำงานดีมาก
akohlsmith

ฉันไม่รู้. ฉันเพิ่งเห็นมันในโพสต์ผลิตภัณฑ์ใหม่ของ Sparkfun
endolith

2

ใช่ดูเหมือนว่า UBW32 จะทำงานได้ดีสำหรับคุณและเฟิร์มแวร์เริ่มต้นให้คุณควบคุมพิน I / O จากซอฟต์แวร์ของคุณบนพีซีของคุณ

จาก "วิธีการกัดบิต SPI และอินเทอร์เฟซแบบขนานบน FT232R"คุณสามารถพินบิต 8 บิตดิจิตอล (อาจมากกว่านั้น) ใน FT232R ที่ควบคุมโดยซอฟต์แวร์บนพีซีของคุณ

คณะกรรมการฝ่าวงล้อม $ 15 สำหรับ FT232RL

ดูเหมือนสิ่งที่คุณต้องการคืออินเทอร์เฟซ I / O แบบดิจิทัล คุณไม่ต้องการหรือไม่ต้องการไมโครคอนโทรลเลอร์ที่ตั้งโปรแกรมได้ หากคุณต้องการเพียง 16 บิตฉันจะไปกับบอร์ด FT232RL สองสามตัว อย่างไรก็ตามดูเหมือนว่า $ 40 UBW32 เดียวดูเหมือนว่าจะให้ 64 I / O ที่คุณต้องการสำหรับค่าใช้จ่ายน้อยกว่า 8 ของบอร์ด FT232RL ที่จะต้องได้รับ 64 I / O

ฉันพบว่ามันกลายเป็นเรื่องธรรมดามากขึ้น - บางครั้งมันมีค่าใช้จ่ายน้อยกว่าในการขว้างปาไมโครคอนโทรลเลอร์ทั้งตัวให้เป็นปัญหาถึงแม้ว่ามันจะมีทรานซิสเตอร์ "พิเศษ" หลายล้านตัวที่ฉันไม่เคยใช้เลย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.