Detta program visar spänningsdelningar mellan flera motstånd.
Pot P1 är i ex. uppdelat i två motstånd R1(Övre) och R2(Undre)
Pot P2 används bara hela värdet. Stift 2 används inte.
I programmet måste värdet på P2 skrivas in.
Programet räknar ut värdet på P1 via Volt1 på A1.
Och räknar sedan ut värdet på R2.
Om värdena inte stämmer exakt beror det på tolerans på
trimpottarna ca 5% och att spänningen från Uno-kortet inte
exakt 5Volt.
VIKTIGT använd ite minde än 50 Ohm som P2, då den kan bli överhettad.
P2 är ett skydd för att P1 inte ska överhettas vid mätning av låga värden.
/*
Experiment med Arduino Uno R3
2 Trim-potensiometrar.
Koppla efter schema.
*/
#define Vcc 4.85 //Värde i Volt. Matarspänning på övre motståndet.
#define Vref 4.86 //Värde i Volt. Arduino standard analogReference(DEFAULT).
#define RS232 1 //Skriv till R232 0=Av, 1=Allt, 2=Bara viktiga, 3=Endast svaret
//Värde i ohm. P2 undre motstånd kopplat till mellan A1 och GND. 500 Ohm eller 50000.
// 5% tolerans är vanligt, Vid mätning med ohm-meter var det 52,3K och inte 50K.
// Använd INTE under 50 Ohm, P2 kan då bli överhettad.
long P2 = 52300;
long P1 = 0;
long R1 = 0;
long R2 = 0;
float Volt1 = 0;
float Volt2 = 0;
float VoltDiff1 = 0;
float VoltDiff2 = 0;
float Skala = 0.0;
void setup() {
analogReference(DEFAULT);
if (RS232 > 0){
Serial.begin(9600);
}
if (RS232 < 2){
Serial.print("Vcc = ");
Serial.print(Vcc, 12);
Serial.println(" Volt");
Serial.print("Vref = ");
Serial.print(Vref, 12);
Serial.println(" Volt");
Serial.print("P2 = ");
Serial.print(P2, DEC);
Serial.println(" Ohm");
}
Skala = Vref / 1024;
if (RS232 < 2){
Serial.print("Skala = ");
Serial.println(Skala, 12);
}
}
void loop() {
int Val1 = analogRead(A1);
if (RS232 < 2){
Serial.print("A1 = ");
Serial.println(Val1);
}
Volt1 = Skala * Val1;
if (RS232 < 2){
Serial.print("Volt1 = ");
Serial.print(Volt1);
Serial.println(" Volt");
}
int Val2 = analogRead(A2);
if (RS232 < 2){
Serial.print("A2 = ");
Serial.println(Val2);
}
Volt2 = Skala * Val2;
if (RS232 < 2){
Serial.print("Volt2 = ");
Serial.print(Volt2);
Serial.println(" Volt");
}
P1 = ((P2 * Vcc) / Volt1) - P2;
if (RS232 < 3){
Serial.print("P1 = ");
Serial.print(P1);
Serial.println(" Ohm");
}
VoltDiff1 = Vcc - Volt1;
if (RS232 < 2){
Serial.print("VoltDiff1 = ");
Serial.print(VoltDiff1);
Serial.println(" Volt");
}
VoltDiff2 = Volt2 - Volt1;
if (RS232 < 2){
Serial.print("VoltDiff2 = ");
Serial.print(VoltDiff2);
Serial.println(" Volt");
}
R2 = (VoltDiff2 / VoltDiff1) * P1;
if (RS232 < 4){
Serial.print("R2 = ");
Serial.print(R2);
Serial.println(" Ohm");
}
//Pausar i 1 sekund(er)
delay(1000);
}