คำนวณความชอบด้วย accelerometer


16

ฉันมีอุปกรณ์อะนาล็อก ADXL203 accelerometer บนบอร์ด breadout และต้องการใช้สิ่งนี้เพื่อวัดความชอบของอุปกรณ์บางอย่างที่ความถี่สูงพอสมควร (20-30 Hz) ฉันขอเกี่ยวกับตัวบันทึก cr3000 campbells เพื่อทำการตรวจจับ ใครบ้างมีคำแนะนำในการตีความผลลัพธ์ของเซ็นเซอร์ ขอบคุณ


ขอบคุณทุกคนสำหรับความคิดเห็น เป็นประโยชน์อย่างมากเกี่ยวกับ TROY
troy jensen

ฉันรู้ว่าฉันมีคะแนนสูงสุด แต่ถ้าคุณไม่ชอบของฉันอย่างน้อยก็ยอมรับใครบางคน
Kortuk

คำตอบ:


12

ฉันมีหลายสิ่งที่จะพูดที่นี่และบางคนก็เกี่ยวข้องกับการเห็นด้วยกับ pingswept และบางส่วนด้วย penjuin

cr3000

การสุ่มตัวอย่าง cr3000 ที่ 16 บิตและ 100 เฮิร์ตซ์จะเป็นการสุ่มตัวอย่างช้าเล็กน้อยสำหรับคุณที่จะลบเสียงรบกวนจากข้อมูลของคุณได้อย่างง่ายดาย แต่ด้วยความแม่นยำที่สูงขึ้นอย่างมากจากนั้นจะสามารถใช้งานได้ ฉันสงสัยว่าคุณจะได้ความแม่นยำ 13 หรือ 14 บิตโดยไม่มีขั้นตอนวิธีการกรองที่ดีพอสมควร Accelerometers สอนฉันว่าการสั่นสะเทือนคือปีศาจโฟนิสตันที่เสียหาย

ตัวเก็บประจุเอาท์พุท

คุณต้องตรวจสอบให้แน่ใจว่าคุณทำตามที่แผ่นข้อมูลบอกไว้และทฤษฎีสัญญาณส่งสัญญาณ วิธีอ้างแผ่นข้อมูล:

เอาต์พุตของ ADXL103 / ADXL203 มีแบนด์วิดธ์ทั่วไปที่ 2.5 kHz ผู้ใช้จะต้องกรองสัญญาณ ณ จุดนี้เพื่อ จำกัด ข้อผิดพลาดของนามแฝง แบนด์วิดธ์แบบอะนาล็อกต้องไม่เกินครึ่งของความถี่การสุ่มตัวอย่างแบบอะนาล็อกกับดิจิตอลเพื่อลดนามแฝง แบนด์วิดธ์แบบอะนาล็อกสามารถลดลงได้อีกเพื่อลดเสียงรบกวนและปรับปรุงความละเอียด

ซึ่งหมายความว่าคุณต้องเลือกตัวเก็บประจุเพื่อให้อัตราของคุณต่ำกว่า 50Hz หากคุณวางไว้เหนือสิ่งนี้คุณจะได้รับนามแฝงและนามแฝงทำให้เสียงสั่นสะเทือนเป็นมารที่คุณได้ลงนามในข้อตกลง พวกเขาระบุวิธีการคำนวณระดับเสียงจากอุปกรณ์และที่ 50Hz แบนด์วิดธ์สูงสุดถึงสูงสุดของ 0.006 * แรงโน้มถ่วงจะไม่ถูกสังเกตถ้าคุณมีสิ่งนี้ในอุปกรณ์ที่มีการสั่นสะเทือน

การตีความข้อมูล

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

เมื่อ accelerometer ตั้งฉากกับแรงโน้มถ่วงของมันออกเปลี่ยนแปลงเกือบ 17.5 มิลลิกรัมต่อระดับของความลาดเอียง

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

หากคุณกำลังจะมีขนาดใหญ่ขึ้นพวกเขายังมีสมการสะกดออกมาเป็น:

PITCH = มิดชิด (AX / 1 g)
ROLL = มิด (AY / 1 กรัม)

เท่าที่ฉันสามารถโทรหาอุปกรณ์ของคุณจะมีการเปลี่ยนแปลง 1V ต่อการเร่งความเร็ว 1G หากคุณทำขั้นตอนการปรับเทียบแล้วคุณควรจะสามารถทำการวัดลบออฟเซ็ตและคุณมีจำนวน Gs ที่มีประสบการณ์

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

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

ความถี่ในการสุ่มตัวอย่าง

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

มาตรความเร่ง 3 แกน

ประการที่สองถ้าคุณมี accelerometer สามแกนคุณจะสามารถจดจำได้ง่ายเมื่อแกนหนึ่งสูญเสียความเร่งเนื่องจากแรงโน้มถ่วง (เช่นเมื่อแกน z มีขนาดลดลง 2m / s ^ 2 คุณรู้ว่า กำไรที่คุณเห็นในแกนอื่นคือแรงโน้มถ่วง) สิ่งนี้จะยังคงยุ่งเหยิง แต่โดยทั่วไปจะมีการเพิ่มความเร่งซึ่งให้ความเร็วที่จำเป็นในการเปลี่ยนการวางแนวของคุณและจากนั้นการเปลี่ยนแปลงของความเร่งเนื่องจากการเปลี่ยนทิศทางมักจะทำให้คุณจำทิศทางได้

ปัญหาเกี่ยวกับ 2 แกน

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

เสียงการสั่นสะเทือน

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

มาตรวัดความเร่งแบบดิจิตอล

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

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


1
เพียงบันทึกคำตอบนี้เป็นมหากาพย์
pingswept

1
Dr. Kortuk, Ph.D ใน accelerometers! :-)
Jay Atkinson

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

สำหรับเสียงการสั่นสะเทือนฉันอาจมีจำนวนมากขึ้นในช่วงเวลาที่ใช้งานเนื่องจากมีมอเตอร์ Brushless DC (BLDC) แต่ก่อนที่จะเปิดเครื่องจะมีตัวเลขการสั่นสะเทือนที่สำคัญอยู่
Kortuk

3

ฉันได้เขียนและเขียนคำตอบนี้ซ้ำหลายครั้งด้วยความคิดทางคณิตศาสตร์ที่บ้าคลั่งมากมาย แต่โดยสุจริตฉันไม่คิดว่าสิ่งนี้สามารถทำได้ด้วยความแม่นยำใด ๆ คุณสามารถทำคณิตศาสตร์เวกเตอร์ได้ แต่จะทำอย่างไรถ้า:

  • วัตถุหยุดเคลื่อนไหว
  • วัตถุมีความเร็วคงที่
  • วัตถุชนกับ / คุณชนมัน
  • แรงที่เกิดขึ้นจะเคลื่อนไปตามแนวเอียงต่ำกว่าความละเอียดของแกน Z

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


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

3
ฉันพยายามอธิบายสิ่งนี้กับนักเรียนเสมอและฉันจะเพิ่มที่นี่เพราะฉันคิดว่ามันเป็นแนวคิดที่สำคัญ วิศวกรรมไม่ได้เกี่ยวกับการทำสิ่งที่ดีที่สุดเสมอไป แต่เป็นการทำในลักษณะที่ผู้ใช้ไม่สามารถบอกความแตกต่างได้ยกเว้นแท็กราคา
Kortuk

2
มีบางอย่างที่ต้องพูดเพื่อทำมันก่อนและมีหลายอย่างที่ต้องพูดเพื่อทำมันให้ดีกว่าผู้ชายคนสุดท้าย
Kortuk

ฉันเห็นด้วย แต่ขึ้นอยู่กับแรงจูงใจของคุณ (ซึ่งทรอยไม่ได้ระบุไว้); คุณต้องการให้มันทำงานได้ดีหรือคุณต้องการที่จะเรียนรู้? พวกเขาไม่จำเป็นต้องร่วมกัน แต่คุณจะไม่เขียนคอมไพเลอร์ของคุณเองเพียงแค่กระพริบไฟ LED เว้นแต่คุณต้องการเรียนรู้เกี่ยวกับการออกแบบคอมไพเลอร์โดยเฉพาะ
jeremy

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

3

ถ้าฉันเข้าใจแผ่นข้อมูลอย่างถูกต้องผลลัพธ์ของแต่ละแกนจะแตกต่างกันระหว่าง 1.5 V และ 3.5 V เมื่อคุณเอียงรอบแกน เมื่ออุปกรณ์แบน (ไม่สนใจข้อผิดพลาดการจัดตำแหน่งแพ็กเกจ± 1 องศา) เอาต์พุตทั้งสองควรอ่าน 2.5 V

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

จะชัดเจน: มุมรอบหนึ่งแกน = (180 / π) * arcsin (Vout - 2.5)

ในการรับการตอบสนองความถี่ที่ดีคุณจะต้องใช้ตัวเก็บประจุเอาต์พุตขนาดเล็ก Cx และ Cy จากเชิงอรรถ 6 ในหน้า แผ่นข้อมูล 3 แผ่นดูเหมือนว่า 0.02 uF จะให้แบนด์วิดท์ 250 Hz ซึ่งอาจเหมาะกับอัตราตัวอย่างของคุณ คุณอาจจะสูงถึง 0.1 uF โดย จำกัด แบนด์วิดท์ไว้ที่ 50 Hz แต่สัญญาณของคุณจะเริ่มลดทอนลง


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

1
อาฉันไม่ได้คิดเกี่ยวกับมันจากมุมมองนามแฝง ฉันยังคิดว่าแคปขนาดใหญ่จะลดทอนสัญญาณความถี่สูง แต่นั่นเป็นสิ่งที่ดีในกรณีนี้ ใช่แล้วการตั้งค่าแบนด์วิดท์ประมาณ 50 Hz นั้นดี
pingswept

3

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

ขีด จำกัด ตัวกรองของคุณต้องเท่ากับ 0.10 uF หรือใหญ่กว่าเพื่อให้คุณอยู่ต่ำกว่าอัตรานามแฝง (50Hz) คุณจำเป็นต้องให้ระยะการสอบเทียบสองสามวินาทีกับระดับการนั่งของอุปกรณ์ของคุณด้วยการเร่งความเร็วด้วยแรงโน้มถ่วงในทิศทาง Z นี่คือการกำหนดจุด G ของคุณเป็นศูนย์

แรงดันไฟฟ้าที่คุณวัดสำหรับจุดศูนย์ G ของคุณอาจแตกต่างกันสำหรับทิศทาง X และ Y เพียงแค่ใช้แรงดันไฟฟ้าใด ๆ ก็ตามที่คุณได้รับและลบมันออกจากมัน แรงดันไฟฟ้านี้เมื่อลบออฟเซ็ตคือจำนวน Gs ที่คุณได้รับในทิศทางนั้น

ใช้อาร์คซินแล้วคุณจะได้มุมในทิศทางนั้น

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


0

เพื่อให้ได้มุมใดคุณต้องวัดความเร่งของแรงโน้มถ่วงทั้งในทิศทาง X และ Y ลบแรงดันไฟฟ้ากลาง (2.5V) ออกเพื่อให้ศูนย์คือ "ไม่เร่งความเร็ว"

ทีนี้คุณสามารถหามุมที่มีอาร์คซิน (y / x) แต่นั่นเป็นสิ่งที่น่ารำคาญที่จะใช้เพราะการแบ่งและเพราะสัญญาณไม่ชัดเจนดังนั้นสิ่งที่คุณต้องการฟังก์ชั่น C atan2 (y, x) atan2 () รับสัญญาณที่ถูกต้องสำหรับทั้ง 360 องศา


นอกหัวข้อเนื่องจากคุณไม่ได้ใช้ไมโคร: หากคุณกำลังมองหา atan2 () เพื่อใช้กับไมโครคอนโทรลเลอร์มีตัวสร้าง atan2 () บนเว็บไซต์ของฉัน: http://vivara.net/cgi-bin/ cordic.cgi


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