সুচিপত্র:

Arduino যথার্থ এবং নির্ভুল ভোল্ট মিটার (0-90V ডিসি): 3 টি ধাপ
Arduino যথার্থ এবং নির্ভুল ভোল্ট মিটার (0-90V ডিসি): 3 টি ধাপ

ভিডিও: Arduino যথার্থ এবং নির্ভুল ভোল্ট মিটার (0-90V ডিসি): 3 টি ধাপ

ভিডিও: Arduino যথার্থ এবং নির্ভুল ভোল্ট মিটার (0-90V ডিসি): 3 টি ধাপ
ভিডিও: Epson অপটিক্যাল এনকোডার এবং DC মোটর সহ প্রোগ্রাম Arduino - DIY DTG সিরিজ 2024, নভেম্বর
Anonim

এই নির্দেশযোগ্য, আমি একটি ভোল্টমিটার তৈরি করেছি উচ্চ ভোল্টেজ ডিসি (0-90v) পরিমাপ করার জন্য একটি Arduino Nano ব্যবহার করে আপেক্ষিক নির্ভুলতা এবং নির্ভুলতার সাথে।

আমি যে পরীক্ষা পরিমাপ নিয়েছিলাম তা যথেষ্ট সঠিক ছিল, বেশিরভাগই একটি স্ট্যান্ডার্ড ভোল্টমিটার দিয়ে পরিমাপ করা প্রকৃত ভোল্টেজের 0.3v এর মধ্যে (আমি একটি Astro AI DM6000AR ব্যবহার করেছি)। এই ডিভাইসটি আমার উদ্দেশ্যে ব্যবহারের জন্য যথেষ্ট কাছাকাছি।

এটি আর্কাইভ করার জন্য আমি একটি ভোল্টেজ রেফারেন্স (4.096v) এবং ভোল্টেজ ডিভাইডার ব্যবহার করেছি।

কোডের পাশে, আমি অবশ্যই, Arduino Nano এর জন্য "বহিরাগত রেফারেন্স" বিকল্প এবং Arduino টিউটোরিয়ালগুলিতে "স্মুথিং" উদাহরণ ব্যবহার করেছি।

সরবরাহ

1 x Arduino Nano - লিঙ্ক

1 x Oled Display (SSD 1306) - লিঙ্ক

1 x 1/4W 1% প্রতিরোধক - 1k ওহম - লিঙ্ক

1 x 1/4W 1% প্রতিরোধক - 220k ওহম - লিঙ্ক

1 x 1/4W 1% প্রতিরোধক - 10k ওহম - লিঙ্ক

1 x 4.096v LM4040DIZ -4.1 ভোল্টেজ রেফারেন্স - লিঙ্ক

ব্রেডবোর্ড এবং তার - লিঙ্ক

অ্যাস্ট্রো এআই DM6000AR - লিঙ্ক

ইউএসবি পাওয়ার ব্যাংক - লিঙ্ক

9V ব্যাটারি - লিঙ্ক

কানাডিয়ানউইন্টার্স হল অ্যামাজন সার্ভিসেস এলএলসি অ্যাসোসিয়েটস প্রোগ্রামে অংশগ্রহণকারী, একটি অ্যাফিলিয়েট অ্যাডভারটাইজিং প্রোগ্রাম যা অ্যামাজন ডটকম এবং অ্যাফিলিয়েটেড সাইটের সাথে লিঙ্ক করে ফি উপার্জনের মাধ্যম প্রদানের জন্য ডিজাইন করা হয়েছে। এই লিঙ্কগুলি ব্যবহার করে, একটি অ্যামাজন অ্যাসোসিয়েট হিসাবে আমি যোগ্যতা ক্রয় থেকে উপার্জন করি, এমনকি যদি আপনি অন্য কিছু কিনে থাকেন-এবং এটি আপনার কিছু খরচ করবে না।

ধাপ 1: স্কিম্যাটিক্স

স্কিম্যাটিক্স
স্কিম্যাটিক্স
স্কিম্যাটিক্স
স্কিম্যাটিক্স

আমি উপরের স্কিম্যাটিক্স অনুসারে সমস্ত অংশ সংযুক্ত করেছি। বিশেষ করে আমি রেজোলিউশন এড়ানোর জন্য 5v চিহ্নের যতটা সম্ভব কাছাকাছি থাকার জন্য 4.096 ভোল্টেজ রেফারেন্স বেছে নিয়েছি।

ডেটশীট অনুসরণ করে, আমি ভোল্টেজ রেফারেন্সের জন্য 1K ওহম প্রতিরোধক বেছে নিয়েছি যদিও একটি ভিন্ন মান ব্যবহার করা যেতে পারে। রেফারেন্সের জন্য ভোল্টেজ ন্যানো 5v পিন থেকে সরবরাহ করা হয়।

সার্কিটের ধারণা হল যে পরিমাপ করা ডিসি ভোল্টেজ একটি ভোল্টেজ প্রতিরোধকের মধ্য দিয়ে যায়। স্কেল করা ভোল্টেজ এবং তারপর Arduino এর এনালগ পিনে নমুনা, মসৃণ, পুনরায় স্কেল এবং OLed ডিসপ্লেতে প্রদর্শিত হবে।

আমি জিনিসগুলি সহজ রাখার চেষ্টা করেছি:)

ধাপ 2: কোড এবং প্রতিরোধক গণনা

প্রতিষেধক মান 10k ওহমের নিচে রাখার জন্য পরামর্শ দেওয়া হয় (যদি আমি এটি Arduino/Atmega ডেটশীটে ভুল না হয়) হিসাবে বেছে নেওয়া হয়।

জিনিসগুলিকে সহজ করার জন্য, আমি একটি স্প্রেডশীট তৈরি করেছি যা হিসাবকে স্বয়ংক্রিয় করে যদি আপনি বিভিন্ন প্রতিরোধক মান ব্যবহার করতে চান: গুগল শীটের লিঙ্ক

এই প্রকল্পের জন্য আমি যে কোডটি ব্যবহার করেছি তা এখানে:

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (ঘূর্ণন, [রিসেট]) ভাসা ভোল্টেজ = 0; // ভোল্টেজ ভ্যালু ফ্লোট সংরক্ষণ করতে ব্যবহৃত Radjust = 0.043459459; // ভোল্টেজ ডিভাইডার ফ্যাক্টর (R2 /R1+R2) ভাসা vbat = 0; // হিসাবের পর চূড়ান্ত ভোল্টেজ- ব্যাটারির ভোল্টেজ Vref = 4.113; // ভোল্টেজ রেফারেন্স - প্রকৃত মান পরিমাপ করা হয়। নামমাত্র মান 4.096v const int numReadings = 50; // পড়ার নমুনার সংখ্যা - আরো মসৃণ করার জন্য বৃদ্ধি। দ্রুত পড়ার জন্য হ্রাস করুন। int রিডিং [numReadings]; // এনালগ ইনপুট থেকে রিডিং int readIndex = 0; // বর্তমান পড়ার সূচক স্বাক্ষরবিহীন দীর্ঘ মোট = 0; // চলমান মোট int গড় = 0; // বিলম্ব স্বাক্ষরবিহীন দীর্ঘ পূর্ববর্তী মিলিস = 0 ব্যবহার না করে পর্দা রিফ্রেশ করার জন্য ভেরিয়েবল; // শেষবার স্ক্রিন আপডেট করার সময় সংরক্ষণ করা হবে // ধ্রুবক পরিবর্তন হবে না: const দীর্ঘ ব্যবধান = 50; // স্ক্রিন রিফ্রেশ করার জন্য ব্যবধান (মিলিসেকেন্ড) অকার্যকর সেটআপ (অকার্যকর) {analogReference (EXTERNAL); // রেফারেন্স ভোল্টেজ 4.096 এর জন্য AREF ব্যবহার করুন। আমার রেফারেন্স বাস্তব ভোল্টেজ হল 4.113v u8g2.begin (); জন্য } // গড় গণনা করুন: গড় = (মোট / numReadings); ভোল্টেজ = গড় * (Vref / 1023.0); //4.113 হল Vref vbat = voltage/Radjust; // মিলিস ব্যবহার করে স্ক্রিন রিফ্রেশের জন্য বিলম্ব নির্ধারণ করা হলে u8g2.clearBuffer (); // অভ্যন্তরীণ মেনরি সাফ করুন // প্যাক ভোল্টেজ ডিসপ্লে u8g2.setFont (u8g2_font_fub20_tr); // 20px ফন্ট u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px ফন্ট u8g2.setCursor (76, 20); u8g2.print ("Volts"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("নির্ভুল ভোল্টেজ"); } u8g2.sendBuffer (); // ডিসপ্লে বিলম্বের অভ্যন্তরীণ মেমরি স্থানান্তর (1); }

অনুগ্রহ করে মনে রাখবেন আমি Arduino কোডিংয়ের সাথে কিছুটা মরিচা, তাই যদি আপনি কোন ভুল বা কোড উন্নত করার উপায় খুঁজে পান, আমি পরামর্শের জন্য উন্মুক্ত:)

ধাপ 3: আসুন এটি পরীক্ষা করি

আসুন এটি পরীক্ষা করা যাক!
আসুন এটি পরীক্ষা করা যাক!
আসুন এটি পরীক্ষা করা যাক!
আসুন এটি পরীক্ষা করা যাক!
আসুন এটি পরীক্ষা করা যাক!
আসুন এটি পরীক্ষা করা যাক!

এই ভোল্টমিটারটি পরীক্ষা করার জন্য আমি 8x 9v ব্যাটারি ব্যবহার করেছি যা আমি একটি স্থানীয় দোকানে পেয়েছিলাম। আমি আমার বৈদ্যুতিক সাইকেলের ব্যাটারি প্যাকগুলিতে ভোল্টেজ পরিমাপ করার জন্য এই ভোল্টমিটারটি ব্যবহার করার পরিকল্পনা করছি (তাদের মাঝে মাঝে 72- এর সাথে 24-60v থেকে ভোল্টেজ রয়েছে)।

একবার ইলেকট্রনিক্স একটি পিসিবি এবং একটি ছোট বাক্সে প্যাকেজ করা হলে, এটি একটি সুন্দর এবং বহনযোগ্য ব্যাটারি প্যাক মিটার তৈরি করবে। ওএলইডি -তে গ্রাফিক্স এবং ফন্টগুলি আপনার প্রয়োজন অনুসারে কাস্টমাইজ করা যেতে পারে (যেমন, সহজে পড়ার জন্য বড় ফন্ট)।

আমার লক্ষ্য ছিল আমার ডিজিটাল মাল্টি মিটার থেকে খুব বেশি দূরে ওলেড/আরডুইনো মিটারে ভোল্টেজ পড়া। আমি +/- 0, 3v সর্বোচ্চ ব-দ্বীপের লক্ষ্যে ছিলাম। আপনি ভিডিও থেকে দেখতে পাচ্ছেন আমি পরিমাপের উপরের প্রান্ত ছাড়া এটি সংরক্ষণ করতে সক্ষম হয়েছিলাম।

আমি আশা করি আপনি এই নির্দেশযোগ্য উপভোগ করেছেন এবং আমাকে আপনার চিন্তা জানান!

প্রস্তাবিত: