به نظر می رسد که شما عضو سایت نیستید و یا وارد نشده اید, امکان ارسال مطلب و دانلود فایل و همچنین دسترسی به انجمن هایی که فقط اعضا ثبت نام شده امکان دسترسی به آن را دارند از امتیازات ثبت نام در سایت میباشد.

لطفا از طریق این لینک برای ثبت نام اقدام نمایید.

    
You have (1) Unread PM; Click The Icon To Read It You have a new PM
جدیدترین موضوعات انجمنها


بازگشت   متارو > قطعات > قطب‌نماي الكترونيكي (Compass)

کالیبره کردن کامپس

قطب‌نماي الكترونيكي (Compass)

پاسخ
 
LinkBack ابزارهای موضوع نحوه نمایش
قدیمی 03-19-2009, 08:02 PM   #1
پیش فرض Re: کالیبره کردن کامپس

سلام
ممکنه که کامپس درایو شده عددهای غلطی به شما بده برای این کار باید اون را کالیبره کنید که دلیلایل مختلفی از جمله تغییر عرض جغرافیایی و نویز و.... می تونه داشته باشد
برای این کار دو روش کلی مجود دارد.
1-به وسیله ی پایه 6
برای این کار شما ابتدا باید این پایه را پول آپ کنید و سوئیچی را به آن وصل کرده و آن طرف آن را به زمین متصل کنید.((البته در ماژول های جدید مقاوت پول آپ داخلی موجود است.))
سپس1- ابتدا کامپس را به طرف شمال قرار می دهیم سپس سوئیچ را یکبار فشار می دهیم.
2-سپس به سمت شرق می گذاریم و سوئیچ را یکبار فشار می دهیم
3-سپس به سمت جنوب می گذاریم و سوئیچ را یکبار فشار می دهیم
4-سپس به سمت غرب می گذاریم و سوئیچ را یکبار فشار می دهیم

2-به وسیله ی i2c
برای این کار باید :
1-کامپس را به طرف شمال قرار داده و مقدار 255 را در رجیستر 15 می نویسیم
2-کامپس را به طرف شرق قرار داده و مقدار 255 را در رجیستر 15 می نویسیم
3-کامپس را به طرف جنوب قرار داده و مقدار 255 را در رجیستر 15 می نویسیم
4-کامپس را به طرف غرب قرار داده و مقدار 255 را در رجیستر 15 می نویسیم

جهت شمال و طریقه ی گرفتن کامپس رو به شمال را لینک میکنم
http://rapidshare.com/files/21117672..._copy.jpg.html
موفق باشید.

در صورتی که اشتباه کالیبره کردید می تونید کامپس را روشن وخاموش کرده و سپس دوباره کالیبراسیون خود را انجام دهید

ویرایش توسط mohamad.nasr : 01-06-2011 در ساعت 12:25 AM.
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
10 کاربر از mohamad.nasr به خاطر این مطلب مفید تشکر کرده اند
قدیمی 01-06-2011, 12:14 AM   #2
پیش فرض پاسخ : کالیبره کردن کامپس

سلام...
با استفاده از این برنامه می تونید کامپس را به صورت نرم افزاری (i2c) کالیبرiه البته برنامه که بهتره بگم تابع ، با برای کامپایلر Codevision هست...
کالیبره کردنشم به دو صورت انجام میشه...1-کالیبره کردن به صورت دستی که باید(شما و جنوب و...) 2-بازگشت به کالیبره ی کارخانه
فقط کافیه lcdو پین های i2c و دوتا سوئیچ ریستی (sw0,sw1) در ابتدای برنامتون تعریف کنید...
کد PHP:

