phpBB [media]
Встретился в интернете проект измерителя индуктивности на Arduino. Решил его повторить - в итоге что то измеряет. Но так как номинал дросселей мне не известен - про точность измерений ничего пока сказать не могу.
Код: Выделить всё
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //Указываем I2C адрес (наиболее распространенное значение), а также параметры экрана (в случае LCD 1602 - 2 строки по 16 символов в каждой
//13 - вход в схему (подключается к резистору 150 Ом), 11 - выход компаратора / операционного усилителя..
double pulse, frequency, capacitance, inductance;
void setup(){
lcd.init();
lcd.backlight();
Serial.begin(115200);
pinMode(11, INPUT);
pinMode(13, OUTPUT);
Serial.println("Why hello!");
delay(200);
}
void loop(){
digitalWrite(13, HIGH);
delay(5);//дать время зарядить индуктор.
digitalWrite(13,LOW);
delayMicroseconds(100); //убедитесь, что резонанс измерен
pulse = pulseIn(11,HIGH,5000);//возвращает 0, если таймаут
if(pulse > 0.1){ //если тайм-аут не произошел и потребовалось чтение:
// #error вставьте здесь используемое значение емкости. В настоящее время используется 2 мкФ. Удалите эту строку после этого
capacitance = 2.E-6; // - вставьте здесь значение
frequency = 1.E6/(2*pulse);
inductance = 1./(capacitance*frequency*frequency*4.*3.14159*3.14159);//один из моих профессионалов сказал мне просто делать такие квадраты
inductance *= 1E6; // обратите внимание, что это то же самое, что сказать inductance = inductance*1E6
//Serial print
Serial.print("High for uS:");
Serial.print( pulse );
Serial.print("\tfrequency Hz:");
Serial.print( frequency );
Serial.print("\tinductance uH:");
Serial.println( inductance );
delay(100);
//LCD print
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Inductance:");
lcd.setCursor(0,1);
lcd.print(inductance);
lcd.setCursor(14,1);
lcd.print("uH");
delay(100);
}
}
_http://electronoobs.com/eng_arduino_tut10_3.php