Robotics and CNC

Recommendations for CNC machines

If you need advice on search engines to use, mechanical components or how to assemble them and buy them, Please contact Fabio di Arezzo which in recent years has gathered a lot of experience on CNC milling and engraving machines with lasers.

In upcoming pictures you can see some of his achievements. Clicking the images get bigger and you may notice that are combined machines, that is, that you can mount either a laser that a cutter.

CNC machine CNC machine CNC with laser

Write to Fabio for recommendations, to buy together components or to make you procure from him of the kits of components. Or you might even agree to build parts or complete machines.

Fabio di Arezzo – Civitella in Val di Chiana (AR) –

Radar and robotic arms

This is the first sonar das Riboni, l ’ application ThereminoRadar was born from this prototype. We thank Mauro, for keeping us involved and for insisting, up to get it to work.
Download ThereminoRadar here: /downloads/automation * radar and information on sensors here: /hardware/inputs/sensors # usound

– – – – – – –

Mauro Radan is also experimenting with different versions of parallel grippers. His mechanics are designed very well. This is a version with high power servo. These servos are not suitable to write because of their dead band, but are great for catching and lifting objects. The two servo at the base and the very robust construction, heavy enough to lift objects.

– – – – – – –

One of the first prototypes of ThereminoArm. This version was still a Master and a Slave, because the first Master did not have configurable PIN. Now you do everything with just Master and advance even two pins. The April update 2017: the new firmware of the Master, increases the number of pins to 6 to 12, so now they advance eight pins for general purposes. Also new firmware may also drive the stepper motors.

You can then build very precise robot arms using small stepper motors and belts. I recommend using a very high reduction ratio, at least five but better if you manage to get to ten. In this way the 200 steps per revolution will become 2000 steps per revolution and you can get an accuracy of 0.7 mm with half-meter long arms. Accuracy that will increase to about one-tenth of mm and above using the microstep.

– – – – – – –

A Robot is not necessarily an articulated arm. With a little’ fancy, You can compose simple and efficient machines.

A robot “instructional” built by students of the Institute ’, C. of Corniglio

The Institute's proposal, motivation i.c. Corniglio is: “…join the digital world with the real world and concrete” and that's precisely why is born on system Theremino. A warm thanks for your research!

Sketch and Firmware

Many after learning the language Arduino sketch, they wrote that they would like to use it, for Theremino. Unfortunately the language sketch was thought, only dell processors ’ Arduino and transplanting it on other “micro”, would become so different, to lose any possibility, Exchange programs between the two.

Our PIC programming in C or C++, using an IDE standard and standard compilers, We use GNU Compiler, It is Open Source.

As far as the huge popularity of Arduino, It can make us look “several”, in fact quite the opposite is true, is Arduino using a nonstandard language, made especially for Arduino and valid only for Arduino.

Sketches are not true firmware programming, but a simple programming, that hides all the “outline”. With the sketch, l ’ efficiency is the ability to maneuver, are limited.

In addition to a didactic deformation sketches, you learn to use an abstraction of micro, instead of the micro itself. To learn how to use a micro, You should consider the data sheet of the manufacturer, not the instructions of Arduino.

That being said, Luckily, the system firmware Theremino, requires no programming. We are in 20xx and supposedly the InOut a PC, as well as the firmware of a mobile phone, or a washing machine, are working. “How are”, without having to re-schedule every time, Depending on whether you want to wash shirts, or blue jeans.

Shift of perspective

The shift of perspective, between Arduino and Theremino is in fact, move the ’ intelligence from the firmware to the software. This shift multiplies per thousand the available speed, the computing power, the memory, and the ease of programming.

For this approach, You must be permanently connected to a PC (or a NetBook, a eeeBox, a Tablet, an embedded PC or a Raspberry Pi, as explained here: blog/standalone-applications#standalone, and also here: downloads/notes-on-software # computers)

Many devices, like printers, monitors and mice, they are constantly connected to the PC and all they find “normal”. Yet many people think that a “device”, such as a robotic arm, or a 3D printer, should be autonomous, and probably a pile…

Robotic arms and intelligence

We do l ’ example, watch case, a “robotic arm”. Many manufacturers of robotic arms Arduinici, they realized that their arm “battery powered standalone”, in the end he always does the same thing. What he's missing? Communication and software, powerful algorithms that keep in touch 3D data, with the outside world, sensors, Webcams, microphones, understand the GCode, and communicate with other applications, in real time.

Micro are not designed to handle 3D files, or decode audio signals, do not have adequate power, to play midi files, or decode the video of a WebCam. And even if they are forced to do so, the hurt. Said with other words: “The appropriate place for the brain, It's not close to the muscles”

Another reason, that makes it very smart, connect firmly the arms and 3D printers to your PC, is that you have to supply them power. When you exceed the phase toy, power needs, become too heavy, for batteries.

How are the professional robotic arms ?

  • Have big cables, that carry power and data.
  • Communicate constantly with a hub PC.
  • Contain only the firmware, intelligent algorithms, they're all on PC.

Click on the image, for a better look.

Which language to use?

Once you have decided to move the ’ intelligence, from the firmware to a high-level language, which is the best language to learn?

Here is a matter of taste, Some say that only exists on C++, and treat with contempt, every other language.

Other, like us, think that C++ is a language older, that requires much more time and energy, recent languages. And they also think that C++ and similar (C, Java and all languages with the semicolon to each row) formal languages are poorly structured and poorly, that invite you to write, so “dirty” and confused. In these languages, you can write, things acceptable by the compiler, but absolutely unreadable, for humans.

We prefer more structured languages, that help to write well, and to minimize errors. This process of gradual estrangement, from machine language, is underway for fifty ’ years and with each new step, c ’ is anyone who complains and complains about the old languages. But the process will continue, and eventually we'll get to program, in human language. Currently the human language is VbNet.

As the modern languages (VBNET and C #), they have a power and impressive speed, because their basic functions, are not rewritten every time from scratch, but are instead ready in “Runtime” and written with optimized algorithms, and adapted to the operating system.

A second advantage of modern languages, is to be independent of the operating system. An application written in C # or Visual Basic, runs without changing a comma even on Mac, Linux and Unix. (This in theory… in practice only on Windows works fine, While on other operating systems, implementations are incomplete and full of errors)

In conclusion we We suggest using VbNet or C # (very similar to each other) Almost all applications, of the Theremino System, are written in VbNet, because we find it more “Human”, but you can easily switch from one language all ’ more, using SharpDevelop to translate.

To install the developer tools, read here: downloads/notes-on-software # instruments

  1. Luca says:

    good morning to you.
    I bought a Theremino StepperDriver card that will serve to replace the electronic original file of a Chinese cnc I use to produce PCBs. I saw that that schedule can also manage in addition to engines 2 power lines with mosfet, so I imagine that you can also connect an electric. But I did not find detailed instructions on what the ports to handle it and the images that I find on the net, I still have some doubts. You also know if there is a pdf file with all the details for schedaStepperDriver?
    I thank you in advance for your answer.

    • Livio says:

      Usually the spindles operate at mains voltage, so the mosfet of this card can not fly it. These MOSFETs are designed to adjust the PWM heating elements of 3D printers.

      To turn on and off the spindle should use a mechanical relay or our Optotriac (but bearable attention to power and cooling of the Triac). To adjust the spindle speed should send Pwm from a master output and having a PWM adapter that can withstand the power. Or the spindle itself should accept a PWM signal.

      The Stepper Driver tab is explained on this page:

      The pin and slot to be used are explained in the documentation of the CNC application (Slots to use are on page 43).

      For general concepts about the operation of slot you should also read the documentation of HAL application and Master modules.


      If you need more ask, He explains in detail what it is not clear, so we can focus on what you need.

  2. Marco says:

    Some time ago I asked for advice on how to Livio produce a gcode for Theremino CNC with Eagle and Fastgcode.ulp. If you remember gcode product was limited to the circuit holes “printed” and not draw the slopes. I also made screenshots of the Fastgcode configuration page to get help. Eventually I gave up for time and had used other software to the gcode. Yesterday, though, I finally solved my problem and everything works perfectly with your Fastgcode 7.9, it was necessary to set at least two depth step on the Z, in any of the boxes (I did it for milling contour of the board). Thanks again for your availability

    • Livio says:

      Thank you for your evidence.
      FastGcode is a little-used application and some operations are difficult to understand or even worse.

      And’ advisable to also try older versions, they had not the first drilling. The latest versions, with drilling beginning, They have been recently tested and may have faults.

  3. Luca says:

    Good morning,these three years I use Theremino master to operate a three-axis milling machine for wood with excellent results. Now I tried to drive a plasma torch to cut metal but I quickly encountered difficulties because when you turn on the torch many times you stop usb communication and HAL goes wrong. I am using a cheap plasma cutting with contact starting because machines designed for cnc cost thousands of euro. I took a shielded usb cable but I have improved things a lot. I wanted to know if there are any filters or protection to prevent electromagnetic interference. The departure of the cut is handled by a pin of the master which activates an SSR that an electromechanical relay in its turn activates to 220 volts which closes the start button on the torch circuit(I did so’ to use the outputs 220 volts controlled by the master vac and spindle).
    Thank you , Luca Auctions

    • Anonymous says:

      It is not the USB cable to pick disorders, but the wires that go from the Master to the stepper motor driver and to the switches (manual buttons and switches).

      Disconnect from all wires Master (precisely from the Master Card not on the other side).
      It also disconnects the ground wires that go to the drivers and sensors.
      The Master will then only connected to the USB.

      Also check that you have the bulk of the PC connected to the electrical system ground.

      Under these conditions, try turning on and off several times flashlight and communication should never come off.

      Then connect only one of the sensors and try again

      Then connect only one stepper motor and try again.

      Once identified by which wire (or from which wires) interference can be the Master, we will focus on him and add resistors to completely eliminate the problem.

      For the limit switches and the manual buttons disturbances are eliminated completely by adding two resistors as explained here:

      If the noise come from the stepper driver, then they should be connected to the electrical system ground also the negative of the power supplies of the stepper driver.

      • Luca says:

        Thank you, I will do these tests and then I tell you!

        • Luca says:

          I finally got to rehearse. From the information that I have found the ignition system is not high frequency but has a coil that sends the high-voltage discharges(a little’ like an old lighter). I unplugged everything from the master but,by starting the ignition after two or three times skips the USB communication and the program is interrupted cnc. I connected the land of the cutting table in the center of the plant lands (remembering the advice on grounding)but the problem has come back. I ran the plasma in a nearby room under a’ but other line,if I get close to one meter from the computer and I start turning,jumps back communication. If I put the cutting machine next to the computer, but I'm away with the torch then I can turn on what I want and there is no interferenza.Poi I noticed that I can get with the torch to the computer running the ignition without causing interruptions only if I hold in vicinity of the torch lead to the mass that sticks to the metal to be cut(?!!) This would make me think that maybe placing a copper screen to the torch cable and connecting it to the ground may improve things…. What do you think?Thank you , Luca

          • Livio says:

            Since you talk about high voltage, I imagine that the current passing along the torch cable is very small, then an electric screen (thin aluminum or copper) They should totally shield the disorders.

            So you could try to wrap the cord of the torch with a kitchen foil (at least for test, Then if it works you study better).

            At the start of the torch cable should wrap, around aluminum, a little’ of bare wire coils and then connect this wire to earth.

            Then maybe you should also shield the torch itself.

            Check then also that the box from which comes the cable is metal and grounded. Please try the tester, not trust you. After many years I used it, I discovered that my bench power supply, the box had not grounded. In fact, every time I lit, and I turned off the generated noise. I stripped the paint below the ground screw and fell into place.

            If not then there are magnetic couplings, for example between the transformer which generates the high voltage (but it should be done badly and have standards are applied losses), and USB cable.

            I'm pretty amazed that it is possible to lose communication to the bare Master, no wire connected to Pin. Maybe try again but with no USB cable lying (all crowded in “S”, near the PC and the Master over). This way you'll check if the USB cable to capture the trouble.

            Continue with the evidence, only you proceed step by step and methodically, as you've done so far, you'll understand what's going on. And, for pleasure, when you understand what and where mates, enter it here. What I'm really curious to see how it happens.

            • Luca says:

              Thanks for the idea of ​​the screen. Also I'll check the grounding of the plasma box that is metallica.Poi'll let you know. I also saw the security update to the input pin with the capacitor as well as the two resistors. I'll try that too as the only protection with resistors was not enough and I had to disconnect all switches because’ I would stop the usb communication (even with the cutter)

              • Livio says:

                You had put the protection resistor 330k near the Master ?

                If so then you have some really huge noise induced on wires, hundreds of volts. If it happens with all grounded, then there is something very odd and you should find out what.

                • Luca Auctions says:

                  Finally I managed to make new tests with plasma. I added a screen in copper mesh on the torch lead ,I added a emi filter incoming plasma cutting and a feeding-control computer ,I've run a gcode and I continued to ignite the plasma arc and everything works!

  4. Livio says:

    Leo asked us

    In the HAL application of the stepper motors are adjustments in “mm per minute”, “mm per second per second” and “Steps for mm”. That makes me hard to do the math when I want to use millimeters instead of the engine speed, or grades.


    We used millimeters because the majority of readers have a stepper motor that moves a cutter every lap of a millimeter, or of two millimeters. So in these cases it becomes easy to deal.
    – The engine 200 steps per revolution
    – If every lap is a millimeter I am then 200 step for mm

    Then here are easily derived other cases:
    – If any did turn would then be only two mm 100 step for mm
    – And if I set the driver with microstep to 8, then they would 800 mm steps.

    In some cases (rarely) it might be useful to think in different units of measure from mm. For example in inches, or in degrees, or in revolutions of the engine. In these cases, simply replace mm with the new unit and always proceed in the same way.

    Wishing you could also open the file for the language you use and change the text you want to appear in Label_MaxSpeed, Label_MaxAcc e Label_StepsPerMillim. We do not recommend doing this because it's uncomfortable and it is not even said he wants all engines with the same unit of measure.

    So just where it says “mm”, you do realize that there is written “meters”, “degrees”, “inch”, “RPM”, or any other unit of linear or circular measure.

    But be careful that when you then send data to the engine must be on the same drive that is used to write in the HAL boxes.


    As just two examples is how they make a decision, reasoning in engine revolutions or degrees to the place that in mm.

    The next two examples answer the question:
    “Considering that the Master has a maximum output frequency of Step 65 KHz”
    “And considering having an engine driver set to 256 microstep”
    “Which is the maximum speed of the engine output pin, in degrees and in revolutions per minute?”

    Max Speed in “degree”
    (for a stepper motor with 200 step per tourn and 256 microsteps)
    Motor = 200 steps / tourn
    Motor with microsteps = 200 x 256 = 51200 steps / tourn
    The same in degree = 51200 / 360 = 142.22 steps / degree

    Master max pulse frequency = 65500 pulses per second
    Motor max speed = 65500 / 142.22 = 461 degree / SEC (approx)
    Motor max speed = 461 x 60 sec = 27660 degree / min (approx)

    Max Speed in “tourns”
    (for a stepper motor with 200 step per tourn and 256 microsteps)
    Motor = 200 steps / tourn
    Motor with microsteps = 200 x 256 = 51200 steps / tourn

    Master max pulse frequency = 65500 pulses per second
    Motor max speed = 65500 / 51200 = 1.28 tourns / SEC (approx)
    Motor max speed = 1.28 x 60 sec = 76.8 tourns / min (approx)

Leave a Reply to Luca Cancel reply

Your email address will not be published.