
সুচিপত্র:
2025 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2025-01-23 14:36


হ্যালো আবার বন্ধুরা:) সুতরাং, এই প্রকল্পে আমরা STM32F4 ARM MCU দিয়ে একটি সার্ভো মোটর নিয়ন্ত্রণ করব। আমার ক্ষেত্রে, আমি ডিসকভারি বোর্ড ব্যবহার করবো, কিন্তু যদি আপনি সমস্যার মর্ম বুঝতে পারেন, তাহলে আপনি এটি প্রতিটি MCU- এর জন্য প্রয়োগ করতে পারেন। তাই। চল শুরু করি:)
ধাপ 1: হার্ডওয়্যার এবং সফটওয়্যারের প্রয়োজনীয়তা
হার্ডওয়্যারের ক্ষেত্রে আমাদের প্রয়োজন হবে:
- একটি MCU যা আমার ক্ষেত্রে STM32f4 ডিসকভারি বোর্ড
- একটি সাধারণ সার্ভো মোটর, যেমন SG90 বা অন্য কোন
সফটওয়্যারের ক্ষেত্রে আমাদের প্রয়োজন হবে:
- STM32CubeMX
- Keil uVision
যদি আপনার এই সব থাকে, তাহলে পরবর্তী ধাপে যান:)
ধাপ 2: STM32CubeMX কনফিগারেশন
আপনি জানেন যে, একটি সার্ভো মোটর নিয়ন্ত্রণের জন্য আমাদের PWM সংকেত প্রয়োজন। পিডব্লিউএম সিগন্যালের পরিপ্রেক্ষিতে প্রয়োজনীয়তাগুলি হল:
- PWM সময়কাল 20 mS হতে হবে
- সময় থাকতে হবে 0.5 mS থেকে 2.5 mS এর মধ্যে। যখন সময় 0.5 এমএস হয়, তখন সার্ভো 0 ডিগ্রী, 90 ডিগ্রির জন্য 1.5 এমএস এবং 180 ডিগ্রির জন্য 2.5 এমএস চালু হবে।
সুতরাং, আমাদের PWM কনফিগার করতে হবে এবং সেই উদ্দেশ্যে আমরা টাইমার 1 ব্যবহার করব।
- প্রথমে, টাইমার বিভাগ থেকে TIM1 নির্বাচন করুন। এই ধাপ
-
তারপর, মোড বিভাগ থেকে
- অভ্যন্তরীণ ঘড়ি এই ধাপটি বেছে নিন
- PWM জেনারেশন CH1 এই ধাপ
-
তারপর, কনফিগারেশন বিভাগ থেকে
- Prescaler 160 এ ধাপে সেট করুন
- কাউন্টার পিরিয়ড 2000 এ সেট করুন
- এই ধাপে পালস 50 তে সেট করুন
- উপরন্তু, ক্লক কনফিগারেশন থেকে APB1 টাইমার ঘড়ি 16MHz সেট করুন। এই ধাপ
এখন, এই পদক্ষেপ সম্পর্কে একটু কথা বলা যাক:
আমাদের APB1 টাইমার ঘড়ির ফ্রিকোয়েন্সি 16MHz। সুতরাং, এর মানে হল যে 1 সেকেন্ড পেতে 16, 000, 000 টিক প্রয়োজন। যাইহোক, আমরা আমাদের প্রেসকলারকে 160 এ সেট করেছি। এর মানে হল, আমরা আমাদের ফ্রিকোয়েন্সিটিকে সেই সংখ্যা দিয়ে ভাগ করে দিয়েছি এবং টিকের সংখ্যা 100, 000 এ নামিয়ে এনেছি। সুতরাং, 1 সেকেন্ডের জন্য আমাদের 100, 000 টিক দরকার। যাইহোক, আমরা PWM সময়ের 20mS সময় প্রয়োজন যেমন আমরা আগে বলেছি। সুতরাং, সাধারণ গণিতের উপর ভিত্তি করে, আমাদের 20mS এর জন্য 2000 টিক দরকার। সুতরাং, কাউন্টার পিরিয়ড 2000 এ সেট করে আমরা PWM সিগন্যালের সময়কাল নির্ধারণ করি যা 20mS। এখন আমাদের 0.5mS থেকে 2.5mS পর্যন্ত সময় পাওয়ার জন্য টিক নম্বর নির্ধারণ করতে হবে। আমরা সাধারণ গণিত থেকে এই সমীকরণটি পেতে পারি এবং এটি হল:
On_Time = (Tick_Number / 100)। মনে রাখবেন যে এটি অন_টাইম যা সার্ভো মোটরের কোণ পরিবর্তন করে। সুতরাং, চিত্রের নীচে আমি এই ধাপটি সংক্ষিপ্ত করি। যদি আপনার কোন প্রশ্ন থাকে তবে মন্তব্যগুলিতে লিখুন এবং আমি যত তাড়াতাড়ি সম্ভব উত্তর দেব।
হিসাবের ছবি
এই সব জেনারেট কোড করার পরে:)
ধাপ 3: Keil UVision কোডিং
সুতরাং, আসুন প্রথমে নির্ধারণ করি আমরা কি করতে চাই? আমরা চাই, একটি ফাংশন লিখুন যা ডিগ্রী গ্রহণ করে এবং এটি সার্ভোতে লিখতে পারে। সুতরাং, আমরা কিভাবে এটি করব? আমরা আগেই বলেছি, কোণ পরিবর্তন করার জন্য আমাদের সময়মত পরিবর্তন করতে হবে। আমাদের কোণগুলি [0, 180] এবং আমাদের টিক সংখ্যাগুলির মধ্যে পরিবর্তিত হয় যা সময় নির্ধারণ করে [50, 250] এর মধ্যে। সুতরাং, আমাদের একটি ম্যাপিং ফাংশন দরকার যা টিকের সংখ্যার পরিসরে কোণকে মানচিত্র দেয়। উদাহরণস্বরূপ, 0 ডিগ্রী 50 টিক, 180 ডিগ্রী 250 টিক এবং এর জন্য … সুতরাং আসুন আমাদের ম্যাপিং ফাংশন লিখি:
int মানচিত্র (int st1, int fn1, int st2, int fn2, int value) {return (1.0*(value-st1))/((fn1-st1)*1.0)*(fn2-st2)+st2; }
এটি আমাদের ম্যাপিং ফাংশন। আপনি কিভাবে এটি উদ্ভূত আগ্রহী? তাহলে সেটা পড়ুন। সুতরাং, আমরা আমাদের পরিসীমা এবং মান যা আমরা মানচিত্র করতে চাই।
এখন, আসুন একটি ফাংশন লিখি যা কোণ গ্রহণ করে এবং এটি টিকের পরিসরে মানচিত্র করে:
অকার্যকর servo_write (int angle) {htim1. Instance-> CCR1 = map (0, 180, 50, 250, angle); }
আপনি দেখতে পাচ্ছেন, এই কোডটি কোণ গ্রহণ করে এবং এটি টিক সংখ্যার পরিসরে মানচিত্র করে। তারপর, টিসি সংখ্যা CCR1 রেজিস্টারে দেওয়া হয় যা সময় এবং তাই, কোণ নিয়ন্ত্রণ করে।
যাইহোক, এই সব কাজ করার জন্য আমরা প্রথমে pwm শুরু করি যা কোডের একটি লাইন দ্বারা করা যেতে পারে:
HAL_TIM_PWM_Start (& htim1, TIM_CHANNEL_1);
সুতরাং, আমাদের একটি ফাংশন আছে যা কোণ গ্রহণ করে এবং এটিকে সার্ভোতে লিখুন। আসুন এটি পরীক্ষা করি এবং আমাদের সুইপ ফাংশন লিখুন যা খুব সহজ:
void servo_sweep (void) {for (int i = 0; i <= 180; i ++) {servo_write (i); HAL_Delay (10); } এর জন্য (int i = 180; i> = 0; i--) {servo_write (i); HAL_Delay (10); }}
সুতরাং, এটি শুধুমাত্র 180 পর্যন্ত গণনা করে এবং তারপর 0 তে নেমে এবং এই মানগুলিকে সার্ভোতে লিখুন:) সুতরাং, ফলাফলটি দেখা যাক!
ধাপ 4: ফলাফল:)
সুতরাং, এই শেষ। যদি আপনার কোন প্রশ্ন থাকে দয়া করে জিজ্ঞাসা করুন। আমি তাদের উত্তর দিতে খুশি হবে। পড়ার জন্য আপনাকে অনেক ধন্যবাদ এবং আশা করি আমি আপনাকে পরবর্তী প্রকল্পে দেখতে পাব:)
প্রস্তাবিত:
এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: 4 টি ধাপ

