امپر گیری با ایسی ACS712

در اين بخش مي‌توانيد آموزش و مثال‌های مرتبط با میکروکنترلرهای AVR را مشاهده بفرمایید

مدیران انجمن: SAMAN, sinaset, شوراي نظارت

ارسال پست
Colonel II
Colonel II
نمایه کاربر
پست: 7013
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9183 بار
سپاس‌های دریافتی: 21046 بار
تماس:

امپر گیری با ایسی ACS712

پست توسط sinaset » سه شنبه 4 خرداد 1395, 10:47 am

بنام خدا
با سلام


امپر گیری با ایسی ACS712

تصویر
ایسی acs 712 یک ایسی معروف در اندازه گیری جریان یا آمپرهای الکتریکی می باشد . این المان الکتریکی، به کمک نیرومغناطیسی امپر در حال گذر را می خواند و سپس ،نسبت به ولتاژ در حال گذر، در خروجی خود، ولتاژ را نمایش میدهد (به مانند دماسنج مثل LM35 اما سطح ولتاژ ان با دماسنج lm35 متفاوت می باشد)

از برترهای این ایسی نسبت به دیگر المان و روش ها اندازه گیری ، کم درد سر بودن و تلفات حرارتی بسیار پایین آن می باشد.

همانطور که می دانید ما می توانیم به کمک مقاومت اهم پایین ، جریان در حال گذر را بدست بیاوریم. اما بدلیل اینکه از مقاومت استفاده می کنیم. مقداری از انرژی توسط خود مقاومت هدر می رود ..

اما از معایب این ایسی، دقت پایین تر ان نسبت به روش مقاومتی می باشد !


تصویر
ماژول این ایسی. که خازن 104 برای حذف نویز و خازن 1 نانو (برای تایین فرکاسن کاری) و یک LED برای روشن بودن و .. اضافه شده
 این ایسی در سه نوع معروف وجود دارد :  5 آمپری  20 آمپری  30 آمپری  و به ترتیب هر چقدر توانایی اندازه گیری جریان در این ایسی بیشتر باشد، دقت ان نیز کاهش پیدا می کند.  
  آزمایش با سه مدل از این ایسی ها : 
تصویر
  که در تصویر می ببینید،سه ایسی( مدل 5 و 20 و 30 امپری) به میکرو وصل می باشند و به انها 100 میلی امپر جریان داده شده، همانجور که می ببینید مدل 5 امپری ، دقت بهتری دارد، و نزدیک به امپر دریافت را نشان داده.  ---   در آزمایش دیگر ،با ایسی ها 1 امپر داده میشود، که همانجور که می ببینید،ایسی ها چندان دقیق ،دقیق نیست،ولی خوب بد هم نیست و دقت قابل قبولی نیز دارد. 
تصویر

به طور کلی این ایسی برای اندازه گیری جریان ها زیادی خوب و کار راه انداز می باشد ..


در ادامه پست بعدی،کد و شبیه ساز معرفی می شود

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 7013
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9183 بار
سپاس‌های دریافتی: 21046 بار
تماس:

Re: امپر گیری با ایسی ACS712

پست توسط sinaset » جمعه 7 خرداد 1395, 10:25 am

با سلام

اما برنامه نویسی و شبیه ساز

بعد از انکه سخت افزار مدار را طبق مداری که در بالا قرار داده ایم ساختید.باید پایه خروجی v -out را به یکی از پایه ها ADC بدهید، تا بتوانید ولتاژ را اندازه بگیرید.

این ایسی در صورتی که امپری در حال گذر از ان نباشد، 2.5 ولت، ولتاژ خروجی می دهد، اما به محض عبور جریان ، مقداری ولتاژ خودش را افزایش میدهید، و این افزایش ولتاژ بستگی به جریان عبور از ایسی دارد .

شرکت سازنده برای هر ایسی ضریبی مشخص کرده،که می توان با آوردن ان در فرمول،میزان آمپر عبوری را بدست آورد:

ACS712-05A عدد معرفی شده 185 میلی امپر
ACS712-20A عدد معرفی شده 100 میلی امپر
ACS712-30A عدد معرفی شده 66 میلی امپر

