সুচিপত্র:
- সরবরাহ
- ধাপ 1: লাইব্রেরির কার্যাবলী
- ধাপ 2: একটি মোটর ছাড়া SpeedStepperPlot উদাহরণ চালানো
- ধাপ 3: একটি মোটর ছাড়া SpeedStepperProfile উদাহরণ চালানো
- ধাপ 4: একটি মোটর ছাড়া SpeedStepperSetup উদাহরণ চালানো
- ধাপ 5: বিলম্ব
- ধাপ 6: স্টেপার মোটর এবং স্পার্কফুন রেডবোর্ড টার্বো দিয়ে স্পিডস্টেপারসেটআপ চালানো
ভিডিও: Arduino জন্য চালিত Stepper গতি নিয়ন্ত্রণ মেনু: 6 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
এই স্পিডস্টেপার লাইব্রেরিটি অ্যাকসেলস্টেপার লাইব্রেরির পুনর্লিখন যা স্টেপার মোটরের গতি নিয়ন্ত্রণের অনুমতি দেয়। SpeedStepper লাইব্রেরি আপনাকে সেট মোটর গতি পরিবর্তন করতে দেয় এবং তারপর AccelStepper লাইব্রেরির মতো একই অ্যালগরিদম ব্যবহার করে নতুন সেট গতিতে গতি বাড়ায়/হ্রাস করে। স্পিডস্টেপার লাইব্রেরি আপনাকে প্লাস এবং মাইনাস সীমা এবং একটি 'হোম' অবস্থান নির্ধারণ করতে দেয়। হোম পজিশনে ফিরে যাওয়ার জন্য গোহোম কমান্ড আছে।
সীমাবদ্ধতা: স্পিডস্টেপার লাইব্রেরি শুধুমাত্র দিক এবং ধাপের আউটপুট চালায় এবং তাই স্টেপার মোটর চালানোর জন্য ইজি ড্রাইভারের মতো মোটর ড্রাইভারের সাথে সংযুক্ত হওয়া প্রয়োজন। অ্যাকসেলস্টেপার লাইব্রেরি আরও ড্রাইভিং বিকল্প সরবরাহ করে যা প্রয়োজন হলে এই লাইব্রেরিতে অনুলিপি করা যেতে পারে।
তিনটি উদাহরণ স্কেচ দেওয়া হয়েছে, যার প্রত্যেকটি মোটর বা মোটর চালক ছাড়া চালানো যায়। speedStepperPlot স্কেচ উদাহরণ গতি কমান্ড এবং goHome কমান্ড ইস্যু করে এবং ফলে গতি এবং অবস্থানের একটি প্লট তৈরি করে। SpeedStepperSetup স্কেচ একটি মেনু চালিত সেটআপ প্রদান করে যা মোটরের বাড়ি এবং সীমা নির্ধারণ করে এবং তারপর মোটরটি চালায় এবং গতি আপ এবং ডাউন অ্যাডজাস্ট করে এবং শেষ করার জন্য goHome। SpeedStepperProfile স্কেচ একটি স্পিড প্রোফাইল সেট আপ এবং এক্সিকিউট করার একটি উদাহরণ দেখায়।
যদিও অ্যাকসেলস্টেপার লাইব্রেরি ভাল অবস্থান নিয়ন্ত্রণ প্রদান করে, ইউরোপা জৈবিক নমুনা সংগ্রহের জন্য প্রোটোটাইপ আইস-গলনা প্রোবের জন্য গতি নিয়ন্ত্রণের প্রয়োজন ছিল। এখানে প্রোটোটাইপের আগের সংস্করণের একটি ভিডিও, যা মোটরের পরিবর্তে ওজন ব্যবহার করেছে। পাম্পের স্পিড প্রোফাইল নিয়ন্ত্রণের জন্য কোনো ব্যবহারকারীর কাছে অনুরোধ করার পর রিভিশন ১.১ স্পিড প্রোফাইল যুক্ত করেছে।
এই লাইব্রেরিটি Arduino Uno এবং Mega2560 তে চলে, কিন্তু প্রোটোটাইপের জন্য একটি বড় মেমরি / দ্রুত প্রসেসর স্পার্কফুন রেডবোর্ড টার্বো ব্যবহার করা হয়েছিল।
Arduino এর জন্য স্টেপার স্পিড কন্ট্রোল লাইব্রেরিতে এই নির্দেশনা অনলাইনে পাওয়া যায়
সরবরাহ
উদাহরণ স্কেচ চালানোর জন্য শুধুমাত্র একটি Arduino UNO বা Mega2560 এবং সফ্টওয়্যার লাইব্রেরি প্রয়োজন
লাইব্রেরির বেঞ্চ টেস্টিংয়ের জন্য একটি স্পার্কফান রেডবোর্ড টার্বো ব্যবহার করা হয়েছিল একটি সহজ ড্রাইভার, একটি 200 স্টেপ/রেভ, 12V 350mA স্টেপার মোটর এবং একটি 12 ডিসি সাপ্লাই 2A বা বড়, যেমন https://www.sparkfun.com/products/14934। ইউএসবি এ টু মাইক্রো ক্যাবল ইউএসবি টু টিটিএল সিরিয়াল কেবল আর্ডুইনো আইডিই ভি ১..9..9 এবং এটি চালানোর জন্য একটি কম্পিউটার।
ধাপ 1: লাইব্রেরির কার্যাবলী
স্পিডস্টেপার লাইব্রেরি স্টেপার মোটরকে লাইব্রেরি দ্বারা নির্ধারিত সীমা দ্বারা সীমাবদ্ধ করে। উপলব্ধ বিভিন্ন লাইব্রেরি পদ্ধতির জন্য SpeedStepper.h ফাইলটি দেখুন। এখানে তাদের পিছনে যুক্তি একটি রূপরেখা।
ধাপের সংখ্যা (ডাল) গণনা করে স্টেপারের অবস্থান ট্র্যাক করা হয়। লাইব্রেরি setPlusLimit (int32_t) এবং setMinusLimit (int32_t) পজিশনের মধ্যে অবস্থান সীমিত করে। প্লাস সীমা সর্বদা> = 0 এবং বিয়োগ সীমা সর্বদা <= 0. প্রারম্ভে মোটর অবস্থান 0 (হোম) এবং সীমাগুলি খুব বড় +/- সংখ্যা (প্রায় +/- 1e9 ধাপ) সেট করা হয়। setAcceleration (float) সেট করে মোটর কত দ্রুত গতি পরিবর্তন করবে উপরে বা নিচে। মোটরটি প্লাস বা মাইনাস সীমার কাছাকাছি আসার সাথে সাথে এটি এই হারে হ্রাস পাবে যতক্ষণ না সীমাতে থামে। শুরুতে ত্বরণ 1.0 ধাপ/সেকেন্ড/সেকেন্ডে সেট করা হয়। ত্বরণ সেটিং সবসময় একটি +ve সংখ্যা। SetSpeed (float) সেটিং এর চিহ্ন মোটরটি কোন দিকে যাবে তা নির্ধারণ করে।
setSpeed (float) মোটরকে তার বর্তমান গতি থেকে ত্বরান্বিত / হ্রাস করার গতি নির্ধারণ করে। SetSpeed (float) এর মাধ্যমে যে গতি সেট করা যায়, সেটি সীমিত, পরম মান, সেটিংস দ্বারা, setMaxSpeed (float), default 1000 steps/sec এবং setMinSpeed (float), default 0.003 steps/sec। এই ডিফল্টগুলি সম্পূর্ণ হার্ড কোডেড গতি সীমা যা লাইব্রেরি setMaxSpeed () এবং setMinSpeed () এর জন্য গ্রহণ করবে। যদি আপনি একটি সর্বোচ্চ গতি> 1000 ধাপ/সেকেন্ড সেট করতে চান তাহলে আপনাকে MaxMaxSpeed (1000) কে সর্বোচ্চ গতিতে পরিবর্তন করতে SpeedStepper.cpp ফাইলে প্রথম লাইনটি সম্পাদনা করতে হবে। অনুশীলনে লাইব্রেরির রান () পদ্ধতিতে কলগুলির মধ্যে সর্বোচ্চ গতিও সময়ের দ্বারা সীমাবদ্ধ। 1000 ধাপ / সেকেন্ডের জন্য রান () পদ্ধতিটি অন্তত প্রতি 1mS বলা আবশ্যক। নিচের লেটেন্সি বিভাগটি দেখুন।
সর্বনিম্ন গতির চেয়ে কম গতি সেট করার চেষ্টা করলে মোটর বন্ধ হয়ে যাবে। এই সেটারগুলির প্রত্যেকটির একটি সংশ্লিষ্ট গেটার রয়েছে, SpeedStepper.h ফাইলটি দেখুন। গতির জন্য, getSetSpeed () setSpeed () এর মাধ্যমে আপনি যে গতি সেট করেছেন তা ফেরত দেয়, যখন getSpeed () বর্তমান মোটর গতি ফেরত দেয় যা পরিবর্তিত হয় কারণ এটি আপনার গতি বাড়িয়ে দেয়/হ্রাস করে। যদি মোটর সেই দিকে না যায় যা আপনি একটি +ve এর কথা মনে করেন আপনি মোটরটি +ve গতিতে চলার দিকটি অদলবদল করতে invertDirectionLogic () এ কল করতে পারেন।
getCurrentPosition () 'হোম' (0) এর তুলনায় বর্তমান মোটর অবস্থান প্রদান করে। আপনি বর্তমান মোটর অবস্থান setCurrentPosition (int32_t) ওভাররাইড করতে পারেন। নতুন অবস্থান সেট প্লাস/বিয়োগ সীমার মধ্যে সীমাবদ্ধ।
প্রাথমিকভাবে মোটরটি 0 অবস্থানে থামানো হয়। হার্ডস্টপ () এ কল করলে তাৎক্ষণিকভাবে মোটরটি যেখানে আছে সেখানেই বন্ধ হয়ে যাবে। অন্যদিকে স্টপ () পদ্ধতিতে কল করা গতি শূন্যে সেট করবে এবং মোটরকে স্টপেজে হ্রাস করবে। StopAndSetHome () এ কল করলে তাৎক্ষণিকভাবে মোটর বন্ধ হয়ে যাবে এবং তার অবস্থান ০ -এ সেট হবে। প্লাস/মাইনাস সীমা মানগুলি পরিবর্তিত হয়নি কিন্তু এখন এই নতুন ০ (হোম) অবস্থানে উল্লেখ করা হয়েছে। GoHome () এ কল করলে স্টেপার এই 0 (হোম) অবস্থানে ফিরে আসবে এবং থামবে। SetSpeed () এ কল করলে বাড়ি যাওয়া বাতিল হবে।
SpeedStepper লাইব্রেরি একটি চলমান প্রোফাইলকে বাধাগ্রস্ত করার জন্য setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile () এর মাধ্যমে গতি প্রোফাইল নিয়ন্ত্রণ প্রদান করে এবং isProfileRunning ()। SpeedStepperProfile উদাহরণ স্কেচ দেখুন।
ধাপ 2: একটি মোটর ছাড়া SpeedStepperPlot উদাহরণ চালানো
Arduino IDE V1.8.9 ইনস্টল করুন ডাউনলোড করুন এবং SpeedStepper লাইব্রেরি ইনস্টল করুন SpeedStepper.zip সংরক্ষণ করুন এবং তারপর Arduino IDE মেনু আইটেম ব্যবহার করুন স্কেচ Library অন্তর্ভুক্ত লাইব্রেরি → Add. ZIP লাইব্রেরি লাইব্রেরি আমদানি করতে ডাউনলোড করুন এবং মিলিসডিলে লাইব্রেরিও ইনস্টল করুন
উদাহরণ Open SpeedStepper → speedStepperPlot উদাহরণ স্কেচ খুলুন (প্রয়োজন হলে IDE পুনরায় চালু করুন)। এই স্কেচটি সিরিয়ালের সাথে কাজ করার জন্য কনফিগার করা হয়েছে, যেমন ইউএনও এবং মেগা ইত্যাদি স্পার্কফুন রেডবোর্ড টার্বোতে চলার জন্য নিচে দেখুন।
এই উদাহরণ চালানোর জন্য কোন ড্রাইভার বোর্ড বা স্টেপার মোটর প্রয়োজন নেই। এই উদাহরণগুলি আউটপুট হিসাবে D6 এবং D7 ব্যবহার করে। আপনি স্কেচের শীর্ষে STEP_PIN এবং DIR_PIN সেটিংস পরিবর্তন করে আউটপুট পিনগুলি যেকোন ডিজিটাল আউটপুটে পরিবর্তন করতে পারেন।
বোর্ডে স্কেচ আপলোড করুন এবং তারপর টুলস → সিরিয়াল প্লটার খুলুন 115200 বড এ স্পীড (RED) এবং পজিশন (BLUE) প্লট দেখানোর জন্য প্লাস লিমিট 360 এ সেট করা হয়েছে যার কারণে স্পিড প্রায় 100 পয়েন্ট থেকে শূন্যের দিকে চলে যায় x- অক্ষে। বিয়োগ সীমা -510। অবস্থানটি ~ -390 এ থামে কারণ গতিটি 0.0 এর জন্য দাবি করা হয়েছে। এক্স-অক্ষের 380 পয়েন্টে, goHome cmd জারি করা হয় যা স্টেপারকে শূন্য অবস্থানে ফিরিয়ে দেয়।
এই speedStepperPlot স্কেচ মিলিসডিলেস ব্যবহার করে বিভিন্ন গতি এবং ত্বরণের মধ্যে সময় পরিবর্তন করে। অনেক ক্ষেত্রে একটি SpeedStepperProfile ব্যবহার করে, যেমন পরবর্তী উদাহরণ, সহজ।
ধাপ 3: একটি মোটর ছাড়া SpeedStepperProfile উদাহরণ চালানো
উদাহরণ Open SpeedStepper → speedStepperPlot উদাহরণ স্কেচ খুলুন, এই স্কেচটি Arduino সিরিয়াল প্লটার ব্যবহার করে উপরের প্লট তৈরি করে এবং উদাহরণস্বরূপ একটি পাম্প চালানোর জন্য একটি নির্ধারিত স্পিড প্রোফাইল চালানোর একটি উদাহরণ।
স্টেপার স্পিড প্রোফাইলগুলি SpeedProfileStruct এর একটি অ্যারে দিয়ে গঠিত, যা SpeedStepper.h ফাইলে সংজ্ঞায়িত করা হয়েছে।
{SpeedProfileStruct {
ভাসমান গতি; // এই ধাপের শেষে লক্ষ্য গতি স্বাক্ষরবিহীন দীর্ঘ ডেল্টাটিএমএস; // বর্তমান গতি থেকে গতি বাড়ানোর সময় (এই ধাপের শুরুতে) লক্ষ্য গতিতে};
স্পীডপ্রোফাইল স্ট্রাক্টের একটি অ্যারে সংজ্ঞায়িত করুন যাতে প্রতিটি ধাপ এবং সময়ের জন্য টার্গেট স্পিড থাকে, ডেল্টাটিএমএস, এমএস -এ, আগের টার্গেট স্পিড থেকে সেই টার্গেট স্পিডে পৌঁছানোর জন্য। যদি ডেল্টাটিএমএস শূন্য বা খুব ছোট হয়, তবে গতি নতুন লক্ষ্য গতিতে অবিলম্বে লাফিয়ে উঠবে। অন্যথায়, প্রয়োজনীয় ত্বরণ গণনা করা হবে setAcceleration () নতুন টার্গেট গতির জন্য setSpeed () এ কল করার পরে কল করা হবে। সব ক্ষেত্রে প্রোফাইল বিদ্যমান প্লাস এবং মাইনাস পজিশন লিমিট এবং সর্বোচ্চ/মিনিট স্পিড সেটিংস দ্বারা সীমাবদ্ধ থাকবে। আপনি যদি একটি গতি ধরে রাখতে চান, তবে আগের গতিটি সময়ের সাথে পুনরাবৃত্তি করুন যখন আপনি এটি ধরে রাখতে চান। যেহেতু নতুন টার্গেট স্পীড বর্তমান গতির সমান, তাই হিসাব করা ত্বরণ শূন্য হবে এবং গতিতে কোন পরিবর্তন হবে না।
এই SpeedProfileStruct অ্যারে উপরের প্লট তৈরি করেছে
const SpeedProfileStruct প্রোফাইল = {{0, 0}, // ইতিমধ্যেই বন্ধ না হলে অবিলম্বে থামুন {0, 1000}, // 1sec এর জন্য শূন্য ধরে রাখুন {-50, 0}, // লাফ -50 {-200, 2000}, // রmp্যাম্প থেকে -200 {-200, 6000}, // ধরে রাখা -200 এ 6sec {-50, 2000}, // রmp্যাম্প ডাউন -50 {0, 0}, // // অবিলম্বে থামুন {0, 1500}, // 1.5sec {50, 0}, // শূন্য ধরে রাখুন 50 {200, 2000}, // রmp্যাম্প থেকে 200 {200, 6000}, // ধরে রাখুন 6 সেকেন্ডের জন্য {50, 2000}, // রmp্যাম্প থেকে 50 {0, 0}, // // অবিলম্বে থামুন {0, 1000} // হোল্ড জিরো // প্লট আউটপুট}; const size_t PROFILE_LEN = sizeof (profile) / sizeof (SpeedProfileStruct); // প্রোফাইল অ্যারের আকার গণনা করুন
SetProfile (SpeedProfileStruct* profileArray, size_t arrayLen) কল করে প্রোফাইল সেট করা হয় যেমন stepper.setProfile (প্রোফাইল, PROFILE_LEN);
একবার প্রোফাইল সেট হয়ে গেলে, বর্তমান মোটর গতি থেকে এটি চালানো শুরু করতে startProfile () এ কল করুন (সাধারণত আপনি থামানো থেকে শুরু করবেন)। প্রোফাইলের শেষে, মোটর শেষ লক্ষ্য গতিতে চলতে থাকবে। IsProfileRunning () পদ্ধতিতে বলা যেতে পারে প্রোফাইলটি এখনও চলছে কিনা। আপনি যদি প্রোফাইলটি তাড়াতাড়ি বন্ধ করতে চান তাহলে আপনি stopProfile () এ কল করতে পারেন যা প্রোফাইলটি পরিত্যাগ করবে এবং মোটর বন্ধ করে দেবে।
ধাপ 4: একটি মোটর ছাড়া SpeedStepperSetup উদাহরণ চালানো
উদাহরণ স্কেচটি আপনার নিজের স্টেপার মোটর অ্যাপ্লিকেশনের জন্য একটি ঘাঁটির জন্য ডিজাইন করা হয়েছে। এটি একটি মেনু চালিত ইন্টারফেস প্রদান করে যা আপনাকে মোটরকে তার হোম অবস্থানে নিয়ে যেতে দেয়, যদি ইতিমধ্যে সেখানে না থাকে এবং তারপর allyচ্ছিকভাবে প্লাস এবং বিয়োগ সীমা পুনরায় সেট করুন এবং তারপর সেই সীমার মধ্যে মোটর চালান। 'রান' মেনু আপনাকে গতি বাড়াতে এবং হ্রাস করতে, বর্তমান গতিতে হিমায়িত করতে, থামাতে এবং বাড়িতে ফিরে যেতে দেয়।
এই স্কেচটি বেশ কয়েকটি সফ্টওয়্যার বৈশিষ্ট্যকে চিত্রিত করে যা লুপ () প্রতিক্রিয়াশীল রাখে যাতে আপনি স্টেপার নিয়ন্ত্রণ করতে আপনার নিজস্ব সেন্সর ইনপুট যুক্ত করতে পারেন। বিলম্ব এড়াতে ব্যথা লাগে যা গতি নিয়ন্ত্রণে হস্তক্ষেপ করে। (দেখুন দেরিগুলি মন্দ)
উপরে SpeedStepperPlot চালানোর জন্য ব্যবহৃত লাইব্রেরিগুলি ইনস্টল করুন, এবং তারপর pfodParser লাইব্রেরি ইনস্টল করুন। PfodParser লাইব্রেরি NonBlockingInput এবং pfodBufferedStream ক্লাস সরবরাহ করে যা ব্যবহারকারীর ইনপুট এবং মেনু আউটপুট পরিচালনা করার জন্য ব্যবহার করা হয় যাতে লুপ () চলতে না পারে।
উদাহরণ Open SpeedStepper → speedSpeedSetup উদাহরণ খুলুন। এই স্কেচটি সিরিয়ালের সাথে কাজ করার জন্য কনফিগার করা হয়েছে, যেমন ইউএনও এবং মেগা ইত্যাদি স্পার্কফুন রেডবোর্ড টার্বোতে চলার জন্য নীচে দেখুন।
এই উদাহরণ চালানোর জন্য কোন ড্রাইভার বোর্ড বা স্টেপার মোটর প্রয়োজন নেই। এই উদাহরণগুলি আউটপুট হিসাবে D6 এবং D7 ব্যবহার করে। আপনি স্কেচের শীর্ষে STEP_PIN এবং DIR_PIN সেটিংস পরিবর্তন করে যেকোনো ডিজিটাল আউটপুটে আউটপুট পিন পরিবর্তন করতে পারেন। বোর্ডে স্কেচ আপলোড করুন এবং তারপর SETUP মেনু দেখতে টুলস → সিরিয়াল মনিটর 115200 এ খুলুন।
সেটআপ পজ: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p -set Home l -set limit h -goHome r -run>
যখন স্কেচ চালায় তখন স্টেপারের বর্তমান অবস্থানটি 'হোম' (0) অবস্থান হিসাবে নেওয়া হয়। যদি আপনি স্টেপারটিকে তার প্রকৃত 'হোম' অবস্থানে পুনরায় স্থাপন করতে চান, তাহলে সেট হোম মেনু প্রদর্শন করতে p কমান্ডটি প্রবেশ করান
SET HOME POS: 0 SP: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -setHome এখানে এবং প্রস্থান করুন + -ফরওয়ার্ড - -রিভার্স এস -সোয়াপ ফরওয়ার্ড/রিভার্স -হার্ডস্টপ >
আপনি দেখতে পাচ্ছেন যে স্কেচে কোডেড সীমাগুলি সরানো হয়েছে তাই আপনি যে কোনও জায়গায় স্টেপার পুনরায় অবস্থান করতে পারেন। আপনার খেয়াল রাখতে হবে আপনি শারীরিক সীমা অতিক্রম করে তা চালাবেন না অথবা আপনি কিছু ভেঙে ফেলতে পারেন।
স্টেপারকে এগিয়ে নিয়ে যেতে শুরু করার জন্য + cmd ব্যবহার করুন, যদি আপনি এটিকে ভুল দিকে এগোতে দেখেন তবে একটি নন-কমান্ড বা এটি বন্ধ করার জন্য কেবল একটি খালি লাইন প্রবেশ করুন এবং তারপরে ফরওয়ার্ডের দিক পরিবর্তন করতে স্কোম্যান্ড ব্যবহার করুন। পরবর্তী রানের জন্য এটি ঠিক করতে সেটআপের মধ্যে invertDirectionLogic () এ একটি কল অন্তর্ভুক্ত করার জন্য আপনার স্কেচ আপডেট করা উচিত।
+ / - cmds ব্যবহার করে স্টেপারটি সঠিক শূন্য অবস্থানে রাখুন। মোটরটি ধীর গতিতে শুরু হয় এবং তারপরে গতি বাড়ায়, এটি ব্যবহার করার জন্য কেবল এটি ব্যবহার করুন এবং ফাঁকা লাইন। এই জন্য সর্বোচ্চ গতি এবং সীমা মেনু MAX_SETUP_SPEED দ্বারা setupMenus.cpp এর শীর্ষে সেট করা আছে।
একবার মোটরটি তার 'হোম' অবস্থানে স্থাপন করা হলে, বর্তমান অবস্থানটি 0 হিসাবে পুনরায় সেট করতে এবং সেটআপ মেনুতে ফিরে আসার জন্য x cmd ব্যবহার করুন।
যদি আপনি সীমা নির্ধারণ করতে চান, সাধারণত শুধুমাত্র প্রাথমিক সেটআপের সময়, সেট সীমা মেনুতে প্রবেশ করতে l cmd ব্যবহার করুন
SET LIMITS pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>
প্লাস সীমাতে আরও এগিয়ে যাওয়ার জন্য + cmd ব্যবহার করুন এবং তারপর প্লাস সীমা হিসাবে সেট করতে l cmd ব্যবহার করুন। তারপর h কমান্ডটি 0 এ ফিরে যেতে ব্যবহার করা যেতে পারে এবং - cmd ব্যবহার করতে হলে যদি বিয়োগ সীমাতে মোটর অবস্থানের প্রতি শ্রদ্ধাশীল হয়। আবার বিয়োগ সীমা নির্ধারণ করতে l cmd ব্যবহার করুন। প্লাস এবং মাইনাস সীমার অবস্থানগুলি লক্ষ্য করুন এবং এই মানগুলির সাথে সেটআপ () পদ্ধতির setPlusLimit এবং setMinusLimit বিবৃতি আপডেট করুন।
যখন সীমা সেট করা হয় সেটআপ মেনুতে ফিরে আসার জন্য x cmd ব্যবহার করুন এবং তারপর আপনি RUN মেনু খুলতে r cmd ব্যবহার করতে পারেন
RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -speed up - -speed down h -goHome। -হার্ডস্টপ-ফ্রিজ স্পিড> +পজ: 4 এসপি: 9.49 +লিম: 500000 -লিম: -500 ল্যাটেন্সি: স্টেপার: 792uS লুপ: 5664uS পজ: 42 স্প: 29.15 +লিম: 500000 -লিম: -500 ল্যাটেন্সি: স্টেপার: 792uS লুপ: 5664uS pos: 120 sp: 49.09 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS
+ Cmd সামনের দিকে ত্বরান্বিত হতে শুরু করে এবং প্রতি 2 সেকেন্ডে অবস্থান এবং গতি প্রিন্ট করে। যখন মোটর আপনার গতিতে পৌঁছায় তখন আপনি অন্য কোন কী (বা খালি ইনপুট) দিয়ে ত্বরণ বন্ধ করতে পারেন। আপনি বন্ধ করতে - cmd ডাউন ব্যবহার করে গতি কমাতে পারেন। যদি বন্ধ করা হয় - cmd বিপরীত দিকে ত্বরান্বিত করবে।
এই রান মেনু আপনার প্রকল্পের ম্যানুয়াল নিয়ন্ত্রণ প্রদান করে। স্বয়ংক্রিয় নিয়ন্ত্রণের জন্য আপনাকে কিছু অন্যান্য সেন্সর যুক্ত করতে হবে।
ধাপ 5: বিলম্ব
স্টেপার মোটর নিয়ন্ত্রণ সফটওয়্যারের উপর নির্ভর করে প্রতিটি ধাপে। সেট গতি বজায় রাখার জন্য, আপনার স্কেচটি stepper.run () পদ্ধতিতে কল করতে হবে যা বর্তমান গতির জন্য সঠিক সময়ে পরবর্তী ধাপটি চালানোর জন্য যথেষ্ট। সেন্সরের মাধ্যমে নিয়ন্ত্রণের জন্য আপনাকে অবিলম্বে নতুন পরিমাপ প্রক্রিয়া করতে সক্ষম হতে হবে। পজিশন/স্পিড প্রিন্টের মধ্যে দুটি ল্যাটেন্সি পরিমাপ রয়েছে যাতে আপনি আপনার স্কেচটি যথেষ্ট দ্রুত পরীক্ষা করতে পারেন।
Stepper Latency (pfodBufferedStream)
Stepper.run () পদ্ধতিতে পরপর কলগুলির মধ্যে stepper latency সর্বাধিক বিলম্ব পরিমাপ করে। প্রতি সেকেন্ডে 1000 ধাপে স্টেপার মোটর চালানোর জন্য, স্টেপার বিলম্বিততা 1000uS (1mS) এর চেয়ে কম হওয়া প্রয়োজন। এই স্কেচের প্রথম সংস্করণে অনেক মিলিসেকেন্ডের বিলম্ব ছিল। এই অতিরিক্ত কলগুলি রানস্টেপার () পদ্ধতিতে (যা stepper.run () কল করে) যেখানে কোডের মাধ্যমে যোগ করা হয়েছে। এটি সমস্যার পুরোপুরি সমাধান করতে পারেনি কারণ মেনু এবং আউটপুট প্রিন্ট স্টেটমেন্ট একবার ছোট সিরিয়াল টিএক্স বাফার পূর্ণ হয়ে গেলে স্কেচ ব্লক করে দেয়। এই ব্লকিং এড়ানোর জন্য, pfodParser লাইব্রেরি থেকে pfodBufferedStream একটি 360 বাইট আউটপুট প্রিন্ট বাফার যোগ করার জন্য ব্যবহার করা হয়েছিল যা প্রিন্ট স্টেটমেন্ট দ্রুত লিখতে পারে। তারপর pfodBufferedStream এই ক্ষেত্রে 115200 নির্দিষ্ট বড রেটে বাইট রিলিজ করে। pfodBufferedStream বাফার পূর্ণ হলে বা ব্লক করার বিকল্প আছে অথবা শুধু ওভারফ্লো অক্ষরগুলি ড্রপ করুন। এখানে বাফার পূর্ণ হলে অতিরিক্ত কোন অক্ষর ড্রপ করার জন্য সেট করা হয়েছে যাতে সিরিয়াল অক্ষর পাঠানোর জন্য স্কেচ ব্লক না থাকে।
লুপ লেটেন্সি (NonBlockingInput)
লুপ লেটেন্সি লুপ () পদ্ধতিতে পরপর কলগুলির মধ্যে সর্বাধিক বিলম্ব পরিমাপ করে। এটি সেট করে যে আপনি কত দ্রুত নতুন সেন্সর পরিমাপ প্রক্রিয়া করতে পারেন এবং মোটর সেট গতি সামঞ্জস্য করতে পারেন। আপনি কতটা দ্রুত নিয়ন্ত্রণ করতে চান তার উপর নির্ভর করে।
উপরের pfodBufferedStream ব্যবহার করে প্রিন্ট স্টেটমেন্টের কারণে বিলম্ব দূর করা হয়েছে, কিন্তু ব্যবহারকারীর ইনপুট প্রক্রিয়া করার জন্য আপনাকে ইনপুটটির প্রথম অক্ষর নিতে হবে এবং বাকী লাইন উপেক্ষা করতে হবে। PfodParer লাইব্রেরিতে NonBlockingInput ক্লাসটি ইনপুট থাকা অবস্থায় একটি শূন্য অক্ষর ফেরত পাঠানোর জন্য ব্যবহার করা হয়, readInput () ব্যবহার করে, এবং clearInput () ব্যবহার করে নিচের অক্ষরগুলিকে পরিষ্কার এবং বাতিল করার জন্য ব্যবহার করা হয়, যতক্ষণ না লুপ ব্লক না করে 10mS এর জন্য কোন অক্ষর না পাওয়া যায়। ()
অবশ্যই সেন্সরগুলি পড়তে এবং নতুন সেট গতি গণনা করার জন্য আপনার যোগ করা অতিরিক্ত কোড দ্বারা লুপের বিলম্ব বৃদ্ধি পাবে। অনেক সেন্সর লাইব্রেরি একটি পরিমাপ শুরু এবং ফলাফল পুনরুদ্ধারের মধ্যে শুধু বিলম্ব (..) ব্যবহার করে সাজানোর কাট নেয়। উপযুক্ত লাইসেন্স ছাড়াই বিলি করার পরে পরিমাপটি বেছে নেওয়ার জন্য আপনাকে মিলিসডিলে ব্যবহার করার জন্য এই লাইব্রেরিগুলি পুনরায় লিখতে হবে।
ধাপ 6: স্টেপার মোটর এবং স্পার্কফুন রেডবোর্ড টার্বো দিয়ে স্পিডস্টেপারসেটআপ চালানো
বাস্তবের জন্য SpeedStepperSetup স্কেচ চালানোর জন্য আপনার একটি স্টেপার মোটর, ড্রাইভার এবং বিদ্যুৎ সরবরাহের প্রয়োজন হবে এবং এই উদাহরণে স্পার্কফুন রেডবোর্ড টার্বো।
উপরের তারের চিত্র (পিডিএফ সংস্করণ) সংযোগগুলি দেখায়। SpeedStepperSetup স্কেচে SERIAL ডিফাইনকে #define SERIAL Serial1 তে পরিবর্তন করুন
স্টেপার মোটর, পাওয়ার সাপ্লাই, ড্রাইভার এবং সুরক্ষা
স্টেপার মোটর অনেক ধরনের এবং আকার আছে। এখানে একটি দুটি কয়েল 12V 350mA স্টেপার মোটর পরীক্ষার জন্য ব্যবহৃত হয়। এই স্টেপারকে পাওয়ার জন্য আপনার 12V বা তার বেশি এবং 350mA এর বেশি পাওয়ার সাপ্লাই দরকার।
এই লাইব্রেরি শুধুমাত্র একটি দিক এবং ধাপ আউটপুট প্রদান করে যাতে আপনার স্টেপার মোটরের সাথে ইন্টারফেস করার জন্য একজন ড্রাইভারের প্রয়োজন হয়। ইজি ড্রাইভার এবং বিগ ইজি ড্রাইভার মোটরের কয়েলে কারেন্ট নিয়ন্ত্রণ করে যাতে আপনি উচ্চ ভোল্টেজের পাওয়ার সাপ্লাই নিরাপদে ব্যবহার করতে পারেন, উদাহরণস্বরূপ 3.3V মোটরের জন্য 6V সাপ্লাই ব্যবহার করে। সহজ ড্রাইভার 150mA/কুণ্ডলী এবং 700mA/কুণ্ডলীর মধ্যে সরবরাহ করতে পারে। উচ্চতর স্রোতের জন্য, বিগ ইজি ড্রাইভার প্রতি কয়েল 2A পর্যন্ত সরবরাহ করতে পারে। সহজ ড্রাইভ পৃষ্ঠার নীচে FAQ পড়ুন।
এই উদাহরণগুলি ধাপ এবং দিকনির্দেশ আউটপুট হিসাবে D6 এবং D7 ব্যবহার করে। আপনি স্কেচের শীর্ষে STEP_PIN এবং DIR_PIN সেটিংস পরিবর্তন করে আউটপুট পিনগুলি যেকোন ডিজিটাল আউটপুটে পরিবর্তন করতে পারেন।
স্পার্কফুন রেডবোর্ড টার্বো প্রোগ্রামিং
রেডবোর্ড টার্বো প্রোগ্রামিং সমস্যাযুক্ত।যদি এটি প্রোগ্রাম করতে ব্যর্থ হয়, তাহলে প্রথমে রিসেট পুশ বাটন টিপুন এবং আরডুইনো টুলস মেনুতে COM পোর্টটি পুনরায় নির্বাচন করুন এবং পুনরায় চেষ্টা করুন। যদি এটি কাজ না করে, রিসেট পুশ বোতামটি ডবল চাপুন এবং আবার চেষ্টা করুন।
সহজ ড্রাইভার তারের
দুটি কয়েল স্টেপার মোটরগুলিতে 4 টি তার রয়েছে। প্রতিটি কয়েলের সাথে সংযুক্ত জোড়া খুঁজে বের করার জন্য একটি মাল্টিমিটার ব্যবহার করুন এবং তারপর একটি কয়েলকে ইজি ড্রাইভার এ টার্মিনালে এবং অন্য কয়েলকে বি টার্মিনালে সংযুক্ত করুন। এটা কোন ব্যাপার না যে আপনি তাদের চারপাশে ঘুরিয়ে দিন কারণ আপনি সেটআপ মেনুতে s cmd ব্যবহার করতে পারেন আন্দোলনের দিক পরিবর্তন করতে।
মোটর পাওয়ার সাপ্লাই এম+ এবং জিএনডি -তে যুক্ত করা হয়েছে 3/5V লিঙ্ক দিয়ে বোর্ডের লজিক লেভেল সেট করুন। 3.3V মাইক্রোপ্রসেসর আউটপুটের জন্য লিঙ্কটি একসাথে সংক্ষিপ্ত করুন, যেমন স্পার্কফুন রেডবোর্ড টার্বো (যদি আপনি এটি খোলা রাখেন তবে এটি 5V ডিজিটাল সিগন্যালগুলির জন্য উপযুক্ত, যেমন ইউএনও, মেগা) মাইক্রোপ্রসেসর GND এবং ধাপ এবং dir আউটপুট পিন মোটর চালানোর জন্য অন্য কোন সংযোগের প্রয়োজন নেই।
ইউএসবি থেকে টিটিএল সিরিয়াল কেবল
ইউনো/মেগা থেকে রেডবোর্ড টার্বোতে SpeedStepperSetup স্কেচ সরানোর সময় আপনি রেডবোর্ড টার্বো ইউএসবি সিরিয়াল কানেকশন অনুসারে #define সিরিয়াল সিরিয়ালকে #ডিফাইন সিরিয়াল সিরিয়াল ইউএসবি দিয়ে প্রতিস্থাপন করতে পারেন, তবে আপনি দেখতে পাবেন যে স্টেপার লেটেন্সি প্রায় 10mS। ইউএনওর জন্য এটি 10x ধীর। এটি কিভাবে রেডবোর্ড সিপিইউ ইউএসবি সংযোগ পরিচালনা করে। এটি আসার জন্য, একটি USB টিটিএল সিরিয়াল কেবলকে D0/D1 এর সাথে সংযুক্ত করুন এবং#সংজ্ঞায়িত করুন সিরিয়াল সিরিয়াল 1 স্টেপার মোটর নিয়ন্ত্রণ করতে হার্ডওয়্যার সিরিয়াল সংযোগ ব্যবহার করুন। Serial1 ব্যবহার করে LATENCY: stepper: 345uS loop: 2016uS যা স্টেপার এবং লুপ বিলম্বের জন্য UNO এর চেয়ে 3 গুণ দ্রুত
টার্মিনাল প্রোগ্রাম
স্টেপার মোটর নিয়ন্ত্রণ করার জন্য Arduino সিরিয়াল মনিটর ব্যবহার করা একটু কঠিন কারণ আপনাকে cmd লাইনে চরে প্রবেশ করতে হবে এবং তারপর এটি পাঠাতে Enter চাপুন। একটি দ্রুততর আরও প্রতিক্রিয়াশীল উপায় হল টার্মিনাল উইন্ডো, PC এর জন্য TeraTerm (বা CoolTerm Mac), USB থেকে TTL কেবল COM পোর্টের সাথে সংযুক্ত। তারপর সেই উইন্ডোতে একটি cmd কী চাপলে তা অবিলম্বে পাঠায়। এন্টার টিপে শুধু একটি ফাঁকা লাইন পাঠান।
মোটরের গতি পরিসীমা নির্ধারণ করা
উপরে ওয়্যার্ড হিসাবে, ইজি ড্রাইভটি 1/8 তম ধাপের জন্য কনফিগার করা হয়েছে, তাই 1000 ধাপ/সেকেন্ড মোটরকে 1000/8/200 ধাপ/বিপ্লব = 0.625 প্রতি সেকেন্ড বা সর্বোচ্চ 37.5 আরপিএম এ ঘুরিয়ে দেবে। MS1/MS2 এ ইনপুট পরিবর্তন করে আপনি 1/8, ¼, ½ এবং সম্পূর্ণ ধাপের মধ্যে পরিবর্তন করতে পারেন। সম্পূর্ণ পদক্ষেপের জন্য MS1 এবং MS2 উভয়কে GND এর সাথে সংযুক্ত করুন। এটি 300 rpm পর্যন্ত গতিতে অনুমতি দেবে। উপযুক্ত MS1/MS2 সেটিংস নির্বাচন করা আপনাকে মোটর এবং চালিত অংশের মধ্যে ইনস্টল করা গিয়ার অনুপাতের জন্য সামঞ্জস্য করতে দেয়।
হার্ডওয়্যার সুরক্ষা
যদিও স্পিডস্টেপার লাইব্রেরি আপনাকে মোটর চলাচলের উপর অবস্থানের সীমা নির্ধারণ করতে দেয়, সফ্টওয়্যার দ্বারা ধাপের আউটপুট গণনা করে অবস্থানের ট্যাকিং করা হয়। যদি মোটর স্টল করে, অর্থাৎ পরবর্তী ধাপে মোটর চালানোর জন্য টর্ক অপর্যাপ্ত হয় তাহলে সফটওয়্যারের অবস্থান মোটরের অবস্থানের সাথে সিঙ্কের বাইরে থাকবে। তারপর যখন আপনি 'goHome' কমান্ড ব্যবহার করবেন তখন মোটরটি বাড়ির অবস্থানকে ওভারশুট করবে। হার্ডওয়্যারের ক্ষতি রোধ করতে আপনার মোটর পাওয়ার সাপ্লাই সংযোগ বিচ্ছিন্ন করার জন্য হার্ড লিমিটের লিমিট সুইচ ফিট করা উচিত
মোটর বর্তমান সীমা নির্ধারণ
প্রথমে, এটিকে পোটেন্টিওমিটারের সর্বনিম্ন সেটিংয়ে সেট করুন। অর্থাৎ TP1 এ ভোল্টেজ সর্বনিম্ন। পোটেন্টিওমিটারটি সূক্ষ্ম, তাই যান্ত্রিক স্টপগুলির পরে পটেন্টিওমিটারকে জোর করবেন না। ধীর স্থির গতিতে মোটর চালনাকে একটি ধীর গতিতে সেট করুন, তারপর ধীরে ধীরে পটেন্টিওমিটারটি চালু করুন যতক্ষণ না মোটরটি ধাপের মধ্যে চলে না যায় বা ধাক্কা না খায়।
উপসংহার
এই প্রকল্পটি দেখায় কিভাবে ব্যবহারিক প্রয়োগে SpeedStepper লাইব্রেরি ব্যবহার করতে হয়। যদিও অ্যাকসেলস্টেপার লাইব্রেরি ভাল অবস্থান নিয়ন্ত্রণ প্রদান করে, ইউরোপা জৈবিক নমুনা সংগ্রহের জন্য প্রোটোটাইপ আইস-গলানোর প্রোবের জন্য গতি নিয়ন্ত্রণের প্রয়োজন ছিল তাই শেষ সীমা এবং একটি গো-হোম ফাংশন সহ গতি নিয়ন্ত্রণ প্রদানের জন্য অ্যাকসেলস্টেপার লাইব্রেরিটি পুনরায় লেখা হয়েছিল।
প্রস্তাবিত:
একটি মেনু এবং উজ্জ্বলতা নিয়ন্ত্রণ সহ M5StickC কুল লুকিং ওয়াচ: 8 টি ধাপ
মেনু এবং ব্রাইটনেস কন্ট্রোল সহ M5StickC কুল লুকিং ওয়াচ: এই টিউটোরিয়ালে আমরা শিখব কিভাবে ESP32 M5Stack StickC কে Arduino IDE এবং Visuino দিয়ে LCD তে সময় প্রদর্শন করতে হয় এবং মেনু এবং স্টিকক বোতাম ব্যবহার করে সময় এবং উজ্জ্বলতাও নির্ধারণ করে। একটি বিক্ষোভ ভিডিও দেখুন
ডিসি মোটর হাতের অঙ্গভঙ্গি নিয়ন্ত্রণ গতি এবং দিক নির্দেশনা ব্যবহার করে Arduino: 8 টি ধাপ
আরডুইনো ব্যবহার করে ডিসি মোটর হাতের অঙ্গভঙ্গি নিয়ন্ত্রণের গতি এবং দিকনির্দেশ: এই টিউটোরিয়ালে আমরা শিখব কিভাবে একটি ডিসি মোটরকে হাতের ইশারায় Arduino এবং Visuino ব্যবহার করে নিয়ন্ত্রণ করতে হয়। ভিডিওটি দেখুন! এছাড়াও এটি দেখুন: হাতের অঙ্গভঙ্গি টিউটোরিয়াল
সার্ভো মোটর এবং গতি নিয়ন্ত্রণ ব্যবহার করে ঘোরানো ফ্যান: 6 টি ধাপ
সার্ভো মোটর এবং স্পীড কন্ট্রোল ব্যবহার করে ফ্যান ঘোরানো: এই টিউটোরিয়ালে আমরা শিখব কিভাবে সার্ভো মোটর, পটেন্টিওমিটার, আরডুইনো এবং ভিসুইনো ব্যবহার করে অ্যাডজাস্টেবল স্পিড দিয়ে ফ্যান ঘুরাতে হয়। ভিডিওটি দেখুন
Arduino- এর সাথে জিঙ্গেল বেলের গতি নিয়ন্ত্রণ করুন: 4 টি ধাপ
আরডুইনো দিয়ে জিঙ্গেল বেলের গতি নিয়ন্ত্রণ করুন: এই নির্দেশনাটি আপনাকে দেখাবে কিভাবে আরডুইনো দ্বারা চালিত নোটগুলির সাথে সামঞ্জস্যপূর্ণ একটি স্ট্রিপ এলইডি প্রোগ্রাম করতে হয়। আপনি ফটোরিসিস্টর থেকে আপনার হাত কাছাকাছি বা আরও দূরে এনে গানের গতি বা গতি কমিয়ে দিতে পারেন। আমার উদাহরণ হল J গানটির সাথে
Arduino এবং ব্লুটুথ মডিউল (HC-05) ব্যবহার করে ব্রাশহীন ডিসি মোটরের গতি নিয়ন্ত্রণ করুন: 4 টি ধাপ
Arduino এবং ব্লুটুথ মডিউল (HC-05) ব্যবহার করে ব্রাশহীন ডিসি মোটরের গতি নিয়ন্ত্রণ করুন: ভূমিকা এই টিউটোরিয়ালে, আমরা Arduino UNO, ব্লুটুথ মডিউল (HC-05) এবং ব্লুটুথের জন্য অ্যান্ড্রয়েড অ্যাপ্লিকেশন ব্যবহার করে ব্রাশহীন ডিসি মোটরের গতি নিয়ন্ত্রণ করতে যাচ্ছি ( আরডুইনো ব্লুটুথ কন্ট্রোলার)