ฉันจะสร้างรายการข้อกำหนดสำหรับไมโครคอนโทรลเลอร์สำหรับโครงการของฉันได้อย่างไร ฉันจะหาไมโครคอนโทรลเลอร์ที่เหมาะสมได้อย่างไร


20

ฉันทำงานเกี่ยวกับโครงการควบคุม eBike บน Arduino MEGA2560 โปรแกรมรันลูปควบคุม 3 PID ลูปการควบคุมความจุของแบตเตอรี่หนึ่งวง (การแก้ไขตามตารางการค้นหา) มาตรวัดความเร็ว (ตัวอย่างจากสวิตช์กก) รวมถึงหน้าจอ LCD เพื่อแสดงข้อมูล อินพุตเป็นสัญญาณอะนาล็อก 3 สัญญาณ: แรงดันแบตเตอรี่, กระแสไฟและอินพุตคันเร่งของผู้ใช้รวมถึงอินพุตดิจิตอล: สัญญาณเปิด / ปิดสปีดมิเตอร์ ขณะนี้ทุกสิ่งที่รันบนคณิตศาสตร์ "ยาว" นี้ Arduino จัดการให้เสร็จสมบูรณ์ 10 ลูปต่อวินาที เนื่องจากหน้าจอ TFT LCD ใช้พลังงานในการคำนวณจำนวนมหาศาลฉันจึงคิดที่จะแทนที่ด้วยหน้าจอตัวอักษรและตัวเลข

เอาต์พุตประกอบด้วยสัญญาณเค้นแบบอะนาล็อกที่ไปยังตัวควบคุมมอเตอร์หน้าจอ LCD และอุปกรณ์อื่น ๆ ที่ต้องใช้สัญญาณอะนาล็อก ดังนั้นตัวแปลง ADC มีความสำคัญและ DAC จะมีประโยชน์มากแม้ว่าฉันกำลังใช้ Arduino PWM เอาต์พุตกับตัวกรองความถี่ต่ำ RC ความสามารถในการอ่านสัญญาณดิจิตอลและอนาล็อกโดยไม่ขัดจังหวะตัวประมวลผลจะยอดเยี่ยม

ฉันต้องการสร้างผลิตภัณฑ์เพื่อผู้บริโภคด้วยเหตุนี้ฉันจึงต้องการสร้างแพลตฟอร์มของตัวเองจากพื้นฐานด้วยไมโครคอนโทรลเลอร์ที่แตกต่างกันซึ่งสามารถให้ตัวอย่างอย่างน้อย 100 ตัวอย่างต่อวินาที (10 เท่าที่ Arduino ประสบความสำเร็จ) นอกจากนี้เพื่อหลีกเลี่ยงจุดลอยตัวการคำนวณของฉันใช้ตัวแปรที่มีความยาวและดังนั้นจึงมีจำนวนมากกว่า 16 บิตดังนั้นฉันสมมติว่า 32 บิต MCU เป็นความคิดที่ดี นอกจากนี้ MCU ที่สามารถทำการคำนวณจุดลอยตัวอาจเป็นที่น่าสนใจในการทำให้คณิตศาสตร์ในรหัสง่ายขึ้น

ในที่สุดฉันไม่แน่ใจว่าจะเริ่มมองหา MCUs ที่จะตอบสนองความต้องการเหล่านี้และอนุญาตให้มีการเปลี่ยนแปลงอย่างรวดเร็วจากสภาพแวดล้อม Arduino คำแนะนำเกี่ยวกับวิธีการไปเกี่ยวกับการค้นหา MCUs จะได้รับการชื่นชมอย่างมาก!


1
ฉันไม่จำเป็นต้องเป็นชิ้นส่วนที่แนะนำ แต่เป็นเพียงวิธีการหรือแพลตฟอร์มหรือคำแนะนำใด ๆ เกี่ยวกับวิธีการค้นหาแพลตฟอร์มที่ฉันต้องการ
Eliott W

5
นี้ดีกว่าคำถามก่อนหน้านี้ของคุณ แต่ก็ยังกว้างมากและบางจุดในความต้องการของคุณยังไม่ชัดเจน ตัวอย่างเช่นคุณหมายความว่าอย่างไร "โดยไม่ขัดจังหวะตัวประมวลผล" ฉันเดาว่าคุณไม่ต้องการทำโพล I / O จริงๆ นอกจากนี้คุณยังต้องได้รับการจัดการที่ดีขึ้นเกี่ยวกับการคำนวณที่ต้องทำในแต่ละชุดตัวอย่าง
Dave Tweed

1
คุณควรพิจารณาใช้เลขจำนวนเต็ม มันเป็นสิ่งที่ถูกต้องที่จะทำ
Scott Seidman


4
คณิตศาสตร์จำนวนเต็มยาวหรือสั้นนั้นเร็วกว่าจุดลอยตัวมาก และเลขจำนวนเต็มที่ยาวกว่าความลึกบิตของ "เนทีฟ" ของโปรเซสเซอร์ก็จะช้าเช่นกัน ดังนั้นเสียง 32 บิตเป็นความคิดที่ดีมากอาจเป็นหนึ่งในอุปกรณ์ประเภท "DSP"
pjc50

คำตอบ:


18

(นี่เป็นคู่มือทั่วไปฉันสงสัยว่าคุณอาจได้รับประโยชน์จากการปรับรหัสให้เหมาะสมด้วย

ขั้นตอนที่ 1: การปรับขนาดงบประมาณผู้ขายอย่างหยาบ

เลือกหนึ่งใน:

  • คอมพิวเตอร์ (Raspberry Pi, Beagleboard, บอร์ด PC104, Intel Edison และอื่น ๆ ) บูทระบบปฏิบัติการที่ใช้งานทั่วไปและมีกำลังการประมวลผลจำนวนมาก ราคาแพงและหิวโหย $ 10- $ 100

  • MCU ขนาดใหญ่ ARM Cortex-A / PIC32 / dsPIC / AVR32 / TI C ซีรี่ส์ DSP ฯลฯ กำลังประมวลผลที่มีคุณค่า, ตัวเลือกระบบปฏิบัติการที่เหมาะสม ~ $ 5

  • MCU ขนาดเล็ก Cortex-M / PIC16 มีเนื้อที่ไม่เพียงพอสำหรับระบบปฏิบัติการจริงอาจเป็นเพียงตัวกำหนดเวลางานที่มีน้ำหนักเบา ~ $ 2

  • Tiny MCU เฉพาะแอปพลิเคชันที่คุณใส่ใจทุกการใช้พลังงานครั้งสุดท้าย ~ $ 1 หรือน้อยกว่า

คุณควรพิจารณาในขั้นตอนนี้ซึ่งผู้ขายและเครื่องมือที่คุณชอบและไม่ชอบ ดูค่าใช้จ่ายของสิ่งต่าง ๆ เช่นอุปกรณ์ตรวจแก้จุดบกพร่องในวงจรและ IDE

ขั้นตอนที่ 2: อุปกรณ์ต่อพ่วงขั้นต่ำ

คุณต้องการสิ่งต่าง ๆ เช่น USB หรือไม่? PCI? HDMI? SATA? ADC หรือ DACs เร็วผิดปกติหรือไม่ เกือบทั้งหมดของหมวดหมู่ "เล็ก" หรือ "เล็ก" นั้นไม่มีแม้ว่า USB นั้นจะมีวางจำหน่ายอย่างแพร่หลาย

ขั้นตอนที่ 3: ต้นแบบ

เลือกสิ่งที่ตรงตามเกณฑ์ข้างต้นโดยการสุ่มหากจำเป็นทำการเริ่มต้นค้นหาว่าเป็นไปได้อย่างไรและคุณต้องการพื้นที่ / กำลังการประมวลผลเท่าใด คุณได้ทำสิ่งนี้ไปแล้วบางส่วน การเขียนใน C ควรใช้ตรรกะแบบพกพาเป็นจำนวนมาก

เมื่อคุณมีต้นแบบคุณสามารถพูดกับตัวเองว่า "ฉันต้องการแบบนี้ แต่มี X มากกว่า" และให้คำแนะนำนั้นเพื่อการตัดสินใจของคุณ

ขั้นตอนที่ 4: ลดขนาด

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


14
ขั้นตอนที่ 0: กลุ่มเครื่องมือ (สภาพแวดล้อมการพัฒนาเฟิร์มแวร์) ค้นหาสภาพแวดล้อมการพัฒนาที่คุณสามารถทำงานให้คุณได้ นี่คือที่ที่มันชนะหรือแพ้ แม้ว่าคุณจะมีซิลิคอนที่สมบูรณ์แบบ แต่คุณไม่สามารถทำให้สภาพแวดล้อมการพัฒนาเฟิร์มแวร์ทำงานได้ (ไม่ว่าจะด้วยเหตุผลใดก็ตาม) โครงการของคุณจะไม่หลุดลอยไป (ตรงประเด็น: Arduino IDE ได้เปิดตัวต้นแบบที่ใช้ Arduino ของคุณแล้ว)
Nick Alexeev

8
การจัดประเภท Cortex-M เป็น "Small MCU" และ PIC32 / AVR32 เนื่องจาก "MCU ขนาดใหญ่" ดูเหมือนว่าจะโชคไม่ดีนัก ฉันไม่ได้ใช้ PIC32 / AVR32 เป็นการส่วนตัว แต่จากข้อมูลจำเพาะที่รวดเร็วฉันก็ว่าพวกมันควรจะอยู่ในวงเล็บเดียวกัน (มี Cortex-M MCUs ที่ทำงานที่> 200MHz, มีแฟลชหลายเมกะไบต์และมากกว่าครึ่งเมกะไบต์)
Aleksi Torhamo

13

โครงการที่ดี ต่อไปนี้เป็นคำใบ้เล็กน้อย แต่ก็เป็นการยากที่จะพูดถึงเรื่องนี้สำหรับทุกโครงการ

เริ่มต้นด้วยข้อกำหนดการคำนวณ

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

ครั้งแรกดูเหมือนว่าคุณใช้การดำเนินการทางคณิตศาสตร์อย่างมากกับจำนวนเต็มขนาดใหญ่ภายในลูป ดังนั้นอย่างที่คุณแนะนำ 32 บิตจะมีประโยชน์ที่นี่ดังนั้น ARM จึงมาในฐานะผู้สมัครในอุดมคติ สำหรับความถี่ของการทำงาน: ปัจจุบันคุณใช้ Arduino MEGA2560 (ใช้งานที่ 16MHz ฉันคิดว่า) และคุณสามารถสร้าง 10 loops / s หากคุณต้องการได้ 100 ลูป / วินาทีคุณควรใช้ Cortex-M3 / M4 ในช่วง 100MHz หรือมากกว่า (ประมาณคร่าวๆ) โปรดทราบว่า Cortex-M4F มีหน่วยจุดลอยตัว

เราได้ทำการเลือกให้แคบลง

ข้อกำหนดหน่วยความจำ

อันนี้ง่าย: เลือก MCU ที่มี RAM / Flash มากที่สุดในช่วงของต้นแบบ เมื่อคุณตรวจสอบต้นแบบแล้วให้เปลี่ยนไปใช้ MCU จากช่วงเดียวกันที่มี RAM / Flash เพียงพอแล้วตอนนี้คุณก็รู้ข้อกำหนดที่แน่นอนแล้ว

โปรดทราบว่าฉันไม่คิดว่าแอปพลิเคชันของคุณต้องการหน่วยความจำจำนวนมาก

ตอนนี้อุปกรณ์ต่อพ่วง

คุณต้องการ ADC บางส่วน MCUs ทั้งหมดของช่วงที่เรากำลังดูมีอยู่บางส่วนดังนั้นจึงไม่ใช่เกณฑ์ที่มีประโยชน์ ไม่ว่าจะเป็นอินพุต / เอาต์พุตดิจิตอลยกเว้นในกรณีที่คุณต้องการจำนวนมาก (ซึ่งดูเหมือนจะไม่ใช่กรณีของคุณ)

คุณดูเหมือนจะต้องการ DAC อย่างไรก็ตามนี่คือสิ่งที่คุณจะไม่พบได้ง่ายและจะ จำกัด ผู้สมัครมากเกินไป ดังนั้นเราจึงไม่รักษาความต้องการนั้นไว้และเราจะอยู่กับ PWM และ lowpass (ซึ่งแน่นอนว่ายอมรับได้จริง)

คุณไม่ได้พูดถึงส่วนต่อประสานการสื่อสารใด ๆ ยกเว้นจอ LCD (หลังจากนั้น) อย่างไรก็ตาม MCUs ทั้งหมดมี I2C / SPI / UART / ... หากคุณต้องการ

จอแอลซีดี

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

  • หากคุณต้องการตัวอักษร LCD: สิ่งที่ง่ายที่สุดและข้อ จำกัด ที่น้อยที่สุดสำหรับ MCU คือการพูดคุยกับมันผ่านส่วนต่อประสานแบบอนุกรม วิธีนี้จะไม่ใช้ PIN มากเกินไปคุณสามารถใช้ MCU ที่เล็กกว่า / ราคาถูกกว่าและความเร็วไม่เป็นปัญหา
  • หากคุณต้องการ TFT LCD แบบกราฟิค: ถ้าเป็นขนาดเล็กลิงค์อนุกรมอาจยังเหมาะสม อย่างไรก็ตามสำหรับ 320x200 หรือใหญ่กว่าและหากคุณต้องการอินเทอร์เฟซกราฟิกที่ดีคุณจะเริ่มต้องการสื่อสารกับอินเตอร์เฟสแบบขนาน ในกรณีนี้คุณใช้ GPIO บางตัว (แต่จะเพิ่มภาระให้กับ MCU มากขึ้นเพราะคุณจะต้องกัดสายควบคุมเล็กน้อย) หรือคุณเลือก MCU ที่มีอินเตอร์เฟส LCD เฉพาะ (ซึ่งมักจะเหมือนกับ อินเตอร์เฟสหน่วยความจำภายนอก) อันสุดท้ายนี้ทำให้ข้อ จำกัด ที่แข็งแกร่งของตัวเลือก MCU แต่คุณไม่มีข้อ จำกัด ที่แข็งแกร่งดังนั้น ...

ตอนนี้คุณเลือก

ไปที่เว็บไซต์ ST Micro / NXP / Atmel และใช้เครื่องมือเลือก MCU คุณจะใช้เวลามากมายในการอ่านเอกสารข้อมูลด้วย ใช้เวลานี้ มันไม่เสียเปล่า ทุกสิ่งที่คุณจะได้เรียนรู้ที่นี่แม้ว่าคุณจะไม่ได้ใช้มันโดยเฉพาะสำหรับโครงการนี้ก็มีประโยชน์

ณ จุดนี้คุณต้องดูจำนวน PIN ที่คุณต้องการและตรวจสอบรูปแบบการทำมัลติเพล็กของผู้สมัคร MCU ที่เลือกเพื่อตรวจสอบว่าคุณสามารถใช้ฟังก์ชั่น PIN ทั้งหมดที่คุณต้องการ เพราะเห็นได้ชัดว่าคุณต้องการใช้ MCUs ด้วยจำนวนพินที่ต่ำที่สุดที่ตอบสนองความต้องการของคุณ (สำหรับเหตุผลด้านราคา / PCB)

ตรวจสอบราคา / ความพร้อมใช้งานของ Mouser / Digikey แต่คุณไม่ควรต้องการอะไรที่มีราคาแพงเป็นพิเศษที่นี่ อาจจะ 5 ยูโรหรือมากกว่านั้น

สิ่งสุดท้ายที่เกี่ยวกับการควบคุม LCD

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

ใช่มันต้องมีการเปลี่ยนงานและบางอย่าง ระบบปฏิบัติการจริงจริง ๆ แล้ว (ค้นหา FreeRTOS, Coocox OS, Nuttx, ... มีขนาดเล็กมากส่วนใหญ่จะใช้ใน Cortex-M และให้กลไกมัลติทาสก์ที่จำเป็น)


ขอบคุณมากสำหรับคำตอบที่ครอบคลุมของคุณ! ฉันสังเกตเห็นว่า ARM Cortex MCUs ทำงานทั้งหมดบน 3.3V สัญญาณคันเร่งของฉันต้องปรับระหว่าง 1 ถึง 5V ฉันเดาว่าถ้าฉันต้องการใช้คอนโทรลเลอร์ ARM ฉันจะต้องหาวิธีในการเพิ่มแรงดันไฟฟ้าเนื่องจากมันจะต่อยอดที่ 3.3V จาก MCU หรือไม่
Eliott W

ใช่. สัญญาณคันเร่งเป็นเอาต์พุตแบบอะนาล็อกใช่ไหม? ในกรณีนั้นคุณสามารถใช้ opamp เพื่อขยายสัญญาณ
สลัว

ฉันไม่แน่ใจว่าฉันเห็นด้วยกับประโยคสุดท้ายที่ต้องการ "ระบบปฏิบัติการจริง" ฉันคิดว่ามันขึ้นอยู่กับว่าคุณต้องการโซลูชั่นสำเร็จรูปมากแค่ไหน หากคุณต้องการบางสิ่งบางอย่างที่คุณสามารถวางลงในตรรกะทางธุรกิจของคุณและเริ่มการต่อสู้หน่วยใช่ระบบปฏิบัติการเต็มเป่า (โปรดทราบว่านี่ไม่จำเป็นต้องหมายถึงบางสิ่งบางอย่างเช่น Windows หรือ Linux!)
CVn

1
@ MichaelKjörlingแน่นอนว่าฉันไม่ได้หมายถึงบางสิ่งแม้แต่ในระยะไกลเช่น Linux ยกตัวอย่างเช่น FreeRTOS, Coocox OS หรือ Nuttx เป็นต้น นี่เป็นสิ่งที่ฉันพิจารณาถึงระบบปฏิบัติการจริงแม้ว่าจะเล็กมาก ฉันเขียนว่าเพราะจริง ๆ แล้วการทำสิ่งนี้กับโลหะเปลือยจะใช้เวลานานกว่าจะเจ็บปวดจากการดีบักและยืดหยุ่นน้อยกว่า และสภาพแวดล้อมของ Arduino (แม้ว่าฉันจะห่างไกลจากผู้เชี่ยวชาญในเรื่องนี้) ดูเหมือนจะไม่ได้ให้กลไกการทำงาน (และเช่นนี้ฉันไม่คิดว่ามันเป็นระบบปฏิบัติการจริง )
สลัว

1
อา ฉันอ่านส่วน "ของจริง" ผิดแล้ว เพียงเพื่อประโยชน์ของพวกเราชาวต่างชาติที่ลงเอยที่นี่เป็นครั้งคราวคุณอาจต้องการพิจารณาการอธิบายส่วนนั้นในคำตอบของคุณ
CVn

4

โปรดทราบว่านี่เป็นวิชาที่กว้างซึ่งสามารถตอบได้อย่างถูกต้องโดยใช้วิธีการที่หลากหลาย (อัตนัย)

รูปแบบ stackexchange นั้นไม่ดีในการออกแบบวิธีแก้ปัญหา ตัวอย่างเช่นคุณไม่ค่อยได้รับคนออกแบบฮาร์ดแวร์ให้คุณ ค่อนข้างคุณเสนอการออกแบบฮาร์ดแวร์และถามคำถามเกี่ยวกับมัน

ที่กล่าวว่า ...

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

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

หากอุปกรณ์ต่อพ่วงภายนอกได้รับการสนับสนุนให้พิจารณาประเภทของการสื่อสารแบบอนุกรมที่จำเป็น ฮาร์ดแวร์ภายนอกอาจต้องใช้ SPI, I2C หรือ UART ประเภทอื่น หากอัตราการส่งข้อมูลสูงควรหาโปรเซสเซอร์ที่มีคุณสมบัติ DMA ที่เกี่ยวข้องกับพอร์ตการสื่อสารแบบอนุกรม

ท้ายที่สุดถ้านี่เป็นแอพพลิเคชั่นของตัวประมวลผลแบบฝังตัว (ซึ่งโดยปกติหมายถึงตัวประมวลผลที่อุทิศให้กับงาน) ให้พิจารณาแบ่งข้อกำหนดออกเป็นหลายกลุ่มและมอบหมายหน่วยประมวลผลให้แต่ละตัว ตัวอย่างเช่นตัวประมวลผลการแสดง GUI อาจไม่ต้องการคุณสมบัติ ADC วิธีการนี้มีวัตถุประสงค์เพื่อแก้ปัญหาได้รับการพิสูจน์แล้วว่าประสบความสำเร็จในซอฟต์แวร์และด้วยราคาโปรเซสเซอร์ที่ลดลงสามารถนำไปใช้กับฮาร์ดแวร์ได้

ในโลกแห่งความจริงวิธีการนี้เป็นซ้ำ นั่นคือโครงการจำนวนมากเริ่มต้นด้วยตัวประมวลผลเดียวและสลับโปรเซสเซอร์ที่แตกต่างกันตามปัญหาฮาร์ดแวร์และ / หรือซอฟต์แวร์ที่เกิดขึ้นหรือขอบเขตของการเปลี่ยนแปลงโครงการ


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

3

ฉันไม่เห็นใครพูดถึงค่าใช้จ่ายของเครื่องมือ บริษัท ของฉันเลือก TI CC2541 และพบว่าเรียบเรียงด้วยคอมไพเลอร์ IAR ราคา $ 4k เท่านั้นซึ่งเป็นงานแสดงของนักอดิเรก นอกจากนี้โปรแกรมเมอร์ อาจเป็น $ 20 หรือมากกว่านั้น เครื่องมือที่ราคาถูกกว่าดูเป็นบรรทัดฐานมากกว่าตอนนี้ดังนั้นบางทีนี่อาจเป็นเรื่องของอดีต

นอกจากนี้หากคุณทำการปรับปรุงใหม่เองแพ็คเกจเช่น TQFP นั้นง่ายกว่าการพูด BGA BGA ขนาดใหญ่ยากที่จะถูกต้องตามประสบการณ์ส่วนตัว


2

หากผลิตภัณฑ์มีความอ่อนไหวด้านราคาและคุณมีเงินทุนสนับสนุนการพัฒนาที่เหมาะสมคุณสามารถจัดหาบอร์ดการประเมินจำนวนมากและจัดทำรหัสในแต่ละรายการเพื่อรับแนวคิด ซึ่งควรตรงไปตรงมาหากเขียนรหัสของคุณในแบบพกพา C นอกเหนือจากไมโครคุณจะทำการประเมิน toolchains ด้วยรุ่นสาธิตก่อนที่จะทำการแยกค่าใช้จ่ายของ IDE แบบเต็มเช่น IAR หรือ Keil ในบางกรณีคุณสามารถสร้างโปรไฟล์คอขวดรหัสโดยตรงบน IDE โดยไม่ต้องใช้ฮาร์ดแวร์

หากคุณมีข้อ จำกัด เรื่องค่าใช้จ่ายในการพัฒนาอย่างแน่นหนาคุณอาจต้องประนีประนอมเพื่อหาสิ่งที่ไม่เสียค่าใช้จ่ายมากเกินไปสำหรับการตั้งค่าการพัฒนา

ตัวอย่างเช่น ST มีบอร์ด eval ARM Cortex M7 ที่มีหน้าจอสีที่ดีสำหรับ <$ 100 มันมี FPU พร้อมคุณสมบัติ DSP ดังนั้นคุณสามารถทำอะไรก็ได้ที่คุณพูดถึงอย่างง่ายดาย - อาจใช้ PID loop ที่ 100kHZ แทนที่จะเป็น 100Hz มันอาจ overkill เว้นแต่ว่าจอแสดงผลที่มีความสำคัญ

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

บ่อยครั้งที่อุปกรณ์ต่อพ่วงและคุณภาพมิดเดิลแวร์ที่เกี่ยวข้องและความพร้อมใช้งาน (และข้อกำหนดสิทธิการใช้งาน) จะมีผลกับตัวเลือกของคุณอย่างมาก หากคุณต้องการโหมดโฮสต์ BT หรือ Wifi หรือ USB และไฟล์ FAT เพื่อจัดเก็บไว้ในไดรฟ์หัวแม่มือหรืออินเตอร์เฟซ SD ที่รวดเร็วสิ่งเหล่านี้ล้วนเป็นปัจจัยสำคัญ ชิปบางตัวมีคอนโทรลเลอร์ LCD ในตัวและตัวควบคุมดิจิไทเซอร์ที่สามารถใช้แผง TFT ที่มีราคาไม่แพงนัก อย่ามองข้ามค่าธรรมเนียมใบอนุญาตที่สูงในบางครั้ง

หากคุณมีความคิดเกี่ยวกับหน่วยความจำของโปรแกรมที่ต้องการความเร็วในการประมวลผลและอุปกรณ์ต่อพ่วง (รวมถึง FPU ในส่วนนี้) คุณสามารถทำการค้นหาพารามิเตอร์ที่ผู้จัดจำหน่ายก่อนเจาะลงในเอกสารข้อมูล บางสิ่งที่มีข้อ จำกัดมากเกินไปอาจเป็น - แพคเกจแบบหลุม, DAC ภายใน, อีเธอร์เน็ต PHY ภายใน, FPU สิ่งเหล่านี้ไม่จำเป็นและอาจ จำกัด การเลือกของคุณไว้ก่อนกำหนด

ขอให้โชคดีกับมันมันเป็นงานที่ต้องทำมากมาย จากประสบการณ์ของฉันมันเป็นเศรษฐกิจที่ผิดพลาดที่จะตัดมันใกล้เกินไปกับผลิตภัณฑ์ใหม่เพราะลูกค้าจะขอสิ่งที่คุณคาดไม่ถึงอย่างหลีกเลี่ยงไม่ได้และคุณต้องการมีกำลังการผลิตเพียงพอที่จะจัดหาให้โดยไม่ต้องเริ่มต้นใหม่ ในทางกลับกันหากผลิตภัณฑ์มีราคาแพงเกินไปคุณจะไม่สามารถขายได้ในอัตราที่เพียงพอเพื่อสนับสนุนธุรกิจ


1

มีหลายแพลตฟอร์มที่แตกต่างกันซึ่งคุณสามารถเริ่มต้นค้นหาเช่น Arduinos, ไมโครคอนโทรลเลอร์ PIC, FPGAs และอีกมากมาย ฉันเคยทำงานกับ Arduinos ในอดีตและมีพอร์ต ADC ที่สามารถบรรลุ 74kS / s 100 ตัวอย่างต่อวินาทีนั้นช้ามากและฉันสงสัยว่าคุณจะรู้ได้อย่างไร ในอีกทางหนึ่งคุณต้องการถามตัวเองว่าคุณต้องการอินเทอร์เฟซชนิดใดเช่น SPI, CAN, I2C หรือ UART พวกเขาทุกคนสามารถได้รับผลประโยชน์ของตัวเองและสำหรับตัวคุณเองที่จะต้องพิจารณาว่าคุณจะคุยกับทาสคนหนึ่ง ขั้นตอนสุดท้าย แต่ที่สำคัญที่สุดคือการคาดเดาว่าคุณจะต้องใช้พินจำนวนเท่าไรในไมโครคอนโทรลเลอร์

"ความสามารถในการอ่านสัญญาณอะนาล็อกเป็นดิจิตอลโดยไม่ขัดจังหวะตัวประมวลผลจะยอดเยี่ยม" ฉันสามารถเดาได้โดยบอกว่าคุณไม่ต้องการจัดการกับบัฟเฟอร์ภายนอกหรือภายในที่จะหมุนเวียนข้อมูลของคุณและอาจชะลอการประมวลผลข้อมูลของคุณ นั่นถูกต้องใช่ไหม? ถ้าเป็นเช่นนั้นนั่นเป็นการเขียนโปรแกรมที่มากกว่าสำหรับคุณ แต่โปรเซสเซอร์มักจะสามารถจัดการกับความเร็ว 100 ตัวอย่างต่อวินาที มันจะขึ้นอยู่กับคุณที่จะตั้งโปรแกรมนาฬิกาอัตราการสุ่มตัวอย่างและส่วนที่เหลือ

นอกจากนี้ให้พิจารณาการขัดจังหวะในโปรแกรมของคุณหากคุณต้องการเก็บข้อมูลตัวอย่างอย่างต่อเนื่องและทำงานอื่น ๆ เมื่อมีการตั้งค่าสถานะ


2
ฉันคิดว่าคุณพลาดประเด็นไปแล้ว เขามีต้นแบบที่สร้างขึ้นบน Arduino การสุ่มตัวอย่างไม่ช้า ลูปควบคุมจะทำงานช้า เขามีตัวควบคุม PID สามตัวที่คำนวณโดยใช้จุดลอยตัวบน Arduino ดังนั้นพวกมันจึงช้ากว่ากากน้ำตาลในฤดูหนาวแอนตาร์กติก ดังนั้นการสุ่มตัวอย่างไม่ใช่ปัญหา รหัสที่ไม่มีประสิทธิภาพคือ
JRE

คุณพูดถูก
12Lappie

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