সুচিপত্র:

পিআইডি কন্ট্রোলার ভিএইচডিএল: 10 টি ধাপ
পিআইডি কন্ট্রোলার ভিএইচডিএল: 10 টি ধাপ

ভিডিও: পিআইডি কন্ট্রোলার ভিএইচডিএল: 10 টি ধাপ

ভিডিও: পিআইডি কন্ট্রোলার ভিএইচডিএল: 10 টি ধাপ
ভিডিও: PID controller example problems | পিআইডি কন্ট্রোলার সমস্যা সমাধান 2024, জুলাই
Anonim
পিআইডি কন্ট্রোলার ভিএইচডিএল
পিআইডি কন্ট্রোলার ভিএইচডিএল
পিআইডি কন্ট্রোলার ভিএইচডিএল
পিআইডি কন্ট্রোলার ভিএইচডিএল

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

সরবরাহ

সিমুলেশন

ভিভাদো ডিজাইন স্যুট

বাস্তবায়ন (বন্ধনীতে আমার প্রকল্পের জন্য ব্যবহৃত হয়েছিল)

  • FPGA বোর্ড যা ডিজিটাল/এনালগ সিগন্যাল ইনপুট এবং আউটপুট করতে পারে (বেসিস 3)
  • একটি সিস্টেম যা একটি একক প্রতিক্রিয়া উৎস (পিং পং বল লেভিটেশন রিগ) দিয়ে নিয়ন্ত্রণযোগ্য

রিগ

  • পলিকার্বোনেট টিউব
  • 5V ফ্যান
  • আইআর সেন্সর
  • 3 ডি প্রিন্টেড বেস (এই টিউটোরিয়ালটি রিগের নির্মাণের নথিপত্র দেয় যাতে সেন্সর যুক্ত করা হয়েছিল মতামত প্রদানের জন্য কিন্তু রিগটি সাধারণত একই ছিল)
  • 1k প্রতিরোধক
  • 5V এবং GND রেল সহ ব্রেডবোর্ড

ধাপ 1: মৌলিক নিয়ন্ত্রণ তত্ত্ব

মৌলিক নিয়ন্ত্রণ তত্ত্ব
মৌলিক নিয়ন্ত্রণ তত্ত্ব

আমি ভেবেছিলাম যে কিছু মৌলিক নিয়ন্ত্রণ তত্ত্ব যোগ করলে যে কেউ এই কোডটি চেষ্টা করতে এবং বাস্তবায়ন করতে চাইবে সেখান থেকে শুরু করার জন্য একটি ভাল বেস।

সংযুক্ত চিত্রটি একটি একক লুপ নিয়ন্ত্রকের বিন্যাস।

r- রেফারেন্স। এটি নির্ধারণ করে যে নিয়ামক কোথায় যেতে চান।

ই-ই ত্রুটি। এটি আপনার সেন্সরের মান এবং আপনার রেফারেন্সের মধ্যে পার্থক্য। যেমন e = r- (d+সেন্সরের আউটপুট)।

K- এটি নিয়ামক। একটি নিয়ামক তিনটি পদ নিয়ে গঠিত হতে পারে। এই পদগুলি হল P, I এবং D. তিনটি পদেই Kp, Ki এবং Kd নামে গুণক রয়েছে। এই মানগুলি নিয়ামকের প্রতিক্রিয়া নির্ধারণ করে।

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

U- এটি নিয়ন্ত্রণ সংকেত। এই সংকেতটি রিগের একটি ইনপুট। এই প্রকল্পের ক্ষেত্রে আপনি গতি পরিবর্তন করতে ফ্যানের কাছে একটি PWM সংকেত ইনপুট।

G- এটি এমন একটি সিস্টেম যা নিয়ন্ত্রিত হচ্ছে। এই সিস্টেমটি S বা Z ডোমেইনে গাণিতিকভাবে মডেল করা যায়। সিস্টেমগুলি নবম ক্রমে হতে পারে কিন্তু যে কেউ নিয়ন্ত্রণের সাথে শুরু করে তার জন্য প্রথম অর্ডার সিস্টেমটি সম্ভবত অনুমান করা উচিত কারণ এটি গণনা করা অনেক সহজ। অনলাইনে পাওয়া মডেলিং সিস্টেম সম্পর্কিত তথ্যের একটি বড় অংশ। সেন্সরের স্যাম্পলিং সময়ের উপর নির্ভর করে সিস্টেমের মডেল হয় আলাদা বা একটানা। এটি নিয়ামকের উপর একটি কঠোর প্রভাব ফেলে তাই উভয় বিষয়ে গবেষণা করার পরামর্শ দেওয়া হয়।

d- এটি ঝামেলা যা সিস্টেমে যোগ করা হয়। ঝামেলা বাইরের বাহিনী যার জন্য সিস্টেমের মডেল হিসাব করে না। এর একটি সহজ উদাহরণ হবে একটি ড্রোন যা আপনি 5 মিটারে ঘোরাতে চান একটি দমকা বাতাস আসে এবং ড্রোনটি 1 মিটার ড্রপ করে নিয়ন্ত্রক ঝামেলা হওয়ার পরে ড্রোনটি পুনরায় স্থাপন করবে। এটি ঝামেলা হিসাবে পরিচিত কারণ বায়ু অ পুনরাবৃত্তিযোগ্য তাই এটি মডেল করা যায় না।

কন্ট্রোলার টিউন করার জন্য অনেকগুলি নিয়ম আছে নাম কিন্তু কিছু ভাল যেগুলি দিয়ে আমি শুরু করেছি তা হল কোহেন কুন এবং জিগার নিকোলস।

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

কন্ট্রোলার কিভাবে কিছু ব্যক্তিগত গবেষণার সাথে কাজ করে এবং তিনটি নিয়মের যেকোনো সংমিশ্রণের সাথে নিয়ন্ত্রকের নীচের কোডটি প্রয়োগ করা যেতে পারে তা বোঝার জন্য এখানে পর্যাপ্ত তথ্য থাকা উচিত।

ধাপ 2: পিআইডি কোড লেখা

পিআইডি কোড লেখা
পিআইডি কোড লেখা

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

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

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

ধাপ 3: আপনার সিস্টেমের জন্য কীভাবে পরিবর্তন করবেন

প্রথমত, সমস্ত সিস্টেম একই নয়, সিস্টেমের ইনপুট এবং আউটপুট বিশ্লেষণ করতে হবে। আমার ক্ষেত্রে আমার রিগের আউটপুট যা আমাকে অবস্থানের জন্য একটি মান দিয়েছে তা হল একটি এনালগ সিগন্যাল এবং সিস্টেম থেকে ইনপুট একটি PWM সংকেত। এর মানে হল যে একটি ADC রূপান্তর প্রয়োজন ছিল। সৌভাগ্যবশত Basys 3 এ ADC- এর একটি বিল্ট আছে তাই এটি কোন সমস্যা ছিল না IR সেন্সরের আউটপুট 0V-1V এ নামিয়ে আনতে হয়েছে কারণ এটি অনবোর্ড ADC এর সর্বোচ্চ পরিসীমা। এটি একটি ভোল্টেজ ডিভাইডার সার্কিট ব্যবহার করে করা হয়েছিল যা 1k রোধক দিয়ে সিরিজের 3k রোধক হিসাবে সেট করা 1k প্রতিরোধক থেকে তৈরি হয়েছিল। এনালগ সিগন্যাল এখন এডিসির সীমার মধ্যে ছিল। ফ্যানের PWM ইনপুট সরাসরি বেসিস 3 এ PMOD পোর্টের আউটপুট দ্বারা চালিত হতে পারে।

ধাপ 4: বেসিস 3 এ I/O এর সুবিধা নেওয়া

Basys 3 এ I/O এর একটি সংখ্যা রয়েছে যা কোড চলার সময় সহজে ডিবাগ করার অনুমতি দেয়। I/O নিম্নলিখিত হিসাবে সেট আপ করা হয়েছিল।

  • সেভেন সেগমেন্ট ডিসপ্লে - এটি ভোল্টে এডিসির রেফারেন্স এবং মান দেখানোর জন্য ব্যবহৃত হয়েছিল। সাত সেগমেন্ট ডিসপ্লের প্রথম দুটি সংখ্যা ADC ভ্যালুর দশমিক জায়গার পরে দুটি সংখ্যা দেখায় কারণ মান 0-1V এর মধ্যে। সাত সেগমেন্ট ডিসপ্লেতে তিন এবং চারটি সংখ্যা ভোল্টের রেফারেন্স মান দেখায় এটি দশমিক জায়গার পরে প্রথম দুটি সংখ্যাও দেখায় কারণ পরিসীমাটি 0-1V এর মধ্যেও রয়েছে।
  • 16 LEDs - LEDs আউটপুটের মান দেখানোর জন্য ব্যবহার করা হয়েছিল যাতে আউটপুটটি সম্পৃক্ত হয় এবং আউটপুট সঠিকভাবে পরিবর্তিত হয়।

ধাপ 5: আইআর সেন্সর আউটপুটে গোলমাল

এই সমস্যা সমাধানের জন্য সেন্সর আউটপুটে গোলমাল ছিল একটি গড় ব্লক স্থাপন করা হয়েছিল কারণ এটি যথেষ্ট ছিল এবং সম্পূর্ণ করার জন্য খুব কম কাজ প্রয়োজন।

ধাপ 6: সামগ্রিক কোড লেআউট

সামগ্রিক কোড লেআউট
সামগ্রিক কোড লেআউট

কোডের একটি টুকরা আছে যা নিয়ে এখনও কথা বলা হয়নি। এই কোডটি একটি ঘড়ি বিভাজক যা ট্রিগার নামে পরিচিত। এই বিট কোডটি ADC কোডকে নমুনায় ট্রিগার করে। এডিসি কোড সম্পূর্ণ করতে সর্বোচ্চ 2us লাগে তাই বর্তমান ইনপুট এবং আগের ইনপুট গড় হয়। 1us এর গড় পরে কন্ট্রোলার P, I এবং D পদ গণনা করে। কোডের সমস্ত লেআউট এবং ইন্টারফেসিং অস্থায়ী সংযোগ ডায়াগ্রামে দেখানো হয়েছে।

ধাপ 7: পরীক্ষা

পরীক্ষামূলক
পরীক্ষামূলক

কোডটি বেসিস 3 এ স্থাপন করা হয়েছিল এবং নিম্নলিখিত প্রতিক্রিয়া রেকর্ড করা হয়েছিল। রেফারেন্স 2 মানের মধ্যে পরিবর্তিত হয়েছে। যা সম্পূর্ণ প্রকল্প কোড সংযুক্ত সংযুক্ত ক্ষেত্রে। সংযুক্ত ভিডিওটি রিয়েল-টাইমে এই প্রতিক্রিয়া দেখায়। টিউবের উপরের অংশে দোলন দ্রুত ক্ষয় হয় কারণ কন্ট্রোলারটি এই অঞ্চলের জন্য ডিজাইন করা হয়েছিল কিন্তু কন্ট্রোলারটি টিউবের নিচে আরও কাজ করে না কারণ সিস্টেমটি অ-রৈখিক।

ধাপ 8: প্রকল্পের উন্নতিতে পরিবর্তন

প্রকল্পটি উদ্দেশ্য অনুযায়ী কাজ করেছে কিন্তু সেখানে কিছু পরিবর্তন করা হয়েছে যা যদি প্রকল্পটি বাড়ানো যেত।

  • গোলমাল পুরোপুরি কমানোর জন্য ডিজিটাল ফিল্টার প্রয়োগ করুন
  • ক্রমানুসারে ট্রিগার করার জন্য ADC কোড, গড় কোড এবং ইন্টিগ্রেশন কোড সেট আপ করুন।
  • প্রতিক্রিয়ার জন্য একটি ভিন্ন সেন্সর ব্যবহার করুন কারণ এই সেন্সরের অ-রৈখিক প্রতিক্রিয়া এই প্রকল্পের সাথে বিভিন্ন ধরণের সমস্যার সৃষ্টি করে কিন্তু এটি নিয়ন্ত্রণের দিক থেকে কোডিং সাইডে নয়।

ধাপ 9: অতিরিক্ত কাজ

গ্রীষ্মকালে আমি একটি ক্যাসকেড কন্ট্রোলারের জন্য কোড লিখেছি এবং সিঙ্গেল লুপ পিআইডি কন্ট্রোলারের জন্য সুপারিশকৃত পরিবর্তনগুলি বাস্তবায়ন করেছি।

নিয়মিত PID কন্ট্রোলারে পরিবর্তন করা হয়েছে