FPGA সাইক্লোন IV ডিউপ্রোলজিক কন্ট্রোল সার্ভো মোটর: এই টিউটোরিয়ালে আমরা সার্ভো মোটর নিয়ন্ত্রণ করতে ভেরিলগ কোড লিখতে যাচ্ছি। সার্ভো SG-90 ওয়েভশেয়ার দ্বারা নির্মিত হয়। যখন আপনি সার্ভো মোটর কিনবেন, আপনি একটি ডেটশীট পেতে পারেন যা অপারেটিং ভোল্টেজ, সর্বোচ্চ টর্ক এবং প্রস্তাবিত পু
Stepper মোটর নিয়ন্ত্রিত Stepper মোটর - রোটারি এনকোডার হিসাবে স্টেপার মোটর: 11 টি ধাপ (ছবি সহ)

Stepper মোটর নিয়ন্ত্রিত Stepper মোটর | রোটারি এনকোডার হিসাবে স্টেপার মোটর: কয়েকটা স্টেপার মোটর চারপাশে পড়ে আছে এবং কিছু করতে চান? এই নির্দেশনায়, আসুন একটি স্টেপার মোটরকে একটি রোটারি এনকোডার হিসাবে ব্যবহার করি আরডুইনো মাইক্রোকন্ট্রোলার ব্যবহার করে অন্য স্টেপার মোটরের অবস্থান নিয়ন্ত্রণ করতে। সুতরাং আর কোন ঝামেলা ছাড়াই চলুন
কিভাবে HW30A ব্রাশলেস মোটর স্পিড কন্ট্রোলার এবং সার্ভো টেস্টার ব্যবহার করে ড্রোন কোয়াডকপ্টার ব্রাশলেস ডিসি মোটর চালাবেন: 3 ধাপ

