Arduino/C2/Pulse-Width-Modulation/Bengali

From Script | Spoken-Tutorial
Revision as of 16:49, 14 July 2020 by Kaushik Datta (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Time Narration
00:01 Pulse Width Modulation এর স্পোকেন টিউটোরিয়ালে আপনাদর স্বাগত।
00:06 এই টিউটোরিয়ালে আমরা PWM i.e Pulse Width modulation
00:13 PWM Duty Cycle
00:16 PWM Frequency

L293D Motor Driver IC সম্পর্কে শিখব।

00:24 টিউটোরিয়ালটি অনুসরণ করতে আপনার:

Electronics এবং C or C++ প্রোগ্রামিংয়ের ভাষার প্রাথমিক জ্ঞান থাকা উচিত।

00:35 টিউটোরিয়ালটি রেকর্ড করতে ব্যবহার করছি:

Arduino Uno board

00:40 Ubuntu Linux 16.04 OS

Arduino IDE

00:46 আমাদের

breadboard

00:53 10K Ohm Potentiometer

LED

00:58 220 ohm Resistor
01:01 Jumper Wires

Push Button

01:05 DC Motor
01:08 এবং L293D Motor Driver IC এর মত বাহ্যিক components এরও প্রয়োজন।
01:14 PWM signal একটি বর্গাকার তরঙ্গ সংকেত যাতে 1KHz এর উচ্চ ফ্রিকোয়েন্সি থাকে।
01:22 1KHz একটি কৌশল যা দিয়ে pulse এর প্রস্থ বিস্তৃত হয়।
01:28 এটি তরঙ্গের ফ্রিকোয়েন্সি স্থির রাখার সময় করা হয়।
01:33 PWM signal এ দুটি প্রধান বৈশিষ্ট্য রয়েছে যা এর গতিবিধি সংজ্ঞায়িত করে।
01:40 তারা হল Duty Cycle এবং Frequency.
01:44 এটি হল সময়ের শতাংশ, digital signal পূর্ণ সময়কাল অন থাকে।
01:50 Duty cycle 0% থেকে 100% পর্যন্ত বদলাতে পারে।
01:55 duty cycle এর শতাংশ গণনা করার সূত্র এখানে দেখানো হয়েছে।
02:01 tON সেই সময়কালের সমান যখন signal হাই থাকে।
02:06 tOFF সেই সময়কালের সমান যখন signal লো থাকে।
02:11 Time Period, tON + tOFF রয়েছে।

অর্থাৎ এটি PWM signal এর on সময় এবং off সময়ের যোগফলের সমান।

02:24 ফ্রিকোয়েন্সি এটি নির্ধারণ করে যে PWM, cycle কে কত দ্রুত পূর্ণ করে।
02:29 অর্থাৎ এটি কত দ্রুত HIGH থেকে LOW স্থিতিতে বদলায়।
02:34 আমরা duty cycle বদলে একটি সাধারণ প্রয়োগ করব।
02:39 এটি LED এর উজ্জ্বলতা নিয়ন্ত্রণ করবে।
02:43 Arduino Uno তে 6 PWM channels রয়েছে।
02:48 Arduino Uno এর পিন 3, 5, 6, 9, 10, 11 হল PWM channels.
02:58 PWM channels, tilde চিহ্ন দ্বারা চিহ্নিত করা হয়েছে।
03:02 এখন সার্কিট সংযোগটি দেখি।
03:05 220 ohm resistor এর মাধ্যমে LED এর anode লেগ Arduino এর পিন 9 এর সাথে জুড়ুন।
03:13 LED এর cathode লেগকে ground এ যুক্ত করুন।
03:17 এটি সংযোগের লাইভ সেটআপ।
03:20 ছবিতে দেখানো অনুযায়ী সংযোগ করুন।
03:23 Arduino IDE খুলি।

আমরা PWM পিন ব্যবহার করে LED এর উজ্জ্বলতা বদলাতে একটি প্রোগ্রাম লিখব।

03:32 দেখানো অনুযায়ী কোড লিখুন।
03:35 আমরা PWM pin 9 কে variable LED_Pin এ নিয়োগ করেছি।
03:42 আমরা LED কে টার্ন ON করতে duty_cycle value কে 1 হিসাবে শুরু করেছি।
03:51 void setup এর ভিতরে, আমরা pinMode function লিখব।
03:56 আমরা Arduino এর pin 9 কে OUTPUT হিসাবে ঘোষণা করেছি।
04:01 void loop function এর ভিতরে আমরা এই কোডটি লিখব।

কোড ব্যাখ্যা করুন।

04:08 লুপ ততক্ষন কোডকে নিষ্পাদিত করে যতক্ষণ duty_cycle_value, 255 এর কম না হয়।
04:17 analogWrite() function এর ব্যবহার PWM signal বানাতে করা হয়।
04:22 আমরা দুটি parameters পাস করছি। অর্থাৎ PWM পিন নম্বর এবং duty cycle ভ্যালু।
04:30 duty cycle এর ভ্যালু 0 থেকে 255 অর্থাৎ 0 ভোল্ট এবং 5 ভোল্টের মাঝে হতে হবে।
04:40 আমরা 3000 মিলিসেকেন্ড অর্থাৎ 3 সেকেন্ডের delay রাখব।
04:46 আপনার program যাচাই করতে compile বোতামে ক্লিক করুন।
04:51 বর্তমান program সংরক্ষণ করতে একটি পপ আপ উইন্ডো দেখাবে।
04:55 program কে LED_Brightness হিসাবে সংরক্ষণ করুন এবং Save বোতামে ক্লিক করুন।
05:03 এখন Arduino বোর্ডে বর্তমান program আপলোড করতে upload বোতামে ক্লিক করুন।
05:09 আমরা দেখতে পাই যে LED এর উজ্জ্বলতা ধীরে ধীরে বৃদ্ধি পাচ্ছে।
05:15 এরপর আমরা DC motor এর গতি এবং দিক নিয়ন্ত্রণ করতে একটি প্রয়োগ করব।
05:22 এটি L293D motor driver IC এর pinout ডায়াগ্রাম।
05:28 motor এর গতি IC এর EN 1 এবং EN 2 দ্বারা নিয়ন্ত্রিত হয়।
05:36 motor এর দিক IC এর IN1, IN2, IN3, IN4 দ্বারা নিয়ন্ত্রিত হয়।
05:45 আমরা এই IC ব্যবহার করে একবারে 2 টি motors নিয়ন্ত্রণ করতে পারি।
05:50 আমাদের প্রয়োগে আমরা শুধুমাত্র একটি DC motor যোগ করব।
05:55 এখন সার্কিট সংযোগ দেখি।
05:58 driver IC এর পিন 1, পিন 8 এবং পিন 16, 5V এ যুক্ত রয়েছে।
06:05 driver IC এর পিন 4 এবং পিন 5 ground এ যুক্ত রয়েছে।
06:11 driver IC এর পিন 2 এবং পিন 7 Arduino এর পিন 11 এবং পিন 10 এর সাথে যুক্ত রয়েছে।
06:20 2 push buttons, Arduino এর পিন 12 এবং পিন 13 এর সাথে যুক্ত রয়েছে।
06:27 এই push buttons এর ব্যবহার DC motor এর দিক নিয়ন্ত্রণ করতে করা হয়।
06:33 10Kohm potentiometer, DC motor এর গতি নিয়ন্ত্রণ করতে যুক্ত থাকে।
06:39 potentiometer এর মাঝারি পিন analog পিন A0 এর সাথে যুক্ত।
06:45 driver IC এর পিন 3 এবং পিন 6 DC motor এর সাথে যুক্ত রয়েছে।
06:51 চিত্রে দেখানো অনুযায়ী সংযোগ করুন।
06:55 এটি সংযোগের লাইভ সেটআপ, যেমনকি চিত্রে দেখানো হয়েছে।
07:00 আমি motor এর শাফটে একটি চাকা স্থির করেছি।
07:04 এটি motor এর ঘূর্ণন এবং গতির পরিবর্তন স্পষ্টভাবে দেখতে সহায়তা করবে।
07:10 এখন আমরা এই সার্কিটটি চালু করতে একটি প্রোগ্রাম লিখব।
07:14 Arduino IDE তে যান।
07:18 এখানে দেখানো অনুযায়ী কোড লিখুন।

আমরা Arduino এবং driver IC এর মাঝে সংযোগ শুরু করেছি।

07:28 Potentiometer পিনটি analog পিন A0 এর সাথে যুক্ত।
07:33 fwdbuttonPin, Arduino এর পিন 13 এর সাথে যুক্ত push button এর জন্য ভ্যারিয়েবল।
07:40 bckbuttonPin, Arduino এর পিন 12 এর সাথে যুক্ত push button এর জন্য ভ্যারিয়েবল।
07:47 ICpin2 এবং ICpin7 হল ভ্যারিয়েবল যা IC এর পিন 2 এবং পিন 7 কে নির্দেশ করে।
07:57 তারা যথাক্রমে Arduino এর পিন 11 এবং পিন 10 এ যুক্ত রয়েছে।
08:04 প্রথমে আমরা নিশ্চিত করে নেই যে potentiometer, motor এবং push buttons, LOW অবস্থায় রয়েছে।

তার জন্য আমরা এটিকে 0 তে সূচনা করেছি।

08:15 void setup function এ, আমরা এই কোডটি লিখব।
08:20 pinMode function পিনগুলি INPUT বা OUTPUT হিসাবে সংজ্ঞায়িত করে।
08:25 fwdbuttonPin এবং bckbuttonPin, INPUT_PULLUP মোডে সেট করা রয়েছে।
08:32 এই মোডে আমরা Arduino এর অভ্যন্তরীণ pull-up resistors ব্যবহার করছি।
08:38 INPUT_PULLUP মোড সম্পর্কে জানতে ম্যানুয়ালটি দেখুন।
08:44 Arduino IDE তে Help menu তে ক্লিক করুন।

তারপর Reference এ ক্লিক করুন।

08:50 এটি আপনার ব্রাউজারে একটি অফলাইন পৃষ্ঠা খুলবে।

নীচে স্ক্রোল করুন।

08:55 INPUT_PULLUP এ ক্লিক করুন।
09:00 Arduino IDE তে ফিরে যান।
09:03 ICpin2 এবং ICpin7, motor চালানোর জন্য OUTPUT মোডে সেট রয়েছে।
09:10 এরপর আমরা কোড void loop function এ লিখব।
09:14 analogRead command, potentiometer থেকে analog মান পড়বে।
09:20 এই মানটি analog পিন A0 কে দেওয়া হবে।
09:24 potentiometer মানের ভিত্তিতে motor এর গতি বদলাবে।
09:30 map command, analog মানকে digital এ বদলাবে।
09:35 push button টেপা থাকলে, fwdbuttonState এবং bckbuttonState, signal ফেচ করবে।
09:43 push button এর সাথে জুড়িত পিন 12 বা পিন 13 টেপা থাকলে, IF command তা যাচাই করে।
09:50 এটি motor কে ঘড়ির কাঁটার দিকে বা বিপরীতে ঘূর্ণনে সক্ষম করে।
09:56 ধরুন আমরা দুটি বোতামের কোনোটি টিপছি না।
10:00 তাহলে else command নিশ্চিত করে যে motor, OFF স্থিতিতে রয়েছে।
10:05 এই কোড টিউটোরিয়ালের Code Files লিঙ্কে উপলব্ধ। আপনি এটি ডাউনলোড করে ব্যবহার করতে পারেন।
10:13 program যাচাই করতে compile বোতামে ক্লিক করুন।
10:17 প্রোগ্রামটি PWM_Motor হিসাবে সংরক্ষণ করুন এবং Save বোতামে ক্লিক করুন।
10:25 এখন Arduino তে বর্তমান program আপলোড করতে upload বোতামে ক্লিক করুন।
10:31 এখন আমরা উপরোক্ত program এর আউটপুট দেখবো।
10:35 আমি push button টিপব যা পিন 13 এর সাথে যুক্ত।
10:39 আমরা motor ঘড়ির কাঁটার দিকে ঘুরতে দেখি।
10:43 এখন আমি push button ছেড়ে দেবো।
10:47 motor ঘোরা বন্ধ করবে এবং এটি OFF অবস্থায় থাকবে।
10:52 এখন আবার, আমি পিন 12 এ যুক্ত push button টিপব।
10:57 আমরা দেখতে পারি যে motor ঘড়ির কাঁটার বিপরীত দিকে ঘুরছে।
11:02 আমরা A0 এর সাথে যুক্ত potentiometer সামঞ্জস্য করে motor এর গতি বদলাতে পারি।
11:14 এটি আমাদের টিউটোরিয়ালের শেষে নিয়ে আসে। সংক্ষিপ্তকরণ করি।
11:20 এখানে আমরা শিখেছি

Pulse Width modulation

11:26 PWM Duty Cycle
11:29 PWM Frequency এবং DC motor এর গতি এবং দিক কিভাবে নিয়ন্ত্রণ করে।
11:38 অনুশীলনী হিসাবে:

উপরোক্ত সার্কিট সংযোগে LED এর বদলে Buzzer যুক্ত করুন।

11:45 একই প্রোগ্রাম আপলোড করুন এবং আউটপুট যাচাই করুন।
11:49 আপনি বিভিন্ন ফ্রিকোয়েন্সি সহ একটি শব্দ শুনতে পাবেন।
11:53 এখানে অনুশীলনীর ফলাফল রয়েছে।
12:01 নিম্ন লিঙ্কে ভিডিওটি স্পোকেন টিউটোরিয়াল প্রকল্পকে সারাংশিত করে। এটি ডাউনলোড করুন এবং দেখুন।
12:09 স্পোকেন টিউটোরিয়াল প্রকল্প দল কর্মশালার আয়োজন করে এবং প্রশংসাপত্র দেয়। আরও তথ্যের জন্য, আমাদের লিখুন।
12:19 এই ফোরামে আপনার সময়সীমার প্রশ্নগুলি পোস্ট করুন।
12:23 Spoken Tutorial প্রকল্প ভারত সরকারের NMEICT, MHRD দ্বারা সমর্থিত।
12:29 এই টিউটোরিয়ালটিতে আই আই টী বোম্বে এর Spoken Tutorial এবং FOSSEE এর অবদান রয়েছে।

আমি কৌশিক দত্ত বিদায় নিচ্ছি। অংশগ্রহনের জন্য ধন্যবাদ।

Contributors and Content Editors

Kaushik Datta