সার্কিট
ঠিক আছে আমি এই প্রশ্নটি দেখে এখানে কেবল একটি অ্যাকাউন্ট তৈরি করেছি। আপনার প্রশ্নটি সম্পাদনা করতে সক্ষম হচ্ছি না যাতে করে আপনার টাইপো আমি সংশোধন করতে পারি। আমি বিশ্বাস করি যে আপনি আর সি এর পরিবর্তে আর সি সিরিজের সার্কিটকে সমান্তরালভাবে বোঝাচ্ছেন (এটি যদি হয় তবে এর অর্থ কী তার আমার কাছে একটি ক্লু নেই)
আপনি সি ব্যবহার করে সিমুলেট করতে চান এমন এনালগ সার্কিটের মতো দেখে মনে হচ্ছে এটির মতো কিছু
Ci
|------| |--------------|
| Rp |
|----/\/\/\/\-----------|
| Rd Cd |
Rf |----/\/\/\---| |-------|
Vin o----/\/\/\---| |
| |\ |
| | \ |
|----|- \ |
| \ |
| \-------------|---------o Vout
| /
| /
|+ /
----| /
| |/
|
|
___|___ GND
_____
___
_
LEGEND:
Vin is the input signal.
Vout is the Output.
Rp controls the propotional term ( P in PID)
Ci controls the Integral term ( I id PID)
Rd and Cd controls the differential term ( D in PID)
Rf is the gain control, which is common to all of the above controllers.
(আমি এটি আঁকার আমার আবেগকে প্রতিহত করতে পারিনি যেহেতু আমি আপনাকে বলতে চাইছিলাম যে বৈদ্যুতিন / ইলেকট্রনিক্স ইঞ্জিনিয়াররা কীভাবে চিত্রবিহীন ফোরাম এবং ইমেলগুলিতে যোগাযোগ করতেন ... এবং কেন আমরা কেবল কুরিয়ার, নির্দিষ্ট প্রস্থের ফন্ট পছন্দ করি)
আমার অবশ্যই স্বীকার করতে হবে যে আপনি যে সার্কিটটি ব্যবহার করছেন সেটি সেটআপ করার জন্য সহজ তবে গাণিতিকভাবে জটিল, যখন এটি সিস্টেমের প্রোমোশনাল, ইন্টিগ্রাল এবং ডেরিভেটিভ ধ্রুবকগুলিকে পৃথকভাবে একটি পছন্দসই মান হিসাবে টিউন করতে আসে তবে এটি সম্ভব নয়।
আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি আপনি অধ্যয়নের জন্য এই উত্স থেকে সার্কিটটি ব্যবহার করুন ।
যদিও সেট আপ করতে কিছুটা ক্লান্তিকর, তবুও আপনি এটি আদর্শের পরিবর্তে স্ট্যান্ডার্ড গাণিতিক ফর্মের সাথে সরাসরি যুক্ত করতে পারেন বলে বিশ্লেষণ করা গণিতের পক্ষে এর পক্ষে আরও সহজ।
সবশেষে ভুটটি মোটর বা যা কিছু নিয়ন্ত্রণ করতে হবে তা নিয়ন্ত্রণ করতে চলেছে। এবং ভিন হ'ল প্রক্রিয়া ভেরিয়েবল ভোল্টেজ।
আপনার পা ভিজে যাওয়ার আগে সি (সমুদ্র?)
আমি ধরে নিয়েছি আপনি ডিজিটাল রূপান্তরকারী কোনও প্রকার অ্যানালগ থেকে সংকেত পড়ছেন reading তা না হলে আপনাকে ইনপুট হিসাবে সিগন্যালটি অনুকরণ করতে হবে।
আমাদের যদি স্ট্যান্ডার্ড ফর্ম ব্যবহার করে থাকে,
লুপ চলমান সময়টি যথেষ্ট ছোট (ধীর প্রক্রিয়া) ধরে নেওয়া, আমরা আউটপুট গণনার জন্য নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারি,
output = Kp * err + (Ki * int * dt) + (Kd * der /dt);
কোথায়
Kp = Proptional Constant.
Ki = Integral Constant.
Kd = Derivative Constant.
err = Expected Output - Actual Output ie. error;
int = int from previous loop + err; ( i.e. integral error )
der = err - err from previous loop; ( i.e. differential error)
dt = execution time of loop.
যেখানে প্রাথমিকভাবে 'ডের' এবং 'ইনট' শূন্য হবে। আপনি যদি 1 KHz বলতে লুপ ফ্রিকোয়েন্সি টিউন করতে কোডে বিলম্বের ক্রিয়াটি ব্যবহার করেন তবে আপনার ডিটি 0.001 সেকেন্ড হবে।
সি তে আঁকছে
আমি সিআইডি-তে পিআইডি-র জন্য এই দুর্দান্ত কোডটি পেয়েছি , যদিও এটি এর প্রতিটি দিককে কভার করে না, তবে এটি একটি দুর্দান্ত।
//get value of setpoint from user
while(1){
// reset Timer
// write code to escape loop on receiving a keyboard interrupt.
// read the value of Vin from ADC ( Analogue to digital converter).
// Calculate the output using the formula discussed previously.
// Apply the calculated outpout to DAC ( digital to analogue converter).
// wait till the Timer reach 'dt' seconds.
}
যদি আমরা ধীর গতিতে প্রক্রিয়া করি তবে আমরা কম ফ্রিকোয়েন্সি যেমন ডিটি >>> কোড প্রয়োগের সময়টি একক লুপের জন্য (এর চেয়ে অনেক বেশি) ব্যবহার করতে পারি। এই জাতীয় ক্ষেত্রে আমরা টাইমারটি সরিয়ে ফেলতে পারি এবং এর পরিবর্তে বিলম্বের ক্রিয়াটি ব্যবহার করতে পারি।