চৌম্বকীয় ∞ আকারের ক্রমাঙ্কন


15

3-অক্ষের বৈদ্যুতিন কম্পাস ব্যবহার করে মোবাইল ফোন এবং অন্যান্য ডিভাইসে, এই ভিডিওগুলিতে প্রদর্শিত ম্যাগনেটমিটারটি ক্রমাঙ্কিত করতে একটি 8/8 / S আকারের আন্দোলন ব্যবহৃত হয় ।

এই আন্দোলনটি কেন সম্পাদিত হয়, তত্ত্বটি কী এবং এর বাস্তবায়নের জন্য কেও উদাহরণ দিতে পারে সি কোড?

আপনাকে অবশ্যই আমার আরও একটি অনুরূপ প্রশ্নটি আরও তথ্য সমেত যেতে হবে ।


এই নির্দিষ্ট প্রশ্নের জন্য কিছু অতিরিক্ত তথ্য: প্ল্যাটফর্মটি এভিআর স্টুডিও 5 ব্যবহার করে 8-বিট এটিমেগ 32 হয় is

এখনও অবধি আমি চেষ্টা করেছি: আমি ম্যাগনেটমিটারের আকারটি তৈরির ভেক্টর মানের 2 টি দিয়ে গড়কে ভাগ করার চেষ্টা করেছি । চিন্তাভাবনা অফসেট গণনা করতে সহায়তা করতে পারে। আমি কিছু মনে করি যে আকারের দুটি অভিন্ন অংশ / দিকগুলি পৃথিবীর চৌম্বকীয় ক্ষেত্রটি বাতিল করে এবং অফসেট মানগুলি প্রদান করে। আমার ভুলও হতে পারে. তবে বিশেষত আকৃতি ভিত্তিক ক্রমাঙ্কনের জন্য আমি এখানে বর্তমানে আছি। আমি মনে করি ক্রমাঙ্কনটি এভাবে কাজ করে। ধারণাটি কী তা এইভাবে কাজ করে?


ঠিক আছে, যার মাধ্যমে আমি অফসেটগুলি গণনা করতে পারি এবং পরে কেবল কাঁচা চৌম্বকীয় 3 ডি ভেক্টর থেকে বিয়োগ করে। আমি সম্পূর্ণ ভুল হতে পারি এবং এটি কীভাবে কাজ করে তার কোনও ব্যাখ্যা নেই। ভিডিওটি এবং গোলকের উপর ডেটা প্লট করার পরে দেখে, কোনওভাবে আমার চিন্তাকে ত্বরান্বিত করেছে এবং আমি সেই চিন্তাটি সমীকরণের আকারে ব্যবহার করেছি। বি)

কোড:

Read_accl();এবং Read_magnato(1);ফাংশন সেন্সর ডেটা পড়া হয়। আমি আশা করি কোডটি স্ব-বর্ণনামূলক। প্রত্যাশিত বুদ্ধিমান পিপিএল অবশ্যই আরও ভাল উপায়ে এটি ব্যবহার করবে। : \

