• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

VFD control options

Scheduled Pinned Locked Moved
CNC
6
19
2.0k
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    jay_s_uk
    last edited by 27 Apr 2021, 09:30

    I find with my PWM to analogue converter I get a variation in RPM of around 5-600 RPM.
    I currently use heater outputs to control when the spindle is on or off.
    Feedback of the speed will allow a lot more control, such as waiting for the spindle to reach speed etc without having to put a delay in the gcode

    Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

    1 Reply Last reply Reply Quote 0
    • undefined
      samlogan87
      last edited by 27 Apr 2021, 22:24

      It is a shame 0-10V is so widely used in the smaller cheaper drives as it is such a horrible analog signal to use. 4-20mA is becoming much more widely used (and has been for quite some time) as it will fault on cable break and does not worry (Until a certain point) about extra resistance causing voltage drop and therefore incorrect inputs into the VSD.

      As I think I mentioned above, I would almost think that an expansion board for VSD control is a good idea with extra inputs and outputs to cover off Start and Stop, Direction, Reference Speed, Digital Input for Current Limit (Mostly for reference as often the VSD is hidden) and current feedback, which can subsequently be used with some form of loop to scale the feed rate down to ensure you do not overload the motor.

      Sam

      Custom Core-XY

      1 Reply Last reply Reply Quote 0
      • undefined
        cjm
        last edited by 28 Apr 2021, 22:12

        @t3p3tony To answer your question about what "everything" is, the circuit below is an example of a very simple opto-isolated interface that delivers all the key output signals needed to control pretty much any low cost VFD (as far as I can see):

        VFD Speed
        VFD Run/Stop
        VFD Direction
        VFD Reset

        It is powered on the VFD side by the +12V supply commonly available from such VFD and on the Duet side by the +3.3V supply.

        The circuit also provides an opto-isolated input so the Duet can read the tacho pulse from the VFD Frequency connection.

        As identified by several people across the Duet3D CNC forum, this would allow:
        a) display of the actual spindle RPM on the Duet Web Interface;
        b) M3, M4 and M5 commands to wait for the spindle to get to speed before moving to the next G-code command; and
        c) adding a feedback loop to be implemented around the VFD to improve spindle RPM stability and control during machining.

        The current limit and current feedback connections that Sam mentions certainly sound useful, but I haven't come across them in the low cost VFD I've investigated or worked with, so I'm afraid I can't comment on how they could be implemented.

        4cf8fd28-39ed-4d67-929c-aa97c900e40c-image.png

        Schematic_VFD Interface_2020-11-19.pdf

        I developed this for my own personal use and if it's helpful, anyone may use/develop it as they wish - but no warranties are offered or implied!

        undefined 1 Reply Last reply 29 Apr 2021, 05:54 Reply Quote 2
        • undefined
          o_lampe @cjm
          last edited by 29 Apr 2021, 05:54

          @cjm said in VFD control options:

          The circuit also provides an opto-isolated input so the Duet can read the tacho pulse from the VFD Frequency connection.

          In another thread I asked, how fast the external triggers could be read (10kHz?), but @dc42 said, they are not that fast, since they don't run in the main loop.
          Do you have different experience? On which pins?

          undefined 1 Reply Last reply 29 Apr 2021, 08:53 Reply Quote 0
          • undefined
            T3P3Tony administrators @o_lampe
            last edited by T3P3Tony 29 Apr 2021, 08:53

            @o_lampe If we were to read the tacho pulses directly and act on them they could not a normal trigger. @dc42 would need to confirm but I imagine it would be like we handle fan tacho's

            www.duet3d.com

            undefined 1 Reply Last reply 29 Apr 2021, 22:12 Reply Quote 0
            • undefined
              cjm @T3P3Tony
              last edited by 29 Apr 2021, 22:12

              @o_lampe The normal approach to measure the frequency of a repetitive pulse like the VFD tacho with a micro-processor would be to connect it as the clock input to a counter/timer configured to count pulses within a given time window (e.g. 0.1 second). At the end of each time window the timer generates an interrupt and the micro reads the count which is directly proportional to the tacho pulse frequency. In this way, the processor only needs to read the timer count infrequently, without being limited by the micro's code execution.

              @T3P3Tony This link describes how to attach a fan with tacho pulse output to either a Duet 2 or 3 so, as you mention, there appears to be hardware provision to read a tacho signal and RPM already:

              https://duet3d.dozuki.com/Wiki/Connecting_and_configuring_fans

              I wonder if the fan RPM is accessible through the Duet Object Model? If so, then for CNC use, it should be relatively straightforward to repurpose the fan RPM value for spindle speed display on the CNC version of Duet Web Control.

              undefined 1 Reply Last reply 29 Apr 2021, 22:30 Reply Quote 1
              • undefined
                T3P3Tony administrators @cjm
                last edited by 29 Apr 2021, 22:30

                @cjm fans.N.rpm is the object model key you are looking for.

                www.duet3d.com

                1 Reply Last reply Reply Quote 0
                • undefined
                  cjm
                  last edited by 29 Apr 2021, 22:36

                  @t3p3tony Thanks! Hopefully I can try this over the weekend.

                  1 Reply Last reply Reply Quote 0
                  • undefined
                    samlogan87
                    last edited by 30 Apr 2021, 18:50

                    The above drive manual shows it has a voltage output for frequency feedback. Surely that is a more simple way of getting feedback for rpm.

                    Sam

                    Custom Core-XY

                    undefined 1 Reply Last reply 3 May 2021, 17:52 Reply Quote 0
                    • undefined
                      cjm @samlogan87
                      last edited by cjm 5 Mar 2021, 17:55 3 May 2021, 17:52

                      @samlogan87 The motivations for using a tacho pulse rather than voltage were:
                      a) it is easier to opto-isolate;
                      b) if the tacho pulse is derived from the VFD motor drive signal then in principle, the tacho frequency should be precisely related to spindle speed; and
                      c) it's what I had understood was being output by my VFD's frequency output terminal.

                      However, a little bank holiday tinkering has shown that what my low cost VFD actually provides on its frequency output is not a tacho pulse but a voltage (kudos to Sam!).

                      It's not a very clean voltage:
                      bbee9721-5a9f-4117-a327-239229df9398-image.png

                      Nonetheless, the DC level appears to be proportional to the displayed spindle RPM:

                      17640a0f-6e73-449e-b430-f62cdba349f7-image.png

                      A simple linear fit indicates that the RPM could be calculated from the voltage with an error of roughly +/-300 rpm:
                      9be3457b-4b11-412e-8338-07d11a44b0b3-image.png

                      A second order fit roughly halves the error, reducing it to +/-0.6% of full speed:

                      So, it looks as though this analogue VFD frequency output could give a useful indication of actual spindle RPM.

                      This leaves the question for "me and my CNC" of how to get this voltage into the Duet, preferably via an opto-isolated interface...

                      voltage to frequency converter (e.g. LM331) -> opto-isolator -> Duet exp.b6?
                      Σ-Δ modulator ADC -> isolator -> Duet exp.b6 -> digital filter?
                      ADC -> isolated spi/i2c? -> Duet spi/i2c?
                      ?
                      ?

                      undefined 1 Reply Last reply 4 May 2021, 10:55 Reply Quote 1
                      • undefined
                        samlogan87 @cjm
                        last edited by 4 May 2021, 10:55

                        @cjm opto isolation isn’t new with analog signals. We use them a fair bit to protect against burning up plc inputs or vsd inputs and they are generally cheap so shouldn’t be hard to implement. However I have absolutely no experience with designing and build pcb’s so shouldn’t be commenting

                        Sam

                        Custom Core-XY

                        undefined 1 Reply Last reply 9 May 2021, 19:20 Reply Quote 0
                        • undefined
                          cjm @samlogan87
                          last edited by cjm 5 Sept 2021, 19:20 9 May 2021, 19:20

                          @samlogan87 @T3P3Tony
                          I used an old Arduino to convert my VFD's "frequency output" (0-5.0V) voltage signal into a square wave whose frequency is proportional to the spindle RPM i.e.
                          VFD 24000 rpm -> 5.0V -> 400Hz square wave.
                          This square wave drives the Duet's ext.b6 pin via an opto-isolator.

                          The fans[0].rpm object model key gives the following results compared to the demanded M3 rpm and the RPM displayed on the VFD:

                          M3 S VFD Fans[0].rpm
                          24000 24000 12000
                          20000 20154 10150
                          16000 16169 8123
                          12000 12118 6103
                          8000 8154 4117
                          4000 4083 2090
                          0 0 0

                          The fans[0].rpm result look to be half the expected result, presumably due to fans normally having 2 pulses per revolution?

                          Allowing for this factor of 2, fans[0].rpm tracks the VFD/spindle frequency quite well (~0.3% error).

                          Ideally one would like to use config.g to define a pin as the spindle tacho source (and an associated scale factor) so that the "Current RPM" could be properly displayed. Might this make be added to a future Duet firmware update?

                          1 Reply Last reply Reply Quote 1
                          17 out of 19
                          • First post
                            17/19
                            Last post
                          Unless otherwise noted, all forum content is licensed under CC-BY-SA