সুচিপত্র:

আপনি কি ESP32 ADC সমন্বয় সম্পর্কে জানেন ?: 29 টি ধাপ
আপনি কি ESP32 ADC সমন্বয় সম্পর্কে জানেন ?: 29 টি ধাপ

ভিডিও: আপনি কি ESP32 ADC সমন্বয় সম্পর্কে জানেন ?: 29 টি ধাপ

ভিডিও: আপনি কি ESP32 ADC সমন্বয় সম্পর্কে জানেন ?: 29 টি ধাপ
ভিডিও: Power Conditioning with Energy Harvesters - III 2024, জুলাই
Anonim
Image
Image
ব্যবহৃত সম্পদ
ব্যবহৃত সম্পদ

আজ, আমি আরও একটি প্রযুক্তিগত সমস্যা সম্পর্কে কথা বলতে যাচ্ছি, কিন্তু আমি মনে করি ESP32 এর সাথে কাজ করে এমন প্রত্যেকেরই জানা উচিত: ADC (এনালগ-টু-ডিজিটাল কনভার্টার) রিড অ্যাডজাস্টমেন্টের সমস্যা। আমি এটিকে গুরুত্বপূর্ণ মনে করি কারণ একটি "পরিমাপ" করার সময়, বিশেষ করে এমন একটি যন্ত্রের সাহায্যে যার একটি এনালগ আউটপুট আছে, আপনাকে পুরোপুরি নিশ্চিত হতে হবে যে পড়া সঠিকভাবে সম্পাদিত হচ্ছে।

আজকের ভিডিওতে, তাই আমরা ESP32 এর "এনালগ-ডিজিটাল কনভার্টার" ব্যবহার করে পরিমাপ করব, রূপান্তরের অসঙ্গতিগুলি পর্যবেক্ষণ করব এবং একটি ADC সমন্বয় / ক্রমাঙ্কন পদ্ধতি প্রয়োগ করব।

ধাপ 1: একটি AD কনভার্টার কি?

একটি AD রূপান্তরকারী একটি সার্কিট যা একটি এনালগ (ক্রমাগত) পরিমাণকে ডিজিটাল (পৃথক) মানগুলিতে অনুবাদ করতে সক্ষম। ওটার মানে কি? এর মানে হল যে ডিজিটাল মানগুলি শুধুমাত্র শূন্য এবং মানগুলির সংমিশ্রণ দ্বারা গঠিত পৃথক মানগুলি অনুমান করতে পারে, একটি এনালগ পরিমাণ একটি পরিসরের মধ্যে কোন মান ধরে নিতে পারে। উদাহরণস্বরূপ, যদি আমরা একটি আদর্শ AA কোষের ভোল্টেজ পরিমাপ করি, আমরা 0V এবং 1.5V এর মধ্যে কোন মান খুঁজে পেতে পারি, কারণ এটি এনালগ পরিমাণ। একটি আদর্শ ল্যাম্পের আউটপুট অবস্থা অবশ্যই দুইটি অবস্থা (অফ বা অন) ধরে নিতে হবে, যা একটি বিচ্ছিন্ন মাত্রা। যেহেতু মাইক্রোকন্ট্রোলাররা এই বিচ্ছিন্ন যুক্তি ব্যবহার করে কাজ করে, তাই আমাদের একটি সার্কিট দরকার যা এনালগ পরিমাণকে ডিজিটাল (বা বিচ্ছিন্ন) অনুবাদ করতে সক্ষম।

ধাপ 2: ব্যবহৃত সম্পদ

• এক Lolin32 লাইট কার্ড v1.0.0

Te ক্যাপচার করার জন্য একটি টেকট্রনিক্স TDS1001C অসিলোস্কোপ

SP ESP32 এর জন্য একটি USB কেবল

H সিগন্যাল জেনারেটর হিসাবে একটি হানটেক DSO4102C অসিলোস্কোপ

ধাপ 3: ESP32 ADC

ইএসপি 32 এডিসি
ইএসপি 32 এডিসি