void InfinityShapedCallibration()
{
    unsigned char ProcessStarted = 0;
    unsigned long cnt = 0; 

    while (1)
    {

            Read_accl();

            // Keep reading Acc data
            // Detect Horizontal position
            // Detect Upside down position
            // Then detect the Horizontal position again.
            // Meanwhile an infinity shaped movement will be created.
            // Sum up all the data, divide by the count, divide by 2 .
            // !We've offsets.          

                if (ProcessStarted!=3)
                {
                //
                    //USART_Transmit_String("\r");
                    //rprintfFloat(4, g_structAccelerometerData.accx_RAW);
                    //USART_Transmit_String(",");
                    //rprintfFloat(4, g_structAccelerometerData.accy_RAW);
                    //USART_Transmit_String(",");
                    //rprintfFloat(4, g_structAccelerometerData.accz_RAW);

                }


            if (
             abs( g_structAccelerometerData.accx_RAW) < 100 
            && abs(g_structAccelerometerData.accy_RAW) < 100 
            && g_structAccelerometerData.accz_RAW < -350 
            && ProcessStarted != 2 && ProcessStarted != 3 && ProcessStarted != 1 )
            {
                ProcessStarted = 1; 
            }   

            if (ProcessStarted==1)
            { 

            Read_magnato(1);

                structMagnetometerOffsetDataToEEPROM.Off_X += g_structMegnetometerData.magx_RAW;
                structMagnetometerOffsetDataToEEPROM.Off_Y += g_structMegnetometerData.magy_RAW;
                structMagnetometerOffsetDataToEEPROM.Off_Z += g_structMegnetometerData.magz_RAW;

                cnt++;

            }               
                if ( g_structAccelerometerData.accz_RAW > 350 
                && ProcessStarted==1)
                {
                    ProcessStarted = 2; 
                }

                if ( g_structAccelerometerData.accz_RAW < -350 
                && ProcessStarted == 2 )
                {
                    ProcessStarted=3; 
                    structMagnetometerOffsetDataToEEPROM.Off_X /= cnt;
                    structMagnetometerOffsetDataToEEPROM.Off_X /= 2;

                    structMagnetometerOffsetDataToEEPROM.Off_Y /= cnt;
                    structMagnetometerOffsetDataToEEPROM.Off_Y /= 2;

                    structMagnetometerOffsetDataToEEPROM.Off_Z /= cnt;
                    structMagnetometerOffsetDataToEEPROM.Off_Z /= 2;  

                    UpdateOFFSETDATAinEEPROM();  

                    break;

                } 
    }   
} 

এই অফসেটগুলি পাওয়ার পরে আমি সেগুলি নীচে ব্যবহার করেছি:

void main()
{
...

Read_magnato(1);
        g_structMegnetometerData.magx_RAW -= structMagnetometerOffsetDataToEEPROM.Off_X ;
        g_structMegnetometerData.magy_RAW -= structMagnetometerOffsetDataToEEPROM.Off_Y ;
        g_structMegnetometerData.magz_RAW -= structMagnetometerOffsetDataToEEPROM.Off_Z ;
...
}

যেমন আমি উল্লেখ করলাম.


2
এই প্রশ্নে অনেক সাহায্য দরকার। আপনার কি প্রোগ্রামিংয়ে সহায়তা দরকার? চৌম্বকীয় সম্পর্কে তত্ত্ব? কি প্ল্যাটফর্ম? আপনি কি চেষ্টা করেছেন বা সন্ধান করেছেন?
কেলেনজবি

8 চিত্রটি কি ক্রমাঙ্কন সূচনা করার জন্য কেবল একটি অঙ্গভঙ্গি নয়?
জ্যামিতিকাল

1
আমি জানি না কেন পিপিএল এমন আচরণ করে যেমন তারা রোবট। আমি একই কাজের জন্য একটি লিঙ্ক দিয়েছি। আমি এতে অনেক কাজ করেছি এবং পিপিএল কেবল না জেনে, কেবল এটি ভোট দিয়ে দিন। আমার অস্পষ্ট প্রশ্নের কারণে যখন আমার প্রশ্নটি বাতিল হয়ে গেছে তখন আমি এটিকে ঘৃণা করি। এটিকে ভোট দেওয়ার ঠিক আগে কী দরকার তা দয়া করে জিজ্ঞাসা করুন। আমি আউটপুট পেতে সত্যিই মারা যাচ্ছি এবং পিপিএল এটি ভোট দেওয়ার আগে ভাবেন না। এটি খারাপ অনুভব করে এবং আমাকে সঠিক দিকে কাজ করা থেকে সরিয়ে দেওয়ার চেষ্টা করে। দয়া করে, আমার পক্ষে ভোটের কোনও পক্ষই নয় need
রিক 2047

1
@ কেলেনজবি: আমি একটি সাধারণ 8 বিট অ্যাটমেগ 32 ব্যবহার করে একটি আইএমইউতে কাজ করছি। আমি এটিতে কাজ করার চেষ্টা করে এবং এই সিদ্ধান্তে পৌঁছানোর চেষ্টা করেছি যে একটি 32 বিট ইউসি সুইয়ের জায়গায় তরোয়াল ব্যবহার করার মতো। (আমার ধাঁধার জন্য দুঃখিত:)) আমি আকৃতি তৈরি করে চৌম্বকমিটারের সমস্ত RAW মান যুক্ত করার চেষ্টা করেছি। তারপরে ইনপুটগুলির সংখ্যা দ্বারা ভাগ করুন। চিন্তাভাবনা অফসেট গণনায় সহায়তা করতে পারে। আমি মনে করি কিছু আকৃতির দুটি অভিন্ন অংশ / দিকগুলি কীভাবে পৃথিবীর চৌম্বকীয় ক্ষেত্রটি বাতিল করে এবং অফসেট মান প্রদান করে। আমার ভুলও হতে পারে. তবে বিশেষত আকৃতি ভিত্তিক ক্রমাঙ্কনের জন্য আমি এখানে বর্তমানে আছি। আমার মনে হয় ...
রিক 2047

1
সমস্যাটি প্রশ্নটির সাথে ছিল না, তবে এই সাইটে এমন সংখ্যক লোকের সাথে যারা প্রশ্নগুলি কমিয়ে দেবে কারণ তারা কী জিজ্ঞাসা করা হয়েছে তা বোঝার জন্য বিষয়টির সাথে যথেষ্ট পরিচিত নয় familiar যদি আপনি না জানেন, কেবল এটি একা ছেড়ে দিন!
ক্রিস স্ট্রাটন

উত্তর:


21

8 / এস আকারের প্যাটার্নটি মোবাইল ফোন এবং অন্যান্য ডিভাইসে চৌম্বকীয় পরিমাপ করতে ব্যবহৃত হয়।

পটভূমি

সাধারণ মোবাইল ফোন যুগের চৌম্বকীয়রা চৌম্বকীয় ক্ষেত্রের শক্তি তিনটি অরথোগোনাল অক্ষের সাহায্যে পরিমাপ করে, যেমন:

মি=মিএক্সআমি^+ +মিYȷ^+ +মিz- র^

প্রদত্ত ক্ষেত্রের দৈর্ঘ্যের সাথে,

মি=মিএক্স2+ +মিY2+ +মিz- র2

এবং প্রতিটি অক্ষ থেকে ঘোরার কোণ

θ=কোসাইন্-1মিমি, কোথায় [এক্স,Y,z- র]

ক্রমাঙ্কন

যেহেতু পৃথিবীর চৌম্বক ক্ষেত্র তুলনামূলকভাবে ধ্রুবক, তাই চৌম্বকীয় দ্বারা পরিমাপক ক্ষেত্রের দৈর্ঘ্যটিও সেন্সরের অভিমুখী নির্বিশেষে স্থির হওয়া উচিত । উদাহরণস্বরূপ, যদি কেউ সেন্সরকে চারদিকে ঘোরানো হয় এবং , m y , এবং m z কে 3 ডি তে প্লট করতে হয় তবে পাথগুলি একটি গোলকের পৃষ্ঠকে ধ্রুবক ব্যাসার্ধের সাথে প্লট করতে হবে।মিএক্সমিYমিz- র

আদর্শভাবে এটি দেখতে কিছুটা দেখতে হবে:

গোলক

তবে শক্ত এবং নরম লোহার প্রভাব এবং অন্যান্য বিকৃতির কারণে এটি একটি বিকৃত গোলকের মতো দেখতে শেষ হয়:

বিকৃত

এটি কারণ সেন্সর দ্বারা পরিমাপ করা চৌম্বকীয় ক্ষেত্রের দৈর্ঘ্য ওরিয়েন্টেশনের সাথে পরিবর্তিত হচ্ছে। ফলস্বরূপ যে উপরের সূত্রগুলি অনুসারে গণনা করা হলে চৌম্বকীয় ক্ষেত্রের দিকটি সত্য দিক থেকে পৃথক।

তিনটি অক্ষের পাঠগুলির প্রত্যেকটির সমন্বয় করতে ক্যালিব্রেশন করা আবশ্যক যাতে প্রবণতা নির্বিশেষে প্রস্থটি স্থির থাকে - আপনি এটি ভাবতে পারেন যে বিকৃত গোলকটি অবশ্যই একটি নিখুঁত গোলকের সাথে আবদ্ধ হওয়া উচিত। LSM303 আবেদন নোট কিভাবে এই সম্পাদন করতে বিশদ নির্দেশের প্রচুর হয়েছে।

সুতরাং চিত্র 8 প্যাটার্ন সম্পর্কে কি ??

চিত্র 8 টি প্যাটার্নটি সম্পাদন করে উপরের বিকৃত গোলকের অংশটি 'ট্রেস আউট' করে। প্রাপ্ত স্থানাঙ্কগুলি থেকে, গোলকের বিকৃতিটি অনুমান করা যায়, এবং ক্রমাঙ্কন সহগগুলি পাওয়া যায়। একটি ভাল প্যাটার্ন হ'ল এটি সর্বশ্রেষ্ঠ অভিযোজনগুলির মধ্যে সনাক্ত করে এবং তাই সত্য ধ্রুবক মাত্রা থেকে সর্বাধিক বিচ্যুতি অনুমান করে।

বিকৃত গোলকের আকারটি অনুমান করতে, কমপক্ষে স্কোয়ারের উপবৃত্তাকার ফিটিং ব্যবহার করা যেতে পারে। এলএসএম 303 অ্যাপ্লিকেশন নোটেও এ সম্পর্কিত তথ্য রয়েছে।

একটি বেসিক ক্রমাঙ্কনের জন্য একটি সহজ পদ্ধতি

অ্যাপ নোট অনুসারে আপনি যদি নরম-লোহার বিকৃতি ধরে না নেন তবে বিকৃত গোলকটি কাত হবে না। সুতরাং একটি বেসিক ক্রমাঙ্কন জন্য একটি সহজ পদ্ধতি সম্ভব হতে পারে:

  • প্রতিটি অক্ষের জন্য সর্বাধিক এবং সর্বনিম্ন মানটি সন্ধান করুন এবং 1/2 ব্যাপ্তি এবং শূন্য পয়েন্ট পাবেন

R=12(সর্বোচ্চ(মি)-সর্বনিম্ন(মি))

z- র=সর্বোচ্চ(মি)-R

  • প্রতিটি অক্ষের পরিমাপ শিফট এবং স্কেল করুন

মি'=মি-z- রR

  • ব্যবহার না করে আগের মতো মান গণনা করুনমি'

এটি এখানে পাওয়া কোডের ভিত্তিতে তৈরি

কমপক্ষে স্কোয়ার ব্যবহার করে সমাধান করা

স্বল্প স্কোয়ার ব্যবহার করে সমাধানের জন্য ম্যাটল্যাব কোডটি নীচে দেখানো হয়েছে। কোডটি একটি পরিবর্তনশীল ধরে নেয় magযেখানে কলামগুলি হল xyz মান।

H = [mag(:,1), mag(:,2), mag(:,3), - mag(:,2).^2, - mag(:,3).^2, ones(size(mag(:,1)))];
w = mag(:,1).^2;
X = (H'*H)\H'*w;
offX = X(1)/2;
offY = X(2)/(2*X(4));
offZ = X(3)/(2*X(5));
temp = X(6) + offX^2 + X(4)*offY^2 + X(5)*offZ^2;
scaleX = sqrt(temp);
scaleY = sqrt(temp / X(4));
scaleZ= sqrt(temp / X(5));

ডায়নামিক ফিগার 8 ক্যালিব্রেশন করতে, আপনি প্রতিটি নতুন পঠনের সাথে সর্বনিম্ন স্কোয়ার রুটিন চালাতে এবং অফসেট এবং স্কেল ফ্যাক্টরগুলি স্থিতিশীল হয়ে গেলে সমাপ্ত হতে পারে।

পৃথিবীর চৌম্বক ক্ষেত্র

মনে রাখবেন, পৃথিবীর চৌম্বকীয় ক্ষেত্র সাধারণত না পৃষ্ঠ সমান্তরাল এবং একটি বৃহৎ নিচে উপাদান হতে পারে।


হাই, আপনি চিত্র 8 নম্বর প্যাটার্ন ইস্যুটির উপায় সাফ করার জন্য এটি একটি প্রশংসনীয় প্রচেষ্টা। এখন আমি আমার আগের কিছু কাজকে বর্তমান কাজের সাথে সংযুক্ত করতে পারি I আমি কিছু উন্নতি দেখতে পেয়েছি তবে চিহ্ন পর্যন্ত নয় Iআমি এর আগে ব্যাখ্যা করেছি কেবলমাত্র প্রশ্ন; নিউজ 8 টি আকার তৈরি করার পরে আউটপুট ডেটা ব্যবহার করে সঠিকভাবে দেখানো হয়েছে, তারপরে সমস্ত ভেক্টরগুলির গড় অর্ধেক হয়ে যায় ur অবাক করা বিষয় এটি অনুভূমিক পরিকল্পনার জন্য কাজ করে (ফ্লুখে) again আবার আমি একই স্থান থেকে এসেছি যেখানে আমি 8 টি আকারের আলগোতে কাজ শুরু করেছি "" কমপক্ষে স্কয়ার "এর পরে ফিরে আসব I তবে আমি ফ্লুক বুঝতে পারি না।
রিক 2047

... আমার ক্ষেত্রেও মনে হয় গোলকটি Z অক্ষের উপর বিকৃত। দয়া করে জেনে রাখুন যে আমি প্লট করা 3 ডি গোলকের হার্ড এবং সফট লোহার প্রভাব সম্পর্কে সচেতন। আমি এটি আবার 3D তে প্লট করার চেষ্টা করব। চল দেখি.
রিক 2047

@ রাহুল ২০47৪ ঠিক আছে আমি আশা করি এটি সঠিক, তবে এটি আমার কাছে বোধগম্য। আমি যে ইন্সট্রুমেন্টটি তৈরি করছি তার জন্য আমাকে একই রকমের ক্রমাঙ্কন করতে হবে তবে আমি এখনও কোডটি প্রয়োগ করতে প্রস্তুত নই।
জ্যামিতিকাল

আমি অবাক হই যে ফোনগুলির জন্য যা সাধারণত অনুভূমিক সমতলটিতে কেবল দিকনির্দেশে আগ্রহী, একটি সাধারণ অঙ্গভঙ্গি সমস্ত প্রয়োজনীয় পয়েন্টগুলি কভার করে। আপনি মাতলাব ব্যবহার করেন? সেখানে ফিট করা সহজ। স্বল্প স্কোয়ারগুলি ত্রুটি পরিমাপের পদ্ধতিটিকে বোঝায়।
জ্যামিতিকাল

1
এই নিবন্ধে কিছু চিত্রের লিঙ্ক ভেঙে গেছে - আপনি কি চিত্রগুলি আবার যুক্ত করতে পারেন? এসই এর একটি ফাংশন রয়েছে যা ভবিষ্যতে ভাঙন রোধে চিত্রগুলি আপলোড করে এবং স্থানীয়ভাবে সেগুলি সঞ্চয় করে। ধন্যবাদ!
নিউ আলেকজান্দ্রিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.