সুচিপত্র:
- ধাপ 1: 50Hz এর জন্য Pwm সংকেত তৈরি করা
- ধাপ 2: ভেরিয়েবল ডিউটি সাইকেলের জন্য আরডুইনো প্রোগ্রাম
- ধাপ 3: 50Hz Arduino Pins এ বিকল্প
- ধাপ 4: একটি এইচ ব্রিজ চালানো এবং Pwm সিগন্যাল ফিল্টার করা
ভিডিও: Inverters জন্য Arduino Sinewave: 4 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:02
এই প্রকল্পে আমি দুটি arduino pwm ডিজিটাল আউটপুট থেকে একটি SPWM (সাইন ওয়েভ পালস ওয়াইড মডুলেটেড) সিগন্যাল তৈরি করেছি।
কারণ এই ধরনের একটি প্রোগ্রাম তৈরি করার জন্য আমাকে আরডুইনো এর অন্যান্য অনেক ফাংশন এবং বৈশিষ্ট্যের কথা বলতে হবে অসিলোস্কোপ ইমেজ সহ সম্পূর্ণ প্রকল্প এবং বিভিন্ন ফ্রিকোয়েন্সিগুলির জন্য দয়া করে আমার ওয়েবসাইট দেখুন:
eprojectszone
ধাপ 1: 50Hz এর জন্য Pwm সংকেত তৈরি করা
উচ্চ ফ্রিকোয়েন্সি একটি 50Hz সংকেত উৎপন্ন করার জন্য কিছু গণনা করা আবশ্যক। Arduino থেকে ফ্রিকোয়েন্সি 8MHz এ হতে পারে, কিন্তু আমরা পরিবর্তনশীল ডিউটি চক্র সহ একটি সংকেত চাই।
Arduino এর ভেরিয়েবল ডিউটি চক্রের ধরন বুঝতে আপনি একই পোস্ট 1, 2 এবং 3 এর এই 3 টি অংশ পড়তে পারেন।
ধরা যাক আমাদের ফ্রিকোয়েন্সি 50Hz এর মানে সময়কাল 20ms। সুতরাং 10ms অর্ধচক্র সময়কাল। সেই 10 মিটারে আমাদের বিভিন্ন ডিউটি চক্রের সাথে ছোট ডিউটি চক্র থেকে শুরু করে অনেক ডাল থাকা দরকার, সিগন্যালের মাঝখানে আমাদের সর্বাধিক ডিউটি চক্র আছে এবং ছোট ডিউটি চক্র দিয়েও শেষ হয়। একটি সাইন ওয়েভ তৈরি করার জন্য আমরা দুটি পিন ব্যবহার করব ইতিবাচক অর্ধচক্র এবং নেতিবাচক অর্ধচক্রের জন্য একটি। এর জন্য আমাদের পোস্টে আমরা পিন 5 এবং 6 ব্যবহার করি যার মানে টাইমার 0।
একটি মসৃণ সিগন্যালের জন্য আমরা ফ্রিকোয়েন্সি 31372 Hz- এ ফেজ সঠিক pwm নির্বাচন করি-আগের পোস্টটি দেখুন সবচেয়ে বড় সমস্যা হল যে আমরা প্রতিটি পালসের জন্য প্রয়োজনীয় শুল্ক চক্র কিভাবে গণনা করি। সুতরাং, যেহেতু আমাদের ফ্রিকোয়েন্সি হল f = 31372Hz প্রতিটি পালসের সময়কাল হল T = 1/31372 = 31.8 আমাদের, তাই অর্ধচক্রের জন্য ডালের সংখ্যা N = 10ms/31.8us = 314 ডাল। এখন প্রতিটি পালসের জন্য ডিউটি চক্র গণনা করার জন্য আমাদের y = sinx আছে, কিন্তু এই সমীকরণে আমাদের ডিগ্রী দরকার তাই অর্ধ চক্রের 314 ডালের জন্য 180 ডিগ্রি আছে। প্রতিটি পালসের জন্য আমাদের 180/314 = 0.57deg/পালস আছে। তার মানে প্রতিটি নাড়ির জন্য আমরা 0.57 ডিগ্রি নিয়ে এগিয়ে যাই।
y হল দায়িত্ব চক্র এবং x অর্ধ কর্তব্য চক্রের অবস্থানের মান। প্রথমে x হল 0, afetr যে x = 0.57, x = 1.14 এবং তাই x = 180 পর্যন্ত।
যদি আমরা 314 টি মান গণনা করি তবে আমরা একটি অ্যারে 314 উপাদান পাই (arduino দ্বারা সহজে গণনা করার জন্য "int" টাইপ করুন)।
এই ধরনের অ্যারে হল:
int sinPWM = {1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
আপনি দেখতে পারেন যে একটি সাইন ওয়েভের মত ডিউটি চক্রটি প্রথম এবং শেষ উপাদানতে সর্বনিম্ন এবং মাঝখানে সর্বোচ্চ।
ধাপ 2: ভেরিয়েবল ডিউটি সাইকেলের জন্য আরডুইনো প্রোগ্রাম
উপরের ছবিতে আমরা অ্যারে থেকে মান সহ পরিবর্তনশীল দায়িত্ব চক্র সংকেত আছে।
কিন্তু কিভাবে এই ধরনের সংকেত তৈরি করবেন ??
নিচের প্রোগ্রামের অংশ ডিউটি চক্রের মান পরিবর্তন করতে ইন্টারাপ্ট ব্যবহার করে
sei (); // ইন্টারাপ্ট সক্ষম করুন
}
ISR (TIMER1_COMPA_vect) {// বাধা যখন টাইমার 1 OCR1A মানের সাথে মিলে যায়
যদি (i> 313 && OK == 0) {// পিন 6 এর জন্য ভেক্টর থেকে চূড়ান্ত মান
i = 0; // ভেক্টরের প্রথম মান (অ্যারে) এ যান
ঠিক আছে = 1; // পিন 5 সক্ষম করুন
}
x = sinPWM ; // x ভেক্টর থেকে পজিশন i (i শূন্য সূচী) এর মান নিন
i = i+1; // পরবর্তী অবস্থানে যান
}
ধাপ 3: 50Hz Arduino Pins এ বিকল্প
কারণ প্রতিটি পিন একটি পূর্ণ সাইন ওয়েভ তৈরি করতে মাত্র অর্ধ ডিউটি চক্র উৎপন্ন করে আমরা দুটি পিন ব্যবহার করি যা সঠিক 10mseconds (50Hz) এর পর একের পর এক বিকল্প হয়। পিনের এই পরিবর্তনটি অ্যারের শেষে তৈরি করা হয়েছে- বলা যাক পিন 5 এর 314 ডাল উৎপন্ন হয়েছে এই পিনটি বন্ধ এবং সক্রিয় পিন 6 যা একই কাজ করে কিন্তু নেগেটিভ ডিউটি চক্রের জন্য।
কারণ arduino শুধুমাত্র ইতিবাচক সংকেত উৎপন্ন করতে পারে নেগেটিভ ডিউটি চক্র h সেতুতে তৈরি করা হয়- আপনি এখানে এটি সম্পর্কে পড়তে পারেন
পিন পরিবর্তনের জন্য প্রোগ্রাম:
sei (); // ইন্টারাপ্ট সক্ষম করুন
}
ISR (TIMER1_COMPA_vect) {// বাধা যখন টাইমার 1 OCR1A মানের সাথে মিলে যায়
যদি (i> 313 && OK == 0) {// পিন 6 এর জন্য ভেক্টর থেকে চূড়ান্ত মান
i = 0; // ভেক্টরের প্রথম মানটিতে যান
ঠিক আছে = 1; // পিন 5 সক্ষম করুন
}
যদি (i> 313 && OK == 1) {// পিন 5 এর জন্য ভেক্টর থেকে চূড়ান্ত মান
i = 0; // ভেক্টরের প্রথম মানটিতে যান
ঠিক আছে = 0; // পিন 6 সক্ষম করুন
}
x = sinPWM ; // x ভেক্টর থেকে অবস্থান i এর সাথে মান নিন (আমি শূন্য সূচী)
i = i+1; // পরবর্তী অবস্থানে যান
যদি (ঠিক আছে == 0) {
OCR0B = 0; // পিন 5 0 করুন
OCR0A = x; // সংশ্লিষ্ট ডিউটি চক্রের জন্য পিন 6 সক্ষম করুন
যদি (ঠিক আছে == 1) {
OCR0A = 0; // পিন 6 0 করুন
OCR0B = x; // সংশ্লিষ্ট ডিউটি চক্রের জন্য পিন 5 সক্ষম করুন
}
}
ধাপ 4: একটি এইচ ব্রিজ চালানো এবং Pwm সিগন্যাল ফিল্টার করা
Arduino থেকে প্রাপ্ত সংকেতগুলি বৈদ্যুতিন সংকেতের মেরু বদল অ্যাপ্লিকেশনগুলির নিয়ন্ত্রণ অংশ কারণ উভয়ই ইতিবাচক। একটি পূর্ণ সাইন ওয়েভ এবং একটি ব্যবহারিক বৈদ্যুতিন সংকেতের মেরু বদল করার জন্য আমাদের একটি h সেতু ব্যবহার করতে হবে এবং pwm একটি কম পাস ফিল্টার পরিষ্কার করতে হবে।
এইচ ব্রিজ এখানে উপস্থাপন করা হয়েছে।
ছোট এসি মোটর দিয়ে পরীক্ষা করা কম পাস ফিল্টার-এখানে।
প্রস্তাবিত:
অ্যান্ড্রয়েড ডিভাইসের জন্য বাহ্যিক ব্লুটুথ জিপিএস প্রদানকারীর জন্য সেটআপ: 8 টি ধাপ
অ্যান্ড্রয়েড ডিভাইসের জন্য বহিরাগত ব্লুটুথ জিপিএস প্রদানকারীর জন্য সেটআপ: এই নির্দেশাবলী ব্যাখ্যা করবে কিভাবে আপনার ফোনের জন্য আপনার নিজস্ব বহিরাগত ব্লুটুথ-সক্ষম জিপিএস তৈরি করতে হবে, যেটুকু মাত্র $ 10 তে জ্বালান। উপকরণ বিল: NEO 6M U-blox GPSHC-05 ব্লুটুথ মডিউল ব্লুটুথ লো এনার্জি মডিউলগুলিকে ইন্টারফেস করা হচ্ছে আরডুই
কণা দূষণের জন্য বায়ুর গুণমান পর্যবেক্ষণের জন্য সিস্টেম: 4 টি ধাপ
কণা দূষণের জন্য বায়ুর গুণমান পর্যবেক্ষণের জন্য সিস্টেম: ভূমিকা: 1 এই প্রকল্পে আমি দেখাব কিভাবে ডেটা ডিসপ্লে, এসডি কার্ডে ডেটা ব্যাকআপ এবং আইওটি দিয়ে কণা ডিটেক্টর তৈরি করতে হয়। দৃশ্যত একটি নিওপিক্সেল রিং ডিসপ্লে বাতাসের গুণমান নির্দেশ করে। 2 বায়ুর মান একটি ক্রমবর্ধমান গুরুত্বপূর্ণ উদ্বেগ
আনলক থাকার জন্য অ্যান্ড্রয়েড/আইওএস/ডব্লিউআইএন 10 ডিভাইসের জন্য একটি নিরাপদ অঞ্চল তৈরি করুন: 6 টি ধাপ
আনলক থাকার জন্য অ্যান্ড্রয়েড/আইওএস/ডব্লিউআইএন 10 ডিভাইসের জন্য একটি নিরাপদ অঞ্চল তৈরি করুন: এই নিবন্ধে, আমরা একটি শীতল গ্যাজেট তৈরি করতে চাই যা আপনার ডিভাইসগুলিকে আনলক করার জন্য একটি নিরাপদ অঞ্চল তৈরি করতে পারে। এই প্রকল্পের শেষে আপনি: ফিঙ্গারপ্রিন্ট সেন্সর কিভাবে ব্যবহার করবেন তা শিখবেন।
Arduino এর জন্য 6 টি বোতামের জন্য 1 এনালগ ইনপুট ব্যবহার করুন: 6 টি ধাপ
Arduino এর জন্য 6 টি বাটনের জন্য 1 টি এনালগ ইনপুট ব্যবহার করুন: আমি প্রায়ই ভাবছি কিভাবে আমি আমার Arduino এর জন্য আরও ডিজিটাল ইনপুট পেতে পারি। এটি সম্প্রতি আমার কাছে ঘটেছে যে একাধিক ডিজিটাল ইনপুট আনতে আমার একটি এনালগ ইনপুট ব্যবহার করতে সক্ষম হওয়া উচিত। আমি একটি দ্রুত অনুসন্ধান করেছি এবং খুঁজে পেয়েছি লোকেরা কোথায় ছিল
নিজেকে 12V -এর জন্য পুনর্নির্মাণের পরিবর্তে LED লাইট স্ট্রিংগুলির জন্য 12V-to-AC- লাইন বৈদ্যুতিন সংকেতের মেরু বদল করার জন্য নিজেকে বোঝান: 3 ধাপ
নিজেকে 12V এর জন্য রি-ওয়ারিংয়ের পরিবর্তে LED লাইট স্ট্রিংগুলির জন্য 12V-to-AC- লাইন বৈদ্যুতিন সংকেতের মেরু বদল করার জন্য নিজেকে বোঝান: আমার পরিকল্পনাটি সহজ ছিল। আমি একটি প্রাচীর-চালিত LED আলোর স্ট্রিংকে টুকরো টুকরো করে কাটতে চেয়েছিলাম এবং 12 ভোল্ট বন্ধ করার জন্য এটিকে পুনরায় চালিত করেছিলাম। বিকল্প ছিল একটি পাওয়ার ইনভার্টার ব্যবহার করা, কিন্তু আমরা সবাই জানি তারা ভয়ানক অদক্ষ, তাই না? ঠিক? নাকি তারা?