Guess it's a lot of work but this year ST has released code for controlling BLDC or PMSM motor in sensor-less mode from zero to high speed.I've experienced the difference between steps and s-curve for a multi-metric-ton rotating device on top of a building. It went from loud bangs and dust falling of lights to whisper quiet operation.
For the stage I'm in tic is more than enough, but I'm always open to better ways.
https://www.st.com/en/embedded-software/x-cube-mcsdk.html
https://www.st.com/content/st_com/e...or-control-ecosystem/stm32-zest-solution.html
Then it should be quite inexpensive to make the s-curve and have excelent control over number of cycles for motor.
I think this is a really inexpensive driverboard that is compatible with above algoritms and drive typical 100-200W motors
https://estore.st.com/en/b-g431b-esc1-cpn.html (I have tried myself with the motor workbench and a normal RC BLDC motor.)
Can anyone explain a bit more about how the python script works? Is it run from the command prompt? What, if any, supporting libraries are needed? And does the script call Arta to perform the measurement or does Arta call the script? I was looking at the documentation for both and I don't see how it all fits together. It would be nice to have a step by step guide on how to do this, even if it's just a short post.
Fluid, thank you for starting this project, getting the script made and putting it all online. I've been making spinorama type measurements manually for about 10 years now and I have to say it's a royal pain. I currently have a 24ft tower with a rotisserie powered by a gear motor. because the indexing lacks precision, I need to measure all of the drive units before I move to the next position, which makes things a lot more labor intensive.
I've purchased parts to make a table. I'm planning to use a surplus VEXTA A3939-9412 stepper with a 5:1 Oriental motor 4GK5K-D9 gearbox (purchased here), plus a belt reduction. For a belt drive I am going to use 90T timing pulley (purchased here) and a 25T pulley. This gives a reduction of 18 when combined with the gear motor and 10 steps per degree. I could have also used a 10T pulley but I couldn't get one with a 10mm bore to match the Oriental gearbox. Pulley combinations that give a whole number of steps per degree seem to be combinations of multiples of 5 and 9. I decided to use HTD 5M belts because they are better suited to heavy loads and don't cost much more than XL (aka extra light).
The table is going to be fixed to a 1 inch steel shaft supported by pillowblock bearings. I will post pictures when I start building (after I get the pulleys from China)
Fluid, thank you for starting this project, getting the script made and putting it all online. I've been making spinorama type measurements manually for about 10 years now and I have to say it's a royal pain. I currently have a 24ft tower with a rotisserie powered by a gear motor. because the indexing lacks precision, I need to measure all of the drive units before I move to the next position, which makes things a lot more labor intensive.
I've purchased parts to make a table. I'm planning to use a surplus VEXTA A3939-9412 stepper with a 5:1 Oriental motor 4GK5K-D9 gearbox (purchased here), plus a belt reduction. For a belt drive I am going to use 90T timing pulley (purchased here) and a 25T pulley. This gives a reduction of 18 when combined with the gear motor and 10 steps per degree. I could have also used a 10T pulley but I couldn't get one with a 10mm bore to match the Oriental gearbox. Pulley combinations that give a whole number of steps per degree seem to be combinations of multiples of 5 and 9. I decided to use HTD 5M belts because they are better suited to heavy loads and don't cost much more than XL (aka extra light).
The table is going to be fixed to a 1 inch steel shaft supported by pillowblock bearings. I will post pictures when I start building (after I get the pulleys from China)
The Main.exe file works without the need for python to be installed. That is the file that ARTA communicates with and it's location needs to be set in ARTA settings for Spatial IR measurements. ARTA sends one of two commands to the exe. -R (Reset) or a number representing the angle you want to move to. In the config file for ARTA_Tic you can change the behaviour of what Tic commands will be sent out when those inputs are received. There are test buttons in the ARTA interface. I would suggest avoiding -r, unless you have a homing routine set it really does not do anything, and can cause your table to keep spinning forever and need to pull the power or send a command to the Tic from another method.
Python is useful for testing as you can call the script main.py from the command line and send commands. You can use them to check that you got the correct gear ratio value so the stepper moves the right number of steps for the angle you set.
You start by installing the Tic software from Polulu. That will let you set up speed and acceleration as well as current and decay mode etc. That will also install the ticcmd command line software that is needed. Place the Main folder somewhere you can access easily. Make whatever changes you need to the config text file inside to get the correct number of steps and functions for the two commands. Set the Main.exe location in ARTA, test either with ticcmd, main.py or ARTA's test buttons. Then you can run a test in ARTA and see what happens. If you want to see the log file of commands or nothing is happening you need to use a program like baretail to view the log.
The Tic can only receive commands from one place at a time. For this reason the Tic Command program needs to be closed once you are finished setting up otherwise it will block the script or exe from working.
Hopefully that explains it, if not ask away.
Python is useful for testing as you can call the script main.py from the command line and send commands. You can use them to check that you got the correct gear ratio value so the stepper moves the right number of steps for the angle you set.
You start by installing the Tic software from Polulu. That will let you set up speed and acceleration as well as current and decay mode etc. That will also install the ticcmd command line software that is needed. Place the Main folder somewhere you can access easily. Make whatever changes you need to the config text file inside to get the correct number of steps and functions for the two commands. Set the Main.exe location in ARTA, test either with ticcmd, main.py or ARTA's test buttons. Then you can run a test in ARTA and see what happens. If you want to see the log file of commands or nothing is happening you need to use a program like baretail to view the log.
The Tic can only receive commands from one place at a time. For this reason the Tic Command program needs to be closed once you are finished setting up otherwise it will block the script or exe from working.
Hopefully that explains it, if not ask away.
Just wanted to show a possible replacement of pillowblock bearings if a 24mm shaft is used.The table is going to be fixed to a 1 inch steel shaft supported by pillowblock bearings.
https://bike.shimano.com/en-EU/technologies/component/details/hollowtech-2.html
They can be relative inexpensive and can be threaded or pressfit.
Of course bicycle cogs and chain can also be used to create a geared drivetrain. Old model stuff can often be very good priced.
In a sprint, a cyclist generates about 2kW of power. Just for reference of forces the bike stuff is made for.
Not suggesting any changes to existing or in work tables. Just if a new one is constructed and bike parts are easy to get hold of.
The Main.exe file works without the need for python to be installed. That is the file that ARTA communicates with and it's location needs to be set in ARTA settings for Spatial IR measurements. ARTA sends one of two commands to the exe. -R (Reset) or a number representing the angle you want to move to. In the config file for ARTA_Tic you can change the behaviour of what Tic commands will be sent out when those inputs are received. There are test buttons in the ARTA interface. I would suggest avoiding -r, unless you have a homing routine set it really does not do anything, and can cause your table to keep spinning forever and need to pull the power or send a command to the Tic from another method.
Python is useful for testing as you can call the script main.py from the command line and send commands. You can use them to check that you got the correct gear ratio value so the stepper moves the right number of steps for the angle you set.
You start by installing the Tic software from Polulu. That will let you set up speed and acceleration as well as current and decay mode etc. That will also install the ticcmd command line software that is needed. Place the Main folder somewhere you can access easily. Make whatever changes you need to the config text file inside to get the correct number of steps and functions for the two commands. Set the Main.exe location in ARTA, test either with ticcmd, main.py or ARTA's test buttons. Then you can run a test in ARTA and see what happens. If you want to see the log file of commands or nothing is happening you need to use a program like baretail to view the log.
The Tic can only receive commands from one place at a time. For this reason the Tic Command program needs to be closed once you are finished setting up otherwise it will block the script or exe from working.
Hopefully that explains it, if not ask away.
Ok, thank you, I think this is enough information to figure it all out. If not I will definitely ask here!
I now see the "spatial impulse response group record" option under the record tab in ARTA, I somehow missed that. I also missed the location of the EXE (despite having previously read the first post) which lead to some of the confusion. Thanks again.
Torgeirs, thanks for the suggestion of the bike bearings - that's an interesting solution. I'm just going to use the pillow block bearings because I already have them, as well as the one inch steel shaft. If I were buying the bearings I might go with 25mm pillow blocks and shaft so I wouldn't have to ream out the pulley.
To try and resolve the physical noise of the moving platform I bought a vibration damper for the Nema 23 Stepper motor. I also used a piece of insertion rubber under the stepper mount to the base.