· এফআইআর ফিল্টার টেমপ্লেট বাস্তবায়িত সহগগুলি পরিবর্তন করতে হবে কাঙ্ক্ষিত কাট-অফ ফ্রিকোয়েন্সি অর্জন করতে। বর্তমান বাস্তবায়ন একটি 5-ট্যাপ ফির ফিল্টার।

The কোডের সময় নির্ধারণ করা হয়েছে যাতে ফিল্টারটি নতুন নমুনার মাধ্যমে প্রচার করবে এবং যখন আউটপুট প্রস্তুত হবে তখন অবিচ্ছেদ্য শব্দটি চালু হবে যার অর্থ কোডটি পরিবর্তনের কম প্রচেষ্টায় বিভিন্ন সময় অন্তর কাজ করার জন্য পরিবর্তন করা যেতে পারে কোড

L লুপের জন্য প্রধান যা প্রোগ্রামটি চালায় তাও হ্রাস করা হয়েছে কারণ এটি লুপের জন্য 7 টি চক্র গ্রহণ করেছিল যা পূর্বে কন্ট্রোলারের সর্বাধিক অপারেটিং স্পিডকে ধীর করে দিয়েছিল কিন্তু লুপ টি 4 এর অবস্থার হ্রাস করে এর অর্থ এই যে কোডের প্রধান ব্লক কাজ করতে পারে 4 ঘড়ি চক্রের মধ্যে।

পরীক্ষামূলক

এই কন্ট্রোলারটি পরীক্ষা করা হয়েছিল এবং ইচ্ছাকৃতভাবে সম্পাদিত হয়েছিল আমি এই প্রমাণের ছবি তুলিনি কারণ প্রকল্পের এই অংশটি ছিল শুধু মনকে সক্রিয় রাখা। টেস্টবেঞ্চের পাশাপাশি পরীক্ষার জন্য কোড এখানে পাওয়া যাবে যাতে আপনি বাস্তবায়নের আগে প্রোগ্রামটি পরীক্ষা করতে পারেন।

কেন একটি ক্যাসকেড নিয়ামক ব্যবহার করুন

একটি ক্যাসকেড নিয়ামক সিস্টেমের দুটি অংশ নিয়ন্ত্রণ করে। এই ক্ষেত্রে একটি ক্যাসকেড নিয়ামক একটি বাইরের লুপ থাকবে যা একটি নিয়ামক যা IR সেন্সর থেকে প্রতিক্রিয়া আছে। অভ্যন্তরীণ লুপের ট্যাকোমিটার থেকে ডালের মধ্যে সময়ের আকারে প্রতিক্রিয়া রয়েছে যা ফ্যানের ঘূর্ণন গতি নির্ধারণ করে। নিয়ন্ত্রণ বাস্তবায়নের মাধ্যমে, সিস্টেম থেকে একটি ভাল প্রতিক্রিয়া অর্জন করা যেতে পারে।

ক্যাসকেড কন্ট্রোলার কিভাবে কাজ করে?

কন্ট্রোলার বাইরের লুপ পুলের মধ্যবর্তী সময়ের লুপ নিয়ন্ত্রককে মান দেবে। এই নিয়ামক ডালগুলির মধ্যে কাঙ্ক্ষিত সময় অর্জনের জন্য ডিউটি চক্র বৃদ্ধি বা হ্রাস করবে।

রিগ উপর পরিবর্তন বাস্তবায়ন।

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

পরীক্ষামূলক

আমি নিয়ামক পরীক্ষা করতে পারিনি কারণ দুটি ইনপুট উৎসের অনুকরণ করা কঠিন ছিল। ক্যাসকেড কন্ট্রোলারের সাথে আমি একমাত্র সমস্যাটি দেখতে পাচ্ছি যে যেহেতু বাইরের লুপটি অভ্যন্তরীণ-লুপে সরবরাহ করা সেটপয়েন্ট বাড়ানোর চেষ্টা করে যে একটি বড় সেট পয়েন্ট আসলে ফ্যানের জন্য কম RPS কিন্তু এটি সহজেই ঠিক করা যায়। সেটপয়েন্ট সিগন্যালের সর্বোচ্চ মান থেকে সেট পয়েন্ট নিন (4095 - setpoint - tacho_result)।

ধাপ 10: উপসংহার

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

প্রস্তাবিত: