এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: 4 টি ধাপ
এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: 4 টি ধাপ
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 ফাইল আপডেট করতে ভুলবেন না। কোডটি আপলোড করতে "স্টার্ট" এ ক্লিক করুন।

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

প্রস্তাবিত: