Comparator circuit thoughts....


Closed Thread
Results 1 to 16 of 16

Hybrid View

  1. #1
    Join Date
    Dec 2005
    Location
    Salt Lake City, Ut, USA
    Posts
    108

    Question Comparator circuit thoughts....

    Hello all,

    It has been a long time since posting on this forum. I hope everyone is well. I am currently working (or thinking about working) on a circuit for one of my cnc machines. It currently exists in analog discrete form, but I thought a pic version would be well suited for an upgrade...but my thoughts are scattered with it! Hopefully one of you fine folks can lead me down the right path.

    Description of machine: 3 axis cnc plasma cutting gantry

    Description of circuit: torch height control

    Circuit operation:
    1. Torch voltage is scaled from 120vdc to 1.2vdc.
    2. Torch voltage is then fed into a window comparator.
    3. Window comparator threshold voltage is variable from .06vdc to 1.85vdc. (representing 60-185vdc)
      Comparator has hysteresis of .01vdc + and - of the set threshold voltage. (representing a 2vdc "lock range")
    4. As the torch voltage swings out of the lock range, either comparator goes high, causing the cnc software
      to "servo" the torch back into range.
    5. The circuit also has an enable input, provided by the plasma cutter itself.
      It is simply a dry contact, "ok to move" signal which indicates the torch is cutting.

    My thoughts for the pic are:

    The cnc software allows direct commands to be sent from the serial port of the PC, via VB scripting.
    Therefore:


    1. Include all of the above features.
    2. Add the option of changing the comparator threshold voltage through serial with say...
    Code:
    SERIN2 SerPin,84,["V",dec3 TargetVDC]
    3. Add the option of changing the comparator hysteresis through serial with say...
    Code:
    SERIN2 SerPin,84,["H",dec1 TargetHyst]
    Are these thoughts doable, and if so, can you fine folks lead me in the right direction?

    Thanks to you all,
    Chris

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Here is a half baked thought.

    Look at using an ADC input.
    60 to 185. Scale this by 60 giving 1 to ~3 for the input. Set VREF for 4 volts. Now you have a 1 volt buffer either way for when the plate suddenly warps or something else happens.

    Now the optimal voltage can be set as VAR SetPoint and the hysteresis can now be SetPoint +- what ever. Beyond the +- all stop or torch out or...

    Have the analog at 10 bit giving 1024 steps in the 4 volt range I would think would allow for a nice smooth operation.
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Dec 2005
    Location
    Salt Lake City, Ut, USA
    Posts
    108


    Did you find this post helpful? Yes | No

    Default

    Thanks mackrackit,

    That sounds like a great idea, albeit leads me to a ton more questions.
    If I understand correctly, is this how it would go?....

    If I divide the TorchVdcMax by 1024 ----> ( 200/1024=.195)

    So, if I do something like this:

    Code:
    SERIN2 SerPin,84,["V",dec3 TargetVDC]
    TargetADC=TargetVDC*.195       'EX:TargetADC=120*.195 ----> 615.3846
    The "615.3846" correlates to the ADC target count? ----> (200/1024)*615 = 120.117

    I'll stop right there for the moment...I'm way confused at this point!
    I think for the moment, I'de much rather focus on commanding the torch voltage rather than both the torch voltage and hysteresis. Maybe it will calm my nerves a bit.
    Can you correct my mindset to this thing, or shoot me an easier way to comprehend it? Thanks a ton so far!

    Chris

  4. #4
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Normally a PIC will only handle a maximum voltage of 5 volts. When you said
    # Torch voltage is scaled from 120vdc to 1.2vdc.
    I thought you were doing this with a voltage divider to bring the 120 down to 1.2, stating that the divider you planned on using was 100 to 1.
    So...

    I was thinking that being the expected voltages from the torch are 60 to 185 a voltage divider that would bring the 60 volts down to 1 volt for the low end and the 185 high end volts would then be ~3 volts. That is where the divide (scale) by 60 came in.

    Many PICs have a 10 bit ADC. Even with a 10bit if you want you only have to use the first 8.
    The difference is the resolution. There is also a voltage reference available when using the ADC. VDD can be used or some other voltage less than VDD. Some have a low end VREF but I figure on this one zero volts will be fine.

    This all means that if an 8 bit (256 steps)ADC setup is used with VREF set for 4 volts, each step represents ~0.015 volts. In real life with the torch voltage being divided by 60, 0.015 would equal 0.94 volts. The torch voltage would have to change 0.94 volts before the PIC sees the change.

    A 10 bit setup works the same but with 1024 steps. Now the PIC can see a 0.23 volt change on the torch.

    This could be tightened up by lowering the VREF and/or scaling the 60 to maybe 0.5 volts, but I figure a little cushion would be good on both ends. I may have more than is needed...

    Now using all of this. Say you want the torch voltage to be 120. With the 4 volt VREF and the voltage dividing, 4 volts at the ADC is equal to 240 at the torch, so we want to see 2 at the ADC to be good. The ADC will give a value of 512. If the ADC is + or - 512 the torch height will need adjusted.

    Let me know how much I confused things
    Dave
    Always wear safety glasses while programming.

  5. #5
    Join Date
    Dec 2005
    Location
    Salt Lake City, Ut, USA
    Posts
    108


    Did you find this post helpful? Yes | No

    Default

    mackrackit,

    No more confusion than before . Actually, the way you described the voltage scaling makes more sense to me now. As far as the torch voltage is concerned, maybe I added confusion from the beginning by not stating what would be a good baseline hysteresis to go with. After trying to get my head around the scaling, I started looking at the numbers more, and in doing that, I think a resolution of 1 volt change at the torch would be more than ok. That being said, that's where I figured using a torch value ranging from 0 - 256 Vdc...

    8 bit ADC
    4 Vdc Vref
    Vdc per ADC count : 4 / 256 = .015625
    Torch Vdc scale : 1:64
    Torch Vdc per ADC count : .015625 * 64 = 1 Vdc
    Ex: Torch Vdc = 115
    ADC counts * Vdc per ADC count = ADC Vdc Now
    115 * .015625 = 1.796875 Vdc
    1.796875 * Torch Vdc scale = Torch Vdc
    1.796875 * 64 = 115 Torch Vdc
    So... for every 1 Vdc change at the torch, there will be a 1 count change at the ADC... correct?

    If this is the case, coding for this arrangment should be way easier?
    Am I making this easier or harder on myself? I think it's sinking in slowly but surely. Thanks for assisting me on my brain fryer!

    Chris
    Last edited by kevlar129bp; - 23rd October 2009 at 16:30. Reason: scattered

  6. #6
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    I think you got it.
    Dave
    Always wear safety glasses while programming.

Similar Threads

  1. Stable Adc Reading Routine
    By gebillpap in forum General
    Replies: 27
    Last Post: - 13th May 2015, 02:18
  2. Quick thoughts: DT Ints with encoders
    By kevlar129bp in forum mel PIC BASIC Pro
    Replies: 19
    Last Post: - 7th January 2010, 01:01

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