কিভাবে HW30A ব্রাশলেস মোটর স্পিড কন্ট্রোলার এবং সার্ভো টেস্টার ব্যবহার করে ড্রোন কোয়াডকপ্টার ব্রাশলেস ডিসি মোটর চালাবেন: বর্ণনা: এই ডিভাইসটিকে সার্ভো মোটর টেস্টার বলা হয় যা সার্ভো মোটর এবং এটিতে বিদ্যুৎ সরবরাহের সহজ প্লাগ দ্বারা সার্ভো মোটর চালানোর জন্য ব্যবহার করা যেতে পারে। ডিভাইসটি ইলেকট্রিক স্পিড কন্ট্রোলার (ইএসসি) -এর জন্য সিগন্যাল জেনারেটর হিসেবেও ব্যবহার করা যেতে পারে, তাহলে আপনি করতে পারবেন না
ক্রমাগত ঘূর্ণনের জন্য কিভাবে একটি সার্ভো মোটর পরিবর্তন করবেন (এক মোটর ওয়াকার রোবট): 8 টি ধাপ (ছবি সহ)

ক্রমাগত ঘূর্ণনের জন্য একটি সার্ভো মোটর কীভাবে পরিবর্তন করবেন (এক মোটর ওয়াকার রোবট): এই নির্দেশনাটি একটি মোটর ওয়াকারের অংশ। ওয়াকার/এরকম ট্রিলিয়ন টিউটোরিয়াল আছে, আমি জানি :-) তারা যেখানে সোনি ম্যাভিকা ক্যামেরা দিয়ে লাঞ্চ বিরতির সময় স্কুলে যাচ্ছিল (ফ্লপ
আপনার সার্ভো V1.00 হ্যাক করুন - একটি শক্তিশালী লিনিয়ার অ্যাকচুয়েটরে আপনার সার্ভো চালু করুন: 7 টি ধাপ

আপনার সার্ভো V1.00 হ্যাক করুন - একটি শক্তিশালী লিনিয়ার অ্যাকচুয়েটারে আপনার সার্ভো চালু করুন: যদি আপনার কাছে টুলস এবং সার্ভো থাকে তবে আপনি এটি কয়েক টাকার মধ্যে তৈরি করতে পারেন। অ্যাকচুয়েটর প্রায় 50 মিমি/মিনিট হারের সাথে প্রসারিত। এটি বরং ধীর কিন্তু খুব শক্তিশালী। পোস্টের শেষে আমার ভিডিওটি দেখুন যেখানে ছোট অ্যাকচুয়েটর