I'm trying to accurately measure a resistance using the analog input.

RefV variable contains a pre measured value, the measurement was performed by closing the circuit without R1 so basically it is the Voltage source or the VT(Voltage Total).

On my code below, the first thing it does is close the relay to add the resistor in the circuit then perform a measurement. The measure value will be stored at dRes. dRes now represent V2 in the circuit, then by doing RefV-dRes v1 is calculated. Since R2 is known in theory I can calculate for R1. With my code I was able to calculate for R1 if it is 100 OHM or more (tried and tested with 100, 470 and 1k Ohms), but I was hoping I could capture up to .2 Ohms if possible. I was trying it with my 2.4, 5.6 and 10 Ohms resistor and I can't seem to get an accurate measurement or it won't show measurement at all.

digitalWrite(13, HIGH);//Turn the relay on and add the resistor to be measured in the circuit

delay(500);//Stabilize the relay contacts

test=analogRead(A0);

dRes=map(test,0 ,1023, 0, 6600);//Map A/D digital data. 6V max voltage divider is two 1.5k OHM resistor with 1% tolerance

dRes=(dRes/1000);

digitalWrite(13, LOW);

delay(10);

float v1;

float v2;

float R2=3000;// Load resistors value-This is the voltage divider for the analog input composed of two 1.5K resistor

float I;

v1=RefV-dRes;//Get voltage drop on relay. RefV is the reference voltage.

v2=dRes;

I=(v2/R2);//Compute for Current-I=I1=I2=.....

//By knowing the I, R1 can be calculated

ContR=(v1/I);// ContR is the R1 in the circuit so R1=V1/I, R1 also represent the resistor to be measured

dContR=ContR; //Transfere value to another variable (for LCD Display)

I'm hoping to get away with simple circuit or without using amplification if possible.

Thanks.