Speed regulator for sewing machine


Closed Thread
Results 1 to 15 of 15

Hybrid View

  1. #1
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,624


    Did you find this post helpful? Yes | No

    Default Re: Speed regulator for sewing machine

    Hi,
    I Think it's just a matter of time, so to speak....
    If your top speed is 2"/sec I'm going to guess that a typical slow speed is something like 0.05"/sec. At that speed, with 55 pulses per inch, the signals period time is 1/(55*0.05)=363ms, then you're doing that on two "channels" (no, they are not measuring the two pulses simultanously).

    There's really not much the software can do about that, it can't update the output of it doesn't get any input and the input is only updated ~1.5 times per second at such slow speed.

    Using tachometers is better since they are continous output devices but you may need some preamplifier to boost the output voltage at slow speed - it all depends. And you're going to need a precision rectifier or an external ADC that can measure both positve and negative voltages since the polarity of the output changes with direction of rotation. Changing to higher resolution encoder is another option.

    /Henrik.

  2. #2
    Join Date
    Dec 2013
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: Speed regulator for sewing machine

    Hi Henrik
    Thanks for the feedback. I started this project a number of months ago and just getting back into it. The reason I picked 55 pulses per inch was that the maximum number that the hypotenuse calculation on X and Y was about 127 before it would go into overflow. I am using a 16F88 and I purchased an 18F2550 to give me a larger number to work with. I only have the student version of PBP so that’s why the choices. I haven’t tried the 18F2550 yet as I’m a beginner it looks very complicated.

    I don’t know why there is not a smooth rise or fall on the output of the PWM but maybe using the PULSIN is not the way to go.
    Using the ADC convertors may be faster responding.

    I have lots of options to try. The encoders can put out a maximum of 2048 pulses per revolution or about 1500 pulses per inch. I can also feed them into a DAC chip to give me a voltage out.
    You can buy these speed controllers commercially so it can be done but they are a bit too much money for me. May someone out there has one that they can reverse enginner for me?
    Thank Jan

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,624


    Did you find this post helpful? Yes | No

    Default Re: Speed regulator for sewing machine

    Hi,

    > I don’t know why there is not a smooth rise or fall on the output of the PWM but maybe using the PULSIN is not the way to go.

    It's because the PWM output is only updated after it has measured the pulsewidth of both X and Y, each taking several hundred ms since that is how wide the pulses are at slow speed. As the speed increases the update rate should too, to a point of course. Are you saying that the update rate remains slow even at higher speeds?


    Lets look at it from another angle. What's the slowest PWM output update rate you can possibly live with? 5 times per second? 10? 20? 50?
    Here's what I'm thinking: Increase the resolution of the encoders and feed them into two timer/counters on the PIC, one for X and one for Y. Now let the counters count pulses for as long as you can possibly wait between updating the output, read the count, differentiate from the previous count and you have a velocity value. Since the pulses are counted by the hardware timer/counters in the PIC they will be tracked simultanously as opposed to using PULSIN where they are measured sequentially.

    You can do this with the 16F88 using TMR0 and TMR1 as counters and, for best results (but a bit more complicated), TMR2 as a timebase. You're going to have to select a resolution and timebase which doesn't overflow the 8 bit TMR0 register as the speed approaches max. For example, if the update rate is 10 times per second, there can be no more than 2550 pulses per second.

    /Henrik.

  4. #4
    Join Date
    Dec 2013
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: Speed regulator for sewing machine

    Thanks Henrik.
    I really appreciate your input. As a beginner it is sometimes hard to see past my own ideas and not realizing the amazing things these PIC’s can do. I am off to the workshop to try your ideas. I’ll let you know how things turn out.
    Thanks again. Jan

  5. #5
    Join Date
    Dec 2013
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: Speed regulator for sewing machine

    Thanks again for your ideas. I increased the encoder resolution to about 2500 pluses per inch of travel and counted the pulses. I seems to work quite well with good low speed movement. My sewing machine drive is a servo so I need to feed it with a frequency. I feed the PWM output to a filter and then to an ADC ( AD654) chip to give me 0 to 15kHz out.

    Code:
    '****************************************************************
    '*  Name    : Pulse Count.BAS                                      *
    '*  Author  : Jan                                      *
    '*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
    '*          : All Rights Reserved                               *
    '*  Date    : 27/12/2013                                        *
    '*  Version : 1.0                                               *
    '*  Notes   : Count pulses in                                                  *
    '*          : 16F88                                                  *
    '****************************************************************
    
    Include "modedefs.bas"          ' Include serial modes
    define OSC 20
    
    #CONFIG __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF & _CCPMX_RB3 & _CCP1_RB3 
    #ENDCONFIG    'Configure CCP1 (RB3) to PWM out
    
    
    SO      VAR PORTB.5     'Define serial out pin
    P1      var PORTA.0     'Define input pin  X
    P2      VAR PORTA.1     'Define input pin  Y
    W1      var WORD 
    W2      VAR WORD
    W3      VAR WORD
    led     var PORTB.0
    TRISA = %11111111
    ANSEL = %00000000
    output   led               
    low      led               'set led off
    
     displayloop:
    
            count  P1,10,W1
            COUNT  P2,10,W2 
            W3 = (W1 HYP W2)               'HYPOTENUSE CALCULATION 
            if W3 > 120 THEN               'Turn on lrd if Hypot is over 
            HIGH LED                       'Turn on led on RB0
            ENDIF
            'if W3 < 100 then
            'low led
            'endif  
            
            Serout SO,N2400,[#W3]
    
    disp:   Serout SO,N2400,[" Pulses",13,10]        ' Display trailer
            hpwm 1,W3,2000
    
                              
            Goto DISPLAYLOOP                 ' Forever
    Now I am trying to improve the design and I was told to try changing the PWM to a 50% duty cycle and very the frequency (hpwm 1,127,W5). This idea gives me my 15K but the lowest I can get is about 1.5KHz and I really need close to 0.
    I am trying to come up with a scheme that will use Timer 0 quickly sample the PWM output and replicate the output with a 1,500 hz offset. Any ideas would be appreciated.

    Code:
    '****************************************************************
    '*  Name    : Pulse Count.BAS                                      *
    '*  Author  : Jan                                      *
    '*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
    '*          : All Rights Reserved                               *
    '*  Date    : 27/12/2013                                        *
    '*  Version : 1.0                                               *
    '*  Notes   : Count pulses in                                                  *
    '*          : 16F88                                                  *
    '****************************************************************
    
    Include "modedefs.bas"          ' Include serial modes
    define OSC 20
    
    #CONFIG __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF & _CCPMX_RB3 & _CCP1_RB3 
    #ENDCONFIG    'Configure CCP1 (RB3) to PWM out
    
    
    SO      VAR PORTB.5     'Define serial out pin
    P1      var PORTA.0     'Define input pin  X
    P2      VAR PORTA.1     'Define input pin  Y
    
    W1      var WORD 
    W2      VAR WORD
    W3      VAR WORD
    W4      var word
    W5      var word
    
    led     var PORTB.0       
    
    TRISA = %11111111
    ANSEL = %00000000
    output   led               
    low      led               'set led off
    
     displayloop:
    
            count  P1,10,W1
            COUNT  P2,10,W2
          
            W3 = (W1 HYP W2)               'HYPOTENUSE CALCULATION 
            if W3 > 120 THEN               'Turn on lrd if Hypot is over 
            HIGH LED                       'Turn on led on RB0
            ENDIF
            W4 = (W3 + 20)                 'Add 20 to overcome min pwm frequence
            W5 = (W4 * 100)                'Times 100 to give min of 2 kHz
            Serout SO,N2400,[#W5]
    
    disp:   Serout SO,N2400,[" Pulses",13,10]        ' Display trailer
            hpwm 1,127,W5
          
                              
            Goto DISPLAYLOOP                 ' Forever
    Thanks Jan
    Last edited by Demon; - 21st January 2014 at 03:31. Reason: Helped format your code using [CODE]...[/CODE] feature

  6. #6
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,624


    Did you find this post helpful? Yes | No

    Default Re: Speed regulator for sewing machine

    Hi Jan,
    I don't understand.....
    The AD654 is a Voltage-to-Frequency converter, it takes an analog voltage in and outputs a frequency which is what you're feeding your servodrive, correct?

    Using the HPWM command and a simple RC lowpass filter will give you an analog voltage from 0-Vcc for a duty cycle of 0-100% and as far as I can see the AD654 should be able to "get down" to 0kHz with 0V input signal. Are you saying that the output frequency of the AD654 is not reaching 0Hz when the input voltage is 0V?

    Are you aiming to get rid of the AD654 feed the servo-drive directly with the PIC?

    Can you upload a schematic? What servo drive are you using?

    /Henrik.

  7. #7
    Join Date
    Dec 2013
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: Speed regulator for sewing machine

    Name:  speed.png
Views: 1200
Size:  33.0 KB
    Hi Henrik
    I guess I am rambling a bit. The circuit that uses the ADC (AD654) works quiet well. What I am trying to do is use the PWM output to give me a frequency output of 0 to 15 kHz. I can get to 15 k with no problem but I cannot get below 1.3K due to the limitations of the PWM circuit.

    The idea was to use the PWM and vary the frequency (HPWM 1, 127,W5). This seems to work as I can set the variable W5 to give me 2000 at 0 input and ramp up from there. But I am stuck with the base frequency of 2K

    What I am trying to come up with is circuit that will mask the first 2 kHz. I seem to remember doing something similar many many years ago using discreet logic. My guess now is to use the timers and interrupts to capture the pulses to isolate the first 2k.
    Thanks for reading this any ideas would be helpfull.
    Servo drives are Gecko G320X.
    Jan

Similar Threads

  1. Replies: 0
    Last Post: - 7th August 2008, 10:02
  2. State machine programming
    By tjstevens in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 17th April 2007, 23:45
  3. Help - ID a 3.0V regulator (SOT23-5)
    By badcock in forum Off Topic
    Replies: 0
    Last Post: - 8th June 2006, 16:00
  4. voltage regulator help - ot
    By docwisdom in forum mel PIC BASIC Pro
    Replies: 29
    Last Post: - 17th May 2006, 01:37
  5. Help with a Parallel I/O to Machine Interface?
    By john meiers in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 16th September 2005, 19:50

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