0-10v dc


Closed Thread
Results 1 to 25 of 25

Thread: 0-10v dc

  1. #1
    Join Date
    Sep 2006
    Posts
    42

    Default 0-10v dc

    Hi All,
    I need a 0-10v Dc control voltage for control an electronic ballast.
    using an Op Amp and a PIC PWM output, (16f77,4mhz)
    i need to control 0-10v in 10steps with UP and Down Buttons..

    Please help..
    Thanks.

  2. #2
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    Try the attached schematic. Apply pwm to Vin. With trail and error adjust pwm to output the disired voltage. Then enter these values in your code.

    Al.
    Attached Images Attached Images

  3. #3
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by aratti View Post
    Then enter these values in your code.
    Al.
    What code? I think the O/P wants the code written for them...
    With that schematic, a digital pot, a voltage divider, an A/D input, and a bit of trickery, a person should be able to hook up a PIC to auto-track/correct the output voltage...
    That's a handy little idea to have around...

  4. #4
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Deleted.. Sorry.
    Last edited by naga; - 16th October 2008 at 15:58.

  5. #5
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    What code? I think the O/P wants the code written for them...
    With that schematic, a digital pot, a voltage divider, an A/D input, and a bit of trickery, a person should be able to hook up a PIC to auto-track/correct the output voltage...
    That's a handy little idea to have around...
    Dude! I agree that you are a genius, but i am Just a learner.. support ppl who wants some help but dont try to stop who willing to help..

  6. #6
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by naga View Post
    Dude! I agree that you are a genius, but i am Just a learner.. support ppl who wants some help but dont try to stop who willing to help..
    Ok, fact #1 - I'm no genius...
    fact #2 - good luck getting your code to compile and work in MeLabs PicBasicPro (any version)
    And...that code you posted...why would it stop for you? There's nothing in there to make it stop!

  7. #7
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    Ok, fact #1 - I'm no genius...
    fact #2 - good luck getting your code to compile and work in MeLabs PicBasicPro (any version)
    And...that code you posted...why would it stop for you? There's nothing in there to make it stop!
    Thank you very Much, actually i was trying that code in proton,by mistake i pasted.will delete now.
    Since you are a senior member of this forum, and you also understood what code i am searching for, Could you pls help me out. i need to adjust the voltage 0-10 with 2 buttons..
    Help would be appritiated..
    Warm Regards..

  8. #8
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by naga View Post
    Thank you very Much, actually i was trying that code in proton,by mistake i pasted.will delete now.
    Since you are a senior member of this forum, and you also understood what code i am searching for, Could you pls help me out. i need to adjust the voltage 0-10 with 2 buttons..
    Help would be appritiated..
    Warm Regards..
    Again...not a senior member of anything, and I don't use Proton.
    That code you copied was close...so, change it to fit PBP.

  9. #9
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,796


    Did you find this post helpful? Yes | No

    Default

    OK, the 555 is good trick, but if you use an LMC66x series op-amp and a single +12 volt supply, you have a 0-10 voltage amplifier with 3 parts! May be 2 more to filter PWM from PIC...

    Ioannis
    Attached Images Attached Images  

  10. #10
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    naga

    If you use a PIC with Hardware PWM (eg 16F628) then varying the Duty in steps of 10% from 0 to 100% (see HPWM command) will give you your ten steps. A simple filter on the output will then give you ten voltage steps from 0v (0%) to 5v (100%).

    I recall posting a circuit for an Op-Amp Voltage Doubler some time back. Do a forum SEARCH, stick that on the end of your filter and presto - you got ten steps of 0-10v.

  11. #11
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    I recall posting a circuit for an Op-Amp Voltage Doubler some time back. Do a forum SEARCH, stick that on the end of your filter and presto - you got ten steps of 0-10v.
    http://www.picbasic.co.uk/forum/show...hlight=doubler

    Is that it? I've got it on my 'hot' list of handy items to keep around...

  12. #12
    Join Date
    May 2007
    Posts
    604


    Did you find this post helpful? Yes | No

    Default

    Or you could use one of these (without the need for a separate high voltage supply):
    http://www.microchip.com/wwwproducts...cName=en010581
    The TCM828/829 are CMOS "charge-pump" voltage converters in ultra-small 5-Pin SOT-23A packages. They invert and/or double an input voltage which can range from +1.5V to +5.5V. Conversion efficiency is typically >95%. Switching frequency is 12kHz for the TCM828 and 35kHz for the TCM829. External component requirement is only two capacitors (3.3µF nominal) for standard voltage inverter applications. With a few additional components a positive doubler can also be built. All other circuitry, including control, oscillator, power MOSFETs are integrated on-chip. Supply current is 50µA (TCM828) and 115µA (TCM829). The TCM828 and TCM829 are available in a 5-Pin SOT-23A surface mount package.

  13. #13
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    naga

    If you use a PIC with Hardware PWM (eg 16F628) then varying the Duty in steps of 10% from 0 to 100% (see HPWM command) will give you your ten steps. A simple filter on the output will then give you ten voltage steps from 0v (0%) to 5v (100%).

    I recall posting a circuit for an Op-Amp Voltage Doubler some time back. Do a forum SEARCH, stick that on the end of your filter and presto - you got ten steps of 0-10v.
    Hi, Could you please guide me If a 4MHz oscillator and 16f877a are used. want to control with UP and Down Buttons(10 steps)

    Example: (Porta.0)

    PWM PORTA.0,127,10 ?

    Thank you.
    Last edited by naga; - 17th October 2008 at 15:01.

  14. #14
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    Use Portc.1 or Portc.2 and HPWM (see page 73 of the manual)




    B0 var Byte
    Vduty var Byte

    Vduty=0
    B0=1

    Main:

    if UpButton =0 then
    If Vduty<255 Then Vduty=Vduty+B0
    Gosub HpwmSet
    endif

    if DownButton =0 then
    If Vduty>0 then Vduty=Vduty+B0
    Gosub HpwmSet
    endif

    goto Main


    HpwmSet:
    HPWM Channel, Vduty,Frequency
    Return

    with B0 = 1 you have 255 steps , if you want 10 steps set B0 = 25

    UpButton and DownButton are two input ports with a 10K resistor pullup, the switch is normally open.

    Al.

  15. #15
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    Sorry should be:
    if DownButton =0 then
    If Vduty>0 then Vduty=Vduty-B0
    Gosub HpwmSet
    endif

  16. #16
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by aratti View Post
    Sorry should be:
    if DownButton =0 then
    If Vduty>0 then Vduty=Vduty-B0
    Gosub HpwmSet
    endif
    You know you can EDIT your own posts right?
    Look down by the QUOTE button after you've submitted your post.

  17. #17
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by aratti View Post
    Sorry should be:
    if DownButton =0 then
    If Vduty>0 then Vduty=Vduty-B0
    Gosub HpwmSet
    endif
    Hi all, no luck, Please gothru my code...Thanks.

    Include "MODEDEFS.BAS" ' Include Shiftin/out modes

    @ device PIC16F877A , xt_osc, wdt_on, pwrt_on, protect_on ,lvp_off
    Define Osc 4 ' using a 4 MHz oscillator


    ; 76543210
    TRISA = %00000000 ' ALL OUTPUTS
    TRISB = %11111111 ' ALL INPUTS- KEYBRD
    TRISC = %11110001 '
    OPTION_REG.7=0 'Enable internal pull-ups
    OPTION_REG = %11111000 ' Assign prescaller to WDT

    TRISA = 0 ' Set PORTA as output
    T1CON.1 = 0 ' Set TIMER1 clock source to internal clock
    INTCON = %01000000 ' Enable peripheral interrupts
    PIE1 = %00000001 ' Enable TMR1 overflow interrupt
    CCP1CON=%00001100 ' PWM MODE


    UpButton Var PORTB.0
    DownButton var PORTB.1
    PWMOut Var PORTC.1 ' PWM Output


    DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
    DEFINE CCP1_BIT 2 'Hpwm 1 pin bit

    DEFINE HPWM2_TIMER 1 'Hpwm 2 timer select

    B0 var Byte
    Vduty var Byte

    Vduty=0
    B0=1

    pause 100

    Main:

    if UpButton =0 then
    If Vduty<255 Then Vduty=Vduty+B0
    Gosub HpwmSet
    endif

    if DownButton =0 then
    If Vduty>0 then Vduty=Vduty-B0
    Gosub HpwmSet
    endif
    goto Main


    HpwmSet:

    HPWM 1,25,1000 '4.00khz
    'HPWM 1,25,250 '16.00khz. tried this also.

    Return

  18. #18
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Do you have a couple of LEDs handy?
    I always add a 'heart beat' LED to whatever I'm doing, even if I know the hardware is working... Really helps for troubleshooting...
    And if you're using the internal pullups, you're turning on the internal pull-ups, then turning them right back off...
    Code:
                     OPTION_REG.7=0 'Enable internal pull-ups
    	         OPTION_REG = %11111000 ' Assign prescaller to WDT

  19. #19
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    Do you have a couple of LEDs handy?
    I always add a 'heart beat' LED to whatever I'm doing, even if I know the hardware is working... Really helps for troubleshooting...
    And if you're using the internal pullups, you're turning on the internal pull-ups, then turning them right back off...
    Code:
                     OPTION_REG.7=0 'Enable internal pull-ups
    	         OPTION_REG = %11111000 ' Assign prescaller to WDT
    Hi, Still not working..need help..

    Thanks.

  20. #20
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    naga

    Go back to your post #17

    In it you are changing a variable Vduty. This part is good.

    You then call a subroutine HpwmSet. Explain to me how in your code Vduty changes the HPWM setting?

    Go to the PICBASIC manual, look up HPWM and how it is used, an then install Vduty correctly so it actually changes your PWM setting.

  21. #21
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    naga

    Go back to your post #17

    In it you are changing a variable Vduty. This part is good.

    You then call a subroutine HpwmSet. Explain to me how in your code Vduty changes the HPWM setting?

    Go to the PICBASIC manual, look up HPWM and how it is used, an then install Vduty correctly so it actually changes your PWM setting.
    @Melanie, Should i change " HPWM 1,25,1000" TO " HPWM 1,127,1000" ? as per the PBPManual. And please let me know if any other value needs to be changed.. Actaully i'll have to finish this project as soon as possible..

    Thank you verymuch..

  22. #22
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    What Melanie meant was to examine this piece of code:
    Code:
    HpwmSet:
    HPWM 1,25,1000   '4.00khz
    'HPWM 1,25,250   '16.00khz. tried this also.
    Return
    1 is a constant, 25 is a constant, 1000 is a constant.
    If the values in the HPWM statement are all constants, how is a variable in your main loop supposed to change that constant?

    If you change
    HPWM 1,25,1000
    to
    HPWM 1,127,1000
    all you've done is change the 25 to a 127.

    So, WHAT in your code is going to change ANYTHING in your HPWMset subroutine?

  23. #23
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    Naga the solution is under your eyes. With the present code you can press the switches for all your life but the duty cycle of your pwm out will remain always 25! Why we are making the variable VDuty moving from 0 to 255. Why I told you to change B0 to 25 if you want to scan the whole range with 10 steps ?

    Al.

  24. #24
    Join Date
    Sep 2006
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by aratti View Post
    Naga the solution is under your eyes. With the present code you can press the switches for all your life but the duty cycle of your pwm out will remain always 25! Why we are making the variable VDuty moving from 0 to 255. Why I told you to change B0 to 25 if you want to scan the whole range with 10 steps ?

    Al.
    Hi all,So in my post #17, which Part of a statement that is not correct..Help.

  25. #25
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,796


    Did you find this post helpful? Yes | No

    Default

    Come on naga, are kidding us?

    Where in the
    Code:
    HPWM 1,25,1000 '4.00khz
    are setting the duty?

    Put the variable Vduty in the HPWM statement... (instead of number 25) like this:

    HPWM 1,Vduty,1000 '4.00khz

    Ioannis

Similar Threads

  1. DC to AC convertor
    By The Master in forum Off Topic
    Replies: 11
    Last Post: - 6th February 2010, 18:44
  2. Replies: 24
    Last Post: - 1st December 2009, 09:01
  3. from 5v dc to 1.00v dc precise vref 10mA ?
    By phoenix_1 in forum Schematics
    Replies: 10
    Last Post: - 28th July 2009, 09:11
  4. PIC data along dc line
    By sswcharlie in forum General
    Replies: 0
    Last Post: - 30th August 2008, 09:38
  5. H-Bridge control DC motor
    By Paul F in forum General
    Replies: 2
    Last Post: - 2nd March 2005, 22:04

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