It has made a significant difference, no more tractor noises. For anyone using one of these stepper motors I think they are well worth the 10 or so dollars this one cost. For Nema 17 steppers they are dirt cheap and available everywhere due to that size steppers use in 3D printers.

It has made a significant difference, no more tractor noises. For anyone using one of these stepper motors I think they are well worth the 10 or so dollars this one cost. For Nema 17 steppers they are dirt cheap and available everywhere due to that size steppers use in 3D printers.
What is the purpose of damping the noise? Just minimizing a nuisance? I assume the acoustic measurements are never concurrent with table movement, so damping is not needed to keep motor noise out of the measurements?
Last edited:
The purpose is really to damp the vibration which is quite significant. The mechanical noise is a symptom of the vibration being passed through a rigidly connected structure. If there is enough delay added to the measurements the mechanical noise will not be an issue for acoustic measurements. I don't think having the stepper vibrating the whole structure is a great idea for longevity. Motor noise for intruding into the measurements would be electrical. Changing the decay mode and off time of the motor controller has a significant effect on reducing or increasing this noise. The code as it stands now keeps the stepper energized once a movement has been started so keeping the electrical noise down is more important for the measurements, but even that is unlikely to be any kind of problem from a metre or more away.
I think you could just add --deenergize to the config file.
In the NFS code I do this: https://github.com/TomKamphuys/NFS/blob/438396ac3a3100fd03cac0dd274a853b7b9a1de7/scanner.py#L219
In the NFS code I do this: https://github.com/TomKamphuys/NFS/blob/438396ac3a3100fd03cac0dd274a853b7b9a1de7/scanner.py#L219
Yes adding another command at the end of the move should work in the same way. I haven't decided if I want the power to stay on or go off yet.
This is a video with the iphone placed on the table top and the stepper motors energized and deenergized. it is quite hard to hear, there is a bit of background electrical noise when the stepper is on but it is not much above the iphone's noise floor. Headphones turned up quite loud might be needed to hear anything at all.
Have tried microstepping? Mine is much quiter.First test of the finished turntable
Stepper driver also has influences noise level. Here you can compare noise level of the same CNC machine with TB6600 vs DM542 stepper drivers. The difference in noise level is quite noticeable
Yes I have, no real difference. The issue is the metal pinion and the slewing ring, and how the platform above is attached. The plastic gear you used to drive the ring might actually be helpful here. It makes almost no noise if the platform is tight and the gear is tight in the teeth. The problem with that is there is some kind of tolerance issue that causes the stepper to get bound up and stuck when it is fixed like that. I don't know if the ring gear I got was a Friday afternoon job but it has been quite disappointing since I got it, rough and notchy. How I have it in the video is the best compromise for now between noise and functionality.Have tried microstepping? Mine is much quiter.
I am not sure whether I should persist with this gear to try and make it nicer or to go back to the original idea with the belt. This works but I don't like it.
The Tic that I used has the ability to change decay mode settings and tune the off time. This makes a huge difference to the electrical and general noise of the stepper itself. In the video above it has been tuned to sound like background noise, with different settings it sounds like a cheap wall wart power supply, very nasty and can be quite loud if the holding current is high. For each different setting of holding current or decay mode the best off time changes considerably.Stepper driver also has influences noise level.
That sounds like gear noise to me. I would try the plastic gear before giving up. Maybe you would need to replace it periodically? There are worse fates.
I can replace the gear with a plastic one and put some POM or Nylon balls in the bearing race, I don't like the noise but if that was all it was I would live with it, but it is how the slewing ring feels and that it can get bound up and stuck that is my biggest dislike with it. Needing to have a loose gear and loose mounting of the platform doesn't sit right.
- Home
- Loudspeakers
- Multi-Way
- Automatic Polar Measurements using ARTA, stepper motor and Tic Controller