এসপ্রেসিফ ডেটা অনুসারে, ইএসপি 32 চিপগুলি পরিমাপকৃত ফলাফলে একটি চিপ থেকে অন্য চিপে +/- 6% পার্থক্য উপস্থাপন করতে পারে।

উপরন্তু, রূপান্তর পড়ার জন্য প্রতিটি উপলব্ধ পরিসরের জন্য একটি রৈখিক উত্তর নেই। এসপ্রেসিফ ক্রমাঙ্কনের জন্য একটি পদ্ধতি প্রদান করে এবং পরামর্শ দেয় যে ব্যবহারকারীরা কাঙ্ক্ষিত নির্ভুলতা অর্জনের জন্য প্রয়োজনীয় মনে করলে অন্যান্য পদ্ধতি প্রয়োগ করে।

আমরা একটি ডেটা অর্জন করব, এবং এর থেকে, আমরা ADC প্রতিক্রিয়া এবং সমন্বয় পড়ার জন্য একটি গাণিতিক প্রক্রিয়া প্রয়োগের একটি উদাহরণ দেখাব।

এই সংশোধনগুলি সম্পন্ন করার জন্য বেশ কয়েকটি (সহজ বা জটিল) উপায় রয়েছে। আপনার প্রকল্পের জন্য সবচেয়ে উপযুক্ত মূল্যায়ন করা আপনার উপর নির্ভর করে।

এখানে দেখানো একটি একটি দৃষ্টান্তমূলক উদ্দেশ্য থাকবে এবং সমন্বয় সময় পর্যবেক্ষণ করা যেতে পারে যে আকর্ষণীয় পয়েন্ট মোকাবেলা করার চেষ্টা করবে।

ধাপ 4: সার্কিট ব্যবহৃত

সার্কিট ব্যবহৃত
সার্কিট ব্যবহৃত

আমি একটি সিগন্যাল জেনারেটর সহ একটি অসিলোস্কোপ ব্যবহার করেছি যা 25 মেগাহার্টজ পর্যন্ত যায়, হানটেক ডিএসও 4102 সি। আমরা একটি তরঙ্গ তৈরি করেছি যা ESP A / D এবং অসিলোস্কোপ দ্বারা পড়েছিল। সংগৃহীত তথ্য সিএসভি এবং একটি স্প্রেডশীটে রেকর্ড করা হয়েছিল, যা আমি নিবন্ধের শেষে ডাউনলোডের জন্য রেখে দেব।

ধাপ 5: ব্যবহৃত সাইন

ব্যবহৃত সাইন
ব্যবহৃত সাইন

আমরা একটি নিম্ন-ফ্রিকোয়েন্সি ট্র্যাপিজয়েডাল সিগন্যাল বেছে নিয়েছি যা পুরো রূপান্তর পরিসীমা দিয়ে চলাচলকারী রmp্যাম্পগুলিতে প্রবেশের অনুমতি দেয়। এটি এই রmp্যাম্পগুলিতে প্রচুর সংখ্যক নমুনার অনুমতি দেয়।

ধাপ 6: অসিলোস্কোপ দ্বারা প্রাপ্ত ডেটা

অসিলোস্কোপ দ্বারা প্রাপ্ত ডেটা
অসিলোস্কোপ দ্বারা প্রাপ্ত ডেটা

ক্যাপচারের ছবিটি অসিলোস্কোপ দ্বারা সঞ্চালিত হয়েছিল। তথ্য একটি csv ফাইলে সংরক্ষিত ছিল। সিগন্যালের উঠা -নামা র ra্যাম্পে সামান্য বক্রতা লক্ষ্য করুন।

ধাপ 7: অসিলোস্কোপ দ্বারা প্রাপ্ত ডেটা (এক্সেলের সিএসভি ফাইল)

অসিলোস্কোপ দ্বারা প্রাপ্ত ডেটা (এক্সেলের সিএসভি ফাইল)
অসিলোস্কোপ দ্বারা প্রাপ্ত ডেটা (এক্সেলের সিএসভি ফাইল)

আমাদের এখানে নমুনা আছে।

ধাপ 8: ADC দ্বারা প্রাপ্ত ডেটা

এডিসি দ্বারা প্রাপ্ত ডেটা
এডিসি দ্বারা প্রাপ্ত ডেটা

সিরিয়ালের ট্রান্সফার রেট পরিবর্তন করে আমরা এডিসির ক্যাপচার করা ডেটা দেখতে পারি। ট্র্যাপিজয়েডাল সিগন্যালের বিকৃতি পর্যবেক্ষণ করুন।

Arduino IDE সিরিয়াল প্লটারে পর্যবেক্ষণ করা ডেটা

ধাপ 9: এডিসি - এক্সেল দ্বারা প্রাপ্ত ডেটা

এডিসি দ্বারা প্রাপ্ত ডেটা - এক্সেল
এডিসি দ্বারা প্রাপ্ত ডেটা - এক্সেল

একটি উচ্চ হার এবং সিরিয়াল টার্মিনাল ব্যবহার করে, আমরা মানগুলি ধরতে পারি এবং আমাদের তুলনার জন্য তাদের এক্সেলে প্রয়োগ করতে পারি।

ধাপ 10: ক্লাইম্ব র R্যাম্পের তুলনা

ক্লাইম্ব র R্যাম্পের তুলনা
ক্লাইম্ব র R্যাম্পের তুলনা

আমরা দুটি ক্যাচের দুটি ক্লাইম্বিং র ra্যাম্পের তুলনা করি।

উভয় রmp্যাম্পে ঘটে এমন বক্রতা লক্ষ্য করুন।

মনে রাখবেন যে একই রmp্যাম্পের জন্য, আমাদের কাছে অসিলোস্কোপের চেয়ে ESP32 এর আরও অনেক নমুনা রয়েছে।

ধাপ 11: নমুনার সংখ্যা সমান করা

নমুনার সংখ্যা সমান করা
নমুনার সংখ্যা সমান করা
নমুনার সংখ্যা সমান করা
নমুনার সংখ্যা সমান করা

যেহেতু ESP32 অসিলোস্কোপের চেয়ে বেশি সংখ্যক নমুনা প্রদান করেছে, তাই আমাদের এই মানগুলির সমান করতে হবে, কারণ তারা দুটি বক্ররেখার তুলনা করার জন্য একটি সূচক হিসেবে কাজ করবে।

এর জন্য, আমরা সরাসরি তুলনা করব।

আমাদের কাছে অসিলোস্কোপ র ra্যাম্পের জন্য 305 টি নমুনা এবং এডিসি র.্যাম্পের জন্য 2365 টি নমুনা রয়েছে।

যেহেতু রmp্যাম্পগুলি একই পরিসরের, আমরা বলতে পারি যে আমাদের প্রতিটি অসিলোস্কোপের জন্য ADC এর প্রায় 7.75 নমুনা রয়েছে।

প্রতিটি অসিলোস্কোপ নমুনার সূচকে গুণ করলে একই বক্ররেখা থাকে, কিন্তু ADC এবং পুনর্বণিত ডেটার সমতুল্য সূচকের সাথে।

নতুন পদের জন্য অনুপস্থিত ডেটা পূরণ করার জন্য, আমরা একটি বক্ররেখা প্রয়োগ করব যা পরিসংখ্যানগতভাবে পরিচিত ডেটার সাথে খাপ খায়।

ধাপ 12: ফাঁক পূরণ - ট্রেন্ড লাইন

ফাঁক পূরণ - ট্রেন্ড লাইন
ফাঁক পূরণ - ট্রেন্ড লাইন
ফাঁক পূরণ - ট্রেন্ড লাইন
ফাঁক পূরণ - ট্রেন্ড লাইন

পরিচিত ডেটা (নীল বিন্দু) নির্বাচন করে, ক্লিক করে এবং তারপর ডান বোতামে ক্লিক করে, আমরা নির্বাচন করি: "ট্রেন্ড লাইন যুক্ত করুন …"

প্রদর্শিত উইন্ডোতে, আমরা বহুপদী টাইপ নির্বাচন করি (অর্ডার 2 যথেষ্ট হবে)।

আমরা "চার্টে সমীকরণ দেখুন" এবং "চার্টে R- স্কোয়ার্ড মান প্রদর্শন" বিকল্পগুলিও পরীক্ষা করেছি।

আমরা "বন্ধ" ক্লিক করি।

ধাপ 13: ফাঁক পূরণ - গ্রেড 2 বহুপদী বক্ররেখা

ফাঁক পূরণ - গ্রেড 2 বহুপদী বক্ররেখা
ফাঁক পূরণ - গ্রেড 2 বহুপদী বক্ররেখা

এক্সেল আমাদের দুটি নতুন তথ্য দেয়; সেকেন্ড-অর্ডার সমীকরণ যা ডেটার সাথে সবচেয়ে বেশি মানানসই, এবং R-squared সমীকরণ যা এই পর্যাপ্ততাকে পরিমাপ করে।

শুধু মনে রাখবেন যে 1 এর কাছাকাছি, সমীকরণটি আরও উপযুক্ত।

আসুন জড়িত গণিতের মধ্যে প্রবেশ করি না, আসুন এটি একটি সরঞ্জাম হিসাবে ব্যবহার করি।

ধাপ 14: ফাঁক পূরণ - ফাংশন মূল্যায়ন

আসুন সমীকরণ দ্বারা উত্পন্ন ডেটা দিয়ে নমুনা ফাঁক পূরণ করি। এবং তারপর, বিন্দু দ্বারা তাদের তুলনা করুন।

y = -9E -08x2 + 0, 0014x + 0, 1505

R² = 0, 9999

অসিলোস্কোপ ভোল্টেজ = -9 ই -08 * সূচক 2 + 0, 0014 * সূচক + 0, 1505

ধাপ 15: এডিসির সাথে তুলনা করার জন্য অসিলোস্কোপ ভোল্টেজকে একটি সমমানের মান রূপান্তর করা

এডিসির সাথে তুলনা করার জন্য অসিলোস্কোপ ভোল্টেজকে একটি সমমানের মান রূপান্তর করা
এডিসির সাথে তুলনা করার জন্য অসিলোস্কোপ ভোল্টেজকে একটি সমমানের মান রূপান্তর করা

আসলোস্কোপ ভোল্টেজের মানকে একটি সমতুল্য ADC ভ্যালুতে রূপান্তর করার জন্য এর সুবিধা নেওয়া যাক।

যেহেতু ESP32 এর ADP তে প্রাপ্ত সর্বোচ্চ মান ছিল 4095, যা একই সূচকের জন্য 2.958V পড়ার সমতুল্য, আমরা বলতে পারি যে:

অসিলোস্কোপের পরিমাপের প্রতিটি ভোল্ট AD এর আনুমানিক 1384.4 ইউনিটের সমান। অতএব, আমরা এই মান দ্বারা অসিলোস্কোপের সমস্ত পরিমাপকে গুণ করতে পারি।

ধাপ 16: প্রাপ্ত দুটি রamp্যাম্পের তুলনা

প্রাপ্ত দুটি রamp্যাম্পের তুলনা
প্রাপ্ত দুটি রamp্যাম্পের তুলনা

দুটি রিডিংয়ে প্রাপ্ত পার্থক্যগুলি ভিজ্যুয়ালাইজ করা।

ধাপ 17: ADC রিডিং ডিফারেন্সের আচরণ (ত্রুটি)

ADC রিডিং ডিফারেন্সের আচরণ (ত্রুটি)
ADC রিডিং ডিফারেন্সের আচরণ (ত্রুটি)

নীচের বক্ররেখা দেখায় কিভাবে ADC পড়ার মধ্যে পার্থক্য পরিমাপের একটি ফাংশন হিসাবে আচরণ করে। এই তথ্য সংগ্রহ আমাদের একটি সংশোধন ফাংশন খুঁজে পেতে অনুমতি দেবে।

এই বক্ররেখাটি খুঁজে পেতে, আমরা কেবল প্রতিটি সম্ভাব্য AD অবস্থানের (0 থেকে 4095) একটি ফাংশন হিসাবে প্রতিটি পরিমাপে পাওয়া পার্থক্যটি চক্রান্ত করি।

