Witam,
Potrzebuje pomoc przy programie.
Program ma mierzyć pojemność kondensatora, a w zasadzie trzech na raz.
Kondensatory połączone w trójkąt do A0 A1 A2.
to mi działa ale tylko na jednym boku trójkąta czyli mierzy tylko AB a ja potrzebuję jeszcze BC i CA
nie mam pomysłu jak to zrobić ;(
Proszę o pomoc
Potrzebuje pomoc przy programie.
Program ma mierzyć pojemność kondensatora, a w zasadzie trzech na raz.
Kondensatory połączone w trójkąt do A0 A1 A2.
Kod:
const int OUT_PIN = A2;
const int IN_PIN = A0;
const float IN_STRAY_CAP_TO_GND = 24.48;
const float IN_CAP_TO_GND = IN_STRAY_CAP_TO_GND;
const float R_PULLUP = 34.8;
const int MAX_ADC_VALUE = 1023;
float correction;
float pomiar, wynik;
void setup(){
pinMode(OUT_PIN, OUTPUT);
pinMode(IN_PIN, OUTPUT);
Serial.begin(9600);
}
void loop(){
pinMode(IN_PIN, INPUT);
digitalWrite(OUT_PIN, HIGH);
int val = analogRead(IN_PIN);
digitalWrite(OUT_PIN, LOW);
{
pinMode(IN_PIN, OUTPUT);
delay(1);
pinMode(OUT_PIN, INPUT_PULLUP);
unsigned long u1 = micros();
unsigned long t;
int digVal;
do{
digVal = digitalRead(OUT_PIN);
unsigned long u2 = micros();
t = u2 > u1 ? u2 - u1 : u1 - u2;
} while ((digVal < 1) && (t < 400000L));
pinMode(OUT_PIN, INPUT);
val = analogRead(OUT_PIN);
digitalWrite(IN_PIN, HIGH);
int dischargeTime = (int)(t / 1000L) * 5;
delay(dischargeTime);
pinMode(OUT_PIN, OUTPUT);
digitalWrite(OUT_PIN, LOW);
digitalWrite(IN_PIN, LOW);
float capacitance = -(float)t / R_PULLUP / log(1.0 - (float)val / (float)MAX_ADC_VALUE);
if (capacitance < 1500000.0) //kalibracja pomiaru
correction = 0.9122;
else correction = 0.60;
if (capacitance > 1000.0){
pomiar = (capacitance / 1000.0 * correction);
wynik = (pomiar / 1.5); //przeliczenie na właściwą wartość - połączenie szeregowo równoległe kondensatorów
Serial.print(F("Połączenie w trójkąt = "));
Serial.print(wynik, 2);
Serial.print(F(" uF"));
Serial.print(F(" ("));
Serial.print(F("t= "));
Serial.print(t);
Serial.print(F(" us, ADC= "));
Serial.print(val);
Serial.println(F(")"));
}
}
while (millis() % 1000 != 0);
}
to mi działa ale tylko na jednym boku trójkąta czyli mierzy tylko AB a ja potrzebuję jeszcze BC i CA
nie mam pomysłu jak to zrobić ;(
Proszę o pomoc