تحريك متوسط الجيروسكوبات


طريقة وجهاز لخفض خطأ تكميم في بيانات اختبار الدوران بالليزر من خلال تصفية عالية السرعة الولايات المتحدة 4634283 A يظهر مرشح سرعة عالية تتحرك المتوسط ​​لتصفية أخطاء عالية السرعة، بما في ذلك الضوضاء البيضاء في زاوية وأخطاء كوانتيزاتيون، من بيانات الإخراج من حلقة ليزر الدوران بينما يتم اختباره. تسمح البيانات التي تمت تصفيتها بالتحقيق في سرعة أقل، المشي العشوائي في خطأ زاوية الدوران الذي يجري اختباره. للحصول على أفضل النتائج، يتم توصيل عدة مرشحات متوسطة متحركة في السلسلة. (12) 1. طريقة لمعالجة بيانات اختبار جيروسكوب الليزر الدائري تتضمن خطوات: (أ) تجميع البيانات المذكورة على مدى فترة عينة مختارة مسبقا و (ب) تصفية البيانات على تردد محدد سلفا بحيث يتم تقليل الأخطاء التي لا تعتمد على الوقت بمقدار أكبر بكثير من الأخطاء التي تعتمد على الوقت ثم (ج) تحليل خطأ المشي العشوائي للبيانات التي تمت تصفيتها المذكورة. 2. الطريقة المحددة في المطالبة 1 حيث يتم إنجاز خطوة التصفية بواسطة مرشح متوسط ​​متحرك واحد عالي السرعة على الأقل. 3. الطريقة كما هو محدد في المطالبة 2 حيث أن التردد المذكور مسبقا هو 1،024 هرتز، وقال أن فترة العينة المحددة مسبقا لا تتجاوز ثانية واحدة. 4. الطريقة المحددة في المطالبة 3 حيث يتم إنجاز خطوة التصفية بخمس مرشحات متوسط ​​متحركة متسلسلة. 5. طريقة لتعويض جيروسكوب ليزر حلقة تضم خطوات: (أ) تراكم بيانات اختبار الدوران خلال فترة عينة مختارة مسبقا و (ب) تصفية البيانات على تردد محدد سلفا بحيث يتم تقليل الأخطاء التي لا تعتمد على الوقت من قبل إلى حد كبير كمية أكبر من الأخطاء تعتمد الوقت ثم (ج) تحليل الخطأ المشي العشوائي من البيانات التي تمت تصفيتها قال ثم (د) معايرة وقال جيروسكوب وفقا قال الخطأ المشي العشوائي. 6. الطريقة كما هو محدد في المطالبة 5 حيث يتم إنجاز خطوة التصفية بواسطة مرشح متوسط ​​متحرك واحد عالي السرعة على الأقل. 7. الطريقة كما هو محدد في المطالبة 6 حيث أن التردد المذكور سلفا هو 1،024 هرتز وقال فترة العينة المحددة مسبقا لا تتجاوز ثانية واحدة. 8- الطريقة المحددة في المطالبة 7 حيث يتم إنجاز خطوة التصفية بخمس مرشحات متوسط ​​متحركة متسلسلة. 9 - جهاز لمعالجة بيانات الاختبار الخام من جيروسكوب ليزر عصري يشمل في الجمع: (أ) وسيلة لتراكم بيانات الاختبار على مدى فترة عينة منتقاة سلفا (ب) وسائل لتصفية البيانات المذكورة بمعدل محدد سلفا بحيث لا تعتمد أخطاء الوقت يتم تخفيضها بمقدار أكبر بكثير من الأخطاء التي تعتمد على الوقت و (ج) وسيلة لتحليل خطأ المشي العشوائي للبيانات التي تمت تصفيتها المذكورة. 10. الجهاز كما هو محدد في المطالبة 9 حيث وسائل المذكورة للتصفية تشمل على الأقل عالية السرعة واحد مرشح المتوسط ​​المتحرك. 11. الجهاز كما هو محدد في المطالبة 10 حيث معدل التردد المحدد مسبقا هو 1،024 هرتز وقال فترة العينة لا تتجاوز 1 ثانية. 12 - الجهاز على النحو المحدد في المطالبة 11 بما في ذلك خمسة مرشحات متوسطة الحركة المتتالية. مجال الاختراع يتعلق الاختراع الحالي بطريقة وأجهزة للحد من خطأ التكميم في الدوران بالليزر الدائري، وبشكل أكثر تحديدا، إلى طريقة وجهاز يرشح بيانات الاختبار من الدوران الدائري للليزر لإزالة أو الحد بشكل كبير من الضوضاء البيضاء في وأخطاء التكميم، وتسريع تقدير المشي العشوائي في أخطاء الزاوية للسماح بالتحقيق في أخطاء المشي العشوائي خلال فترة زمنية قصيرة نسبيا. خلفية من اختراع طريقة الحالية لتجميع البيانات من الدوران الدائري عصابة بسيطة نسبيا ومباشرة إلى الأمام. ومع ذلك، هذه الأساليب غير فعالة في التنبؤ المعلمات الدوران الأساسية وأداء النظام. المعلمات المشار إليها تشمل الإخراج زاوية الدوران في درجة في الساعة ومختلف المعلومات خطأ مثل المشي العشوائي في زاوية، الضوضاء البيضاء في زاوية وخطأ كوانتيزاتيون. المشي العشوائي في زاوية هو إشارة خطأ الذي يمثل الانجراف المتأصل من الدوران الفردية. ويمكن أن يكون هذا الانجراف إما في اتجاه إيجابي أو سلبي. على سبيل المثال، إذا كان الدوران بالليزر الدائري قد تم ربطه وأشير إلى الشمال، فإن البيانات المسجلة على مدى فترة زمنية قد تختلف باتجاه الشرق أو الغرب، بدلا من الإشارة باستمرار إلى اتجاه الشمال. هذا الخطأ يميل إلى زيادة مع مرور الوقت، وبالتالي يعتمد الوقت. الضوضاء البيضاء في الزاوية هو أن الاختلاف من أي جانب من الشمال الناجم عن مختلف عدم الدقة داخل النظام. الاختلافات إلى واحد أو الجانب الآخر من الشمال الحقيقي تميل إلى أن تكون متساوية على مدى فترة من الزمن، وبالتالي فهي لا تعتمد على الوقت. تحدث أخطاء التكميم عند انحراف الدوران أو يتذبذب عمدا. يحدث هذا الخطأ عند حساب التذبذبات لكل وحدة زمنية. في وحدة معينة من الوقت، سيكون هناك على الأرجح جزء من التذبذب الذي لم يكتمل. وهكذا، فإن العد لكل وحدة زمنية قد يكون مرتفعا أو منخفضا تبعا للمكان الذي كان فيه التذبذب في دورته عندما تغلق وحدة الزمن. هذا الخطأ يميل إلى إلغاء نفسه على مدى فترة طويلة من الزمن وبالتالي لا تعتمد على الوقت. في الفن السابق، يتم جمع البيانات الدوران على مدى فترة طويلة من الزمن للتقييم. وهذا يجعل من الصعب تقييم المشي العشوائي في زاوية الدوران عندما يتم اختباره على موقف الاختبار. ملخص للاختراع وفقا لذلك، هو موضوع الاختراع الحالي لتقليل الفترة الزمنية اللازمة لتقييم البيانات من الدوران الدائري الدائري أثناء الاختبار، وخاصة المشي العشوائي في بيانات الزاوية. هذا التخفيض في الوقت يتحقق من قبل بريفيلتر البيانات الدوران الذي يقلل من قوة الضوضاء البيضاء في زاوية وخطأ تكميم. ويستخدم مرشح عالي السرعة لتقليل الضوضاء البيضاء في الزاوية وأخطاء التكميم التي تميل إلى أن تكون أخطاء عالية التردد. التصفية لديها أقل من تأثير على سرعة أقل سرعة عشوائية في خطأ الزاوية، مما يجعل هذا الخطأ أسهل لمراقبة والتحقيق خلال فترة زمنية قصيرة. ويمكن للمرشح المسبق تخزين بيانات المدخلات المستلمة وبالتالي يقارن البيانات الواردة سابقا مع البيانات المعروضة حاليا. في التجسيد المفضل، المرشح عالي السرعة هو مرشح متوسط ​​متحرك رقمي. يتم زيادة تعزيز مفهوم استخدام مرشح نقل عالية السرعة من قبل سلسلة من المرشحات المتوسطة المتتالية المتحركة التي تصفية بسرعة البيانات زاوية عالية السرعة إلى حد كبير في الحد من الضوضاء البيضاء في زاوية وأخطاء كوانتيزاتيون مما يجعل تقييم المشي أقل تردد عشوائي في زاوية ممكن. وصف الرسومات سوف يكون هناك فهم أفضل للكائنات ومزايا الاختراع الحالي بعد الرجوع إلى المواصفات والرسومات التالية حيث: فيغ. 1 هو عرض مستعرضة من نموذجي التجمع الدوران الدائري الليزر والدوائر المرتبطة فيغ. 2 هو مخطط تخطيطي يوضح عناصر الاختراع الحالي في أبسط أشكاله فيغ. 3 هو مخطط كتلة مماثلة ل فيغ. 2 التي تبين سلسلة من المرشحات المتوسطة المتحركة المتتالية و فيغ. 4 هو مخطط كتلة تبين وظائف المرشحات الأولى والثانية من فيغ. 3. وصف إمبوديمنت المفضل يشير إلى الرسومات، فيغ. 1 يظهر ليزر الغاز نموذجي 10، مثل ليزر النيون الهيليوم. الليزر الغاز 10 هو نموذجي من الليزر التي يمكن استخدامها في جيروسكوب الليزر الدائري. يتم تشكيل الليزر داخل الجسم 12، مثل الكوارتز، وهي مادة تعرف باسم U. L.E. التيتانيوم سيلكات المصنعة من قبل كورنينج، أو مادة تعرف باسم سيرفيت المصنعة من قبل أوينز إلينوي. يتم إنشاء الجسم ليزر 12 مع أربعة ممرات 14 رتبت فيه لتشكيل مسار ليزر مستطيلة. ويمكن أيضا استخدام البناء الثلاثي داخل الاختراع الحالي. يتم إغلاق الممرات 14 للاحتفاظ خليط الغاز يتكون من حوالي 90 الهيليوم و 10 نيون في فراغ ما يقرب من 3 تور، على أن يكون مفهوما أن الضغط أتموبشريك حوالي 760 تور. وفقا لممارسة الليزر المعروفة، يتم توفير الجسم 12 مع اثنين من الكاثودات، 16 و 18، واثنين من الأنودات، 20 و 22، التي يتم تأمينها للجسم بطريقة معروفة أيضا في الفن. يتم إنشاء تفريغ الغاز بين الكاثود 16 والأنود 20 في ممر 14 وكذلك بين الكاثود 18 والأنود 22 في الممشى المعاكس. يتم تقديم الحاصلين 24 و 26 على طرفي نقيض من ممرات الجسم 14. وتقع المرآة 28 و 30 و 32 و 34 في الزوايا الأربع للمسار البصري الذي تم تشكيله داخل الممرات 14 من الدوران الدائري للحلقة 10. المرايا 28 و 34 هي تستخدم فقط لتعكس شعاع الليزر 36 و 38 بروبوغاتد في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة، على التوالي، من خلال الممرات 14. مرآة 30 يمكن أن تعلق على عنصر كهرضغطية 40 الذي ينقل المرآة داخل وخارج كجزء من نظام التحكم طول المسار. مرآة 32 يعكس جزئيا للسماح جزء صغير من الحزم الليزر 36 و 38 الحادث على سطحه لتمرير من خلال المرآة ويتم الجمع بين ومعالجتها لتوفير المعلومات التناوب. ومن ثم، فإن الحزم 36 و 38 تمثلان عوارض ليزر مضادة للتردد تحتوي كل منها على وضعين من الضوء المستقيم المستدير دائري لليسار واليسار لإنشاء ما مجموعه أربع حزم. شعاع 36 يمر من خلال مرآة تعكس جزئيا 32 لضرب مرآة خارجية 42 حيث ينعكس من خلال الخائن شعاع 44 على إشارة ضوئية 46. شعاع 38 يمر أيضا من خلال مرآة 32 لضرب مرآة خارجية الثانية 48 حيث ينعكس على شعاع الخائن 44 وينعكس مرة أخرى لتصبح كولينير تقريبا مع شعاع 36. هذه الحزم ضرب الضوئية 42 في وقت واحد لتوليد عدة ترددات ضربات بسبب الفرق في التردد بين الحزم الفردية الأربعة. وتنتشر ترددات الإيقاع بين جميع الأساليب الأربعة المتذبذبة في التجويف في الفوتوديود 46 كما هو موضح في بات باتس. رقم 4.123،162، الصادر في 31 أكتوبر 1978، وعنوانه V. E. ساندرز، الذي تم تعيينه لنفس المحال إليه كما هو الحال في الإختراع الحالي، بعنوان "مولتيوسيلاتور رينج ليسر غيرو" وتستخدم المعلومات الناتجة عن ترددات الإيقاع بين الأساليب الأربعة المتذبذبة أو تردد المذبذب المضبوط المتعدد التردد لتحديد حجم دوران الدوران الدائري للليزر داخل الدائرة المنطقية لتحديد حجم الدوران 50. وكما ذكر أعلاه، فإن الناتج من المنطق الدائرة 50 سوف تشمل بيانات موقف زاوية من الدوران الدائري الليزر وكذلك مكونات الخطأ المختلفة بما في ذلك المشي العشوائي في زاوية، الضوضاء البيضاء في زاوية، وخطأ تكميم. كما رأينا في الشكل. 2، يطبق خرج الدائرة المنطقية 50 على مرشاح متوسط ​​متحرك (ماف) 52 ومن ثم على محطة خرج بيانات مثل الطابعات الرقمية 54. ويكون المرشح المتوسط ​​المتحرك 52، في التجسيم المفضل، سرعة عالية رقمية مرشح لديه ذاكرة أو تخزين المعلومات القدرة على تخزين البيانات الواردة في وقت سابق للمقارنة مع البيانات الواردة حاليا. كما رأينا في الشكل. 3، قد يكون المرشح المتوسط ​​المتحرك متصلا في سلسلة مع مرشحات إضافية حيث يقوم المرشح الأول 52 بتخزين خرج الدوران 10 من الدائرة المنطقية 50 ويقارن تلك البيانات المخزنة مع المدخلات التي يتم تلقيها في وحدة زمنية بعد وقت أول وحدة T 2 2 وحدة. ثم تطرح المعلومات التي وردت في وقت سابق من المعلومات المستلمة حاليا لإنشاء خرج مرشح محدد على أنه F9 (T). ثم يتم تمرير هذه المعلومات إلى مرشح المتوسط ​​المتحرك سيوند 56 حيث يتم تخزينها لمدة 2 7 وحدات الوقت. بعد انقضاء 2 7 وحدات زمنية، يتم طرح المعلومات القديمة من المعلومات المستلمة حديثا وتمريرها ك F7 (T) إلى المرشح المتوسط ​​المتحرك التالي 58 حيث يتم تخزينها لمدة 2 5 وحدات من الوقت قبل إجراء المقارنة بطرح المعلومات المخزنة من المعلومات المستلمة حديثا. ثم تنتقل هذه الإشارة التي تعرف بأنها F5 (T) إلى مرشاح متوسط ​​متحرك رابع 60 حيث تتكرر العملية كل 2 3 وحدات زمنية وتمرر المعلومات F3 (T) إلى مرشاح متوسط ​​متحرك خامس 62 حيث تتكرر العملية مرة أخرى إلى الوحدة الأولى من الزمن (2 1). ثم يتم عرض الناتج F1 (T) من المرشح المتوسط ​​المتحرك 62 إلى محطة البيانات 54 لمراجعتها من قبل المستخدم للجهاز. يشير الآن إلى الشكل. 4، مكونات الدائرة الكهربائية التي تنتج مرشحات المتوسط ​​المتحرك 52 و 56 من الشكل. 3. ويبدأ الجهاز بالوسائل 64 التي تبدأ تسلسل توقيت مرشاح المتوسط ​​المتحرك 52 عن طريق تحديد فاصل زمني (T-1) في الدائرة 66. وبعد بدء الفاصل الزمني، يطبق خرج الليزر 10 على جهاز 66 الذي يقيس في الفاصل الزمني T. ثم يتم تخزينها في وحدة تخزين 70 وتطبيقها على وحدة الطرح 72. كما يتم نقلها إلى وحدة التخزين 70، والقيمة القديمة المخزنة في وقت سابق، في هذه الحالة 2 9 أو 512 (T-2 9)، يطبق على وحدة الطرح 72 حيث تطرح هذه القيمة من القيمة الجديدة (T). ويتم تطبيق الناتج الناتج للمرشاح F9 (T) كإشارة خرج من الوحدة 74 إلى دخل مرشاح المتوسط ​​المتحرك التالي 56. ويؤدي دخل الفلتر 56 إلى بدء فاصل زمني ثابت في الدائرة 66 قبل القياس الفعلي في الدارة 68. ثم يطبق الناتج F9 (T) على وحدة التخزين 70 ووحدة الطرح 72. وفي الوحدة 72 يطرح الناتج الذي تم عرضه حديثا من المرشح 52 من قيمة مقدمة سابقا قدمت 2 7 أو 128 مرة وحدات سابقة ممثلة بالرمز F9 (T-2 7). ثم تطبق الإشارة الناتجة F7 (T) على مرشاح المتوسط ​​المتحرك 58 الذي يعرض خرجه F5 (T) على مرشح مماثل 60 يطبق خرجه F3 (T) على المرشح 62 الذي يطبق خرجه F1 (T) على محطة البيانات 54. سيكون مفهوما الآن أن مرشاح المتوسط ​​المتحرك يجري تحديثه باستمرار عن طريق مقارنة المعلومات التي وردت في فترة زمنية سابقة مع معلومات مستلمة فيما بعد. تقنية الحصول على البيانات وتصفية التي تعمل بمعدل عال، 1024 دورات في الثانية، هو بسيط للغاية. يتم تمرير نبضات الدوران الخام من خلال سلسلة من المرشحات المتوسطة المتحركة قبل أن يتم تجميعها في عينات من ثانية واحدة. هذا النظام لديه عدد من المزايا. أولا، العملية الوحيدة المستخدمة هي الجمع والطرح مما يقلل من الدوائر اللازمة لتنفيذ مخطط التصفية. وثانيا، فإن المرشحات لها استجابات نبضية محدودة، وهي تحقق قيمة نهائية في أقل من ثانية واحدة. ثالثا، المرشحات هي المحافظة قليلا وهو ما يعني ببساطة أن جميع العمليات هي بالضبط دون تقريب بها. من خلال تصفية عالية السرعة، والضوضاء البيضاء في زاوية وأخطاء تكميم قد يتم تصفيتها بشكل كبير من البيانات. ويمكن الآن أن تلاحظ سرعة أقل سرعة عشوائية في زاوية للتحقيق في هذه الآثار قصيرة المدى الدوران مؤقتة. وينبغي أن يكون مفهوما أن الجهاز والطريقة الموصوفة هنا يعمل فقط على الجيروسكوبات الليزر الدائري التي يتم اختبارها. ويمكن كتابة المعادلات التي تعبر عن وظائف المرشحات المتوسطة المتحركة المتسلسلة 52 و 56 و 58 و 60 و 62 على النحو التالي: لاحظ أن خرج المرشاح 52، F9 (T)، يتم تشكيله عن طريق تحديد إطار زمني، F9 (T -1)، وحدة واحدة من الوقت قبل الوقت الذي تقاس فيه الزاوية الفعلية (T). ثم يطرح القياس السابق للوحدات الزمنية 2 2 أو 512 قبل ذلك (T-2 9) من القيمة المستقبلة حديثا (T) للحصول على خرج المرشاح F9 (T). وبالمثل، فإن المرشح 56 يطرح القيمة المخزنة السابقة من F9 (T) تلقى 2 7 أو 128 وحدة زمنية في وقت سابق في حين أن 58 يطرح القيمة المخزنة السابقة من F7 (T) تلقى 2 5 أو 32 وحدة وقت سابق. ويتكرر هذا في المرشح 60 الذي يطرح القيمة المخزنة F5 (T) على وحدات 3 3 أو 8 وقت سابق، F5 (T-2 3)، من الإشارة المستقبلة حديثا F5 (T) لإنتاج المخرج F3 (T) من والتي تطرح القيمة المخزنة السابقة F3 (T)، المخزنة ولكن وحدات الوقت 2 في وقت سابق في عامل التصفية 62. يساوي الناتج النهائي للمرشح 62، F1 (T) إخراج جميع المرشحات أو القيمة المرشحة للفلتر. وتراکم ناتج المرشح 62 أو تلخص علی النحو التالي: EQU1 ستلاحظ أن خرج المرشح 62، F1 (T)، مقسوم علی عامل قياس 2 -25. وفي حين تم وصف الاختراع السابق باستخدام عوامل من 2 إلى 9 والقوى التنازلي، سيكون مفهوما أنه يمكن أيضا استخدام ترتيبات أخرى. وعلاوة على ذلك، سيكون مفهوما أنه ينبغي ألا يقتصر الاختراع على العدد المحدد للمرشحات المتوسطة المتحركة أو بأي تصميم معين لمرشاح المتوسط ​​المتحرك. طالما يتم استخدام فلتر الذي يخزن قيمة في وقت سابق من، فإن الاختراع الحالي يعمل لميزة. إعداد مولتيويي سي V2.1 مساعدة المطلوبة :) مرحبا أول مرة ملصق - قارئ وقت طويل لا تزال غير قادرة على الحصول على هذه الحق مجموعة. لقد كنت من خلال ذلك وعدد قليل من منتديات الوظائف الأخرى هناك. مع هذا المجلس المدرجة أدناه مع جميع المعدات الحالية أنا باستخدام لدي الآن الضوء الأخضر، الضوء الأحمر والآن لا يزال الضوء الأزرق فلاش. كان لي في وقت واحد العمل مع الارسال بشكل جيد جدا - لا الدوران أو أسك بارو - ولكن المحركات كانت تستجيب بشكل صحيح ثم وجدت دليل نوبيز - الفكر لقد كان كل شيء كان القدرة على تسليح الذراع - كان قادرا على الحصول على كل محركات لتشغيل الصحيح و الدوران كوتسمدكوت للعمل - لاحظ أن هذا هو كل اختبار مع نو الدعائم - أي جانب من أي وقت مضى يميل - أنا يمكن أن نسمع أن المحرك تدور بشكل أسرع - جيد ثم متصلا حتى MultiWiiconf21 - رأى أن المحركات 1 أمبير 2 كانت تظهر أن يكون تشغيل كامل تقريبا و 3 عن الحق. كانت المحركات 4 أمبير 6 حوالي 14 من ما 1 أمبير 2 أظهرت و 5 كان مجرد القفز من صفر إلى كامل إراكتيكلي. مرة أخرى كل هذا يظهر في MultiWiiconf21. أيضا كوبيتش و رولكوت وكذلك الرسم البياني لبلدي هيكسا تتحرك عشوائيا في جميع أنحاء المكان. الرسم البياني - مرة أخرى، كذاب في جميع أنحاء - لذلك، حاولت تكوين على الانترنت - panoramaic. seconfigurator2.1 والآن لدي أي شيء. الضوء الأخضر على ثابت، الضوء الأحمر على ثابت، الضوء الأزرق وامض دون توقف. غير قادر على حتى الذراع. وبالتالي. جئت إليكم، والمستخدمين وأكثر من ذلك بكثير من ذوي الخبرة الناس مع هذا - مساعدة لول لا أحد لديه هذا الإعداد أو إغلاق مع جيدة كوتوركينغوت البرامج الثابتة أمبير ملفات كونفيغ الثابتة أنها ستنشر أو ترسل لي استخدام أود أن آل للعمل كما هو مدرج في أجزاء أدناه - ولكن سيكون سعيدا جدا في هذه المرحلة فقط ل جيت المحركات و جيروبارواك للعمل بشكل صحيح. والقلق حول غس و IC2 و لد يمكن أن تعمل على ونحن نذهب. لقد تابعت العديد من المواضيع - روابط - حتى يوتيوب فيدس وهذا هو بقدر ما يمكنني الحصول على بلدي. كريوس موك مولتيوي القياسية V2.0 سي الطيران المراقب المجلس الثابتة V2.1 - حجم صغير، 35x35mm تصاعد الثقوب - 6 قنوات الإدخال لمستقبل القياسية و بم سوم استقبال - ما يصل إلى 8 محور المحرك الإخراج - 2 إخراج الماكينات ل بيتش و رول جيمبال نظام - A سيرفو الإخراج لتحريك زر الكاميرا - A فتديوارت تل المقبس لتصحيح، تحميل البرامج الثابتة أو شاشة لد - مأخذ I2C لتمديد الاستشعار، I2C شاشة لدولد أو كريوس I2c-غس مجلس ناف - منفصلة 3.3V و 5 V لدو الجهد المنظم - أتميغا 328P متحكم - ITG3205 3 محور محور ميمس الدوران - MPU6050 6 محور الدوران مع وحدة معالجة الحركة - HMC5883L 3-محور المغنطيسية الرقمية - BMP085 استشعار الضغط الرقمي - على متن المنطق تحويل مستوى سونيسكي V2216-11 900KV فرش المحركات X 6 مع نمط أبك 12x3.8quot الدعائم هوبيونغ سكاي ووكر 40A إيسك شكس أتغ 650-X6-16 16MM الذراع عرافة الدوار سداسي فوردلينغ الإطار عرافة في نمط كوتسكوت I2C-غس ناف وحدة: - جميع البيانات غس المتاحة عبر حافلة I2C للاتصال 328P مولتيوي فك - A ليد على متن شو w غس 3d إصلاح الوضع - أتميغا 328 وعاء متحكم-2 موليكس 1.25 ملليمتر 4pin مقبس ل غس استقبال و فك-2 منفذ ل إيسب و فتدي أخرى-البعد: 20 ملليمتر x 30 ملليمتر - الارتفاع: 5 ملليمتر - الوزن: 2.4 جرام 5 جرام (تشمل كابل) - حفرة قطرها: 3MM - مستقل غس استقبال - U-بلوكس نيو-6M وحدة غس - بناء في 18X18mm هوائي غس نشط - وارت تل المقبس - بطارية قابلة للشحن للنسخ الاحتياطي أخرى - البعد: 22mmX30mm - الارتفاع: 13MM - الوزن: 12g14.4g (تشمل كابل) حفرة قطرها: 3mm كريوس كو-16 أوليد وحدة العرض - سطوع عالية، والانبعاث الذاتي، نسبة تباين عالية - أحادية اللون 12864 نقطة - 5V واجهة I2C - تستخدم للقياس عن بعد والتصحيح مولتيوي فك. - البعد: 27mmX27mm - الارتفاع: 6.5mm - الوزن: 3.7g4.9g (تشمل كابل) مزيد من الروابط للحصول على معلومات: هل لديك مو مولتيوي القياسية سي (لا شيء I2c دبوس الإصدار) 2.0 أنا نفسي حاول 2.1 واجهة المستخدم الرسومية، فشلت في العمل على الإطلاق . في النهاية كان لي لتحميل مو-وينغوي 1.4. أنا لم ترقية البرامج الثابتة ويجري مبتدئ لوحات فك ليس كثيرا فكرة. و مولتيوي 1.4 يعمل بشكل جيد، ولكن اكتشفت مولتيوي 2.1 لا يعمل مع آلات فيستا. مولتيوي 1.4 يفعل كل ذلك بارو، أسيلز، ماج، الجيروسكوبات جميع إرسال واستقبال البيانات، فقط لا خريطة وظيفة. جاء مجلس بلدي مسبقة، لا تعليمات لا تلميحات الثابتة، ندى وأنا على حذر من وميض البرامج الثابتة الجديدة إذا كان المجلس يعمل بالفعل على النحو المنشود. وأضاف صور زوجين بالنسبة لك. بلدي المجلس وتشغيله في وينغوي 1.4، وأيضا ترك معلومات الاستشعار من بلدي المجلس ل. ATMEGA328P متحكم ITG3205 ثلاثة محاور جيروسكوب الرقمية BMA180 ترياكسيال التسارع BMP085 استشعار الضغط HMC5883L ثلاثة محاور ماج موك مولتيوي سي الإصدار القياسي 2.0. وهنا يعمل على وينغوي 1.4 (2.0dev عندما الأحمال اختار الخيار) حصلت على هذا المجلس، وقال انه كان كريوس سي، وكان قليلا نازلة عندما تحولت زمر حتى في الأصل أرسلت بواسطة اختبار الطيار مفيا نعم أعتقد أننا يمكن أن تحصل على النظام الخاص بك عمل. الحاجة إلى معرفة ما كنت قد تغيرت حتى الآن على الرغم من. هل قمت بتنزيل ملف مضغوط 2.1 - هل أنت قادرة على بدء واستخدام 2.1 تكوين - هل قمت بإرسال رمز 2.1 إلى المجلس - هل أنت قادرا على رؤية تيه رمز من نوع السيارة الخاصة بك تظهر في الجزء السفلي الأيمن من كونجيوراتور - ما أروينو نسخة أسر كنت تستخدم على الرغم من أنه يقفز في كل مكان حاول 1.01، ثم 1.03 - حاليا باستخدام 1.52. ملف كونفيغ الخاص بي قيد الاستخدام هو: يتكون هذا الملف من عدة أقسام لإنشاء تركيبة العمل يجب أن تجعل على الأقل اختياراتك في القسم 1. 1 - باسيك سيتوب - يجب تحديد خيار في كل كتلة. هذا يفترض أن لديك 4 قنوات متصلة مجلس الإدارة الخاصة بك مع إسس القياسية والمجالس. 2 - كوبتر تايب خيارات محددة - كنت على الأرجح تريد أن تحقق من الخيارات الخاصة بك نوع المروحية 3 - أرسي نظام الإعداد 4 - وحدات المعالجة المركزية ألترنات أمب بواردز - إذا كان لديك 5 - الإعداد البديل - حدد البديل ر (سبوس، بم، الخ) البديل إيسك المدى، الخ هنا 6 - المميزات الاختيارية - تمكين لطيفة أن يكون الميزات هنا (فلايتموديس، لد، القياس عن بعد، رصد البطارية الخ) 7 - تونينغ أمبير ديفيلوبر - إذا كنت تعرف ما تقومون به كنت قد حذر ملاحظات: يتم تخزين 1. المعلمات ملحوظ مع () في التعليق في إيبروم ويمكن أنب عن طريق المسلسل رصد أو لد. تغيير هذه القيم في config. h وتحميل تتطلب إعادة تعيين من واجهة المستخدم الرسومية نافذة المفعول نوع مولتيكوبتر تعريف جيمبال تعريف بي تعريف تري تعريف كوادب تعريف كوادكس تعريف Y4 تعريف Y6 تعريف HEX6 تعريف HEX6X تحديد HEX6H جديد نموذج تحديد OCTOX8 تعريف أوكتوفلاتب تعريف أوكتوفلاتكس تعريف فلاينجوينغ تحديد VTAIL4 تعريف إيربلان تحديد سينغليكوبتر تعريف دوبالكوبتر تعريف HELI120CCPM تحديد HELI90DEG موتور مينثروتل تعيين الحد الأدنى من الأمر خنق إرسالها إلى إيسك (تحكم السرعة الإلكترونية) هذه هي القيمة الدنيا التي تسمح المحركات لتشغيل بسرعة خاملة تحديد مينثروتل 1300 ل تورنيغي أفخم إيسس 10A تحديد مينثروتل 1120 ل إيسس سوبر بسيطة 10A تحديد مينثروتل 1064 خاص إيسك (سيمونك) تحديد مينثروتل 1050 ل إسس المصقول مثل الدعسوقة تحديد مينثروتل 1150 () ماكسثروتل موتور هذا هو الحد الأقصى لقيمة المجالس الاقتصادية والاجتماعية في السلطة الكاملة، ويمكن أن تكون هذه القيمة زيادة تصل إلى 2000 تحديد ماكسثروتل 1850 مينكوماند هذه هي قيمة ل الدول الأعضاء في المجال الاقتصادي والاجتماعي عندما لا تكون مسلحة في بعض الحالات، يجب تخفيض هذه القيمة إلى 900 لبعض اللجان الاقتصادية والاجتماعية محددة، وإلا فإنها فشلت في تحديد تعريف مينكوماند 1000 I2C سرعة تحديد I2CSPEED 100000L 100KHZ الوضع العادي، يجب أن تستخدم هذه القيمة ل ومب حقيقي I2CSPEED 400000L 400KHZ وضع سريع، وأنها تعمل فقط مع بعض مستنساخ ومب الداخلي الداخلية I2c بولوبس تمكين الداخلية سحب I2C شكا (في معظم الحالات فمن الأفضل استخدام بولوبس الخارجية) تحديد INTERNALI2CPULLUPS لوحات إيمو مجتمعة إذا كنت تستخدم لوحة استشعار محددة: يرجى تقديم أي تصحيح إلى هذه القائمة. ملاحظة من أليكس: أنا فقط تملك بعض لوحات، لوحات أخرى، إم غير متأكد، تم جمع المعلومات عن طريق المنتديات أرسي، أن يكون حذرا تحديد FFIMUv1 أول لوحة 9DOFbaro من جوسي، مع HMC5843 لوت - أكده أليكس تحديد FFIMUv2 النسخة الثانية من لوحة 9DOFbaro من جوسي مع HMC5883 lt - أكد من قبل أليكس تحديد vim.1 v0.1 v0.2 أمب v0.2 v0.3 v0.3 النسخة من مجلس 9DOF من فابيو تحديد freeimuv03 فريمو v0.3 v0.3.1 vim.3v فرييمو vim.3v فريمو v0.3.5 لا بارو تحديد freeimuv035ms فريمو v0.3.5MS lt - أكد من قبل أليكس تعريف FreeIMUv035BMP فريمو V0.3.5BMP تحديد فرييمو v0.4 فريمو V0.4 مع MPU6050، HMC5883L، MS561101BA lt - أكده أليكس تعريف FREEIMUv043 نفس FREEIMUv04 مع MPU6050 النهائي (مع مقياس أسك الصحيح) تحديد نانوي أصغر مولتيوي فك على أساس MPU6050 برو بروك مقرها على أساس Lt - أكد من قبل أليكس تعريف بيبو 9DOF مجلس من إراز تعريف كوادرينو كامل مجلس فك مجلس 9DOFbaro من ويتسبي مع BMP085 بارو lt - أكده أليكس تعريف كوادرينوزوم كامل فك لوحة مجلس 9DOFbaro من ويتسبي الطبعة الثانية تحديد كوادرينوزومز كامل مجلس فك مجلس 9DOFbaro من ويتسبي الطبعة الثانية lt - أكده أليكس تحديد ألينون كامل مجلس فك أو مستقل 9DOFbaro مجلس من كسجيو تعريف AEROQUADSHIELDv2 تحديد ATAVRSBIN1 اتميل 9DOF (مساهمة من قبل يوسباندي). يتطلب 3.3V السلطة. تعريف سيريوس سيريوس المستكشف إيمو lt - أكد من قبل أليكس تعريف سيريوسغس سيريوس المستكشف إيمو باستخدام ماغ خارجي على متن غس lt - أكدها أليكس تحديد SIRIUS600 سيريوس المستكشف إيمو باستخدام ومب لتحديد الدوران تعريف مينيويي جوسيس مينيوي المراقب المالي لوت أكده أليكس تعريف ميكرويي ميكرووي 10DOF مع ATmega32u4، MPU6050، HMC5883L، MS561101BA من flyduino. net تحديد CITRUSv21 سيتروس من qcrc. ca تحديد CHRY6DOFv10 تحديد DROTEK10DOF دروتيك 10DOF مع ITG3200، BMA180، HMC5883، BMP085، ث أو و ليك تحديد DROTEK10DOFMS دروتيك 10DOF مع ITG3200، BMA180، HMC5883 ، MS5611، ليك تعريف DROTEK6DOFv2 دروتك 6DOF v2 تحديد DROTEK6DOFMPU دروتيك 6DOF مع MPU6050 تحديد DROTEK10DOFMPU تحديد MonGOOSE10 مندوز 1.0 store. ckdevices تحديد كريوسليت كريوس مولتيوي لايت تحديد كريوس كريوس مولتيوي سي تحديد OPENLRSv2MULTI أوبنلرس V2 مجلس متعدد أرسي استقبال بما في ذلك ITG3205 و ADXL345 تعريف BOARDPROTO1 مع MPU6050 HMC5883L مس بارو تحديد BOARDPROTO2 مع MPU6 050 الرقيق MG3110 مس بارو تحديد GY80 الصينية 10 دوف مع L3G4200D ADXL345 HMC5883L BMP085، ليك تحديد GY85 الصينية 9 دوف مع ITG3205 ADXL345 HMC5883L ليك تحديد GY86 الصينية 10 شعبة الشؤون المالية مع MPU6050 HMC5883L MS5611، ليك تحديد GY521 الصينية 6 شعبة الشؤون المالية مع MPU6050، ليك تحديد INNOVWORKS10DOF مع ITG3200، BMA180، HMC5883، BMP085 المتاحة هنا diymulticopter تحديد INNOVWORKS6DOF مع ITG3200، BMA180 المتاحة هنا diymulticopter تحديد MultiWiiMega MEGA MPU6050HMC5883LMS5611 المتاحة هنا diymulticopter تحديد PROTODIY 10DOF مجلس ميجا تحديد IOIMINIMULTIWII bambucopter تحديد Bobs6DOFV1 BobsQuads 6DOF V1 مع ITG3200 أمبير BMA180 تحديد Bobs9DOFV1 BobsQuads 9DOF V1 مع ITG3200 ، BMA180 أمب HMC5883L تحديد Bobs10DOFBMPV1 بوبسكوادس 10DOF V1 مع ITG3200، BMA180، HMC5883L أمب BMP180 - BMP180 هو برنامج متوافق مع BMP085 تحديد فليدينومبو تعريف CRIUSAIOPROV1 تحديد DESQUARED6DOFV2GO ديسكوارد V2 مع ITG3200 فقط تحديد DESQUARED6DOFV4 ديسكوارد V4 مع MPU6050 تحديد ليدي بيرد تعريف MEGAWAPV2STD المتاحة هنا: أكد مولتيركشوب lt - أليكس تعريف MEGAWAPV2ADV تحديد HKMultiWiiSEV2 هوبيكينغ مجلس مع MPU6050 HMC5883L BMP085 تحديد HKMultiWii328P أيضا المسمى كوثوبيبروكوت على الظهر. ITG3205 BMA180 BMP085 NMC5583L DSM2 موصل (سبيكتروم الأقمار الصناعية) تعريف رينيتفك رينيت فك مع MPU6050 و MS561101BA رنيت تعريف فليدولترا MEGA10DOFMT3339 فك أجهزة الاستشعار مستقلة ترك التعليق عليه إذا كنت بالفعل فحص مجلس معين فوق I2C جيروسكوب تحديد ومب تعريف ITG3200 تعريف L3G4200D تحديد السرد MPU6050 أسك I2C التسارع تعريف نونشوك إذا كنت ترغب في استخدام نونكوك اتصال بمب تعريف MMA7455 تحديد ADXL345 تحديد BMA020 تحديد BMA180 تحديد نونشاك إذا كنت ترغب في استخدام نونكوك كما مستقل I2C أسك دون ومب حدد LIS3LV02 تحديد LSM303DLxACC تحديد MMA8451Q I2C بارومتر تحديد BMP085 تحديد MS561101BA I2C تعريف المغنطيسية تعريف HMC5843 تعريف HMC5883 تحديد AK8975 تحديد MAG3110 سونار لغرض التصور حاليا - لا رمز التحكم وراء تحديد SRF02 استخدام أجهزة الاستشعار ديفانتيش سرف i2c تحديد SRF08 تحديد SRF10 تحديد SRF23 أدك التسارع ل 5 DOF من سباركفون، يستخدم التناظرية بين A1A2A3 تحديد أدكاك مجلس شرقية أتيون شيفت إذا كان لديك إطار مصمم فقط لوضع ولا يمكنك تدوير فك فيسيكالي للطيران في وضع X (أو العكس بالعكس) يمكنك استخدام واحدة من هذه الخيارات لأجهزة الاستشعار الظاهرية دوران 45 ديغريس، ثم تعيين نوع من مولتيكوبتر وفقا لرحلة الوضع. التحقق من المحركات ترتيب وتوجيهات المحركات التناوب لمطابقة مع نقطة أمامية جديدة أونكومنت خيار واحد فقط تحديد SENSORSTILT45DEGRIGHT تدوير فرونت 45 ديغريس تحديد اتجاه عقارب الساعة SENSORSTILT45DEGLEFT تدوير فرونت 45 ديغريس عكس عقارب الساعة تري تحديد يوديركتيون 1 تعريف يوديركتيون -1 إذا كنت ترغب في عكس تصحيح ياو الاتجاه يمكنك تغيير تروكوبتر سيرفو السفر هنا تعريف ترياوكونستراينتمين 1020 تحديد ترياوكونستراينتماكس 2000 تحديد تريوميدل 1500 () ذيل مركز مضاعفات بوس. - استخدم هذا لتقليم الأولي تقليم في وقت لاحق نقطة منتصف عن طريق لد بي يمكنك تغيير اتجاه السفر مضاعفات بيكوبتر هنا تعريف بيبيتشديركتيون 1 تعريف بيبيتشديركتيون -1 أرمدسارم تعطيل اختياريا تركيبات عصا ل أرمديسارم المحركات. في معظم الحالات واحد من الخيارين ل أرمديسارم عبر عصا تكس كافية تحديد ألوارمديسارمفياتكسياو تحديد ألوارمديسارمفياتكسرول تثبيت كام تنطبق الخطوط التالية فقط لنظام تثبيت الميل بيتشول. إلغاء إدخال الخط الأول أو الثاني لتنشيطه تعريف سيرفوميكستيلت تعريف سيرفوتيلت تعريف تيلتبيتشمين 1020 السفر المؤازرة دقيقة، لا تعيينه أدناه 1020 تحديد تيلتبتيتشماكس 2000 مضاعفات السفر ماكس، ماكس value2000 تحديد تيلتبتشميدل 1500 مضاعفات قيمة محايدة تحديد تيلتبتيشبروب 10 مضاعفات نسبية (مرتبطة إلى زاوية) يمكن أن تكون سلبية لعكس الحركة تعريف تيلتبتيشوكس AUX3 أوكس قناة للكتابة فوق الملعب كام (AUX1-AUX4)، تعليق لتعطيل الإدخال اليدوي وتحرير قناة أوكس تعريف تيلترولمين 1020 تعريف تيلترولماكس 2000 تعريف تيلترولميدل 1500 تعريف تيلترولبروب 10 تعريف تيلترولولوش AUX4 أوكس قناة للكتابة فوق كام لفة (AUX1-AUX4)، تعليق لتعطيل الإدخال اليدوي وتحرير أوكس قناة قناة وظيفة الزناد. تفعيلها عن طريق خيارات أرسي في واجهة المستخدم الرسومية، ومؤازرة outputA2 على بروميني تحديد كامتريج تحديد كامزرفوهيه 2000 موقف مضاعفات الدولة عالية تحديد كامزيرفولو 1020 موقف أجهزة الدولة لو تحديد كامتيمهيه 1000 مدة مضاعفات الدولة عالية أعرب في مس تحديد كامتيميلو 1000 مدة LOW state servo expressed in ms Flying Wing you can change change servo orientation and servo minmax values here valid for all flight modes, even passThrough mode need to setup servo directions here no need to swap servos amongst channels at rx define PITCHDIRECTIONL 1 left servo - pitch orientation define PITCHDIRECTIONR -1 right servo - pitch orientation (opposite sign to PITCHDIRECTIONL, if servos are mounted in mirrored orientation) define ROLLDIRECTIONL 1 left servo - roll orientation define ROLLDIRECTIONR 1 right servo - roll orientation (same sign as ROLLDIRECTIONL, if servos are mounted in mirrored orientation) define WINGLEFTMID 1500 () left servo center pos. - use this for initial trim later trim midpoint via LCD define WINGRIGHTMID 1500 () right servo center pos. - use this for initial trim later trim midpoint via LCD define WINGLEFTMIN 1020 limit servo travel range must be inside 10202000 define WINGLEFTMAX 2000 limit servo travel range must be inside 10202000 define WINGRIGHTMIN 1020 limit servo travel range must be inside 10202000 define WINGRIGHTMAX 2000 limit servo travel range must be inside 10202000 Airplane define USETHROTTLESERVO For use of standard 50Hz servo on throttle. define SERVORATES Rates in 0-100 define SERVODIRECTION Invert servos by setting -1 define FLAPPERONS AUX4 Mix Flaps with Aileroins. define FLAPPERONEP Endpooints for flaps on a 2 way switch else set and program in radio. define FLAPPERONEP Or Flapperons up for CrowMix define FLAPPERONINVERT Change direction om flapperons define FLAPS AUX4 Traditional Flaps on A2 invert with SERVODIRECTION servo2). define FLAPEP Endpooints for flaps on a 2 way switch else set and program in radio. define FLAPSPEED 3 Make flaps move slowm Higher value is Higher Speed. Common for Heli amp Airplane define D12POWER Use D12 on PROMINI to power sensors. Will disable servo4 on D12 define SERVOOFFSET () Adjust Servo MID Offset amp Swash angles Selectable channels: ROLL, PITCH, THROTTLE, YAW, AUX1,AUX2,AUX3,AUX4 Governor: attempts to maintain rpm through pitch and voltage changes predictive approach: observe input signals and voltage and guess appropriate corrections. (the throttle curve must leave room for the governor, so 0-50-75-80-80 is ok, 0-50-95-100-100 is not ok. Can be toggled via aux switch. define GOVERNORP 7 () proportional factor. Higher value - gt higher throttle increase. Must be gt1 0 turn off define GOVERNORD 4 () decay timing. Higher value - gt takes longer to return throttle to normal. Must be gt1 define GOVERNORR 10 () voltage impact correction scale in 0.1 units. Higher value - gt more compensation for voltage drops. normal is value 10 ltgt 1.0 0 is off Heli Channel to control CollectivePitch define COLLECTIVEPITCH THROTTLE Set Maximum available movement for the servos. Depending on model define SERVOENDPOINTHIGH define SERVOENDPOINTLOW Limit the range of Collective Pitch. 100 is Full Range each way and position for Zero Pitch define COLLECTIVERANGE . define YAWCENTER 1500 Use servo5 SERVOENDPOINTHIGHLOW for the endpoits. define YAWMOTOR 0 If a motor is used as YAW Set to 1 else set to 0. Servo mixing for heli 1 20 Use 110 fractions (ex.5 510 12) define SERVONICK define SERVOLEFT define SERVORIGHT Servo mixing for heli 90 define SERVODIRECTIONS -1 will invert servo Limit Maximum controll for Roll amp Nick in 0-100 define CONTROLRANGE use servo code to drive the throttle output. You want this for analog servo driving the throttle on IC engines. if inactive, throttle output will be treated as a motor output, so it can drive an ESC define HELIUSESERVOFORTHROTTLE Single and DualCopter Settings Change to -1 to reverse servomovement per axis Servosettings for SingleCopter define SINGLECOPTRERYAW Left, Right, Front, Rear define SINGLECOPTRERSERVO Pitch, Pitch, Roll, Roll Servosettings for DualCopter define DUALCOPTERSERVO Pitch, Roll Use SERVOOFFSET and SERVORATES in Heli and Airplane section for centering and endpoints note: no need to uncomment something in this section if you use a standard receiver PPM Sum Reciver The following lines apply only for specific receiver with only one PPM sum signal, on digital PIN 2 Select the right line depending on your radio brand. Feel free to modify the order in your PPM order is different define SERIALSUMPPM PITCH, YAW, THROTTLE, ROLL, AUX1,AUX2,AUX3,AUX4,8,9,10 ,11 For GraupnerSpektrum define SERIALSUMPPM ROLL, PITCH, THROTTLE, YAW, AUX1,AUX2,AUX3,AUX4,8,9,10 ,11 For RobeHitecFutaba define SERIALSUMPPM ROLL, PITCH, YAW, THROTTLE, AUX1,AUX2,AUX3,AUX4,8,9,10 ,11 For Multiplex define SERIALSUMPPM PITCH, ROLL, THROTTLE, YAW, AUX1,AUX2,AUX3,AUX4,8,9,10 ,11 For some HitecSanwaOthers Uncommenting following line allow to connect PPMSUM receiver to standard THROTTLE PIN on MEGA boards (eg. A8 in CRIUS AIO) define PPMONTHROTTLE Spektrum Satellite Reciver The following lines apply only for Spektrum Satellite Receiver Spektrum Satellites are 3V devices. DO NOT connect to 5V For MEGA boards, attach sat grey wire to RX1, pin 19. Sat black wire to ground. Sat orange wire to Mega boards 3.3V (or any other 3V to 3.3V source). For PROMINI, attach sat grey to RX0. Attach sat black to ground. define SPEKTRUM 1024 define SPEKTRUM 2048 define SPEKSERIALPORT 1 Forced to 0 on Pro Mini and single serial boards Set to your choice of 0, 1, or 2 on any Mega based board (defaults to 1 on Mega). Defines that allow a quotBindquot of a Spektrum or Compatible Remote Receiver (aka Satellite) via Configuration GUI. Bind mode will be same as declared above, if your TX is capable. Ground, Power, and Signal must come from three adjacent pins. By default, these are Ground4, Power5, Signal6. These pins are in a row on most MultiWii shield boards. Pins can be overriden below. Normally use 3.3V regulator is needed on the power pin. If your satellite hangs during bind (blinks, but wont complete bind with a solid light), go direct 5V on all pins. For Pro Mini, the connector for the Satellite that resides on the FTDI can be unplugged and moved to these three adjacent pins. define SPEKBIND Un-Comment for Spektrum Satellie Bind Support. Code is 420 bytes smaller without it. define SPEKBINDGROUND 4 define SPEKBINDPOWER 5 define SPEKBINDDATA 6 SBUS RECIVER The following line apply only for Futaba S-Bus Receiver on MEGA boards at RX1 only (Serial 1). You have to invert the S-Bus-Serial Signal e. g. with a Hex-Inverter like IC SN74 LS 04 define SBUS RC signal from the serial port via Multiwii Serial Protocol define RCSERIAL Hexa Motor 5 amp 6 Pins PIN A0 and A1 instead of PIN D5 amp D6 for 6 motors config and promini config This mod allow the use of a standard receiver on a pro mini (no need to use a PPM sum receiver) define A0A1PINHEX Aux 2 Pin possibility to use PIN8 or PIN12 as the AUX2 RC input (only one, not both) it deactivates in this case the POWER PIN (pin 12) or the BUZZER PIN (pin 8) define RCAUXPIN8 define RCAUXPIN12 pin Layout activate this for a better pinlayout if all pins can be used gt not possible on ProMicro define A32U4ALLPINS PWM Setup activate all 6 hardware PWM outputs Motor 5 D11 and 6 D13. note: not possible on the sparkfun promicro (pin 11 amp 13 are not broken out there) if activated: Motor 1-6 10-bit hardware PWM Motor 7-8 8-bit Software PWM Servos 8-bit Software PWM if deactivated: Motor 1-4 10-bit hardware PWM Motor 5-8 10-bit Software PWM Servos 10-bit Software PWM define HWPWM6 aux2 pin on pin D17 (RXLED) define RCAUX2PIND17 Buzzer Pin this moves the Buzzer pin from TXO to D8 for use with ppm sum or spectrum sat. RX (not needed if A32U4ALLPINS is active) define D8BUZZER Promicro version related Inverted status LED for Promicro ver 10 define PROMICRO10 only enable any of this if you must change the default pin assignment, e. g. your board does not have a specific pin you may need to change PINx and PORTx plus shift according to the desired pin define OVERRIDEVBATPIN A0 instead of A3 Analog PIN 3 define OVERRIDELEDPINPINMODE pinMode (A1, OUTPUT) use A1 instead of d13 define OVERRIDELEDPINTOGGLE PINC 1ltlt1 PINB 1ltlt5 switch LEDPIN state (digital PIN 13) define OVERRIDELEDPINOFF PORTC amp (1ltlt1) PORTB amp (1ltlt5) define OVERRIDELEDPINON PORTC 1ltlt1 was PORTB (1ltlt5) define OVERRIDEBUZZERPINPINMODE pinMode (A2, OUTPUT) use A2 instead of d8 define OVERRIDEBUZZERPINON PORTC 1ltlt2 PORTB 1 define OVERRIDEBUZZERPINOFF PORTC amp (1ltlt2) PORTB amp Serial com speed This is the speed of the serial interfaces define SERIAL0COMSPEED 115200 define SERIAL1COMSPEED 115200 define SERIAL2COMSPEED 115200 define SERIAL3COMSPEED 115200 interleaving delay in micro seconds between 2 readings WMPNK in a WMPNK config if the ACC calibration time is very long (20 or 30s), try to increase this delay up to 400 0 it is relevent only for a conf with NK define INTERLEAVINGDELAY 3000 when there is an error on I2C bus, we neutralize the values during a short time. expressed in microseconds it is relevent only for a conf with at least a WMP define NEUTRALIZEDELAY 100000 Lowpass filter for some gyros ITG3200 amp ITG3205 Low pass filter setting. In case you cannot eliminate all vibrations to the Gyro, you can try to decrease the LPF frequency, only one step per try. As soon as twitching gone, stick with that setting. It will not help on feedback wobbles, so change only when copter is randomly twiching and all dampening and balancing options ran out. Uncomment only one option IMPORTANT Change low pass filter setting changes PID behaviour, so retune your PIDs after changing LPF. define ITG3200LPF256HZ This is the default setting, no need to uncomment, just for reference define ITG3200LPF188HZ define ITG3200LPF98HZ define ITG3200LPF42HZ define ITG3200LPF20HZ define ITG3200LPF10HZ Use this only in extreme cases, rather change motors andor props MPU6050 Low pass filter setting. In case you cannot eliminate all vibrations to the Gyro, you can try to decrease the LPF frequency, only one step per try. As soon as twitching gone, stick with that setting. It will not help on feedback wobbles, so change only when copter is randomly twiching and all dampening and balancing options ran out. Uncomment only one option IMPORTANT Change low pass filter setting changes PID behaviour, so retune your PIDs after changing LPF. define MPU6050LPF256HZ This is the default setting, no need to uncomment, just for reference define MPU6050LPF188HZ define MPU6050LPF98HZ define MPU6050LPF42HZ define MPU6050LPF20HZ define MPU6050LPF10HZ define MPU6050LPF5HZ Use this only in extreme cases, rather change motors andor props Gyro smoothing GYROSMOOTHING. In case you cannot reduce vibrations and after you have tried the low pass filter options, you may try this gyro smoothing via averaging. Not suitable for multicopters Good results for helicopter, airplanes and flying wings (foamies) with lots of vibrations. define GYROSMOOTHING () separate averaging ranges for roll, pitch, yaw Moving Average Gyros define MMGYRO 10 () Active Moving Average Function for Gyros define MMGYROVECTORLENGTH 15 Length of Moving Average Vector (maximum value for tunable MMGYRO Moving Average ServoGimbal Signal Output define MMSERVOGIMBAL Active Output Moving Average Function for Servos Gimbal define MMSERVOGIMBALVECTORLENGHT 32 Lenght of Moving Average Vector continuous gyro calibration Gyrocalibration will be repeated if copter is moving during calibration. define GYROCALIBRATIONFAILSAFE AP FlightMode Temporarily Disables GPSHOLDMODE to be able to make it possible to adjust the Hold-position when moving the sticks. define APMODE 40 Create a deadspan for GPS. Assisted AcroTrainer Train Acro with auto recovery. Value set the point where ANGLEMODE takes over. Remember to activate ANGLEMODE first. A Value on 200 will give a very distinct transfer define ACROTRAINERMODE 200 multiwiiforumviewto. am pt1944p17437 Failsafe settings Failsafe check pulses on four main control channels CH1-CH4. If the pulse is missing or bellow 985us (on any of these four channels) the failsafe procedure is initiated. After FAILSAFEDELAY time from failsafe detection, the level mode is on (if ACC or nunchuk is avaliable), PITCH, ROLL and YAW is centered and THROTTLE is set to FAILSAFETHR0TTLE value. You must set this value to descending about 1ms or so for best results. This value is depended from your configuration, AUW and some other params. Next, afrer FAILSAFEOFFDELAY the copter is disarmed, and motors is stopped. If RC pulse coming back before reached FAILSAFEOFFDELAY time, after the small quard time the RC control is returned to normal. define FAILSAFE uncomment to activate the failsafe function define FAILSAFEDELAY 10 Guard time for failsafe activation after signal lost. 1 step 0.1sec - 1sec in example define FAILSAFEOFFDELAY 200 Time for Landing before motors stop in 0.1sec. 1 step 0.1sec - 20sec in example define FAILSAFETHROTTLE (MINTHROTTLE 200) () Throttle level used for landing - may be relative to MINTHROTTLE - as in this case LED FLASHER define LEDFLASHER define LEDFLASHERDDR DDRB define LEDFLASHERPORT PORTB define LEDFLASHERBIT PORTB4 define LEDFLASHERINVERT define LEDFLASHERSEQUENCE 0b00000000 leds OFF define LEDFLASHERSEQUENCEARMED 0b00000101 create double flashes define LEDFLASHERSEQUENCEMAX 0b11111111 full illumination define LEDFLASHERSEQUENCELOW 0b00000000 no illumination Landing lights Landing lights Use an output pin to control landing lights. They can be switched automatically when used in conjunction with altitude data from a sonar unit. define LANDINGLIGHTSDDR DDRC define LANDINGLIGHTSPORT PORTC define LANDINGLIGHTSBIT PORTC0 define LANDINGLIGHTSINVERT altitude above ground (in cm) as reported by sonar define LANDINGLIGHTSAUTOALTITUDE 50 adopt the flasher pattern for landing light LEDs define LANDINGLIGHTSADOPTLEDFLASHERPATTERN INFLIGHT ACC Calibration This will activate the ACC-Inflight calibration if unchecked define INFLIGHTACCCALIBRATION Disable WMP power pin disable use of the POWER PIN (allready done if the option RCAUXPIN12 is selected) define DISABLEPOWERPIN introduce a deadband around the stick center Must be greater than zero, comment if you dont want a deadband on roll, pitch and yaw define DEADBAND 6 defines the neutral zone of throttle stick during altitude hold, default setting is -40 uncommend and change the value below if you want to change it. define ALTHOLDTHROTTLENEUTRALZONE 40 GPS using a SERIAL port if enabled, define here the Arduino Serial port number and the UART speed note: only the RX PIN is used in case of NMEA mode, the GPS is not configured by multiwii in NMEA mode the GPS must be configured to output GGA and RMC NMEA sentences (which is generally the default conf for most GPS devices) at least 5Hz update rate. uncomment the first line to select the GPS serial port of the arduino define GPSSERIAL 2 should be 2 for flyduino v2. Its the serial port number on arduino MEGA define GPSBAUD 57600 define GPSBAUD 115200 GPS protocol NMEA - Standard NMEA protocol GGA, GSA and RMC sentences are needed UBLOX - U-Blox binary protocol, use the ublox config file (u-blox-config. ublox. txt) from the source tree MTKBINARY16 and MTKBINARY19 - MTK3329 chipset based GPS with DIYDrones binary firmware (v1.6 or v1.9) With UBLOX and MTKBINARY you dont have to use GPSFILTERING in multiwii code. define NMEA define UBLOX define MTKBINARY16 define MTKBINARY19 define INITMTKGPS initialize MTK GPS for using selected speed, 5Hz update rate and GGA amp RMC sentence or binary settings define GPSPROMINISERIAL 57600 Will Autosense if GPS is connected when ardu boots I2C GPS device made with an independant arduino GPS device including some navigation functions contribution from EOSBandi code. googlepi2c-gps-nav You have to use at least I2CGpsNav code r33 define I2CGPS I2C GPS device made with an indeedent ATTiny24313 GPS device and optional sonar device. githubwertarbytetiny-gps get GPS data from Tiny-GPS define TINYGPS get sonar data from Tiny-GPS define TINYGPSSONAR GPS data readed from Misio-OSD - GPS module connected to OSD, and MultiWii read GPS data from OSD - tested and working OK. define GPSFROMOSD indicate a valid GPS fix with at least 5 satellites by flashing the LED - Modified by MIS - Using stable LED (YELLOW on CRIUS AIO) led work as sat number indicator - No GPS FIX - gt LED blink at speed of incoming GPS frames - Fix and sat no. bellow 5 - gt LED off - Fix and sat no. gt 5 - gt LED blinks, one blink for 5 sat, two blinks for 6 sat, three for 7. define GPSLEDINDICATOR define USEMSPWP Enables the MSPWP command, which is used by WinGUI to display and log Home and Poshold positions define DONTRESETHOMEATARM HOME position is reset at every arm, uncomment it to prohibit it (you can set home position with GyroCalibration) GPS navigation can control the heading define NAVCONTROLSHEADING true copter faces toward the navigation point, maghold must be enabled for it define NAVTAILFIRST false true - copter comes in with tail first define NAVSETTAKEOFFHEADING true true - when copter arrives to home position it rotates its head to takeoff direction Get your magnetic decliniation from here. magnetic-declination Convert the degreeminutes into decimal degree by gt degreeminutes(160) Note the sign on declination it could be negative or positive (WEST or EAST) define MAGDECLINIATION 3.96f For Budapest Hungary. define MAGDECLINIATION 0.0f define GPSLEADFILTER Adds a forward predictive filterig to compensate gps lag. Code based on Jason Shorts lead filter implementation define GPSFILTERING add a 5 element moving average filter to GPS coordinates, helps eliminate gps noise but adds latency comment out to disable define GPSWPRADIUS 200 if we are within this distance to a waypoint then we consider it reached (distance is in cm) define NAVSLEWRATE 30 Adds a rate control to nav output, will smoothen out nav angle spikes uncomment this line if you plan to use a LCD or OLED define LCDCONF to include setting the aux switches for AUX1 - gt AUX4 via LCD define LCDCONFAUX if program gets too large (gt32k), need to exclude some functionality uncomment to suppress some unwanted aux3 aux4 items in config menu (only useful if LCDCONFAUX is enabled) define SUPPRESSLCDCONFAUX34 The type of LCD choice of LCD attached for configuration and telemetry, see notes below define LCDDUMMY No Physical LCD attached. With this amp LCDCONF defined, TX sticks still work to set gains, by watching LED blink. define LCDSERIAL3W Alex initial variant with 3 wires, using rx-pin for transmission 9600 baud fixed define LCDTEXTSTAR SERIAL LCD: Cats Whisker LCDTEXTSTAR Module CW-LCD-02 (Which has 4 input keys for selecting menus) define LCDVT100 SERIAL LCD: vt100 compatible terminal emulation (blueterm, putty, etc.) define LCDTTY SERIAL LCD: useful to tweak parameters over cable with arduino IDE serial monitor define LCDETPP I2C LCD: Eagle Tree Power Panel LCD, which is i2c (not serial) define LCDLCD03 I2C LCD: LCD03, which is i2c define OLEDI2C128x64 I2C LCD: OLED multiwiiforumviewtopic. phpf7ampt1350 Logo settings define SUPPRESSOLEDI2C128x64LOGO suppress display of OLED logo to save memory double font height for better readability. Reduces visible lines by half. The lower part of each page is accessible under the name of shifted keyboard letter : 1 -. 2 - . 3 - . 4 - . 5 - . 6 - . 7 - amp. 8 - . 9 - ( You must add both to your lcd. telemetry. sequences define DISPLAYFONTDSIZE currently only aplicable for OLEDI2C128x64 style of display - AUTODETECTED via LCD setting - only activate to override defaults define DISPLAY2LINES define DISPLAYMULTILINE define MULTILINEPRE 2 multiline configMenu pref lines define MULTILINEPOST 6 multiline configMenu post lines Navigation keys to navigate the LCD menu define LCDMENUPREV p define LCDMENUNEXT n define LCDVALUEUP u define LCDVALUEDOWN d define LCDMENUSAVEEXIT s define LCDMENUABORT x To use an LCD03 for configuration: robot-electronics. co. ukhtmLcd03tech. htm Remove the jumper on its back to set i2c control. VCC to 5V VCC (pin1 from top) SDA - Pin A4 Mini Pro - Pin 20 Mega (pin2 from top) SCL - Pin A5 Mini Pro - Pin 21 Mega (pin3 from top) GND to Ground (pin4 from top) To use an Eagle Tree Power Panel LCD for configuration: White wire to Ground Red wire to 5V VCC (or to the WMP power pin, if you prefer to reset everything on th e bus when WMP resets) Yellow wire to SDA - Pin A4 Mini Pro - Pin 20 Mega Brown wire to SCL - Pin A5 Mini Pro - Pin 21 Mega Cats whisker LCDTEXTSTAR LCD Pleae note this display needs a full 4 wire connection to (5V, Gnd, RXD, TXD ) Configure display as follows: 115K baud, and TTL levels for RXD and TXD, terminal mode NO rx tx line reconfiguration, use natural pins. The four buttons sending A, B, C, D are supported for configuration navigation and request of telemetry pages 1-4 to monitor system values (battery level, loop time etc. with LCD enable this note: for now you must send single characters to request different pages Buttons toggle request for page onoff The active page on the LCD does get updated automatically Easy to use with Terminal application or display like LCD - if available uses the 4 preconfigured buttons to send A, B, C, D Activation define LCDTELEMETRY to enable automatic hopping between a choice of telemetry pages uncomment this. This may be useful if your LCD has no buttons or the sending is broken hopping is activated and deactivated in unarmed mode with throttlelow amp rollleft amp pitchforward set it to the sequence of telemetry pages you want to see 2 line displays support pages 1-9 multiline displays support pages 1-5 define LCDTELEMETRYAUTO quot123452679quot pages 1 to 9 in ascending order define LCDTELEMETRYAUT O quot212232425262729quot strong emphasis on page 2 same as above, but manual stepping sequence requires stick input (throttlelow amp rollright amp pitchforward) to step through each defined telemetry page First page of the sequence gets loaded at startup to allow non-interactive display define LCDTELEMETRYSTEP quot0123456789quot should contain a 0 to allow switching off. First page of sequence gets loaded upon startup if program gets too large (gt32k), need to exclude some functionality uncomment to suppress some unwanted telemetry pages (only useful if telemetry is enabled) define SUPPRESSTELEMETRYPAGE1 define SUPPRESSTELEMETRYPAGE2 define SUPPRESSTELEMETRYPAGE3 define SUPPRESSTELEMETRYPAGE4 define SUPPRESSTELEMETRYPAGE5 define SUPPRESSTELEMETRYPAGE6 define SUPPRESSTELEMETRYPAGE7 define SUPPRESSTELEMETRYPAGE8 define SUPPRESSTELEMETRYPAGE9 define RXRSSI define RXRSSIPIN A3 Buzzer define BUZZER define RCOPTIONSBEEP uncomment this if you want the buzzer to beep at any rcOptions change on channel Aux1 to Aux4 define ARMEDTIMEWARNING 330 () Trigger an alarm after a certain time of being armed s to save you lipo (if your TX does not have a countdown) define PILOTLAMP Uncomment if you are using a X-Arcraft Pilot Lamp battery voltage monitoring for V BAT monitoring after the resistor divisor we should get 0V5V-gt01023 on analog VBATPIN with R 133k and R251k vbat 0102316VBATSCALE must be associated with define BUZZER. define VBAT uncomment this line to activate the vbat code define VBATSCALE 131 () change this value if readed Battery voltage is different than real voltage define VBATNOMINAL 126 12,6V full battery nominal voltage - only used for lcd. telemetry define VBATLEVELWARN1 107 () 10,7V define VBATLEVELWARN2 99 () 9.9V define VBATLEVELCRIT 93 () 9.3V - critical condition: if vbat ever goes below this value, permanent alarm is triggered define NOVBAT 16 () Avoid beeping without any battery enable monitoring of the power consumption from battery (think of mAh) allows to set alarm value in GUI or via LCD Full description and howto here multiwiiwikiindex. phptitlePowermeter Two options: 1 - hard: - (uses hardware sensor, after configuration gives very good results) 2 - soft: - (good results -5 for plush and mystery ESCs 2S and 3S, not good with SuperSimple ESC) define POWERMETERSOFT define POWERMETERHARD PLEVELSCALE is the step size you can use to set alarm define PLEVELSCALE 50 if you change this value for other granularity, you must search for comments in code to change accordingly larger PLEVELDIV will get you smaller value for power (mAh equivalent) define PLEVELDIV 5000 () default for soft - if you lower PLEVELDIV, beware of overrun in uint32 pMeter define PLEVELDIVSOFT PLEVELDIV for soft always equal to PLEVELDIV for hard set to 5000 define PSENSORNULL 510 () set to analogRead() value for zero current for I0A my sensor gives 12 Vss that is approx 2.49Volt define PINT2mA 13 () for telemtry display: one integer step on arduino analog translates to mA (example 4.9 37 100 uncomment to disable the altitude hold feature. This is useful if all of the following apply you have a baro want altitude readout do not use altitude hold feature want to save memory space define SUPPRESSBAROALTHOLD Natural alt change for rapid pilots. Its temporary switch OFF the althold when throttle stick is out of deadband defined with ALTHOLDTHROTTLENEUTRALZONE but if its commented: Smooth alt change routine is activated, for slow auto and aerophoto modes (in general solution from alexmos). Its slowly increasedecrease altitude proportional to stick movement (-100 throttle gives about -50 cm in 1 second with cycle time about 3-4ms) define ALTHOLDFASTTHROTTLECHANGE enable to get audio feedback upon risingfalling copterplane. Requires a working baro. For now, Output gets sent to an enabled vt100 terminal program over the serial line. choice of two methods (enable either one or both) method 1. use short term movement from baro ( bigger code size) method 2. use long term observation of altitude from baro (smaller code size) define VARIOMETER 12 possible values: 12 methods 1 amp 2 1 method 1 2 method 2 define SUPPRESSVARIOMETERUP if no signaling for up movement is desired define SUPPRESSVARIOMETERDOWN if no signaling for down movement is desired define VARIOMETERSINGLETONE use only one tone (BEL) neccessary for non-patched vt100 terminals this name is displayed together with the MultiWii version number upon powerup on the LCD. If you are without a DISPLAYD then You may enable LCDTTY and use arduino IDEs serial monitor to view the info. You must preserve the format of this string It must be 16 characters total, The last 4 characters will be overwritten with the version number. define BOARDNAME quotMultiWii V2.10quot 123456789.123456 Support multiple configuration profiles in EEPROM define MULTIPLECONFIGURATIONPROFILES Experimental: force a stable, fixated (high) cycle time when activated, the displayed cycle time in GUI will not be correct. Tunable via LCD config menu. value of 0 turns the feature off. define CYCLETIMEFIXATED 9000 () Part II as forum limits length of Posts some radios have not a neutral point centered on 1500. can be changed here define MIDRC 1500 Servo Refreshrates Default 50Hz Servo refresh rate define SERVORFR50HZ up to 160Hz servo refreshrate. works with the most analog servos define SERVORFR160HZ up to 300Hz refreshrate it is as fast as possible (100-300Hz depending on the cound of used servos and the servos state). for use with digital servos dont use it with analog servos thay may get damage. (some will work but be careful) define SERVORFR300HZ HW PWM Servos HW PWM Servo outputs for Arduino Mega. moves: Pitch pin 44 Roll pin 45 CamTrig pin 46 SERVO4 pin 11 (assigned to PPM or SPECTRUM CH9 on copter configuration) SERVO5 pin 12 (assigned to PPM or SPECTRUM CH10 on copter configuration) this option disable other software PWMs for servos - only five hardware controlled servos avaliable define MEGAHWPWMSERVOS to reduce memory footprint, it is possible to suppress handling of serial commands. This does not affect handling of RXserial, Spektrum or GPS. Those will not be affected and still work the same. Enable either one or both of the following options Remove handling of all commands of the New MultiWii Serial Protocol. This will disable use of the GUI, winGUI, android apps and any other program that makes use of the MSP. You must find another way (like LCDCONF) to tune the parameters or live with the defaults. If you run a LCDOLED via i2c or serialBluetooth, this is safe to use define SUPPRESSALLSERIALMSP saves approx 2700 bytes Remove handling of other serial commands. This includes navigating via serial the lcd. configuration menu, lcd. telemetry and permanent. log . Navigating via stick inputs on tx is not affected and will work the same. define SUPPRESSOTHERSERIALCOMMANDS saves approx 0 to 100 bytes, depending on features enabled to log values like max loop time and others to come logging values are visible via LCD config set to 1, enable R option to reset values, max current, max altitude set to 2, adds minmax cycleTimes set to 3, adds additional powerconsumption on a per motor basis (this uses the big array and is a memory hog, if POWERMETER ltgt PMSOFT) define LOGVALUES 1 Permanent logging to eeprom - survives (most) upgrades and parameter resets. used to track number of flights etc. over lifetime of controller board. Writes to end of eeprom - should not conflict with stored parameters yet. Logged values: accumulated lifetime, powercycleresetinitialize events, arm events, disarm events, last armedTime, failsafedisarm, i2cerrsdisarm To activate set to size of eeprom for your mcu: promini 328p: 1023 2560: 4095. Enable one or more options to show the log define LOGPERMANENT 1023 define LOGPERMANENTSHOWATSTARTUP enable to display log at startup define LOGPERMANENTSHOWATL enable to display log when receiving L define LOGPERMANENTSHOWAFTERCONFIG enable to display log after exiting LCD config menu define LOGPERMANENTSERVICELIFETIME 36000 in seconds service alert at startup after 10 hours of armed time to add debugging code not needed and not recommended for normal operation will add extra code that may slow down the main loop or make copter non-flyable define DEBUG Use this to trigger LCD configuration without a TX - only for debugging - do NOT fly with this activated define LCDCONFDEBUG Use this to trigger telemetry without a TX - only for debugging - do NOT fly w ith this activated define LCDTELEMETRYDEBUG This form rolls between all screens, LCDTELEMETRYAUTO must also be defined. define LCDTELEMETRYDEBUG 6 This form stays on the screen specified. Enable string transmissions from copter to GUI define DEBUGMSG to calibrate all ESCs connected to MWii at the same time (useful to avoid unpluggingre-plugging each ESC) Warning: this creates a special version of MultiWii Code You cannot fly with this special version. It is only to be used for calibrating ESCs Read How To at code. googlepmultiwiiwikiESCsCalibration define ESCCALIBLOW MINCOMMAND define ESCCALIBHIGH 2000 define ESCCALIBCANNOTFLY uncomment to activate internal frequencies frequenies for rare cyclic actions in the main loop, depend on cycle time time base is main loop cycle time - a value of 6 means to trigger the action every 6th run through the main loop example: with cycle time of approx 3ms, do action every 63ms18ms value must be 1 65535 define LCDTELEMETRYFREQ 23 to send telemetry data over serial 23 ltgt 60ms ltgt 16Hz (only sending interlaced, so 8Hz update rate) define LCDTELEMETRYAUTOFREQ 967 to step to next telemetry page 967 ltgt 3s define PSENSORFREQ 6 to read hardware powermeter sensor 6 ltgt 18ms define VBATFREQ PSENSORFREQ to read battery voltage - keep equal to PSENSORFREQ unless you know what you are doing for development only: to allow for easier and reproducable config sets for test compiling, different sets of config parameters are kept together. This is meant to help detecting compile time errors for various features in a coordinated way. It is not meant to produce your flying firmware To use: - do not set any options in config. h, - enable with define COPTERTEST 1, then compile - if possible, check for the size - repeat with other values of 2, 3, 4 etc. define COPTERTEST 1 Uncomment this line, and make sure to comment out the HK board. define CRIUSSE Crius MultiWii SE Just so you know, the ZMR board Crius SE Ive owned both boards and they are identical, just the name on them is different. Different place of manufacture I presume yes thats what mine is defined under. also i thought it was 2.1, worked out its 2.0 so i had to use multiwii 1.4 configwingui. have flashed my board to 2.1 and can say it works with the above defined in wingui 2.1,Sensors - Gyro LPF frequency discussions. 1014 I understood that if you select 256 for lpf the 6050 sample rate is 8000. For all other lpf settings the sample rate is 1000. As far as i could tell there was only one filter. I tested adding both a first order software LPF on incoming gyro data andor a Dterm LPF as per Boriss code. For several gyrolpf values I tested a range of different FC filter settings. In each case I first tried to find a P value that after sudden stick input took say 2 cycles to damp down naturally while lightly hand held. This was easy to control with not so much D. Id then tune it as best I could, and assess the extent to which the motors jumped up and down as I throttled up. If they stayed much the same then power delivery was good, but if they jumped all over the place, of course, it wasnt. I only thoroughly tested LuxFloat. At gyrolpf of 256, with default 3-point D filtering only, (no LPF filters) it was impossible to tune, far too much vibration. Required 42 to be able to be tuned even then not good. Adding my LPFs, I started with gyrolpf of 256. At 200Hz for gyros 50Hz for Dterm, it was better than stock code, but motor PPM output fluctuated more than acceptable, worse with more P. Most of this was due to P even if I set D to 0 it persisted. After stick movements, it was very responsive, the frame oscillation was high frequency, and although possible to control stick oscillation with D (didnt need much), the motor drive jiggled up and down too much. With more filtering - my filter set at 100 for gyros and 20 on D term, the quad was much better, and at 75-17 better still. At lower LPFs I couldnt quite get so much P, and I needed a little more D (it was being filtered out). Not much different though. Any of these settings I think would fly very well. I tried lower gyrolpf as well. With gyrolpf at 98, 75-17 or 100-20 FC filters were really good. Motor PPM variation across the throttle band was minimal (not much D or P noise) and it was relatively easy to tune. With gyrolpf of 42 it was a bit difficult to get crisp responses, but was sort of but OK at 7517 or 10020, only the Dterm filtering doing anything like this. The upshot of it all was that for this particular quad, there was too much stray noise to benefit from 256. It didnt matter where the gyro data was filtered, in the 6050 or in software on the FC, it needed filtering somewhere to stop the higher frequency incoming motorprop noise from being sent back out to the motors and wasting energy. I dont think it matters much where the main gyro LPF is done, this frame just has to have it done at around 75-100Hz, and then have a Dterm filter around 17-25. These values seem about best for this frame ( P is 1.2, D 20). I think that slightly heavier less vibration prone frames might be better with the higher value gyro LPF values, and with the appropriate D term filter, but not small fast racing type frames. My little 140g quad is very vibration prone and I cant get past about 100Hz really. Interesting that Boris finds 188 to be good on his better balanced units. منطقي. What is truly amazing, however, is how absolutely useless the stock code is on my frame. It absolutely demands a gyrolpf of 42 and can barely be tuned like that with crazy motor speed fluctuations, all D related. Add Boriss D term filtering and its a whole different ball game, suddenly its far smoother and much more easily tuned even with gyrolpf of 98. ledvinap - I was just about to ask about the sequence of gyro filters, seeing as I have implemented one in software in the FC that I can run independently of that in the mpu6050. Ive been thinking about it all day. -) I wish I was as expert as you My thoughts were that if set the 6050 to sample at 8kHz and filter at 256, then the risk of primary sampling aliasing issues should be very small, and the stuff we want to see should be accurately represented. On the other hand, at any LPF under 256, the sample rate drops to 1000Hz, which could be a simple multiple of 500Hz sometimes used to control ESCs, and perhaps may be more prone than 8Khz to primary sampling aliasing. So I kind of figured that the best representation of the data would be when using 256 8kHz. The next potential point of aliasing is when the 6050 output is requested each loop through the FC. With 700-800Hz loop times there is the potential for aliasing particularly at loop time frequencies. If the 6050 is filtering at 256, there is only 2 octaves attenuation of such frequencies. Sampling at 188 is hardly different, but comes at the cost of only 1kHz gyro sampling in the first place. On the other hand, if we ran the mpu6050 lower down at say 188, or perhaps more significantly 98, there should be much less chance of aliasing by the FC since its input should not change much at frequencies close to the loop time. The risk is that there may be more sampling aliasing in the 6050. I figured it might be better to run the mpu6050 at 2568k, then filter gyro in sw at say 100-200 (with a separate lower Dterm filter for delta, which we know works well). On my noisy quad I figure I should closely compare these choices (all with a Dterm filter): (a) 6050 at 2568k and FC filter at 100, vs (b) 6050 at 88 only vs (c) 6050 at 88 and FC filter at 100 I think late last night they seemed similar. For Boris I wonder if running the 6050 at 2568k with a second sw filter in the FC at (say) 200 would be better or worse than just the 6050 at 1881k. It would be interesting to find out. I know I can make my quad smoother, I deliberately use old props etc for these tests to challenge the system. -) ctzsnooze I dont know, but it somehow doesnt feel right to disable onboard gyro at all and than increase the codesize to still do full gyro filtering onboard. MPU6050 also does 1st order filtering so you will not win delay decrease At the end we want to have it flyin really well instead of only generating nice graphs. ctzsnooze. you are mixing sampling rates Selecting MPU6050 mode with 1kHz output rate inserts filter that runs (hopefully) on 8Khz, but only one result out of eight is stored in output registers. This is lossless operation (ignoring roundingquantization) as long as there is no frequency content over 500Hz (Nyquist frequency). Selected lowpass should ensure his. Gyro sampling is still done at 8kHz (and first 256Hz filter is still present) The sample rate is still 8Khz (maybe even higher) for gyro, with analog lowpass filter before ADC. For ACC there is probably 260Hz analog filter before 1kHz ADC. Using 8KHz mode will work great if you read out all data available - at 8kHz. That is impossible with I2C. But you are reading data at loop frequency (lt1kHz), so only advantage of 8Khz mode is that sampling jitter is 8x lower (sample is at most 125us old). With 1kHz mode same samples will be almost 1ms delayed. There is no evidence for analog filtering on the 6050 before its ADC. They are - unfortunately - all digital low pass filters. See: cdiwebdatasheetsinvensensePS-MPU-6000A. pdf It would be great if the filters were digitally controlled analog before digitisation, but I think not. If they had digitally-controlled analog LPFs before digitisation, they would say so. Yes, thats a good point, an extra advantage of reading from samples at 2568k over say 1881k is that at 8k there should be a tiny bit less jitter - as you say, any sample is at most 125us old vs up to 1ms old at 1kHz. The other advantage of 8k is that sampling aliasing will be occurring around 4k, hopefully well above most quad motor frequencies (and hopefully relatively easy to physically damp out), whereas at 1k there is the likelihood of sampling aliasing for frequencies around 500Hz - first and second harmonics of motor rpm are around 500Hz. A DLPF is always active with current code in the 6050 if we want 8k sample rate, this will always be present and at 256Hz. So I am really curious - if I then run a second first order LPF in the FC code at (say) set around half that frequency - 128Hz for example - would that be such a bad thing As far as I can tell, probably not, as you said earlier. There would be greater attenuation of frequencies above 256Hz - 12dboctave vs 6dboctave - thats exactly what we want. -) Phase shifts would exist past 100Hz and become greater past 200Hz, but amplitudes past 200Hz would be much lower also, and 200Hz is getting fairly high. Thats why I personally think it better for well-balanced quads that really want the best possible responses to set gyrolpf to 256. Boris: I agree that there will be an extra delay - but that delay is only really of consequence for high frequencies, and anyway there is 1ms greater delay at 188 than 256 in the 6050 if you stick with 256 in the 6050 you gain say 0.5ms from less jitter and 1ms from less delay. True if you add a second software LPF at 200Hz you get some delay, not sure exactly how much, but the overall effect isnt totally negative: To tune, its easy If motor signals start responding to noise, and if the cause is mostly Dterm, then lower the Dterm filter if they are mostly P, add you dont want to lower PID P, then activate a software LPF in the FC at a frequency that reduces Pterm noise to acceptable levels. This is what I was doing late last night. It became obvious, after setting a Dterm filter correctly, that increasing functional gyro LPF to higher frequencies increased the quantum of P noise transfer to motors, as expected. The goal for me was to avoid meaningful P or D noise transfer to the motors (i. e. see that the motors smoothly ramped up with throttle without jittering up and down like crazy, while retaining responsiveness and the highest possible filter values. Quite a set of compromises. -) Boris. definitely stick with gyrolpf at 188 and the dTerm PT1 filter on your quads. You know it works. -) But if you have a moment, please try setting gyrolpf to 256 and add a PT1 filter on gyro in the FC set to at 188 (as well as your usual Dterm). See what that flies like - see if the two are any different. I anticipate being essentially indistinguishable, perhaps you may be able to increase P a fraction higher two filters in series without oscillation. Id be really grateful if you could test this out. Cheers and thanks for a great discussion. This is really great Spectrograms are so incredibly helpful - I use color spectral arrays to track changes in brain electrical activity at work so Im quite familiar with them. May I clarify if the vertical axis on the line-graph spectrograms is dB or linear And for the colour array spectrograms, is the colour scaling linear or logarithmic If the line spectrograms are logarithmic, and I guess they are, then we need steeper roll-off generally for gyro data than 3dBoctave, I think, and that means a second gyro lpf in software after the main one in the 6050. I think that the real data is all on the left, below 50Hz. Everything else I think is essentially unrelated to flight performance. Personally I think that we need more than 3dboctave filtering of gyro noise. I will therefor keep a second gyro LPF in cleanflight, probably set at the same value as the LPF in the 6050 (or at half that value, not sure), most with the 6050 at 98 or 188 Hz. It would be really, really interesting to see spectrograms from your system with a second gyro filter in software providing 6dboctave gyro filtering, and to hear Boriss impression of the flight characteristics. We should test non-ideal systems, not just super well-balanced systems, but that can be done later. Ive reached the conclusion that Boriss Dterm filter needs be tuned and depends on gyro LPF. The ideal value is determined primarily on the natural un-damped P oscillation frequency, which is, in turn, determined by gyro LPF, PID P, and framemotor physics. For a given frame, it seems to mostly be determined by gyro LPF. Boriss Dterm filter must not cut the frequencies that are required by D in the PID loop. If Boriss Dterm filter is too low, it may do so, leading the user to turn up PID D to compensate (that might be OK, but seems counter-productive), or maybe worse the inevitable phase shift may happen in the frequencies required for the correction signal and make D not work properly. When the undamped P oscillation frequency is fast (say 20Hz or maybe higher, e. g. with higher gyrolpf settings), youll tend to get fast responding super locked-in rock-solid feel. But controlling those oscillations with D gets tricky, and more noise is getting back via the FC to the ESCs. Obviously a Dterm filter most allow 20Hz or higher frequencies through without phase shift, and so Boriss filter may need to be at 30 or maybe 40. In contrast, when the undamped P oscillation frequency is slow (i. e. 5Hz or less, typical for gyrolpf of 42 with not so hard PID P), Boriss Dterm filter can probably be set lower, maybe 10, better controlling D noise. In simple terms, the higher the natural P oscillation frequency, the higher Boriss Dterm LPF value needs to be - and, vice versa, for lower natural P oscillation frequencies, the Dterm LPF can be lower (and therefore more effective at blocking D term motor noise amplification). My much crude technique for testing the relationship between filtering and feedback of motorprop noise to the ESC control signal is relatively simple. First, with props on, held in my hand, I do motor testing directly in the motors tab (throttle up with sliders, no TxFC involved). There will be no jitter in the on-screen display of individual ESCmotor inputs because I control them directly. There will be some frame vibration, I will feel and see it. I make sure acclpffactor is off (or the accSmooth filtering removed in imu. c) so I can see the magnitude of this intrinsic frame vibration on-screen. Then I switch off the sliders and use the TxFC to control motors. I look to see if there is more jitter now than before, with a given set of filters. If the motor control signals now jitter is all over the place, this will add to frame vibration, decrease motor output and flight controllability, and makes the motors hot. It means that frame vibrations are being amplified by the FC and fed back to the motors. In contrast, if the variability of motor control signals is small (ideally insignificant), despite the normal frame vibration, motors will run smooth, power delivery wont be affected, etc. This way I can make changes to filtering and see what the actual impact on the system will be, at my desk. It is a little dangerous, though. If the FC induces motor signal jitter from noise, it is easy to see the extent to which this is caused by D. Just drop D in the PID settings to zero. If the motor control signal jitter largely disappears, it was largely due to D. If it does not change, it was due not to D, probably to P. It is possible to drop PID P temporarily to confirm this. Also quickly adding extreme TPA helps demonstrate what might happen with greater overall gyro filtering or lower PIDs at higher throttle settings - e. g. testing by comparing TPA of 100 vs 0, starting at 1100. So it is possible to determine the real-world impact of the filtering options, and whether they are P or D mediated, relatively quickly. It is also possible to tune PIDs (approximately) to suite the different filtering option, because filtering influences tuning quite a bit. And it is easy at the same time to note stick responsiveness and natural P oscillation frequency in the absence of D. I find that Boriss D term filter does a really good job of reducing D term noise amplification, essentially to insignificance, assuming that overall gyro noise is reasonably controlled. On my noisy setup, I find, for example, that with gyrolpf at 98, a second gyro LPF at 50Hz in software, and with Boriss Dterm filtering at 20, almost no motor noise, even on the noisiest frames, gets fed back to the ESCs. Such a quad flies quite well (after all, many pilots fly with main gyrolpf at 42 and have done so for a long time) - even with grossly out of balance props, bent props, props with chunks cut out of them, etc With gyrolpf up to 188 and the second gyro LPF at 100Hz, again with Boriss Dterm at 20, then I see maybe 20 jitter in outputs to ESCs. This is both P related and D, more P than D. Such a setup feels more locked in and reacts faster, but is a tiny bit down on power where noise is bad. This is how I prefer it. If I push up further to 256200, there is so much jitter as to be unacceptable on this quad, motor output is too low due to noise (on my most noisy quad, anyway). The motor noise is nearly entirely P related on blackbox, but D noise is greater also. If I lock gyrolpf at 256 and try a sw filter at 50-100-200Hz, the amount of noise fed back to ESCs is dependent only on that second filter (and Boriss Dterm filter setting). Setting gyrolpf to 256 like this seems similar to gyrolpf of 188. Boriss negative experience with gyrolpf at 256 may be because the natural P oscillation frequency went higher and the Dterm filter wasnt able to deal so well with it. Or it could be that there was more P induced motor noise causing ESC input signal jitter and loss of power. For time the ideal system is where: noise filtering is least intrusive, allowing rapid responsiveness from sticks to motors noise is filtered such that control signals to the ESCs jitter less than 20 due to noise (noting that for peak responsiveness, some ESC control signal jitter is inevitable) ESC jitter from noise should mostly be P related with the D contribution being less control over noise filtering is simple (ideally just one parameter) At the moment I am setting my Dterm filter frequency to 15th that of my software gyro filter. I use the acclpffactor value to set these frequencies per-profile, which makes testing easy. If my gyro filtering has LPF of 100, my Dterm filter is 20. I have a different profile with the sw gyro filter at 200, this means Dterm filter at 40. The ratio between the two was chosen entirely empirically but seems to work well in practice. I am hoping that we can provide the end-user with only one noise reduction value to set, perhaps tied to gyrolpf, on a per-profile basis. For this to happen, gyrolpf should be configurable at profile level. It is annoying to have to go back to CLI to change gyrolpf. Also it makes difficult testing different gyrolpf values. Would you support a request to make gyrolpf editable per-profile Boriss Dterm filter should also be per-profile editable. If we could set these filters at profile level (and maybe a third sw LPF on gyro to get 6dboctave filtering), we can use that single value to control overall noise responsiveness. Users would appreciate simplicity like that. We could then have a profile that tolerates out of balance props and provides smooth cool motors, accepting maybe has less precise control another that requires a well balanced setup (and that we change props when dented) but gives faster, more precise control and a third with extremely tight responses maybe at the limit where some noise may be fed back and we might accept that the motors might get a bit hot. The PIDs could then be optimised for each profile since the optimal values do depend on gyrolpf. I think we are really getting much closer to a good solution. pulsar256 - my code is a bit scrambled now. But it works. Its only done in LuxFloat but the principles are simple. Initially I just copied Boriss first order LPF code and applied it to gyroRate: I then set RC 5 for the smoothing factor when applied to D delta, forcing its LPF 5 times lower than the gyroRate LPF. To make life easier for testing I took acclpffactor out of accSmooth in imu. c (the accSmooth calculation isnt smoothed anymore by acclpffactor, but thats the only side-effect). I then re-used it to hold my desired gyroRate LPF value. That let me store different values for the the gyroRate filtering in different PID profiles, very handy. I put a conditional so that if acclpffactor was less than 10, it reverted to the default code with only the basic 3-point moving average filter. So now I have this: and finally, to do Boriss delta smoothing code at a time constant 5 times longer than for gyroRate: In essence both P and D get equally filtered on the first pass. Boriss code is a simple first order filter with a 3dboctave rolloff by applying it to gyroRate it just smooths the input to both the P and D calculations. From Levidnaps spectral analyses its obvious there is a LOT of high frequency noise about. If both gyrolpf and the second software gyroRate filter are set at about the same value, we get 6dboctave filtering rather than 3dboctave for this noise. Boriss D term filter is still needed to correct the inherent amplification tendency in D term calculations as frequency increases. That term should, I think, be set just above the undamped natural oscillation frequency for a given frame. With the code above a noisy quad can fly quite nicely with bent props on gyrolpf 98, gyroRate LPF say 75 or 100, and the Dterm LPF at say 17-20. Resolving the best values for a given quad would be easiest if we had per-profile values in the CLI to set this software gyroRate LPF and separately to set the deltaD LPF. As mentioned previously I think it would be a huge advantage to also be able to set gyrolpf on a per-profile, rather than global, basis. Ive finally done some fine tuning using the BlackBox - I am so grateful for that, its amazingly helpful. I made three separate profiles with same gyrolpf of 100 and 50, 75 and 100Hz secondary filters. Interestingly, PIDs when optimally tuned were about the same. The 75Hz variant seemed closest to what I want. All relatively easy to tune. After 5 days of rain I think the sun is out tomorrow so I can test it out properly. I had a quick look at using error rather than rate in Lux as the input to the D delta calculation. Rewrite uses error as the input to D, which is why rewrite subtracts, rather than adds D to total PID. Briefly I think this is promising, it seems likely to be more responsive but some special filtering on D is needed when error is used as the input and there are step changes in set-point, like we have on CPPM steps. Thats great news I have indeed been smoothing the incoming gyro data, which then makes both Pterm and Dterm smoother, but smoothing the Pterm itself, as we have for Dterm, and leaving the incoming gyro data relatively untouched, may indeed be a neater solution. Its worth noting that it isnt possible to entirely disable filtering in the mpu 6050. Its always there. Sending DLPFCFG to the 6050 makes it sample gyros at 8kHz gyro and filter at 256Hz. We cannot escape the 256Hz filtering, as far as I know. In a sense thats good, anything that high will be useless noise that we want to block anyway (levidnap and blackbox shows this). BTW I see you fixed sending 0 when gyrolpf is 256 in your code using enum rather than if then else, very nice. -) If you are filtering Pterm way down at 50Hz and 14Hz for Dterm, and it flies well, thats really good news. Using overall gyro filtering that low I found it wobbly and difficult to tune. So that is very positive. Most likely with your current setup you could set a gyrolpf to say 98Hz without any adverse sideffects, It would be interesting to know. Test then with known out of balance props. -) as there may be even better noise rejection (your frames might not need it normally). If its OK Ill use your code base as my testing point from now on. I may add a software overall gyro filter also just for testing on very noisy frames. Having a vert hard cut on high frequencies that we just arent interested in can be helpful on very noisy frames, as my previous tests showed. Being well above your 50Hz Pterm filter should this should cause no adverse effects at all. PS - your coding skills are better than mine - I cant quite follow how it actually gets the filtering done on both Pterm and Dterm at the same time, but I take your word for it. -) PSS - I noticed that Dterm needs very heavy filtering when controlling error rather than rate, because each PPM step up has infinite Dterm for an instant. This opposes P at that moment and needs managing somehow. I think thats why originally there was the 3 point moving average on D, it would be an effective way of fixing it in rewrite and multiwii, which targeted error. Its Lux that targets gyro rate, not error, and I think fundamentally that causes the problems with frame noise in luxfloat particularly. It will be easier to resolve this with your profile based P and D term filters. My gut feeling is that getting Dterm to target error signal in LuxFloat will probably result in even crisper responsiveness and that generally its the best way to go for all controllers. I plan to remove PIDC 4 and replace it with an error seeking Luxfloat, just for flight testing purposes. I think we are really getting somewhere now, and we have the tools to move forward quickly. Im amazed and impressed by what we are achieving. شكرا لجميع التعليمات الخاصة بك. -) Yeah you should prevent filtering on filtering and again filtering on that. Thats probably why you had wobble. Not because of filtering, but phase shifts. Thats why I didnt agree about that approach On this way you can separate the things with least amount of filtering and keep things in phase as much as possible. You dont really need more than 50hz on multirotors. I was using 188 and higher to prevent delay. Yeah I know about 256hz, but for multirotor terms that is no filtering at all actually :) Yeah trying to keep less same returning code is the way. I think it is even better to make a struct, which can dynamically be allocated in the memory with pointers each time so you can introduce as much as possible filters when needed. But in here we only need p and d filtering. If you look my posted log my acc data is very noisy, but my level was still excellent as the pterm is the same :). The more and more I look into this I think this is the way to go. THIS IS INSANELY GREAT. Definitely, definitely the way to go. Using your local branch code, my previously outrageously wobbly little quad is now - cliche aside - as locked in as anything could be. Loop times are a little higher I noticed but not by heaps. Being able to separately filter Pterm and Dterm (and on my mod gyroRate as well) makes it really easy to figure out what works and what doesnt. And it seems to work really, really well. I agree about 50Hz - its about how fast each ppm pulse comes in, and human beings have trouble reacting faster. Ive noticed that no matter how abrupt I try to make my stick inputs, the rise time of my best step input shows up as being spread over, say, 4 PPM pulses in blackbox, i. e. 12Hz. -) And yes I agree entirely, it doesnt matter to me if the frame is vibrating, what matters most is that the motors arent amplifying it getting their output reduced. Jittery signals to motors mean lost power, short flights and hot motors. Id trade off a fraction less responsiveness to avoid that kind of stuff. But now we can have both. My noisy frame has obvious vibration when testing using the motors tab sliders - due to motorprop imbalances, frame resonances, beating of similar speed motors, and probably ESC induced pulse timing variations - but the key thing is that all this vibration has nothing to do with PIDs . It is inevitable. We just have to stop the FC responding and reacting to it. These new filtering options allow nearly totally smooth motor control pulses despite frame vibrations. Stock CF code does not. Its a blast to now have full power, knowing that frame vibrations are not stealing motor control Back to coding matters. Ive taken out the 3 point smoothing dont think it makes any difference. Do you still think it does I agree that its best to run gyrolpf at 256. At 256, there is 1-2 ms less 6050sampling delay than any other 6050 setting, and cleaner data (less likely to be aliased) into the FC. I dont agree about filters on top of filters thing, well not entirely. The kind of filters we are using do not cause delays or phase shift below about half the value they are set to. True, they add a 45 degree phase shift i. e. about 14 cycle delay at the nominal frequency, but say if you set one at 100Hz, stuff at 50Hz basically walks through almost entirely unchanged. Its true that stuff at 200Hz would be delayed and have a phase shift, but it will be cut to 14 of its normal value and should start becoming irrelevant. Putting a sw gyroRate filter at say 128Hz will do nothing to the control systems that we want to work nicely at 50Hz and below, but will take out a lot of higher frequency noise, and from Levidnaps spectrograms, theres a lot of it up there that needs to go. Ive tested your Pterm Dterm code, with my optional sw gyroRate filter. Its really great to set each parameter individually on a per-profile basis, which is absolutely great. Im currently playing with, as my performance profile: This is very responsive and easy to tune with some D term noise. I am trying out the following settings in the two other profiles, just to see how they go: In all of them motor power delivery is essentially linear with only a little jitter. I am running high TPA at 0.5. Personally I think we need all three filtering options available a gyrocut is very helpful. PS this is what I did for the gyroRate LPF: with the appropriate changes in config to support gyrocuthz Yes the more and more I look into the way the current code works there is definately need for splitting up the filtering. The jittered output to the motors has to be minimized. It can be a huge loss in speed and efficiency. I see you are filtering multiplied gyro rate actually instead of gyro That means that P value has double filtering. Is this really needed This is the part to separately filter acc. Disabling onboard gyro lpf also means acc filter is disabled. MPU9050 supports for example separate configuration for acc and gyro filtering. githubcleanflightcleanflightblob27db9ad0fe9a4d8abc05c59db201b8944324eea4srcmainsensorsacceleration. cL174 The moving average should be in there to not impact the people having these options disabled. So default behaviour should stay the same. But should definately test without when applying filters to gyro. But anyway. No need to introduce new RCGYRO. You could simply reuse the filter function again :D. RC is a temporarily value and no need to have multiple of those. Its too bad your are still only testing luxfloat. In my tests where I went through PID controller 0-5 luxfloat was the winner in noise amplifying. I think thats a fundamental problem in this pid controller as it doesnt use much internal filtering as floating point precision makes it more sensitive to noise than integer. See for example harakiri what also uses floating point math, but has a lof of code around to prevent amplifying noise. It seems like your are looking your personal best settings for your specific setup. But my main goals in here are: Improve Filtering in the current Cleanflight code (or better said add one as there is no filtering at all) The filtering should not introduce much delay. Preferably 1st order filter Make this code flexible to reuse on all pid controllers on samesimillar way The new code should not impact the default behaviour as it is now Even users with clean setups should make profit and not lose responsitivity Options so far if you ask me: Only Dterm filter (pretty much proven and definately improvement to get into master) see 1028 Additional Pterm filter. The way to have least amount of filters. Seperate filtering for D and P with different cutoff frequencies. (experimental yet, but seems to be an improvement) Use software filtering for gyro input. I think once this used there should not be any Pterm filtering, but perhaps only D. The soft filtering should give better results than the MPU6050 internal filter in this one. Also for other filtering we have to check different filtering methods instead of only this method used now, which by the way seems to do a great job. Hi Boris - much to discuss. many options now and maybe we need time to think about them. First, what I mean by D term targeting error. P and I always target error - the Pterm is, as you know, directly derived from the difference between the gyro rate and the rate requested by the sticks. But D can either target the rate of change of the error (which is how its done in rewrite) or the rate of change of the actual controlled value (which is how it is done in Luxfloat). The two approaches are fundamentally different, which is why the PIDsum Dterm must be negative in Lux and positive in rewrite. The rewrite approach seems on my initial testing to result in a faster return and less wobble, but I need to do more work on this. Ive just replaced PIDC4 with an error-targeting Lux variant so I can more easily compare them in the air just by changing profiles. Today I tested code with Pterm, Dterm and gyroRate LPFs. I flew many batteries with the settings I mentioned in my previous post, by far the most solid were the higher filter values with a higher P value. Even so, the motors were solid, strong and smooth. The tuning wasnt perfect, bit of wobble in prop wash, but I had a heap of fun and it flew really well, very crisp - and noise wasnt an issue - pilot skills were. -) I agree that the outcome of this should be a general solution for all controllers. I am working mostly on Lux because, being the worst, it means that I may identify why it is so, and learn from that. I agree also that separate control over Pterm and Dterm filtering is the biggest step forward. One advantage of smoothing Pterm is that because Pterm targets error, there is always a sharp step up in Pterm whenever the control PPM pulse goes up a step. At that instant, the Pterm shoots up in a straight line, and that goes direct to the motors. It probably gets aliased by the ESC PPM rates as well. Smoothing Pterm makes those sharp steps rounder - its easy to see in blackbox. This can only happen when you smooth Pterm at this point. So I conceptually really like Pterm smoothing and it is very easy to see what it does in blackbox. This is great. The same feature would be of great benefit for PIDCs with Dterm calculations that target error, because Dterm in particular gets huge spikes when it targets error. Heavy Dterm filtering for error-targeting controllers will smooth that out - needs to be down around 15-17Hz though and to be honest Ive not been that low in testing to date. Now as to the question of whether, in addition to Dterm and Pterm LPFs. should there be a software gyro LPF with 6050gyroLPF fixed at 256, or should we only use the 6050 LPF alone for gyro filtering. For a number of reasons I think a separate gyro LPF in sw is useful. I run through them here: First, changing 6050gyrorate LPFs change what we see in the blackbox and the motors tab. Whenever we drop the gyrorate value, the incoming data is itself more heavily filtered, not just gyro but also acc, making the appearance of less noise even if the same amount is actually present. Thats why gyrolpf of 256 is always going to appear worse than 188, and 188 appears worse than 98, and 98 appears way worse than 42 - even if the underlying noise in the frame is exactly the same. The only valid way to compare outcome when changing 6050 filtering is to look at the actual wobble in the PID responses, or the amount of noise-derived jitter in the motor signal. Looking at noise in gyro traces or acc traces is no help in deciding if a change in gyrolpf is positive or not. In contrast, if we do the gyro filtering in sw, and keep the data acquisition filtering constant at 256, the noisein the incoming gyro data will truly reflect what is happening in the frame, and be correctly shown in the blackbox or that acc display. So we get to see the true benefit (or otherwise) of the top end gyro LPF, if we enable one. This makes it much easier to see the true effect of overall gyro LPF filtering. Maybe you might consider putting an LPF on gyroRate, as I have done, again making it so that if 0 it is disabled. So its easy to add or remove it. Then for testing, compare: 6050 gyrorate 256 (i. e. off), sw gyroRate filter to 188 or 98, vs 6050 gyrorate 188 or 98, with sw gyroRate filter off. Of the two, my experience is that it is better to have the first setup smoother motors and less high frequency PID noise, and no negative issues that I could detect. For reasons outlined previously the recordings of the gyro or acc noise levels in blackbox cannot be meaningfully compared between the two, one must compare the amount of noise in the total PID or the amount of noise induced jitter signal in the motor output. The other advantage of a profile-adjustable software overall gyro filter is that we can set any cut frequency we like, not just 98 or 188, and do that per-profile, which greatly simplifies testing. And finally sticking with 256 in the 6050 lets us get data on average 1.5-2ms earlier than 188, that helps a bit with latency. I guess Im now more clearly than ever of the view that gyrolpf should always be 256 and that if there is ever a need for overall gyro filtering, it should be done in software on a per-profile basis. As to the best place to locate a general purpose high level sw gyro filter - at ADC or at the multiplied gyroRate point - well, if we do it at gyrorate, we can vary and test it much easier on a per-profile basis. We can switch it on or off, or change value, as easy as changing a profile. Perfect for testing, and for adjusting to suit a given frame. Best not hard coded imho and better I think not directed at gyroADC. Finally, the 3point moving average filter could always be retained for default functionality as a conditional. e. g.: Hi guys. much more testing. agree with levidnap, nothing wrong with a second sw gyro LPF, also that it doesnt matter much where it goes in the chain. the technique I use for gyroRate filtering is the same as Henn. So now I really tuned my luxfloat PIDs with three filters, Pterm, Dterm and a sw gyroRate filter. I found on really a excellent solution at gyrolpf256 a second gyro filter at 100Hz, Pterm at 50Hz, Dterm at 20Hz. Not exciting numbers, but I tried many combinations these were best. SO this is gyrolpf 256 with sw lpf 100: I was pretty happy with this, a bit of high frequency noise going to the motors but not much, very crisp relationship between stick input and gyro response. I then made blackbox recording everything the same but with gyrolpf of 188 and 98. These are representative pictures from blackbox, first gyrolpf 188 then gyrolpf 98 I know I would be happier with gyrolpf of 256. True, the motors are smoothed with gyrolpf of 98, but there is wobble after step changes, it just isnt as crisp. Then I repeated the tests with no software gyro filter, but using only gyrolpf and the same Dterm and Pterm filters: Here no sw filter and gyrolpf 256, crisp but obviously more motor noise, a lot actually: Here the same gyrolpf 198, a bit less motor noise but a tendency to wobble perhaps And gyrolpf 98, still more motor noise than youd like, and wobble is back Note these were all in LuxFloat. Note also that in any graph where gyrolpf is less than 256, the noise you see in gyro traces is itself filtered, i. e. smaller than really is present. To compare the amount of noise causing trouble for the motors we can only look at the noise in the motor signal traces. The outcome for me is clear. There was a greater tendency to wobble whenever the gyrolpf was set lower. This happens whether or not there is a second software gyro filter in place. Adding the second software filter doesnt seem to make wobble meaningfully worse at any point. Taking out the software filter and just having gyrolpf of 256 gave the same responsiveness and absence of wobble but much more motor noise. With no software gyro filter, lower gyrolpf values caused wobble and this was on top of motor noise. Including the software filter at 100 over gryolpf of 256 gave best results, least wobble, very precise. With these settings I was running P 2, I 0.05 and D 30. This was a lot more P and D than I could get before carefully setting the ideal values. That extra P really makes it feel solid now, the wobble on descent is gone. Very happy indeed. I should note also that attempting to drop Dterm LPF much below 20 or the swgyro filter below 60 tended to make D less effective at controlling P-induced stop wobble. There is a fine balance between suppressing D term noise and rendering D totally ineffective. PS I also spent several hours trying to tune a version of Lux that was targeting rate error for the Dterm, with no success. Went for a fly this arvo with my best settings. Had an amazing time. Used gyrolpf at 256, a second gyro filter at 100Hz, Pterm at 50Hz, Dterm at 20Hz. With twice as much P as before, and lots of power unhindered by motor speed jitters, the quad was just - alive It was absolutely a dream to fly - sadly Im at best an average pilot I had two other profiles with slight variances but the above settings were best. I did a lot of LOS stuff at high speed and also some FPV concentrating on quick rolls, front and back flips, sudden reversals under power, hard stops - there wasnt a hint of wobble at any point, nor any descent prop wash uncertainty. رائعة حقا. Oh yes and this was with bent, dented busted up props. The cheap plastic ones. It didnt matter how crap they got, it flew just the same. So a big thank you to everyone for helping me with this. I now have the tools to get the best possible out of this frame. That means we have the tools to optimise any frame. Boris I still reckon you simply must try gyrolpf 256 and in place of your previously determined optimum gyro filter at 188, try say a software filter like Henn and I have, on gyroRate, set at some lower value. I think youll find it even better than gyrolpf of 188 in terms of hard stop oscillation prevention. Remember that blackbox logs always look better at 188 because noise is being filtered out of the log. The lines to compare are total P or better the motor control lines. Previously we could only cut overall P and D and apply just one filter (gyrolpf) equally for everything, and without any precision. Now we have great precision and can apply the filters exactly where needed. Having such precise tools allows carefully tailored solutions. Boris youre entirely right, most of this is way to complex for the average guy. But I reckon that my quad represents a fairly typical beat up noisy shaky thing. If these settings can make it fly incredibly well, then theres hope for everyone. Levidnap, those spectrograms are great, I hope its possible to put some kind of a brushless motor as input and check what the simple gryoRate LPF is actually achieving in the spectrogram, in comparison to the 6050 filtering - and both together. Seeing what actually happens is more valuable than a heap of theory sometimes. Im too wondered about the sharks teeth. In controllers that use error as the input to Dterm, the sharks teeth are huge unless cleverly removed. Ramping the RC input through a slower LPF say 20z would diminish responsiveness only fractionally and would markedly smooth motor output during stick inputs for those using error based Dterms. It doesnt seem much needed in LuxFLoat except for Pterm spikes. If one wanted to deal with those spikes it would be much better to do them on the control side (RC) than smoothing the Pterm error, because we want to keep the Pterm smoothing as little as possible. PS - Boris thank you very much for yaw expo I set it up for the first time today. Now my co-ordinated yaw and roll in turns works properly no matter how tight the turn. It was a lot of fun doing fast big horizontal round turns LOS super fast and at really steep angles. Im pretty sure these cut frequencies can be automatically calculated with some sort of autotuning so it could be usable for the average guy. But thats wee bit further away :). edit: Just for the documentation about the RCcommand saw-tooth problem. Also note the difference between the gyro readings and the motor outputs. I like. Ill try it on the fields soon but its really windy today. ctzsnooze I actually have been flying on 256 lately, but didnt notice difference between 188 except of nicer looking graphs in blackbox. But you got a point. Once we start separating filtering it is better to keep that one away even though we dont get the full filtering. Are you using the different divider for 256 like ledvinap suggested earlier But I am thinking to try your settings above next time. I totally agree that separate cutoff controlling is the way to filter the more and more I look into it. I believe taulabs does it simillar way as well. Perhaps luxfloat might become an interesting controller after these adjustments. My P on luxfloat is 0.9 at the moment and still noisy :( (only with dterm filter, needs retune with above filters) I will add the following to try: gyrolpf 256 dtermcuthz 14 gyrocuthz 50 (remove pterm filter) and gyrocuthz 100 with ptermcuthz 50 I might also add rccuthz later just for comparing and testing how it influences it all. Yeah yaw expo is awesome when you can set it on the FC :D. It is simply amazing all the headway you guys have made and all the time you have invested into this project. Im eager to see what you will come up with as well as to try out the improvements. Would love to try ptermcuthz but still learning how to work with github. Many thanks for your hard work zenman8269 Feedback is always appreciated Awesome will report back. During my experimenting I came upon some thoughts about tuning these filters. The fundamental premise is that we intend to reject, or block, the stuff we dont want from getting into the FC control loop - high frequency motor noise - whil e allowing the information about frame responses arising from legitimate FC control actions through. The intent is for the PID loop to work properly by getting the inputs it needs. To get super crisp frame responses, now we have really fast responding motors etc, we want to retain fast motor and gyro responses into the motor control loop. That means letting higher frequencies than previously into that control loop. But we now know that this comes at the price of allowing unwanted motor noise into those feedback loops, where it can get amplified and do bad things. Therefore setting the cut-off points becomes quite critical to the performance of the system. Because Dterm noise is usually the dominant noise, it is the factor that typically gets pushed lowest. But if we push too low, we may impair ability of the D factor to assist with control of P induced stop oscillation. I found a way that made sense to me, that I wanted to share here. It helped me when trying to figure the best Dterm value with gyrolpf 256. The first thing I did to set the filters relatively high (say Dterm and Pterm 100 and either disable the gyroRate filter or set it to 200 or something). This will let motor noise in, but we can be fairly sure that motor control and the normal PID loop isnt being affected by the filtering at all. Then I set PID D and I very low and escalated PID P until the frame was just barely demonstrating P oscillations - hopefully at this point it would feel solid enough in rejecting an external pitch or roll force at hover throttle. This was done hand-held with props on, at hover throttle, just moving up and down on P and finding the point of some oscillation after a stick movement. Of course, the higher the P the faster the oscillation, so Id push as high as possible. Then I measured the oscillation frequency. This seemed easiest in blackbox by counting peaks over a second. Now lets say it is very fast. just for the sake of this exercise, lets say it is 20Hz. If I was to set the Dterm filter to 20Hz, I would reduce the effectiveness of my PID D term by half in attempting to control that oscillation, and introduce a 45 degree phase shift that may add additional problems. Theoretically the right kind of Dterm LPF frequency for a fast oscillating quad like this would probably be closer to 30Hz, i. e. 50 higher than the frequency we wish to control. But we may find the frequency is say 12Hz, which is a bit more realistic for an acro quad. in that case, a good Dterm lpf setting might be as low as18Hz. Then Id go back to the basic PIDs and cut P until the oscillation was maybe 2 cycles after a step input. This should be controllable by adding D. Dropping P a bit will tend to lower the oscillation frequency a bit (so we have a bit more leeway on Dterm filtering perhaps). Anyhow then Id add D until (as one normally does) the P oscillation is optimally damped. It might take some time to find the best value, too much D causing a different type of oscillation, and not enough failing to control the P oscillation. As we all know, its sometimes impossible to get rid of it entirely without dropping P a bit more. Sometimes its easy and you can up P a bit more. the usual PID tuning story here. But the key thing is that we can be sure our Dterm filter is not interfering with the PID tuning loop while doing that testing. Once good, we can confirm that the Dterm filter isnt an issue by disabling it and confirming that the oscillation control is unchanged. Or we could drop it and find the threshold at which oscillation control becomes poor. But typically Id just leave it at the value I found earlier for now. Then noise control becomes relatively easy. We put it on blackbox and look to see if Dterm or Pterm noise needs further action. If we are lucky, Dterm noise is now not such a big issue. If Pterm noise is a problem, then we should be able to lower the Pterm filter value. If at this stage the relative proportion of Dterm and Pterm noise in blackbox is about equal, then we can reduce overall noise input to the whole system by dropping the overall gyroRate (gyrocuthz) filter progressively lower. Dropping this does not affect relative Dterm or Pterm phase shifts generally it can be dropped to 100Hz by default, I think, with no adverse impact at all, and probably down to 75Hz seems without any issues however below 50 on highly tuned quads it may start delaying P responsiveness and making wobble worse. If Ive now got the overall gyro filtering as low as it can go, and theres still too much noise, one could further push down P and D filters, but its likely that oscillation will return, necessitating less overall P. So then you either: do something about fixing the source of the noise, or accept less P is the only way that frame will fly, or accept a bit more noise in the signal to the motors. You can decide which is the best compromise for that frame. A bit of noise in the motor signals isnt a disaster ideally less than 10, but up to 20 motor signal jitter seems to not affect performance much. If the motor signal noise is predominantly at high throttle it can be controlled with TPA to some extent. We need to be aware that if we have different time-constants for Pterm and Dterm filters, then there will be phase differences for D and P that wont be the same. This may be good or bad, relative phase difference has a big influence on the ability of D to control P oscillations, and you wont know until you do the testing. Pushing Pterm filtering lower will delay P relative to D, and vice versa, you could test both options and see which has the least negative effect on oscillation. Once all this is done things should be really really good. If theres still too much Dterm noise, it may be possible to reduce Dterm very gradually, looking specifically to see if stick-related stop oscillation becomes an issue again, but maybe you just have to drop PID P to make the system less reactive. Anyhow thats the approach Ive used, and it seems to make sense and work well in practice. My observation is that for a good tight quad, filter values of 100, 50 and 25 for gyroRate, Pterm and Dterm are probably beneficial and generally seem vice free. For a super tight quad they could all be proportionally higher. For a noisier quad, 75, 50 and 20 seem all thats needed, allowing some noise through but not enough to be an issue. I hope this advice helps people get the values relatively close to ideal when starting out, and gives a framework for fine-tuning. Blackbox is absolutely essential. PS - its not well documented - took me a while to find out how - but its easy to get blackbox recordings into the computer while hand testing. Just enable Blackbox in Ports (on the same port as you are connected to the computer) and in the General tab at the bottom right, get a terminal application that can capture incoming text set it to the same port and baud rate, then to record just disconnect Cleanflight at the connect button, connect your terminal software, start it logging, and arm the quad. Data should stream into the terminal window, and stop when you disarm. Then save the textile and open it in the blackbox viewer. When going back to Cleanflight, disconnect the terminal from your USB port, re-connect in cleanflight, and youre back. This approach allowed me to sort out nearly all the tuning issues at my desk even though I had no memory chip on the AfroMini and it was pissing down rain outside. Not a substitute for real-flight testing, but much better than having nothing at all. zenman8269 - sorry I calculated the speed of the wobble without realising youd zoomed in. -) Personally I think people push P too hard, in general. I thought your graph looked very good to be honest, Im sure it will fly really well. Wobble is generally the result of too much filtering andor too much P. Your motor trace is so smooth that to retain the P you could probably increase dtermcuthz to 25 andor increase D without really bothering the motors, or alternatively drop P a little and retain the smoothness. my gut feeling is that its probably going to fly really, really well as is though. borisbstyle - on reflection yes I think filtering at ADC level makes sense. particularly for acc. I read the other comments about changes to horizon. I have a hack that normally lets me fly inverted and things like that, I noticed it was a bit different since changing these filtering things - still flew well, but a bit different, nothing too dramatic like for others - but my code base is two months old and I have not time to to look at this right now. Overall Im so grateful for the effort youve put into this. I very much appreciated the integrated solution. Im hoping the dust can settle a bit on the coding side for a while now Im using hand modified code from a month or two ago to keep what Ive been testing as stable as possible. It looks like very soon I should get the latest build so we are all testing the same code base. When do you think these filtering related build changes will stabilise, so we can all do the detailed testing on something that isnt changing every day or two. -) ctzsnooze Its getting there. Also many thanks for your input so far. Many changes now, but more flexibility in the future and easy testing of different filters through the rest of the code. I think its down to testing on my side to get it right next time :D PS - there is perhaps a different ideal dtermcuthz value for error-input Dterm like PIDC1 vs value-input Dterm like Lux. If you look at the PIDD in BlackBox in lux, there are no PPM spikes when the user provides control inputs, because Lux is calculating D on the gyro data, not the difference (error) between gyro and stick input values. Lux therefore has a smoother D curve - but it is also delayed beyond stick inputs a bit. If found it hard to go below 20Hz in Lux for this value without wobble, and could not get wobble-free at 14Hz in Lux at all. In contrast, the PIDD value in BlackBox is typically very spiky on stick inputs because it responds briskly to the sudden change in the error between the step ups in setpoint. To smooth these spikes I think youre pushing dtermcuthz low as possible like 14Hz. It seems to work OK with lower dtermcuthz in PIDC1 probably because the error-based Dterm input value drops more quickly on the cessation of a stick change in PIDC1 than in Lux. I anticipate that the optimal - or perhaps the lowest tolerable - filter values will vary from PIDC to PIDC Also the acc smoothing is interesting. I recall now that: acc uses the acc data only intermittently to recalibrate an integral of gyro delta the integrated gyro delta provides the input for the moment to moment control of angle by the quad when acc is close to 1, acc data (after smoothing via accsmooth if acclpffactor is gt0) is compared to the gyro values and a proportion (1gyrocmpffactor) of the error between the two is then used to correct for drift in the gyro-based current perceived angle of the quad. 1gyrocmpf acts as a smoothing function, if set to 1000 is quite long. So adding an acc low pass filter when gyrocmpf is 1000 is not going to make a lot of difference. For an acc LPF to primarily have much of an impact something, both acclpffactor and gyrocmpffactor would need to be very low or zero. A potential problem with filtering acc is that it may produce phase shifts in the value that would be used to adjust the gyro derived angle value. The code is quite complex. I and others have found that setting acclpffactor to zero (i. e. no smoothing other than that due to gyrocmpffactor) has no negative influence, so long as gyrocmpffactor is high (i. e. 1000 default is 600 which should also be OK). My gut feeling is that filtering acc is not likely to be of any benefit in flight. Smoothing the raw acc data could actually be problematic, because the current code intends to reject values for acc outside of a range close to 1g. I dont know if smoothing accADC might include values that would otherwise be outside 1g or if we were actively flying make it difficult to ever get values around or if the phase shift inevitably part of that smoothing might be a problem. On the plus side Id think it could be quite helpful to have a loop time independent way to filter acc by a defined frequency, rather than the older method where the frequency is unknown, mostly so that interpretation of the display of vibrations in the motors tab or the blackbox can be better interpreted in terms of frequency content. However in both cases a better way would probably be to use gyro data integrated with a longish time constant, because we dont care about absolute acc values there, just AC noise, and that can be VERY effectively identified from gyro data without needing anything from the acc. Same in blackbox we dont need acc to see noise when we have gyros. A really great improvement arising from this would be if the Configurator motors tab showed vibrations in three axes as determined from gyro data alone. Ideally that data could be filtered with a user adjustable filter so that we can determine the impact of certain filter choices. Even more ideally that particular filtering should be independent of all the other filters acc smoothing always had the most benefit in the past :). It was even more usefull than gyro smoothing. Thats when I first got involved into filtering back in the old baseflight days. When I fix it we will see it. currently there was no additional acc smoothing at all ) Yes, that is exactly why pidrewrite is quite popular under acro flyers. It reacts really tight to stick changes. The sharkteeth from ppm are totally not causing any negative effects in flight actually. I even think that it unintentionally contributes to sharper control as it pulses the p a bit during the sharpest moves. In my case when filtering D I ony focus onto D itself and not on those sharkteeth when tuning. 14 seemed a good value 2 days ago. I can imagine what you are saying where luxfloat already has delayed d response which is dampening the P movements much longer to the end of stick moves it introduces more unwanted delay. OK thats interesting about acc smoothing. Also glad to read that you had proper 256 working. I think youll enjoy it. -) PS I see in the other github discussions that youre now up to your neck in how to most efficiently to code this - good luck with that, looks challenging Much easier for me to patch Lux with some simple but inefficient code. what youre doing is much better :-) ctzsnooze For testing that is fine, but implementing that separately on all other PID controllers is again not efficient and doesnt get through the rest of the code what uses sensor readings. I am now facing some other fundemental challenges in current cleanflight code I also want to prevent rewriting some other unrelated stuff to get this to the way I want it to be. Good luck I see the challenges - Im sure youre able to make it much tidier in future. Ok, guys, theres a lot of good conversation going on in here. I think we need to close this issue and spawn off new issues that are focused - based on the conversations youve had. Please can you create new issues for things that need to be done and link to this issue. I will rename this issue so that it makes more sense. hydra changed the title from Unable to set MPU6050 gyrolpf to 256 to Sensors - Gyro LPF frequency discussions. Jul 6, 2015 I should also note that in the current MPU6500 code there isnt an option to enable INVFILTER256HZNOLPF2 You cant perform that action at this time. لقد سجلت الدخول باستخدام علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة. لقد سجلت الخروج في علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة.

Comments