Help with the conversion math


Closed Thread
Results 1 to 31 of 31

Hybrid View

  1. #1
    Join Date
    Mar 2011
    Location
    Los Angeles, California
    Posts
    322


    Did you find this post helpful? Yes | No

    Default Re: Help with the conversion math

    Hi! So if I understand correctly I need to use ADCON2 instead of ADCON1 with the same bit configuation? Yes Alian your are completely correct! It is a differntial sensor for my submarine. As the sub dives you need to subtract out the pressure at a given depth for the incoming pressure to stay meaningful.

  2. #2
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,140


    Did you find this post helpful? Yes | No

    Default Re: Help with the conversion math

    You mean that at page 156 of the datasheet you saw ADCON1 and at page 157 ADCON2 and concluded that are the same at bit 7 ? They are not and must be setup accordingly to your needs ALL of them. DO NOT rely on power up defaults.

    You have to set if not all, the most registers for the PIC to work as expected.

    ADCON0, ADCON1, ADCON2 should ALL be set as YOU desire, NOT the PIC's default state. Each register has its own bits for different setting. Otherwise why have dozens of registers if they were all the same?

    Ioannis
    Last edited by Ioannis; - 26th November 2014 at 06:15.

  3. #3
    Join Date
    Mar 2011
    Location
    Los Angeles, California
    Posts
    322


    Did you find this post helpful? Yes | No

    Default Re: Help with the conversion math

    Hi Ioannis,
    This is my very first attempt at using the PIC's A/D.
    I think that ADCON0 should be 000100?1 as I am not sure what "GO/DONE" should be set at.
    ADCON2 looks like it should be 11101010 and again I am not certain of the last 3 bits.

    Thanks, Ed

  4. #4
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,140


    Did you find this post helpful? Yes | No

    Default Re: Help with the conversion math

    Ed,

    Settings depend on your hardware and software requirements.

    E.g.: Do you have internal or extrernal Vref for the ADC? If it is internal and you want the Vref to be at Vdd and ground span, you should set VFG1:0 as 00.

    So, I will try to give you an approach and if it is not close to your circuit we can change it.

    ADCON0: %00000001 ' This sets the ADC channel to 0 (AN0) reference at power supply and converter is ON, ready to convert.
    ADCON1: %00000001 ' All inputs digital except channel 0 (AN0)
    ADCON2: %10110010 ' Right justification, 16Tad acquisition time, Fosc/32 to be safe.

    Now, when all this are setup, you only have to set the GO/DONE bit (ADCON0.1=1) and wait until it is cleared (WHILE ADCON0.1:WEND).

    Then get your 10bit result from the ADRESH/ADRESL registers or the variable you use in ADCIN.

    Ioannis

  5. #5
    Join Date
    Mar 2011
    Location
    Los Angeles, California
    Posts
    322


    Did you find this post helpful? Yes | No

    Default Re: Help with the conversion math

    Hi Ioannis!
    Thank you!
    The connections are very simple, the sensor output is connected to pin 8 (AN4) of the 18F1320.
    So to me this would make ADCON0: %00010001.
    Then ADCON1: %11101111, all inputs digital except channel 4 (AN4) which would be set to analog.
    Then ADCON2: %10110010 as you wrote.

    Or did I misunderstand something completely?

    Again, Thank you for all the time you are spending with me.

    Ed

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,140


    Did you find this post helpful? Yes | No

    Default Re: Help with the conversion math

    I think you are good to go!

    Ioannis

  7. #7
    Join Date
    Mar 2011
    Location
    Los Angeles, California
    Posts
    322


    Did you find this post helpful? Yes | No

    Default Re: Help with the conversion math

    Thanks Ioannis it works great now! Next is trying to understand the program Henrik wrote.

    Accumulator VAR WORD
    i VAR BYTE
    ADResult VAR WORD

    Accumulator = 0

    Main:

    For i = 0 to 39
    ADCIN 4, ADResult
    Accumulator = Accumulator + ADResult
    PauseUs 500
    NEXT

    ADResult = Accumulator / 10 ' Psuedo 12bit resolution, ADResult is now 0-4092

    ' Sensor outputs 0.5V (ADResult=409 ) at 0psi (nominal)
    ' Sensor outputs 4.5V (ADResult=3683) at 7psi (nominal)

    ADResult = ADResult - 409 ' Offset for zero output, ADResult is now 0 to 3274 for 0 to 7psi
    ADResult = ADResult */ 547 ' Scale up, ADResult is now 0 to 6995 for 0 to 7psi

    ' Display Pressure: x.xx psi
    HSEROUT["Pressure: ", DEC ADResult/1000, ".", DEC2 ADResult//1000, "psi", 13]

    PAUSE 1000

    Goto Main

    If I know that at zero PSI the A/D gives 110 as a value and now it looks like we are using a high value of 4092 would I not take and use 4 times the 110 value?
    Next, where did the 547 value come from and should it be "adjusted"?

    Thanks, Ed

Similar Threads

  1. AD conversion
    By CipiCips in forum mel PIC BASIC
    Replies: 8
    Last Post: - 19th May 2011, 01:09
  2. A/D conversion with PIC18F67J50
    By ScaleRobotics in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 8th May 2009, 01:48
  3. PBPL Math...new math takes more cycles...Always?
    By skimask in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 10th February 2008, 10:22
  4. conversion
    By pramodsinha in forum Forum Requests
    Replies: 2
    Last Post: - 19th January 2006, 15:58
  5. ºC -> ºF Conversion
    By CocaColaKid in forum General
    Replies: 6
    Last Post: - 15th March 2005, 09:42

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts