استفاده از ACS712 برای نمایش جریان روی LCD1602 یا LCD2004 با I2C
در این آموزش یاد میگیریم چگونه از حساس(حس کننده) جریان Allegro ACS712 برای اندازهگیری جریانهای AC و DC استفاده کرده و قرائتها را از طریق I2C روی LCD1602 یا LCD2004 نمایش دهیم. این پروژه بهویژه برای پایش جریان در کاربردهای مختلف مفید است و نمایش بصری دادههای جریان در زمان واقعی را فراهم میکند. تا پایان این آموزش، شما یک راهاندازی عملی خواهید داشت که میتواند قرائتهای جریان را با دقت روی LCD نمایش دهد.


برای روشنتر شدن در مورد سیمکشی و شِفر (کود)، حتماً ویدیو را در زمانهای مشخصشده بررسی کنید (در ویدیو در 00:00).
توضیح سختافزار
جزء اصلی این پروژه حساس(حس کننده) جریان ACS712 است که میتواند مقادیر جریان تا 30A را اندازهگیری کند. این حساس(حس کننده) با استفاده از اثر هال جریان عبوری را به یک ولتاژ خروجی متناسب تبدیل میکند. این ولتاژ خروجی را آردوینو میتواند خوانده و سطح جریان را محاسبه کند. حساس(حس کننده) سه پایه برای اتصال دارد: VCC برای تغذیه، GND برای زمین و OUT برای سیگنال ولتاژ.
نمایشگر LCD1602 یا LCD2004 از طریق I2C متصل میشود که امکان سیمکشی و کنترل آسانتر را با استفاده از تنها دو پایه داده (SDA و SCL) بهعلاوه تغذیه و زمین فراهم میکند. این باعث میشود نمایش خوانشهای فعلی بدون شلوغ شدن سیمکشی با اتصالات متعدد ساده باشد.
جزئیات مشخصات فنی
| تولیدکننده | آلگرو مایکروسیستمز |
|---|---|
| شماره قطعه | ACS712ELCTR-30A-T |
| ولتاژ منطقی/ورودی-خروجی | 4.5-5.5 ولت |
| ولتاژ تغذیه | ۵ ولت |
| جریان خروجی (برای هر کانال) | 30 آمپر |
| راهنمای فرکانس PWM | مربوط نیست |
| آستانههای منطقی ورودی | 0.5 V (خروجی سکون) |
| افت ولتاژ / Rدرین-سورس (روشن)/ اشباع | 1.2 میلیاهم |
| محدودیتهای حرارتی | حداکثر 150 °C |
| بسته | TO-220 |
- برای جریانهای بالای 20A، دفع حرارت مناسب را تأمین کنید.
- برای جلوگیری از گرم شدن بیش از حد، از سیم با سایز مناسب (12 AWG برای 30A) استفاده کنید.
- برای عملکرد صحیح، VCC را به 5V و GND را به زمین متصل کنید.
- اطمینان حاصل کنید که پایه OUT به یک پایه ورودی آنالوگ در آردوینو متصل شده است (مثلاً A0).
- به تفاوتهای حساسیت بین مدلهای مختلف ACS712 توجه کنید.
- برای دیکپلینگ، مطابق دیتاشیت از خازنها استفاده کنید.
دستورالعملهای سیمکشی

برای سیمکشی حساس(حس کننده) جریان ACS712 با آردوینو و LCD، ابتدا پایه VCC حساس(حس کننده) ACS712 را به پایه 5V روی آردوینو متصل کنید. سپس پایه GND حساس(حس کننده) ACS712 را به یک پایه زمین روی آردوینو وصل کنید. پایه OUT حساس(حس کننده) ACS712 باید به پایه آنالوگA0روی آردوینو، جایی که سیگنال ولتاژ خوانده خواهد شد.
برای LCD1602 یا LCD2004، پایه VCC را به پایه 5V و پایه GND را به زمین متصل کنید. پایه SDA السیدی باید به پایه SDA آردوینو متصل شود (معمولاًA4روی یک UNO)، و پایه SCL باید به پایه SCL روی آردوینو متصل شود (معمولاًA5روی یک UNO). اطمینان حاصل کنید که تمام اتصالات محکم باشند تا عملکرد صحیح تضمین شود.
نمونههای شِفر (کود) و راهنمای گامبهگام
در شِفر (کود)، پایه ورودی آنالوگ را برای خواندن خروجی حساس(حس کننده) با#define VIN A0. این به ما اجازه میدهد تا بهراحتی به پینی که حساس(حس کننده) به آن متصل است در سراسر برنامه ارجاع دهیم.
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.
سپس حساسیت را براساس مدل ACS712 که استفاده میکنیم تنظیم میکنیم. مقادیر حساسیت در یک آرایه ذخیره میشوند که امکان دسترسی آسان براساس انتخاب مدل را فراهم میکند.

const int model = 2; // enter the model number (0, 1, or 2 for 5A, 20A, or 30A)
float sensitivity[] = {0.185, 0.100, 0.066}; // sensitivity values for each model
درsetup()در این تابع، نمایشگر مسلسل و نمایشگر LCD را مقداردهی اولیه میکنیم. این به ما اجازه میدهد خوانشهای فعلی را هم روی LCD و هم از طریق نمایشگر مسلسل برای رفع اشکال مشاهده کنیم.
void setup() {
Serial.begin(9600); // initialize serial monitor
lcd.begin(); // initialize the LCD
lcd.backlight(); // turn on the backlight
lcd.print("Robojax ACS712"); // display initial text
delay(2000); // wait for 2 seconds
}
آنloop()این تابع ولتاژ را از حساس(حس کننده) میخواند، جریان را بر اساس حساسیت محاسبه میکند و نتایج را بر این اساس نمایش میدهد. اگر جریان از حد قطع مشخصی بیشتر شود، مقدار را نمایش میدهد؛ در غیر این صورت نشان میدهد که هیچ جریانی تشخیص داده نشده است.
نمایش / آنچه باید انتظار داشته باشید
پس از روشنکردن مدار، LCD باید عبارت Robojax ACS712 را نمایش دهد و سپس عبارت جریان: بههمراه مقدار جریان اندازهگیریشده بر حسب آمپر. اگر جریان کمتر از حد قطع باشد، نمایشگر عبارت بدون جریان را نشان خواهد داد. هنگام آزمایش با جریانهای بالا احتیاط کنید، زیرا حساس(حس کننده) ممکن است داغ شود (در ویدئو در 12:00).
برای آزمایش راهاندازی، بهتدریج جریان عبوری از ACS712 را افزایش دهید و تغییرات را در LCD و نمایشگر مسلسل مشاهده کنید. مطمئن شوید که جریان از محدودهٔ مجاز حساس(حس کننده) تجاوز نکند تا از آسیب دیدن آن جلوگیری شود.
تصاویر
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
آمازونPurchase LCD1602-I2C from Amazonamzn.to
-
ایبیPurchase LCD1602-I2C from eBayebay.us
-
علیاکسپرسPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
منابع و مراجع
فایلها📁
کتابخانههای آردوینو (zip)
-
کتابخانه آردوینو برای LCD1602 از Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
برگه مشخصات (pdf)
-
Allegro ACS712 AC/DC 4A, 20A, 30A Current Sensor Datasheet
application/pdf0.65 MB
فایل Fritzing
-
LCD LCD1602-I2C module with 4 wires
application/zip0.01 MB -
Allegre ACS712 Current Sensor
application/zip0.03 MB