هرگونه ساخت و بهره برداری از فرستنده های رادیویی منوط به اخذ مجوز از سازمان تنظیم مقررات و ارتباطات رادیویی ایران میباشد و این سایت هیچ گونه مسئولیتی را به عهده نمیگیرد


بازگشت   جامعه رادیو آماتوری ایران > جامعه رادیو اماتوری ایران > تجهیزات دست ساز

پاسخ
 
ابزارهای جُستار جستجو در جُستار چگونگی نمایش
قدیمی 07-30-2015, 07:00 AM   #1
sajjsamm
کاربر ماهر
 
زمان کاربری: Apr 2015
نوشته ها: 77
پیش فرض خازن متر با arduino

سلام. این یک اسکچ برای اردوینو هست که با اکثر برد های اردوینو کار میکنه و قادر به اندازه گیری مقدار خازن تا کمتر از 1 پیکو فاراد تا سه رقم اعشاره که خودم که تست کردم نتایج خیلی خوبی گرفتم. باهاش میتونین خازن های تریمر و واریابل رو تنظیم کنید. خازن مورد نظر رو به پایه 0 و 2 انالوگ وصل کنید و نتایجو روی سريال مانیتور ببینید.

کد:
const int OUT_PIN = A2;
const int IN_PIN = A0;

//Capacitance between IN_PIN and Ground
//Stray capacitance is always present. Extra capacitance can be added to
//allow higher capacitance to be measured.
const float IN_STRAY_CAP_TO_GND = 24.48; //initially this was 30.00
const float IN_EXTRA_CAP_TO_GND = 0.0;
const float IN_CAP_TO_GND  = IN_STRAY_CAP_TO_GND + IN_EXTRA_CAP_TO_GND;
const int MAX_ADC_VALUE = 1023;

void setup()
{
  pinMode(OUT_PIN, OUTPUT);
  //digitalWrite(OUT_PIN, LOW);  //This is the default state for outputs
  pinMode(IN_PIN, OUTPUT);
  //digitalWrite(IN_PIN, LOW);

  Serial.begin(9600);
}

void loop()
{
  //Capacitor under test between OUT_PIN and IN_PIN
  //Rising high edge on OUT_PIN
  pinMode(IN_PIN, INPUT);
  digitalWrite(OUT_PIN, HIGH);
  int val = analogRead(IN_PIN);

  //Clear everything for next measurement
  digitalWrite(OUT_PIN, LOW);
  pinMode(IN_PIN, OUTPUT);

  //Calculate and print result

  float capacitance = (float)val * IN_CAP_TO_GND / (float)(MAX_ADC_VALUE - val);

  Serial.print(F("Capacitance Value = "));
  Serial.print(capacitance, 3);
  Serial.print(F(" pF ("));
  Serial.print(val);
  Serial.println(F(") "));

  while (millis() % 500 != 0)
    ;    
}
sajjsamm انلاین نیست.   پاسخ با گفت آورد
قدیمی 06-13-2017, 06:42 AM   #2
elm_e_elektronic_reader
عضو سایت
 
elm_e_elektronic_reader آواتار ها
 
زمان کاربری: Jun 2017
نوشته ها: 32
پیش فرض

میشه لطف کنی کمی درباره اینکه چطور کار می کنه توضیح بدی؟
elm_e_elektronic_reader انلاین نیست.   پاسخ با گفت آورد
قدیمی 06-14-2017, 01:52 AM   #3
elm_e_elektronic_reader
عضو سایت
 
elm_e_elektronic_reader آواتار ها
 
زمان کاربری: Jun 2017
نوشته ها: 32
پیش فرض

گفت آورد:
sajjsamm نوشته است : نمایش پست ها
سلام. این یک اسکچ برای اردوینو هست که با اکثر برد های اردوینو کار میکنه و قادر به اندازه گیری مقدار خازن تا کمتر از 1 پیکو فاراد تا سه رقم اعشاره که خودم که تست کردم نتایج خیلی خوبی گرفتم. باهاش میتونین خازن های تریمر و واریابل رو تنظیم کنید. خازن مورد نظر رو به پایه 0 و 2 انالوگ وصل کنید و نتایجو روی سريال مانیتور ببینید.

کد:
const int OUT_PIN = A2;
const int IN_PIN = A0;

//Capacitance between IN_PIN and Ground
//Stray capacitance is always present. Extra capacitance can be added to
//allow higher capacitance to be measured.
const float IN_STRAY_CAP_TO_GND = 24.48; //initially this was 30.00
const float IN_EXTRA_CAP_TO_GND = 0.0;
const float IN_CAP_TO_GND  = IN_STRAY_CAP_TO_GND + IN_EXTRA_CAP_TO_GND;
const int MAX_ADC_VALUE = 1023;

void setup()
{
  pinMode(OUT_PIN, OUTPUT);
  //digitalWrite(OUT_PIN, LOW);  //This is the default state for outputs
  pinMode(IN_PIN, OUTPUT);
  //digitalWrite(IN_PIN, LOW);

  Serial.begin(9600);
}

void loop()
{
  //Capacitor under test between OUT_PIN and IN_PIN
  //Rising high edge on OUT_PIN
  pinMode(IN_PIN, INPUT);
  digitalWrite(OUT_PIN, HIGH);
  int val = analogRead(IN_PIN);

  //Clear everything for next measurement
  digitalWrite(OUT_PIN, LOW);
  pinMode(IN_PIN, OUTPUT);

  //Calculate and print result

  float capacitance = (float)val * IN_CAP_TO_GND / (float)(MAX_ADC_VALUE - val);

  Serial.print(F("Capacitance Value = "));
  Serial.print(capacitance, 3);
  Serial.print(F(" pF ("));
  Serial.print(val);
  Serial.println(F(") "));

  while (millis() % 500 != 0)
    ;    
}

این قسمت از کد بهتر نیست که میانگیری کنه قبل از نشون دادن نتیجه؟

کد:
  //Calculate and print result

  float capacitance = (float)val * IN_CAP_TO_GND / (float)(MAX_ADC_VALUE - val);
elm_e_elektronic_reader انلاین نیست.   پاسخ با گفت آورد
قدیمی 06-14-2017, 02:52 AM   #4
sajjsamm
کاربر ماهر
 
زمان کاربری: Apr 2015
نوشته ها: 77
پیش فرض

سلام دوست عزیز. این کد مال من نیست و من فقط پیداش کردم. فرمایش شما هم صحیحه البته این برنامه صرفا برای اشنایی با نحوه کارکرد دستگاهه و ممکنه دقتش به اندازه دستگاه های تجاری نباشه.

شما با اردوینو کار میکنید؟
sajjsamm انلاین نیست.   پاسخ با گفت آورد
قدیمی 06-14-2017, 07:59 AM   #5
elm_e_elektronic_reader
عضو سایت
 
elm_e_elektronic_reader آواتار ها
 
زمان کاربری: Jun 2017
نوشته ها: 32
پیش فرض

گفت آورد:
sajjsamm نوشته است : نمایش پست ها
سلام دوست عزیز. این کد مال من نیست و من فقط پیداش کردم. فرمایش شما هم صحیحه البته این برنامه صرفا برای اشنایی با نحوه کارکرد دستگاهه و ممکنه دقتش به اندازه دستگاه های تجاری نباشه.

شما با اردوینو کار میکنید؟
بله جدبدا بخاطر چند پروژه کاری سرگرم استفاده از Arduino شدم. یکم از بقیه Microcontroller* ها ساده تره ولی هنوز منم خودم آماتورم
elm_e_elektronic_reader انلاین نیست.   پاسخ با گفت آورد
پاسخ

ابزارهای جُستار جستجو در جُستار
جستجو در جُستار:

جستجوی پیشرفته
چگونگی نمایش

آیین نامه فرستادن
شما نمی توانید نوشته ی تازه ای بفرستید.
شما نمی توانید پاسخ بفرستید.
شما نمی توانید پرونده پیوست کنید.
شما نمی توانید نوشته های خود را ویرایش کنید.

BB code is فعال
شکلک ها فعال است
کد [IMG] فعال است
کدهای HTML غیر فعال است

گزينش شتابناك یک انجمن


جامعه راديو آماتوري ايران

Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

جامعه راديو اماتوري ايران اجامعه راديو اماتوري ايران
نشر و توسعه توسط
جامعه راديو اماتوري ايران