در برنامه نویسی

، ابتدا میزان واحد ADC را که از ایسی دریافت کرده ایم را مستقیم ضربدر 0.00488 می کنیم.(برای بدست اوردن ولتاژ) سپس ان را -2.5 ولت می کنیم( تا 2.5 ولت که همیشه ثابت است را لحاظ نکنیم) ، در انتها عدد بدست اورده شده را تقسیم بر عدد معرفی شده ایسی می کنیم

یعنی:

کد: انتخاب همه

volt =read_adc(0)* 0.00488;

و بعد بسته به نوع ایسی:

کد: انتخاب همه

volt = (volt - 2.5)/0.185;     // فرمول محاسبه ايسي 5 امپري
volt = (volt - 2.5)/0.100;     //فرمول محاسبه ايسي 20 امپري
volt = (volt - 2.5)/0.066;       //فرمول محاسبه ايسي 30 امپري


سپس می توانید امپر در حال مصرف،را بدست آورید،به همین راحتی.!

کل کدها:

کد: انتخاب همه

/*
1395.3.7
edit:sinaset
centralclubs.com
*/

#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
float volt  = 0;
unsigned char str[16],str2[16],str3[16];
#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR)) // Voltage Reference: AVCC pin
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
delay_us(10);
ADCSRA|=(1<<ADSC);
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
}
void main(void)
{
PORTD=0x00;
DDRD=0x08;
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
SFIOR=(0<<ACME);
lcd_init(16);
#asm("sei")
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("hello");
delay_ms(1000);   
lcd_clear();
    while (1)
    {   
      volt =read_adc(0)* 0.00488;
      volt = (volt - 2.5)/0.185;     // فرمول محاسبه ايسي 5 امپري
      sprintf(str,"A:%0.2f",volt);   
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts(str);

      volt =read_adc(1)* 0.00488;
      volt = (volt - 2.5)/0.100;     //فرمول محاسبه ايسي 20 امپري
      sprintf(str2,"A:%0.2f",volt);   
      lcd_gotoxy(0,1);
      lcd_puts(str2);
      
      volt =read_adc(2)* 0.00488;
      volt = (volt - 2.5)/0.066;       //فرمول محاسبه ايسي 30 امپري
      sprintf(str3,"A:%0.2f",volt);   
      lcd_gotoxy(7,1);
      lcd_puts(str3);
      delay_ms(1000);    // تاخير 
    }
}





[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]سورس و شبیه ساز
(دانلودکتابخانه منبع تغذیه متغیر)
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

New Member
پست: 1
تاریخ عضویت: پنج شنبه 20 خرداد 1395, 9:42 am

Re: امپر گیری با ایسی ACS712

پست توسط javadian2 » چهار شنبه 26 خرداد 1395, 5:06 pm

سلام دوست عزیز برای من همیشه مقدار a=2f نمایش داده می شود

Colonel II
Colonel II
نمایه کاربر
پست: 7013
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9183 بار
سپاس‌های دریافتی: 21046 بار
تماس:

Re: امپر گیری با ایسی ACS712

پست توسط sinaset » چهار شنبه 26 خرداد 1395, 5:26 pm

سلام بر شما

از فایل که در بالا گذاشته ام استفاده کردیده اید؟! (و نسخه کدویژن شما 3.12 می باشد؟)

این مشکل مربوط به sprintf می باشد. همانجور که نمی دانم مستحضر باشید. این تابع به صورت دیفالت متغیرهای int را می شناسد،ولی زمانی که ما از float استفاده می کنیم،باید به صورت دستی وضعیت ان را تغیر دهیم (*لازم به ذکر است،استفاده از این قابلیت حجم برنامه را زیاد می کند)

برای حل این مشکل،به سربرگ project بروید و روی گزینه configure کلیک کنید،سپس به سربرگ c compiler بروید.در انجا زیر گزینه sprintf منوی وجود دارد،ان را باز کنید و روی گزینه float تنظیم کنید. انشالله مشکلتان حل خواهد شد.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

ارسال پست

بازگشت به “آموزش و مثال‌ها AVR”