A/D, Pot, Input, A,B So lost now....


Results 1 to 8 of 8

Threaded View

  1. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Helmutt View Post
    Ok. What I am trying to do is control the limits of a servo based on the position of two pots.
    Sounds exactly like this other thread out there recently...

    Im trying to use 16f690 chip because I think I need the AD converter to handle the pot command.
    PBP manual says it gets the POT value by charging up an external, then measuring the time it takes to discharge to a low logic level...on a digital input pin.
    I think you'd be better off using an analog input and some ADC type commands and registers.
    Besides, if you're using POT, you'll be at the mercy of your capacitor...which are notorious for having very wide tolerances.
    If you set your potentiometer up as a simple voltage divider, you'll get much more accurate results, and repeatable.
    The POT command is a holdover from way back when, and not a very good command in my opinion.

    Code from another thread using a 12F675...
    Uses a couple of switches and pot to set some endpoints...
    Change the registers over to '690 equals and make something out of it...
    Code:
    @ DEVICE pic12F629, INTRC_OSC_NOCLKOUT ; Using Internal Clock, no clock out
    @ DEVICE pic12F629, WDT_ON ; Enable Watch dog timer
    @ DEVICE pic12F629, PWRT_ON ; Enable Power-up timer
    @ DEVICE pic12F629, MCLR_OFF ; Disable MCLR pin
    @ DEVICE pic12F629, BOD_ON ; Enable Brown-out detect
    @ DEVICE pic12F629, CPD_OFF ; EEPROM Protect
    @ DEVICE pic12F629, PROTECT_OFF ; Code Protect off
    TRISIO = %11111110
    INTCON.6=0 ' Disable all unmasked Interrupts
    INTCON.7=0 ' Disable Global Interrupts
    CMCON = 7 ' Disable analog comparator
    ServoOut var GPIO.0
    SetLimitSw var GPIO.1
    PotIn var GPIO.2
    MinSw var GPIO.4
    MaxSw var GPIO.5
    wPosit var word
    Posit var byte
    MinPosit var byte
    MaxPosit var byte
    'load starting min and max positions
    data @ 0, 100
    data @ 1, 250
    '************************************************* ***************
    low Servoout
    'read in stored min and max limits
    read 0, MinPosit
    read 1, MaxPosit
    'for power-on reset of positions:
    if minsw = 1 then
    minposit = 100
    write 0, minposit
    endif
    if maxsw = 1 then
    maxposit = 250
    write 1, maxposit
    endif
    pause 1000
    Start:
    gosub GetServoPosition
    pulsout servoout, posit
    pause 20
    if setlimitsw = 1 then 'check min max buttons
    if minsw = 1 then
    MinPosit = Posit
    write 0, MinPosit
    pause 250
    endif
    if maxsw = 1 then
    MaxPosit = Posit
    write 1, MaxPosit
    pause 250
    endif
    endif
    goto start
    '************************************************* ***************
    GetServoPosition:
    high potin
    pause 1
    rctime potin, 1, wPosit 'at 4 mhz, returns 0 - 120
    'adjust posit to get values between 75 and 250
    'use word-sized variable because calculation might exceed 255
    wposit = wposit + 75 + (wposit / 2)
    'now limit posit to 100 - 250 (1 ms - 2.5 ms)
    'and put into byte-sized variable
    if wposit > 250 then
    posit = 250
    else
    posit = wposit
    endif
    if posit < 100 then posit = 100
    if setlimitsw = 0 then 'apply limits
    if Posit < MinPosit then Posit = MinPosit
    if Posit > MaxPosit then Posit = MaxPosit
    endif
    return
    '************************************************* ***************
    Last edited by skimask; - 9th March 2008 at 10:06.

Similar Threads

  1. floating A/D input
    By muddy0409 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 28th April 2009, 14:21
  2. 12F675 A/D and GPIO sleep interrupt
    By macinug in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 8th September 2008, 15:39
  3. Advice on Input circuitry for 0-10v or Pot
    By bcd in forum Schematics
    Replies: 18
    Last Post: - 12th April 2008, 11:47
  4. Question from New member A/D input 16f876
    By mbruno in forum General
    Replies: 2
    Last Post: - 26th January 2008, 15:52
  5. Replies: 4
    Last Post: - 24th January 2007, 23:20

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