تحلیل پروژهٔ INA169؛ از مقاومت شانت تا عدد جریان روی نمایشگر
برد متنباز INA169 از SparkFun جریان را با افت ولتاژ یک مقاومت میسنجد. بررسی مدار، PCB و کد نمونه روشن میکند انتخاب مقاومت، تغذیه و تبدیل داده چگونه بر نتیجه اثر دارند.
فهرست مطالب
مقاومت قطعهای است که عبور جریان را محدود میکند. برای فهمیدن جریان مصرفی یک مدار، همیشه به حسگری پیچیده نیاز نداریم: یک مقاومت کوچک در مسیر برق، افت ولتاژی ایجاد میکند که میتوان از آن جریان را حساب کرد. پروژهٔ متنباز INA169 از SparkFun این افت را به خروجی قابل خواندن تبدیل میکند. نکتهٔ اصلی طراحی این است که خودِ ابزار اندازهگیری هم روی مدار اثر میگذارد؛ انتخاب مقاومت، سیمکشی و کد باید با هم سازگار باشند.
جریان یعنی مقدار عبور بار الکتریکی در زمان و با آمپر سنجیده میشود؛ هر میلیآمپر یکهزارم آمپر است. مدار مجموعهٔ قطعات و اتصالهایی است که کاری انجام میدهد و برد، صفحهای است که قطعات و مسیرهای مسی روی آن قرار دارند. در این بررسی مسیر یک بار فرضیِ ۱۰ میلیآمپری را از منبع تا عدد نمایشدادهشده دنبال میکنیم. «بار» همان مصرفکننده، مثلاً چراغ یا مدار کوچک است. فهم مثال به خرید یا اجرای کد وابسته نیست.
برد بررسیشده و خرید قطعه
موضوع، برد SparkFun SEN-12040 و فایلهای طراحی نسخهٔ 1.0 است. U1 در فایل برد، INA169 با پکیج پنجپایهٔ SOT-23 است؛ پسوند کامل سفارشِ تراشه در این فایل تعیین نشده است. تراشهٔ خام، ماژول متفرقه و همین برد SparkFun را یک محصول یکسان فرض نکنید.
در بررسی ۲۸ اکتبر ۲۰۲۶، صفحهٔ مستقیم SEN-12040 نزد SparkFun عبارت «In stock» داشت. برای تراشهٔ خام، صفحهٔ رسمی INA169 نزد TI مرجع مدل و گزینههای سفارش است. موجودی و لینک محصول ایرانیِ دقیقاً منطبق با SEN-12040 در این بررسی قابل تأیید نبود؛ این بررسی موجودی همان برد در ایران را تأیید نمیکند. عبارت موجودی فروشنده، تضمین موجودی یا اصالت کالای تحویلی نیست.
عکس بالای صفحه، برد با پینهای لحیمشده را نشان میدهد: ورودی و خروجی جریان، خروجی اندازهگیری، تغذیه و زمین کنار هم آمدهاند. عکس: SparkFun، راهنمای INA169، CC BY-SA 4.0؛ تبدیل به WebP، بدون برش.
چه نسخهای و چه مدارکی را تحلیل میکنیم؟
مرجع، مخزن sparkfun/INA169_Breakout در commit 42a78dbe618fe314bf3a39a4d541c42765d4087b با تاریخ ۲۷ ژوئن ۲۰۲۵ است؛ تاریخ بازبینی این مقاله ۲۸ اکتبر ۲۰۲۶ است. این تاریخ commit به معنی طراحی تازهٔ مدار نیست: فایل شماتیک نام Shawn Hymel و تاریخ ۲۰۱۳ دارد. شماتیک، PCB و کد Arduino همگی از همین commit خوانده شدهاند.
این یک بررسی ایستای فایلها و محاسبات آموزشی است؛ برد ساخته یا اندازهگیری نشده، firmware کامپایل نشده و شبیهسازی مدار انجام نشده است. firmware یعنی برنامهای که روی دستگاه اجرا میشود. نتایج محاسبه را از نتیجهٔ آزمایش واقعی جدا نگه میداریم. برای شناخت رابطهٔ نقشه و برد، درس شماتیک، PCB و فایل ساخت پیشزمینهٔ مناسبی است.
راهحل: اندازهگیری در مسیر مثبت منبع
مقاومت اندازهگیری یا «شانت» را میان مثبت منبع و ورودی مثبت مصرفکننده میگذاریم؛ برگشت مصرفکننده به منفی منبع وصل میماند. به این روش high-side میگویند، یعنی اندازهگیری در سمت مثبت تغذیه. دو سر شانت VIN+ و VIN− هستند. جریان مورد نظر از اولی به دومی میرود و اختلاف ولتاژ کوچکی پدید میآورد. برای شروع، ولتاژ را میتوان عامل هلدهندهٔ جریان بین دو نقطه در نظر گرفت؛ واحد آن ولت است و مقدارش همیشه میان دو نقطه سنجیده میشود.
INA169 یک تراشه است، یعنی چند بخش الکترونیکی در یک قطعهٔ کوچک. این تراشه اختلاف دو سر شانت را میخواند و جریان کوچکی در OUT ایجاد میکند. مقاومت R2 آن جریان را به ولتاژ VOUT تبدیل میکند. سپس میتوان VOUT را با ولتمتر خواند یا به ورودی اندازهگیری یک برد محاسباتی داد. اینجا مسیر جریان بار و مسیر خواندن داده یک چیز نیستند: جریان بار از مقاومت شانت میگذرد، نه از پایهٔ OUT.
شماتیک واقعاً چه قطعاتی دارد؟
در شماتیک همان نسخه، R1 برابر ۱۰ اهم و R2 برابر ۱۰ کیلو اهم است. یک کیلو اهم یعنی هزار اهم؛ اهم واحد مقاومت است. R3 و R4 جای نصب گزینههای دیگرند و در PDF شماتیک با DNP، یعنی «نصب نشود»، مشخص شدهاند. قرار نیست چهار مقاومت را همزمان نصب کنیم.
| جزء واقعی فایل | نقش و نکتهٔ ساخت |
|---|---|
| U1 / INA169 / SOT23-5 | پایهٔ ۱ OUT، پایهٔ ۲ GND، پایهٔ ۳ VIN+، پایهٔ ۴ VIN− و پایهٔ ۵ V+؛ شمارهٔ پایهٔ تراشه را با ترتیب پینهای برد اشتباه نگیرید. |
| R1 / 10 Ω / 1206 | شانت نصب سطحی؛ تلرانس ۱٪ در نقشه آمده، اما MPN کامل و توان مجاز قطعه مشخص نشدهاند. ابعاد پکیج بهتنهایی توان نامی را ثابت نمیکند. |
| R2 / 10 kΩ / 0603 | تبدیل جریان OUT به ولتاژ؛ R4 مسیر موازیِ اختیاری با همین مقاومت است. |
| R3 / AXIAL-0.8 | جای مقاومت پایهدار در دو سر شانت؛ برای تغییر محدوده، اثر مقاومت باقیمانده را هم حساب کنید. |
| C1 / 0.1 µF / 0603 | خازن موجود میان VCC و GND؛ ذخیرهٔ کوچک بار نزدیک تراشه برای تغذیه است، نه فیلتر اندازهگیری روی VOUT. |
VCC تغذیهٔ خود تراشه است و VIN+ ورودی مسیر بار؛ این دو در شماتیک به هم اتصال داخلی ندارند. برای مثال کمولتاژ میتوان آنها را بیرون برد به یک منبع مناسب وصل کرد، اما از نام مشابه نتیجه نگیرید که از قبل متصلاند. پایههای GND باید مرجع مشترک خوانش ولتاژ داشته باشند. این برد جداسازی الکتریکی بین مسیر اندازهگیری و خواننده فراهم نمیکند؛ یعنی آنها مرجع زمین مشترک دارند و نباید دو مدار جدا و بیارتباط از نظر برق فرض شوند.
مثال حلشده: ۱۰ میلیآمپر چگونه به ۱ ولت تبدیل میشود؟
فرض کنید منبع دقیقاً ۵ ولت، مقاومت مصرفکننده ۴۹۰ اهم و شانت R1 دقیقاً ۱۰ اهم است. همهٔ مقاومتها را ایدئال و دما را ثابت میگیریم. جمع مقاومت مسیر ۵۰۰ اهم میشود. عدد ۱۰۰۰ اهم در رابطهٔ خروجی، ضریب تبدیل خود INA169 است و مقاومت خارجیِ اضافهای برای نصب نیست:
I = 5 V / (490 Ω + 10 Ω) = 0.010 A = 10 mA
Vshunt = I × Rs = 0.010 A × 10 Ω = 0.100 V
Vload = 5 V - 0.100 V = 4.900 V
Vout = I × Rs × Rl / 1000 Ω
= 0.010 A × 10 Ω × 10000 Ω / 1000 Ω = 1.000 V
Pshunt = I² × Rs = (0.010 A)² × 10 Ω = 0.001 W = 1 mW
پس ولتمترِ خروجی باید در این مدل حدود ۱ ولت ببیند؛ تبدیل آن به جریان، ۱۰ میلیآمپر میدهد. مصرفکننده هم بهجای ۵ ولت، ۴٫۹ ولت دریافت میکند. همین ۰٫۱ ولت نشان میدهد چرا ابزار اندازهگیری بیاثر نیست. این اعداد پیشبینی با فرضهای بالا هستند؛ تغییر مقاومت، خطای تراشه، سیم و ابزار نتیجهٔ واقعی را عوض میکند.
مرزهای ولتاژ و محدوده را از روی یک عدد انتخاب نکنید
دیتاشیت TI، سند SBOS181F، فوریهٔ ۲۰۱۷ برای INA169 تغذیه و ولتاژ ورودی نسبت به زمین را در محدودهٔ کاری توصیهشدهٔ ۲٫۷ تا ۶۰ ولت میآورد. عدد ۷۵ ولت، حد مطلق تحمل است؛ عدد ۷۵ در یادداشت شماتیک نیز مجوز کار عادی در آن ولتاژ نیست. پکیج DBV همان SOT-23 پنجپایه است و INA139 محدودهٔ ولتاژی متفاوتی دارد. برای این تمرین فقط منبع کمولتاژِ محدودکنندهٔ جریان را در نظر بگیرید.
خروجی تا نزدیکی هر ولتاژی آزادانه بالا نمیرود؛ فضای لازم تا تغذیه و ولتاژ مسیر بار، سقف آن را محدود میکند. راهنمای پروژه برای شانت ۱۰ اهم و VCC برابر ۵ ولت، محدودهٔ تقریبی ۳٫۵ تا ۳۵ میلیآمپر را مطرح میکند؛ این محدوده تضمین یکسانبودن خطا در همهٔ نقاط نیست و نباید به تغذیهٔ ۳٫۳ ولتی تعمیم داده شود. این آرایش یکجهته است؛ برای خواندن جریان معکوس یا AC، یعنی جریان با تغییر جهت، همین برد و تبدیل نرمافزاری کافی نیست.
دو مسئله را جدا ببینید: کوچکترین تغییر عدد قابل نمایش و نزدیکبودن آن به جریان واقعی. نمایش رقم بیشتر، خطای مقاومت و تغذیه را اصلاح نمیکند. راهنمای خواندن دیتاشیت تفاوت شرط کاری، حد آسیب و عدد نمونهوار را باز میکند.
چیدمان PCB: مسیر توان را از مسیر حس تشخیص بدهیم
فایل INA169_Breakout.brd محدودهای ۲۵٫۴ در ۲۵٫۴ میلیمتر دارد. مسیرهای پهن VIN+ و VIN− جریان بار را جابهجا میکنند؛ دو مسیر باریک به ورودیهای U1 از نزدیکی پدهای R1 منشعب میشوند. پد همان سطح مسی محل اتصال پایه است. این نسخه از قبل مسیرهای باریکِ حس را در نزدیکی R1 از مسیرهای پهن جریان بار جدا کرده است. برای دقت بالاتر باید اثر محل برداشت، مقاومت مس و مونتاژ را اندازه گرفت.
C1 از قبل کنار U1 قرار دارد؛ فاصلهٔ مرکزهایشان در فایل ۳٫۸۱ میلیمتر است. نزدیکی مرکز، کیفیت مسیر برگشت خازن را ثابت نمیکند. ناحیههای زمین و چهار via زمین، یعنی اتصال مسی میان لایهها، در فایل وجود دارند؛ نام GND بهتنهایی تضمین نبود نویز نیست. مسیر VOUT بخشی روی زیر برد دارد و اتصالش از پد سوراخدار R4 عبور میکند. خالیبودن جای خودِ مقاومت R4 به معنی قطعشدن مس آن پد نیست.
برای جریان بیشتر، فقط تعویض مقاومت کافی نیست: توان تلفاتی، داغشدن پایه و مس، توان کانکتور، سیم و محل نصب هم محدودکنندهاند. در فایل، فیوز، حفاظت معکوس، محدودکنندهٔ گذرای مجزا یا تقویتکنندهٔ واسط خروجی دیده نمیشود. این مشاهده به معنی خرابی برد نیست؛ یعنی این وظایف را نباید موجود فرض کرد. مدار را به برق شهر یا باتری پرانرژی متصل نکنید.
کد نمونه چگونه ولتاژ را به جریان تبدیل میکند؟
کد Shawn Hymel در همین commit برای Arduino Uno نوشته شده؛ Uno بردی است که برنامه اجرا میکند و ورودی اندازهگیری ولتاژ دارد. ADC نام بخشی است که ولتاژ را به عدد تبدیل میکند. برنامه A0 را میخواند، مرجع ۵ ولت و بازهٔ عددی ۰ تا ۱۰۲۳ را فرض میکند، ولتاژ را به جریان تبدیل میکند و هر حلقه ۵۰۰ میلیثانیه مکث دارد. خروجی متنی با نرخ تنظیمشدهٔ ۹۶۰۰ روی Serial میآید؛ این مسیر فرستادن متن به رایانه است.
در رابطهای که همین کد استفاده میکند، یک پله تقریباً 5 / 1023 = 4.89 mV است. با ضریب تبدیل فعلی، این مقدار حدود ۴۸٫۹ میکروآمپر به ازای پله میشود؛ میکروآمپر یکمیلیونم آمپر است. این اندازهٔ پله است، نه دقت تضمینشده. چاپ سه رقم اعشار بر حسب آمپر نیز خروجی نمایشی را به گام ۱ میلیآمپر محدود میکند. عدد خام ۲۰۵ در همین مدل حدود ۱۰٫۰۲ میلیآمپر است و به صورت 0.010 A چاپ میشود.
تبدیل کد، Rl برابر ۱۰ کیلو اهم را در ضریب ۱۰ فرض کرده است. عوضکردن R2 بدون اصلاح آن ضریب نتیجه را غلط میکند. مقدار VOLTAGE_REF هم از نوع عدد صحیح است؛ برای مرجع اعشاری باید نوع متغیر و مقیاس ADC بازبینی شود. همین کد را بدون تطبیق مرجع، بازهٔ ورودی و روش خواندن به ESP32 منتقل نکنید. مکث ۵۰۰ میلیثانیهای به معنی دقیقاً دو نمونه در ثانیه یا ثبت قلههای کوتاه نیست؛ خواندن و چاپ هم زمان میبرند.
سه بهبود پیشنهادی با سود، هزینه و راه سنجش
تغییر محدوده با نگاه به کل مسیر
اگر هدف فرضی ۱ آمپر باشد، شانت ۰٫۱ اهم بهجای ۱۰ اهم افت ۰٫۱ ولت و گرمای ۰٫۱ وات ایجاد میکند؛ با Rl فعلی، خروجی ایدئال ۱ ولت میشود. در ۳٫۵ آمپر، گرمای همین مقاومت ۱٫۲۲۵ وات است. این حساب، تأیید توان برد یا کانکتور نیست. مقاومت با توان و تلرانس مناسب و مسیر مس متناسب لازم است؛ در جریانهای کوچکتر نیز سیگنال ضعیفتر میشود. راه سنجش، مقایسه با مرجع در چند جریان و بررسی دما و افت ولتاژ مسیر است.
پیش از نصب مقاومت جدید روی R3، تکلیف R1 را روشن کنید. مثلاً ۱ اهم موازی با ۱۰ اهم، ۰٫۹۰۹ اهم میشود. اگر کد ۱ اهم فرض کند، جریان ۱۰۰ میلیآمپری را در مدل ایدئال حدود ۹۰٫۹ میلیآمپر گزارش میکند؛ نزدیک ۹٫۱٪ کمتر. این خطای انتخاب و مونتاژ با افزودن رقم اعشار حل نمیشود.
مرجع و تبدیل قابل کالیبراسیون
Rs، Rl و مرجع ولتاژ را صریح و قابل تنظیم کنید؛ واحد محاسبه را آمپر و واحد نمایش را میلیآمپر نگه دارید. کالیبراسیون یعنی تنظیم رابطهٔ عدد و کمیت با مقایسه با مرجع معتبر. چند نقطه در محدوده و یک نقطهٔ نزدیک صفر را ثبت کنید و پس از گرمشدن دوباره بسنجید. سود، خطای کمترِ قابل پیگیری است؛ هزینه، ابزار مرجع و زمان است. تنظیم نرمافزار، خروجی اشباعشده یا اتصال غلط را درمان نمیکند.
آرامکردن خوانش، با پذیرفتن کندترشدن پاسخ
برای مصرفکنندهای که تغییرش آهسته است، میتوان یک خازن پیشنهادی ۱۰۰ نانوفاراد موازی R2 گذاشت. با ۱۰ کیلو اهم، ثابت زمانی ایدئال ۱ میلیثانیه و فرکانس قطع حدود ۱۵۹ هرتز است. ثابت زمانی مقیاس سرعت پاسخ به تغییر است؛ فرکانس هم تعداد تکرار در ثانیه است و فرکانس قطع، مرزی برای کاهش پاسخ به تغییرات سریعتر است. این طرح پیشنهادی است، نه قطعهٔ موجود روی خروجی یا نتیجهٔ آزمایش. خازن، تغییرات سریع را هم تضعیف میکند و بهتنهایی جلوی همهٔ خطاهای نمونهبرداری را نمیگیرد. نتیجه را با یک تغییر معلوم در بار، زمان پاسخ و پراکندگی داده مقایسه کنید؛ برای ADC سریع، واسط مناسب و زمان نشست جداگانه طراحی شوند.
راهاندازی و عیبیابی پیشنهادی
- در حالت بیبرق، مدل برد، R1 و R2 و خالیبودن جای اختیاری را کنترل کنید. مسیر VIN+ تا شانت و VIN− را از GND تشخیص دهید؛ خروجی را به مسیر بار وصل نکنید.
- برای مثال، منبع آزمایشگاهی را ۵ ولت و محدودیت را ۲۰ میلیآمپر بگذارید و بار مقاومتیِ ۴۹۰ اهمِ مناسب اضافه کنید. سیم مثبت منبع به VIN+، سپس VIN− به بار و سر دیگر بار به منفی منبع میرود. VCC را برای همین مثال به ۵ ولت و GND را به منفی مشترک وصل کنید.
- پیش از اتصال A0، با ولتمتر افت شانت و VOUT نسبت به GND را بسنجید. انتظار مدل ۱۰۰ میلیولت و ۱ ولت است؛ اگر خروجی نزدیک سقف مانده، تبدیل خطی را معتبر فرض نکنید.
- اگر خروجی تقریباً صفر است، برق و جهت VINها، بستهبودن مسیر بار و اتصال زمین را بررسی کنید؛ صفر خروجی الزاماً صفر جریان نیست. اگر ضریب خطا ثابت است، مقدار واقعی مقاومتها و مرجع را بررسی کنید. اگر داده ناپایدار است، ابتدا اتصالات، تغذیه و زمان خواندن را جدا آزمایش کنید.
- پس از تأیید محدودهٔ ولتاژ ورودی خواننده، VOUT را به آن وصل کنید و نتیجهٔ محاسبه، ولتمتر و مرجع جریان را کنار هم بگذارید. این مراحل برنامهٔ آزموناند، نه آزمایش انجامشدهٔ این مقاله.
تمرین اختیاری محاسبات آفلاین با Python همین مثالها را با Python 3.10 یا جدیدتر بررسی میکند؛ دستگاهی را کنترل نمیکند. برای مقایسهٔ مسیر دیگری از حسکردن جریان، آموزش ACS712 به نقطهٔ صفر و نویز در حسگر مبتنی بر میدان مغناطیسی میپردازد. معیار انتخاب، جریان و افت قابل قبول و نیاز به جهت خواندن است، نه فقط تعداد رقمها.
منابع و مجوزها
- مخزن SparkFun و فایلهای همین commit؛ طراحی مدار با نام Shawn Hymel، سختافزار نسخهٔ 1.0. مجوز سختافزار و آثار مشتق: CC BY-SA 3.0، با پیوند US در README سختافزار. دیاگرامهای اقتباسی، بازترسیم و سادهسازی LCENJ از همین نسخهاند.
- دیتاشیت رسمی INA139/INA169، SBOS181F؛ بخشهای پایهها، شرایط کاری، تبدیل، محدودهٔ خروجی و نمونهٔ فیلتر. ادعاهای INA169 را با INA139 مخلوط نکنید.
- راهنمای SparkFun و منبع عکس؛ CC BY-SA 4.0. کد اصلی اخطار Shawn Hymel / SparkFun و Beerware خود را دارد؛ فایل تمرین این مقاله کد مستقلی است. اطلاعات انتساب داراییها.
پرسش و پاسخ مقاله
سوال فنی خود را مطرح کنید
پرسشها و پاسخها پس از بررسی مدیر منتشر میشوند. نویسنده، پیشنویس در انتظار بررسی را میبیند.
هنوز پرسش تاییدشدهای برای این مقاله ثبت نشده است.