• Voltage Divider Example

    Here is an example by Darrel Taylor for a voltage divider circuit. This makes it possible for a PIC to give an analog measurement for voltage that is more than 5v.

    This example divides a 25 volt source into about 4.38 volts for the PIC's A/D converter to handle.

    The ratio of the voltage divider is (R1+R2)/R2. To scale up the A/D reading you just multiply the value times the total resistance of the divider (R1+R2) then divide that number by R2.

    If the input is 25Vdc then the output voltage will be 25v/((R1+R2)/R2) or 25v / ((4700+1000)/1000)) = about 4.38 Vdc. With 10-bit A/D you should get an ADCin of around 898. If you first scale that A/D value up to match the voltage divider ratio, you can then calculate the voltage the same way you would if you were reading 0-5 V.




    898 * 5700 / 1000 = 5118 This is what the A/D would be if it could actually read 0-25 volts directly.

    Now then, for 1 decimal place, multiply that by 50 and divide by 1023. For 2 decimal places, multiply by 500 instead.

    5118 * 50 / 1023 = 250 or 25.0Vdc

    The program below is one way to do it in PBP.

    HTH,
    Darrel


    Code:
    Res1   Var Word
    Res2   Var Word
    Rt     Var Word
    Volts  Var Word
    AD     Var Word
    
    GetReadings:
       ADCin  0, AD
       Res1 = 4700          ' Change these to match your Voltage divider
       Res2 = 1000          ' resistor values for the Solar Cell
       Gosub CalcVoltage
       LCDout $FE,2,"Solar= ",DEC Volts/10,".",DEC1 Volts Dig 0," Vdc"
    
       ADCin  1, AD
       Res1 = 2200          ' Change these to match your Voltage divider
       Res2 = 1000          ' resistor values for the Battery
       Gosub CalcVoltage
       LCDout $FE,$C0,"Batt = ",DEC Volts/10,".",DEC1 Volts Dig 0," Vdc"
    
    goto GetReadings
    
    CalcVoltage:
        Rt = Res1 + Res2        ' Total resistance of Voltage Divider
        Volts = AD * Rt         ' Scale the AD reading accordingly
        Volts = DIV32 Res2
        Volts = Volts * 50      ' Convert AD to Voltage
        Volts = DIV32 1023
    Return
    See http://www.pbpgroup.com/modules/wfse...p?articleid=25
    This article was originally published in forum thread: Using the A/D for Monitoring a Solor Cell and Battery started by chuck.sieveking View original post