ধাপ 18: ADC পড়ার পার্থক্য আচরণ - একটি সংশোধন ফাংশন খোঁজা

এডিসি পড়ার পার্থক্য আচরণ - একটি সংশোধন ফাংশন খোঁজা
এডিসি পড়ার পার্থক্য আচরণ - একটি সংশোধন ফাংশন খোঁজা

আমরা এক্সেলে একটি ট্রেন্ড লাইন যুক্ত করে একটি সংশোধন ফাংশন নির্ধারণ করতে পারি, এখন উচ্চতর ডিগ্রী, যতক্ষণ না এটি আমাদের ডেটার সাথে পর্যাপ্তভাবে খাপ খায়।

ধাপ 19: অন্যান্য সফটওয়্যার ব্যবহার করা

অন্যান্য সফটওয়্যার ব্যবহার করা
অন্যান্য সফটওয়্যার ব্যবহার করা
অন্যান্য সফটওয়্যার ব্যবহার করা
অন্যান্য সফটওয়্যার ব্যবহার করা
অন্যান্য সফটওয়্যার ব্যবহার করা
অন্যান্য সফটওয়্যার ব্যবহার করা
অন্যান্য সফটওয়্যার ব্যবহার করা
অন্যান্য সফটওয়্যার ব্যবহার করা

বক্ররেখা নির্ধারণের জন্য অন্যান্য আকর্ষণীয় সফটওয়্যার হল পলিসলভ, যা সরাসরি লিঙ্কটিতে ব্যবহার করা যেতে পারে: https://arachnoid.com/polysolve/ অথবা জাভা অ্যাপ্লিকেশন হিসাবে ডাউনলোড করা।

এটি উচ্চতর ডিগ্রি বহুপদী রিগ্রেশন এবং বিন্যাসিত ফাংশন বিতরণের পাশাপাশি অন্যান্য কার্যকারিতা প্রয়োগের অনুমতি দেয়।

এটি ব্যবহার করতে, কেবল প্রথম পাঠ্য বাক্সে ডেটা প্রবেশ করান। ডেটা অবশ্যই কমা, বা ট্যাব দ্বারা বিভক্ত X, Y অর্ডার অনুসরণ করতে হবে। বিন্দুকে সঠিকভাবে দশমিক বিন্দু হিসাবে ব্যবহার করার ক্ষেত্রে সতর্কতা অবলম্বন করুন।

প্রবেশ করা ডেটা সঠিকভাবে ফরম্যাট করা থাকলে পরবর্তী বক্সে একটি চার্ট প্রদর্শিত হবে।

এখানে আমাদের ADC ত্রুটি বক্ররেখা গেল।

এই উইন্ডোটি ফাংশন পর্যাপ্ততা ডেটা সহ রিগ্রেশনের ফলাফল উপস্থাপন করবে, যার ফলস্বরূপ তার আউটপুটটি বিভিন্ন উপায়ে ফরম্যাট করা যেতে পারে: C / C ++ ফাংশন হিসাবে, সহগের তালিকা, জাভাতে লেখা একটি ফাংশন ইত্যাদি।

দ্রষ্টব্য: দশমিক বিভাজকের দিকে মনোযোগ দিন

ধাপ 20: ধ্রুবক এবং সেটআপ ()

আমি এখানে নির্দেশ করি GPIO এনালগ ক্যাপচারের জন্য ব্যবহৃত। আমি সিরিয়াল পোর্ট আরম্ভ করি, সেইসাথে এনালগ ক্যাপচারের জন্য নির্ধারিত পিন।

const int pin_leitura = 36; // GPIO usado para captura analógica void setup () {Serial.begin (1000000); // ডিবাগ পিনমোড (পিন_লেইটুরা, ইনপুট) এর জন্য একটি পোর্টা সিরিয়াল সূচনা করুন; // পিনো ইউটিলিজাডো প্যারা ক্যাপ্টুরা অ্যানালজিকা}

ধাপ 21: লুপ () এবং সংশোধন ফাংশন

আমরা সমন্বিত ভোল্টেজ ক্যাপচার করি, এবং আমরা সঠিক সংশোধন সহ বা ছাড়াই মানগুলি মুদ্রণ করি।

অকার্যকর লুপ () {int valor_analogico = analogRead (pin_leitura); // realiza a captura da tensão ajustada //Serial.print(valor_analogico + f (valor_analogico)); // imprime os valores para debug (COM CORREÇÃO) Serial.print (valor_analogico); // imprimime os valores para debug (SEM CORREÇÃO) Serial.print (","); Serial.print (4095); // cria uma linha para marcar o valor máximo de 4095 Serial.print (","); Serial.println (0); // cria uma linha para marcar o valor mínimo de 0}

12 নং লাইনে লক্ষ্য করুন যে আমাদের কাছে ডিফারেন্স ফাংশন f (analog_value) যোগ করে ডেটা প্রিন্ট করার অপশন আছে।

ধাপ 22: PolySolve Correction ফাংশন ব্যবহার করে

এখানে, আমরা Arduino IDE এর ভিতরে PolySolve ফাংশন ব্যবহার করি।

/* মোড: স্বাভাবিক বহুপদী ডিগ্রী 6, 2365 x, y ডেটা জোড়া পারস্পরিক সম্পর্ক সহগ (r^2) = 9, 907187626418e-01 স্ট্যান্ডার্ড ত্রুটি = 1, 353761109831e+01 আউটপুট ফর্ম: C/C ++ ফাংশন: কপিরাইট © 2012, পি। লুটাস - https://www.arachnoid.com। সমস্ত অধিকার সংরক্ষিত. */ double f (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e- 10 * Pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }

দশমিক বিভাজক হিসাবে কমা-বাই-ডট পরিবর্তন লক্ষ্য করুন।

ধাপ 23: সংশোধন সহ ক্যাপচার - প্লটার সিরিয়াল

সংশোধন সহ ক্যাপচার - প্লটার সিরিয়াল
সংশোধন সহ ক্যাপচার - প্লটার সিরিয়াল

ধাপ 24: কম্পিউটেশনাল খরচ

কম্পিউটেশনাল খরচ
কম্পিউটেশনাল খরচ
কম্পিউটেশনাল খরচ
কম্পিউটেশনাল খরচ

বহুপদী গণনা করার জন্য, প্রসেসরের জন্য এই কাজটি পরিচালনা করা প্রয়োজন। এটি সোর্স কোড এবং উপলব্ধ কম্পিউটিং পাওয়ারের উপর নির্ভর করে কার্যকর করতে বিলম্ব হতে পারে।

এখানে, আমরা মাল্টি-ডিগ্রী বহুপদী ব্যবহার করে একটি পরীক্ষার ফলাফল টেবিল দেখি। Pow () ফাংশনটি কখন ব্যবহার করা হয়েছিল এবং কখন ছিল না তার মধ্যে পার্থক্য লক্ষ্য করুন।

ধাপ 25: টেস্ট কোড - সেটআপ () এবং লুপ স্টার্ট ()

এখানে, আমাদের পরীক্ষায় ব্যবহৃত কোড আছে।

অকার্যকর সেটআপ () {Serial.begin (1000000); // Iniciando a porta serial somente para debug} void loop () {float valor_analogico = 500.0; // um valor arbtrario float quantidade = 10000.0; // পরিমাণ // কনটাডোর ডি চামদাস

ধাপ 26: টেস্ট কোড - লুপ () এবং প্রসেসিং

আমি মাইক্রোসেকেন্ডে মান পেতে মাইক্রোস () ফাংশন ব্যবহার করেছি।

// ============= inicia o processo float agora = micros (); // marca o instante inicial while (contador <quantidade) {// v (valor_analogico); // função vazia // r (valor_analogico); // função com retorno // f0 (valor_analogico); // grau 0 // f1 (valor_analogico); // grau 1 // f2 (valor_analogico); // grau 2 // f3 (valor_analogico); // grau 3 // f4 (valor_analogico); // grau 4 // f5 (valor_analogico); // grau 5 // f6 (valor_analogico); // grau 6 // f13_semPow (valor_analogico); // grau 13º SEM a função POW // f13_comPow (valor_analogico); // grau 13º COM a função POW contador ++; } আগোরা = (মাইক্রোস () - অ্যাগোরা) / কোয়ান্টিডেড; // determina o intervalo que se passou para cada iteração // ==

ধাপ 27: টেস্ট কোড - লুপ () - ফলাফল

আমরা তুলনার জন্য POW সহ এবং ছাড়া গ্রেড 13 ফাংশন থেকে ফিরে আসা মান, পাশাপাশি প্রক্রিয়াকরণের ব্যবধান মুদ্রণ করি।

// imprime o valor retornado da função de grau 13 com e sem POW para comparação Serial.print (f13_semPow (valor_analogico)); // grau 13º SEM a função POW Serial.print (" -"); Serial.print (f13_comPow (valor_analogico)); // grau 13º COM a função POW Serial.print (" -"); // imprime o intervalo do processamento Serial.println (agora, 6); }

ধাপ 28: টেস্ট কোড - ব্যবহৃত ফাংশন

খালি ফাংশন (শুধুমাত্র রিটার্ন সহ) ডিগ্রী 0 এবং 1।

// FUNÇÃO VAZIAdouble v (double x) {} // FUNÇÃO SOMENTE COM RETORNO double r (double x) {return x; } // FUNÇÃO DE GRAU 0 double f0 (double x) {return 2.202196968876e+02; } // FUNÇÃO DE GRAU 1 double f1 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x; }

গ্রেড 2, 3, এবং 4 ফাংশন।

// FUNÇÃO DE GRAU 2double f2 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2); } // FUNÇÃO DE GRAU 3 double f3 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3); } // FUNÇÃO DE GRAU 4 double f4 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * পাও (x, 4); }

গ্রেড 5 এবং 6 ফাংশন।

// FUNÇÃO DE GRAU 5double f5 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5); } // FUNÇÃO DE GRAU 6 double f6 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }

POW ব্যবহার করে গ্রেড 13 ফাংশন।

// FUNÇÃO DE GRAU 13 USANDO O POWdouble f13_comPow (double x) {return 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * pow (x, 2) + -3, 968558178426e-06 * Pow (x, 3) + 1, 047910519933e-08 * pow (x, 4) + -1, 479271312313e-11 * pow (x, 5) + 1, 220894795714e-14 * pow (x, 6) + -6, 136200785076e-18 * pow (x, 7) + 1, 910015248179e-21 * pow (x, 8) + -3, 566607830903e-25 * pow (x, 9) + 5, 000280815521e-30 * pow (x, 10) + 3, 434515045670e-32 * pow (x, 11) + -1, 407635444704e-35 * pow (x, 12) + 9, 871816383223e-40 * pow (x, 13); }

POW ব্যবহার না করে গ্রেড 13 ফাংশন।

// FUNÇÃO DE GRAU SEM USAR O POWdouble f13_semPow (double x) {return 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * x * x + -3, 968558178426e-06 * x * x * x * * x + 1, 047910519933e-08 * x * x * x * x + -1, 479271312313e-11 * x * x * x * x * x + 1, 220894795714e-14 * x * x * x * x * x * x + -6, 136200785076e-18 * x * x * x * x * x * x * x + 1, 910015248179e-21 * x * x * x * x * x * x * x * x + -3, 566607830903e- 25 * x * x * x * x * x * x * x * x * x + 5, 000280815521e-30 * x * x * x * x * x * x * x * x * x * x + 3, 434515045670e- 32 * x * x * x * x * x * x * x * x * x * x * x + -1, 407635444704e -35 * x * x * x * x * x * x * x * x * x * x * x * x + 9, 871816383223e-40 * x * x * x * x * x * x * x * x * x * x * x * x * x * x; }

ধাপ 29: ফাইল

ফাইল ডাউনলোড করুন:

পিডিএফ

আইএনও

স্প্রেডশীট

প্রস্তাবিত: