Compare value ...


Closed Thread
Results 1 to 40 of 69

Hybrid View

  1. #1
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,170


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    Try:

    1.
    ADCON0=%10000101
    while !adcon0.2:wend

    2.
    Display your variables on LCD or a serial port to be sure what values they are

    Ioannis

  2. #2
    Join Date
    Apr 2020
    Posts
    30


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    Quote Originally Posted by Ioannis View Post
    Try:

    1.
    ADCON0= 000101
    while !adcon0.2:wend
    with this the Pic16F88 not working






    Quote Originally Posted by Ioannis View Post
    2.
    Display your variables on LCD or a serial port to be sure what values they are
    Display on LCD
    24.5 °C
    Tmin 16 Tmax 30

    cdout $FE, 2, "Temp ",dec2 (temperature/100),".", dec1 (temperature//100),$DF,"C"
    lcdout $FE, $C0, "Tmin ",#Tmin DIG 1,#Tmin Dig 0," Tmax ",#Tmax DIG 1,#Tmax Dig 0



    My problem is, i think:
    temperature is a word
    Tmax is a byte

    and I don't understand how compare the values

  3. #3
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,170


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    Don't you see? You display a decimal number but the number is in fact 245 and not 24.5!

    So, maybe you can use word variables and multiply them by 10 so you can compare 245 to 160 and 300.

    My first suggestion was to make sure that bit 0 of ADCON0 was set. It needs some time and if you go fast to start ADC, the module might not work as expected. I am sorry that I made the mistake of bit 0 to 2. Please include it as this:

    Code:
    ADCON0=%10000101
    while !adcon0.0:wend
    I would not set bit 2 at this stage but anyway.

    Ioannis

  4. #4
    Join Date
    Apr 2020
    Posts
    30


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    Quote Originally Posted by Ioannis View Post

    Code:
    ADCON0=000101
    while !adcon0.0:wend

    OK, Perfect this work well now


    Quote Originally Posted by Ioannis View Post
    Don't you see? You display a decimal number but the number is in fact 245 and not 24.5!

    So, maybe you can use word variables and multiply them by 10 so you can compare 245 to 160 and 300.

    Ioannis
    I have modified code in this mode, but don't work yet

    If temperature > (Tmax*10) then
    PORTA.6=1
    else
    PORTA.6=0
    Endif

    PORTA.6 go high when power on after showing the values on the display

    NOTE :
    The variables are still "temperature WORD" and "Tmax BYTE". I tried to change Tmax from BYTE to WORD in the declaration area but it gives me an error when compile

  5. #5
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,170


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    You should make it word. 30*10=300 > than a byte can hold.
    Also better make the multiplication outside the comparison.

    Use the LCD as a monitor to check your values.

    About compilation, I guess it is a syntax error thing.

    Ioannis

  6. #6
    Join Date
    Apr 2020
    Posts
    30


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    Quote Originally Posted by Ioannis View Post
    You should make it word. 30*10=300 > than a byte can hold.
    Also better make the multiplication outside the comparison.

    Use the LCD as a monitor to check your values.

    About compilation, I guess it is a syntax error thing.

    Ioannis
    hi,

    I have define Tcomp VAR WORD
    and now i have :

    Code:
    tcomp=tmax*100
    
    lcdout $FE, 2,   "Temp. ",dec2 (temperature/100),".", dec1 (temperature//100),$DF,"C "
    lcdout $FE, $C0, "Tmax ",#Tmax DIG 1,#Tmax Dig 0," Tco ",dec2 (Tcomp/100),".", dec1 (Tcomp//100)
    On display i see :

    Temp. 23.5°C
    Tmax 30 Tco 30.0

    And PORTA.6 go at 1 the same

  7. #7


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    on 10bit adc?

  8. #8
    Join Date
    May 2013
    Location
    australia
    Posts
    2,680


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    correct 10 bit 1024 counts @5v vcc
    Last edited by richard; - 10th April 2020 at 00:34.
    Warning I'm not a teacher

  9. #9


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    Here is the code. Look at the comments, and modify the RAW number to number when the display show 30.0degC.
    Code:
    define osc 4
    adcon1.7=1
    ANSEL = %000001 'Disable Inputs Tranne AN0
    ADCON1 = %10001110 
    OSCCON = %01100000 'Internal RC set to 4MHZ
    TRISA =  %00000001 ' impostazioni INP/OUT
    TRISB =  %00000000 ' delle porte
    '----------------------------------------------------
    DEFINE LCD_DREG PORTB       'Porta B DATA OUT 
    DEFINE LCD_DBIT 4           '0 --> Bit 0-3 : 4 --> Bit 4-7 
    DEFINE LCD_RSREG PORTB      'LCD register select port - Porta B --> RS
    DEFINE LCD_RSBIT 2          'LCD register select bit  - Pin RS B2
    DEFINE LCD_EREG PORTB       'LCD enable port - Porta B --> EN
    DEFINE LCD_EBIT 3           'LCD enable bit - Pin EN B3DEFINE LCD_BITS 4           'LCD bus size 4 or 8 
    DEFINE LCD_LINES 2          'Number lines on LCD DEFINE LCD_COMMANDUS 2000   'Command delay time in us 
    DEFINE LCD_DATAUS 50        'Data delay time in us
    
    Rele   VAR    PORTA.6     '                  Pin 15
    '--------------------------------------------------------------
    '---------Define ADCin Parameters   
    DEFINE ADC_BITS 10      'set number of bits in result
    DEFINE ADC_CLOCK 3      'set clock source (3=rc)
    DEFINE ADC_SAMPLEUS 50  'Set sampling time in uS
    
    
    '    RAM Assignments and Variables
    '=========================================================================== 
    temp var word
    temperature var word
    samples var word
    sample VAR BYTE
    quanta con 1250
    Tmax VAR byte
    Tmin VAR byte
    '===========================================================================
    Tmin=16
    Tmax=30
     
    START:
    Lcdout $FE, 1
    
    low rele
    
    main:   
    sample = 1
    samples= 0
    FOR sample = 1 TO 20 'Take 20 samples
    ADCIN 0, temp 'Read AN0 into temp variable
    samples = samples + temp
    PAUSE 50 ' Wait 1/4 seconds per reading
    NEXT sample
    temp = samples/20 'Average over 20 samples (Every 5 seconds)
    temperature= temp */ quanta
    
    if temp > 675 then high rele  'Instead 675 write the correct RAW number for 30degC 
    if temp < 675 then low rele   'Instead 675 write the correct RAW number for 30degC 
    
    LCDOUT $FE, 2 ' ritorna al primo carattere
    lcdout $FE, 2, "Temp ",dec2 (temperature/10),".", dec1 (temperature/10),"C"
    'lcdout $FE, $C0, "Tmin ",#Tmin, " Tmax ",#Tmax            FOR NORMAL OPERATION UNCOMMENT LINE 
    lcdout $FE, $C0, "RAW:",dec temp 'this show the ADC value  FOR NORMAL OPERATION COMMENT OR DELETE THIS LINE
    
    'When the display show 30,0 degC look at the RAW number on LCD and rewrite it in lines: if temp > 675 then high rele
    'and if temp < 675 then low rele . 
    
    goto main

  10. #10
    Join Date
    May 2013
    Location
    australia
    Posts
    2,680


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    not sure whats going on here

    my LM35 has a 0.3 volt output @30c, adc value 61 [10mV/deg]

    an adc read of 675 would need 329 deg
    Warning I'm not a teacher

  11. #11


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    I'm just curious, can you please try this hex, is It working OK?
    Attached Files Attached Files

  12. #12
    Join Date
    Apr 2020
    Posts
    30


    Did you find this post helpful? Yes | No

    Default Re: Compare value ...

    Quote Originally Posted by louislouis View Post
    I'm just curious, can you please try this hex, is It working OK?
    No, it doesn't work, the relay goes ON as soon as I see the display and then it doesn't move anymore

Similar Threads

  1. How to compare two temperatures
    By SKOLS1 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 10th April 2012, 09:07
  2. how to hserin compare with known value?
    By aa222k in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 23rd November 2010, 18:48
  3. Is there a faster way to compare?
    By RussMartin in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 8th February 2010, 19:48
  4. how to compare data
    By Mus.me in forum mel PIC BASIC Pro
    Replies: 19
    Last Post: - 1st November 2009, 22:30
  5. Compare Data
    By Pesticida in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 14th February 2008, 20:40

Members who have read this thread : 1

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