সুচিপত্র:

এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: 4 টি ধাপ
এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: 4 টি ধাপ

ভিডিও: এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: 4 টি ধাপ

ভিডিও: এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: 4 টি ধাপ
ভিডিও: FPGA Cyclone IV Input Test 2024, নভেম্বর
Anonim
এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর
এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর

এই টিউটোরিয়ালে, আমরা সার্ভো মোটর নিয়ন্ত্রণ করতে ভেরিলগ কোড লিখতে যাচ্ছি। সার্ভো SG-90 ওয়েভশেয়ার দ্বারা নির্মিত হয়। যখন আপনি সার্ভো মোটর কিনবেন, আপনি একটি ডেটশীট পেতে পারেন যা অপারেটিং ভোল্টেজ, সর্বাধিক টর্ক এবং প্রস্তাবিত পালস প্রস্থ মডুলেশন (PWM) … ইত্যাদি তালিকাভুক্ত করে। যাইহোক, FPGA DuePrologic 3.3V এর ইনপুট ভোল্টেজ প্রদান করে যেখানে servo SG -90 এর অপারেটিং ভোল্টেজ 5V - 7V। বৈদ্যুতিক শক্তির অভাবের মধ্যে, আমি আমার ক্যালিব্রেটেড PWM তালিকা করব যাতে সফলভাবে মোটর মোটর ঘুরানো যায়।

আমাদের কাজ: সার্ভো মোটর 5 সেকেন্ডের সময়ের সাথে পিছনে ঘুরানো হয়

সম্পূর্ণ মেনু:

ধাপ 1: ইলেকট্রনিক সার্কিট তৈরি করুন

ইলেকট্রনিক সার্কিট তৈরি করুন
ইলেকট্রনিক সার্কিট তৈরি করুন

পদক্ষেপ 2: পিন প্ল্যানার সেট আপ করুন

পিন প্ল্যানার সেট আপ করুন
পিন প্ল্যানার সেট আপ করুন

পিন প্ল্যানার সঠিকভাবে সেট করা আছে কিনা তা পরীক্ষা করতে "I/O Assignment Analysis Start" ক্লিক করুন। অন্যথায়, আপনাকে নিজের দ্বারা সমস্ত পোর্টের নাম আমদানি করতে হবে।

ধাপ 3: ভেরিলগ কোড

আমরা "servo_count" টাইমার তৈরি করি। যখন "servo_A" উচ্চ হয়, PWM 1.5ms হয় এবং অতএব servo 120 deg এ অবস্থিত। বিপরীতে, যখন "servo_A" কম হয়, PWM 0.15ms হয় এবং সেইজন্য servo 0 ডিগ্রীতে থাকে।

নিয়োগ XIO_2 [3] = servo_pulse; // ভি'র জন্য

reg [31: 0] servo_count;

প্রাথমিক শুরু

servo_count <= 32'b0;

servo_A <= 1'b0;

শেষ

সর্বদা @(পোজ CLK_66)

শুরু

servo_count <= servo_count + 1'b1;

যদি (servo_count> 400000000) // ঘড়ি চক্র 66MHz, 1/6M * 400000000 ~ 5 সেকেন্ড

শুরু

servo_A <=! servo_A;

servo_count <= 32'b0;

শেষ

শেষ

reg [31: 0] ex_auto;

প্রাথমিক শুরু

ex_auto <= 32'b0;

servo_auto <= 1'b0;

শেষ

সর্বদা @(পোজ CLK_66)

শুরু

যদি (servo_A == 1'b1)

শুরু

ex_auto <= ex_auto + 1'b1;

যদি (ex_auto> 100000) // ঘড়ি চক্র 66MHz, এই PWM হল ~ 1.5ms, servo rotates to 120 deg

শুরু

servo_auto <=! servo_auto;

ex_auto <= 32'b0;

শেষ

শেষ

যদি (servo_A == 1'b0)

শুরু

ex_auto <= ex_auto + 1'b1;

যদি (ex_auto> 10000) // ঘড়ি চক্র 66MHz, এই PWM হল ~ 0.15ms, servo rotates 0 deg

শুরু

servo_auto <=! servo_auto;

ex_auto <= 32'b0;

শেষ

শেষ

শেষ

ধাপ 4: ভেরিলগ কোড আপলোড করুন

Image
Image

"সংকলন শুরু করুন" এ ক্লিক করুন। যদি কোন ত্রুটি বার্তা প্রদর্শিত না হয়, হার্ডওয়্যার সেটআপ সম্পূর্ণ করতে "প্রোগ্রামার" এ যান। প্রয়োজনে "ফাইল পরিবর্তন করুন" এ pof ফাইল আপডেট করতে ভুলবেন না। কোডটি আপলোড করতে "স্টার্ট" এ ক্লিক করুন।

সর্বোপরি, আপনার দেখা উচিত যে সার্ভো মোটরটি পর্যায়ক্রমে ঘোরানো হয়।

প্রস্তাবিত: