ADI Trinamic Blog

We transform digital information into physical motion.

 
  • Newsletter
  • Blog Ethics
  • Legal/Impressum
  • Main Website
Menu
  • Newsletter
  • Blog Ethics
  • Legal/Impressum
  • Main Website
  • Driving a Linear Stage With the TMC4671 – Setup

    Application Setup

    The TMC4671 is Trinamic‘s FOC servo controller IC, capable of controlling BLDC, DC and stepper motors. In this post, I’d like to show you how to configure the TMC4671-Eval Board with our Landungsbrücke interface board to drive a linear stage.

    For this, I use the TMCL-IDE, Trinamic’s free and easy to use graphical user interface.

    In my hardware setup I use a QSH4218-51-10-049-10000-AT, which has 50 pole pairs (200 full steps) and a rated current of 1A. The encoder has 10,000 lines resulting in 40,000 PPR. I also use the Landungsbrücke, a TMC4671-Eval board, and the UPS_2A_24V-Eval power stage board. My belt drive linear stage is of type igus ZLW-0630 Basic and travels at 54 mm/revolution.

    To monitor and tune my system I use the USB-2-RTMI adapter. My goal is to initialize the TMC4671 – especially the encoder and the current measurement.

    Step 1: Preparation

    At the beginning of this project I download and install the software toolchain according to Appnote 038 and download the Evalsystem Firmware sources from Trinamic’s github accordingly. I can compile the latest firmware and upload the .hex file to my Landungsbrücke via the TMCL-IDE using the BL (bootloader) option.

    Next, I set up my evaluation kit and power it with 24V.

    Step 2: Finding initial settings with the Configuration Wizard

    As I need to set up the TMC4671 for correct operation, I use the Configuration Wizard inside the TMCL-IDE to find basic parameters. It’s similar to the approach used in this video by Onno Martens.

    In the first step, I choose the stepper motor and power stage.

    Step 1: Wizard settings


    In the second step, I click on the “set defaults” button and ramp up the slider to 3500. The motor spins now until it reaches the end of the track. I reduce the velocity to 1 rpm so it takes some time to make the distance. If the travel distance is too short in your application, turning the motor in open-loop mode is not required. This is just an example. Furthermore, we don’t need that at every startup once we have configured our parameters.

    Step 2: Starting the motor in open-loop mode

    In the next step of the wizard, I calibrate the current measurement by letting some periods pass to find good values for the offsets. For this, I click on the set button and check the phase. Later on, I will implement a different offset calculation algorithm.

    Step 3: Calibrating the current measurement

    I check for correct mapping of ADC channels to phase currents by checking phase alignment of voltages and currents in the lower graphs of the ADC configuration step. On the TMC4671, phase V is measured by ADC_I2 and phase WY by ADC_I1. This means I have to adjust the default selections as depicted in the image below in order to align the phases. You can see this in the following video as well:

    Step 4: Adjusting the Phases
    Step 4: Adjusting phases

    In the next step, I set the encoder parameters, encoder PPR (=40,000 PPR = 4*10,000 encoder lines), the direction bit if necessary, and I perform the encoder initialization as I click on the button “Init with offset estimation (wizard)”. Later, I want to do this in the firmware.

    Step 5: Setting ABN encoder parameters

    What happens during encoder initialization?

    The firmware enables the open-loop mode and sets the commutation angle PHI_E to zero. By setting a voltage U_D, the motor current rises and the rotor aligns with the external field generated by the current. The firmware waits for the motor to settle and writes a zero on the ABN_DECODER_COUNT register. The procedure forces the motor to go to the zero position, which is where we set our zero position. Unfortunately, this procedure requires the motor to move during initialization. We will explain other alignment procedures in future blog posts.

    Sometimes this encoder alignment procedure fails. For example, if the rotor is stuck and cannot align. For my linear drive stage, this would be the case if I am already at the end stop. So, it is always good to do a plausibility check. But how do I do that?

    I could set a different commutation angle then the zero value and see if my measured encoder angle follows my commanded position. I can do that for a full rotation. If the rotor does not follow or if the offset is too big, I can correct my offset or at least raise a flag that the motor is stuck.

    With my PWM, current measurement, and encoder feedback configured, I can operate the “drive in closed-loop torque mode”. I do so in the test drive wizard slide and click the “Set Defaults” button. The IDE automatically sets the PHI_E to PHI_E_ABN, the motion mode to TORQUE_MODE and the controller parameters to 256 as these are small values that should be ok for most motors. It also sets the target torque to 500.

    Step 6: Setting torque mode

    We can now choose which angle we want to use on each cascade level. In my example, I use phi_e_abn for PHI_E_SELECTION. The selectors dialog in the device tree shows all major selections I made. I need to choose a higher value for PID_TORQUE_FLUX_LIMITS because our motor is already connected to a load and won’t move with the default value of 1000 due to limited torque.   

    Torque motor - not default
    Step 6: Setting torque mode values

    At the end of the wizard, I can generate a TMCL PC script or C-Code for initialization. I choose C-Code, save the generated code for later usage, and proceed with controller tuning.

    You can choose either the option “Open loop” or “ABN Encoder” for the generated code.

    Step 7: Generating the code as TMCL PC script or C-Code for initialization

    This concludes the first steps within the wizard. In the next post, I will show you how to tune your P-I-parameters for torque/flux mode, velocity mode, and position mode.

    Share this:

    • Twitter
    • Facebook
    • LinkedIn
    • Pinterest
    • Print
    • Email

    Related

    February 25, 2020 / Klemens Konhäuser / 1

    Categories: Products, Software, technology, Tutorial

    Tags: code, code snippet, drive, eval kit, evaluation kit, Field Oriented Control, FOC, GUI, guide, How-To, IC, linear stage, programming, rtmi, servo, servo controller IC, setup, TMC4671, TMCL-IDE, tuning

    ROCINANTE Newsletter Driving a Linear Stage With the TMC4671 – Controller Tuning

    Comments are currently closed.

    One thought on “Driving a Linear Stage With the TMC4671 – Setup”

    • Driving a Linear Stage With the TMC4671 - Controller Tuning says:
      February 28, 2020 at 4:18 pm

      […] back to my blog post series! I previously described how I set everything up in the post: Driving a Linear Stage With the TMC4671 – Setup. Today I will show you how I tuned my controller gains for torque/flux-, velocity- and […]

Recent Posts

  • Guest Blog: UBC Thunderbots
  • Guest Blog: TURAG
  • Guest Blog: School of Engineering Telecom Physics University of Strasbourg
  • Guest Blog: STAR Dresden
  • Pushing the Limits of Stepper Motor Control in 3D Printing

Social

  • View trinamic.mc’s profile on Facebook
  • View Trinamic_MC’s profile on Twitter
  • View trinamic’s profile on GitHub
  • View UC4SHA5_GAw1Wbm2T2NWpWbA’s profile on YouTube

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Newsletter

 

Info

Waterloohain 5
22769 Hamburg
+49 40 514 806 40

Tags

3D printer 3d printing arduino BLDC cDriver code code snippet coolStep drive Driver ease of use ethercat eval kit evaluation kit Field Oriented Control FOC GUI guide heliostat How-To IC linear stage motion controller motor driver open source hardware programming rtmi servo servo controller IC setup silentstepstick stealthChop stepper stepper motor stepper motor driver stepper motor driver ic stepper motors technology TMC4671 tmc5130 TMCL TMCL-IDE TRINAMIC TRINAMIC Motion Control tuning

Tag Cloud

    3D printer 3d printing arduino BLDC cDriver code code snippet coolStep drive Driver ease of use ethercat eval kit evaluation kit Field Oriented Control FOC GUI guide heliostat How-To IC linear stage motion controller motor driver open source hardware programming rtmi servo servo controller IC setup silentstepstick stealthChop stepper stepper motor stepper motor driver stepper motor driver ic stepper motors technology TMC4671 tmc5130 TMCL TMCL-IDE TRINAMIC TRINAMIC Motion Control tuning

Pages

  • Blog Ethics
  • Newsletter
  • Player Embed
  • Search Videos
  • User Videos
  • Video Category
  • Video Tag

Categories

  • Competition
  • Guest blog
  • Industry News
  • Jobs
  • Myths about Motors
  • Open Source Hardware
  • Products
  • Projects
    • DIY
    • University Projects
  • Research
  • Social
  • Software
  • technology
  • Trade Shows
  • Tutorial
    • Code Snippet
  • Uncategorized

Copyright © 2015 TRINAMIC BlogTheme created by PWT. Powered by WordPress.org

loading Cancel
Post was not sent - check your email addresses!
Email check failed, please try again
Sorry, your blog cannot share posts by email.