void compass_cal 
(void)                                                                                                                                                           
{             
//calibrate... 
int cont=0;
                                                                       
lcd_clear();
lcd_putsf("Restory - manual");
delay_ms(100);
while (
1)
        {           
 
                                                                          
        if (
sw0)
                {       
//restory fact
                                                                                     
                     
lcd_clear();
                     
lcd_putsf("Plz Wait for restory to factory...");
                     
delay_ms(500);    
                     
i2c_start();
                     
delay_ms(10);                                                    
                     
i2c_write(0xC0);
                     
i2c_write(12);
                     
//i2c_write(0xC0|0);
                     
delay_ms(10);
                     
i2c_write(0x55);
                     
i2c_stop();
                     
                     
delay_ms(20);      
                     
i2c_start();
                     
delay_ms(10);                                                    
                     
i2c_write(0xC0);
                     
i2c_write(13);
                     
//i2c_write(0xC0 |0);
                     
delay_ms(10);
                     
i2c_write(0x5A);
                     
i2c_stop();     
                     
                     
delay_ms(20);      
                     
i2c_start();
                     
delay_ms(10);                                                    
                     
i2c_write(0xC0);
                     
i2c_write(14);
                     
//i2c_write(0xC0 |0);
                     
delay_ms(10);
                     
i2c_write(0xA5);
                     
i2c_stop();   
                     
                     
delay_ms(20);      
                     
i2c_start();
                     
delay_ms(10);                                                    
                     
i2c_write(0xC0);
                     
i2c_write(15);
                     
//i2c_write(0xC0 |0);
                     
delay_ms(10);
                     
i2c_write(0xF2);
                     
i2c_stop();          
                     
lcd_clear();
                     
lcd_putsf("Restored to fact Complete");
                     
delay_ms(800);
                     break;                                           
                     }        
                     
                     
                     
                     
              if (
sw1)
                     {
                     
delay_ms(20);
                     while (
sw1);
                     
lcd_clear();
                     
lcd_putsf("Manual Calibrate");
                     
delay_ms(500);
                     
lcd_clear();
                     
lcd_putsf("North");
                     while (
cont!=9)
                           {
                           if (
sw0)
                                          {
                                          
delay_ms(500);
                                          
cont++;
                                          }
                           if (
cont==1)
                                          {   
                                          
i2c_start();          //north OK
                                          
delay_ms(10);
                                          
i2c_write(0xC0);
                                          
i2c_write(15);
                                          
i2c_write(255);
                                          
i2c_stop();     
                                          
cont++;
                                          
lcd_clear();
                                          
lcd_putsf("East");
                                          
delay_ms(200);
                                          }
                           if (
cont==3)
                                          {     
                                          
i2c_start();          //East OK
                                          
delay_ms(10);
                                          
i2c_write(0xC0);
                                          
i2c_write(15);
                                          
i2c_write(255);
                                          
i2c_stop();     
                                          
cont++;
                                          
lcd_clear();
                                          
lcd_putsf("South");
                                          
delay_ms(200);
                                          }
                           if (
cont==5)     
                                          {  
                                          
i2c_start();          //South OK
                                          
delay_ms(10);
                                          
i2c_write(0xC0);
                                          
i2c_write(15);
                                          
i2c_write(255);
                                          
i2c_stop();     
                                          
cont++;
                                          
lcd_clear();
                                          
lcd_putsf("West");
                                          
delay_ms(200);
                                          }
                           if (
cont==7)
                                          {        
                                          
i2c_start();
                                          
delay_ms(10);
                                          
i2c_write(0xC0);
                                          
i2c_write(15);
                                          
i2c_write(255);
                                          
i2c_stop();     
                                          
cont++;
                                          
lcd_clear();
                                          
lcd_putsf("Calibration     Compilete");
                                          
delay_ms(200);
                                          }
                                                 
                           }                           
                           break;
                                                                                     
                     } 
                                                                                        
              }
                                                                       
                                                                       

__________________
We fight through the hurt ... And we live and we learn ...
And we Try and Try And Try


saeebrobotic.blogfa.com
________________________
We Are OpenSource

ویرایش توسط mohamad.nasr : 01-06-2011 در ساعت 12:20 AM.
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
5 کاربر از mohamad.nasr به خاطر این مطلب مفید تشکر کرده اند
قدیمی 01-06-2011, 12:54 AM   #3
Lightbulb پاسخ : کالیبره کردن کامپس

برای کالیبره کردن هیچ نیازی نیست که حتما کامپس در جهت های جغرافیایی قرار بگیره.
اولین سمتی که به سوی اون گرفته می شه و کلید کالیبراسیون فشار داده می شه برای زاویه ی صفر در نظر گرفته میشه و تمام مقادیر نسبت به اون اندازه گیری می شن.
فقط یه نکته خیلی مهمه و اونم اینه که بعد از هر بار فشار دادن کلید کالیبراسیون باید تا حد ممکن فقط 90 درجه به سمت راست بچرخین و هر چقدر این چرخش دقیقتر باشه بهتر کالیبره می شه.
برنامه ی خواندن کامپس به صورت سخت افزاری که سرعت بسیار بالایی داره هم در آدرس زیر موجوده...
http://www.metaroclub.com/forum/f56/cmps-reading-479/
__________________
_-_-_-_-_-_-_-_-_-_-_-_-_-
ذکات علم ...
---------------------------------
موفق باشین ...
Kooshan آنلاین نیست.   پاسخ با نقل قول
2 کاربر از Kooshan به خاطر این مطلب مفید تشکر کرده اند
قدیمی 01-06-2011, 01:09 AM   #4
Lightbulb پاسخ : کالیبره کردن کامپس

*** نکته :
چون اجسام فلزی به شدت بر روی خطوط میدان مغناطیسی زمین اثر میذارن باید حتما ربات در محلی که قرار کار بکنه کالیبره بشه تا با محیط سازگاری پیدا کنه. مثلا حتی بدنه ی ربات هم اثر گذاره و باید در نظر گرفته بشه و حتما کامپس بر روی ربات کالیبره بشه...
کامپس تا حد ممکن باید از میدان های الکتریکی و مغناطیسی متغیر موجود در ربات فاصله داشته باشه که یکی از بزرگترین منابع آن موتورهای ربات هستن...
__________________
_-_-_-_-_-_-_-_-_-_-_-_-_-
ذکات علم ...
---------------------------------
موفق باشین ...
Kooshan آنلاین نیست.   پاسخ با نقل قول
اين کاربران از Kooshan به خاطر این مطلب مفید تشکر کرده اند
قدیمی 01-06-2011, 11:02 AM   #5
پیش فرض پاسخ : کالیبره کردن کامپس

نوشته اصلی توسط kooshan نمایش پست ها
برای کالیبره کردن هیچ نیازی نیست که حتما کامپس در جهت های جغرافیایی قرار بگیره.
من چندين بار اين مسئله ار آزمايش كردم ، اگه رو به جهت هاي جغرافيايي قرار بگيره خيلي بهتر جواب ميده...
__________________
We fight through the hurt ... And we live and we learn ...
And we Try and Try And Try


saeebrobotic.blogfa.com
________________________
We Are OpenSource
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
اين کاربران از mohamad.nasr به خاطر این مطلب مفید تشکر کرده اند
قدیمی 01-06-2011, 11:33 AM   #6
پیش فرض پاسخ : کالیبره کردن کامپس

و يه نكته ي ديگه در هنگام كاليبره كردن بايد حتما كامپس افقي قرار بگيره
__________________
We fight through the hurt ... And we live and we learn ...
And we Try and Try And Try


saeebrobotic.blogfa.com
________________________
We Are OpenSource
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
2 کاربر از mohamad.nasr به خاطر این مطلب مفید تشکر کرده اند
قدیمی 01-06-2011, 05:57 PM   #7
پیش فرض پاسخ : کالیبره کردن کامپس

همانطور که می دانید کامپس یک ماژول قطب نمای الکترونیکی است.سنسور مغناطیسی روی آن kmz51 است.دو عدد از این سنسور ها به صورت عمود بر هم در روی ماژول قرار دارد که میکروی روی ماژول از تفاوت شدت میدان مغناطیسی این دو سنسور زاویه را حساب می کند.
میدان مغناطیسی کره ی زمین در روی کره در راستای محور جنوب شمال قرار داردکه بسته به ارتفاع ، شیب،عرض و حتی طول جغرافیایی شدت آن مختلف است.
از آنجایی که این بیش ترین اختلاف شدت میدان، بین راستای جنوب شمال،و راستای شرق غرب کره است.الزاما برای داشتن تغییرات متناسب با زاویه چرخش و کارکرد صحیح این قطعه در خروجی باید هر جهت را به طور صحیح و دقیق برای کالیبره انتخاب کرد.
لازم به ذکر است که هر چیزی که شدت میدان را(وابسته به میدان و زاویه میدان با صفحه و شتاب جاروب میدان) به هم بریزد منجر به اختلال در سیستم کامپس می گردد.
__________________
معشوق من چنان لطیف است که خود را به بودن نیالوده است...
emami آنلاین نیست.   پاسخ با نقل قول
قدیمی 01-06-2011, 06:20 PM   #8
پیش فرض پاسخ : کالیبره کردن کامپس

همانطور که دوستان گفتند نویزها خیلی مهمند و یکی از بزررگترین اونها که در ربات وجود داره نویز موتور هاست که در لحظه خاموش و روشن شدن موتور به حداکثر خودش میرسه پس اولا باید نویز موتور را بتونیم حذف کنیم چون اون برای میکرو هم ضرر داره ... دوما باید کامپس رو تا میتونیم از موتور دور نگهداریم و ....
__________________
***** ***** ***** ***** ***** ***** ***** ***** *****
اگر فکر می کنید می توانید، حتماً می توانید و اگر فکر میکنید که نمی توانید، حق با شماست.
Abdelahi آنلاین نیست.   پاسخ با نقل قول
قدیمی 01-06-2011, 09:40 PM   #9
Lightbulb پاسخ : کالیبره کردن کامپس

با توجه به مکانیزم کامپس هیچ الزامی نیست که در جهات جغرافیا کالیبره بشه.
در مورد افقی بودن کامپس هم این مشکل در مدل های 3 محور حل شده و اصلا دیگه این مشکلات وجود نداره و همونطور که گفتن در مورد 2 محور ها خیلی این موضوع مهمه و حتما باید رعایت بشه...
حرکت سنسور هم اگه به صورتی باشه که به صورت افقی بمونه هیچ تاثیری در خروجیش نمیذاره و خطایی به وجود نمیاره ( چون سنسور با اندازه گیری شدت میدان مغناطیسی در دو جهت عمود بر هم زاویه رو تشخیص میده و حرکت افقی در یک جهت مستقیم هیچ تاثیری بر روی شدت میدان نداره.)
در مورد موتور ها هم اگه موتور از مارک معتبری باشه یک محافظ بر روی پوستش وجود داره که خیلی از خروج خطوط میدان های الکتریکی و مغناطیسی جلوگیری می کنه...
__________________
_-_-_-_-_-_-_-_-_-_-_-_-_-
ذکات علم ...
---------------------------------
موفق باشین ...
Kooshan آنلاین نیست.   پاسخ با نقل قول
قدیمی 01-07-2011, 10:42 PM   #10
پیش فرض پاسخ : کالیبره کردن کامپس

Pin Method
Pin 6 is used to calibrate the compass. The calibrate input (pin 6) has an on-board pull-up resistor and can be left unconnected after calibration. To calibrate the compass you only have to take the calibrate pin low and then high again for each of the four major compass points North, East, South and West. A simple push switch wired from pin6 to 0v (Ground) is OK for this. The compass points can be set in any order, but all four points must be calibrated. For example
1. Set the compass module flat, pointing North. Press and release the switch
2. Set the compass module flat, pointing East. Press and release the switch
3. Set the compass module flat, pointing South. Press and release the switch
4. Set the compass module flat, pointing West. Press and release the switch
That's it.
http://www.robot-electronics.co.uk/htm/cmps_cal.shtml
__________________
معشوق من چنان لطیف است که خود را به بودن نیالوده است...
emami آنلاین نیست.   پاسخ با نقل قول
2 کاربر از emami به خاطر این مطلب مفید تشکر کرده اند
پاسخ

علاقه مندی ها (Bookmarks)

برچسب ها
کالیبره, کامپس, کردن

« موضوع قبلی | موضوع بعدی »
ابزارهای موضوع
نحوه نمایش

انتخاب سریع یک انجمن


اکنون ساعت 04:43 AM برپایه ساعت جهانی (GMT - گرینویچ) +4.5 می باشد.


تمامي حقوق مادي و معنوي اين مجموعه متعلق به شركت ربات گستران آپادانا مي‌باشد Persian Skin By : Vbskin