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 system Theremino, 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. Italo Davies says:

    I am using theremino on a proxxon 70 with great results.
    I bought a Chinese cnc 3040 (and coming soon) its power electronics and made for the mach3 and from what I understand reading the manual and comparing with similar cards step signal and’ reversed, active low.

    Is there any setting theremino to fit, or can I invert the signal with a 74ls04.

    Thank you

    • Livio says:

      The Step signal generated by the master was treated with caution in the firmware so that you can also work on drivers who think otherwise. Should therefore not lose steps and no other malfunction.
      In addition, our collaborator Leo, who lives in Shenzhen (China) tried the operation on a 3040 and so far has not encountered problems.
      Then, to maintain maximum simplicity can, We did not expect controls to invert the signals. If you want to swap them you should do it in hardware with an inverter, or by connecting the positive input LEDs of photocouplers (on machines that have them) at 3.3 Volts and the negative to the Master output.

      • Italo Davies says:

        Thank you
        As soon as I get there I do the tests and we know’ mean.
        Ill go acquire’ a new power electronics theremino cnc not giving up.

        • Livio says:

          Will work for sure. At most, If absolutely necessary and you can't invert the signal by connecting the couplers to the positive picture, then you can insert the inverters, as you suggested.

  2. Mirko says:

    Hi I would like to propose an idea, now I've seen how the program works point follower. If you use the value obtained from the phase shift along the horizontal axis of a microscope stage you can also measure distances by doing a quick calculation. It uses the same principle of lidar, Although much slower due to the refresh of the webcam

    • Livio says:

      Yes, would run.
      We have already evaluated this possibility but we have never experienced it because doing the calculations it turns out that the achievable accuracy is poor.
      Anyway you could try and then write what features can you reach.

  3. Mirko trinca colonel says:

    Hi I've been using happily theremino with cnc theremino to run my cnc. There are only a few things that escape me: If you stop working and also the pc to resume the next day I have to take the line of gcode to which I came and then the following day search for then get it spread from there. is there a faster way as a save the position automatically or some sort of search by line of gcode? Thanks in advance. Ah still work perfect your I made a very long processing (about 30 hours total) with 3d cam and tool changes in several days and he's never wrong one millimeter

    • Livio says:

      What you are doing is amazing. Break a machining on multiple days was not expected. It was thought at most you can redo the same piece the next day without redoing the resets, then the line is not restored.

      If your GCode has the line numbers you can find the line with:
      – Right click on the GCode
      – Find and replace
      – Find nnnn (where nnnn is the number of line)

      If you stop working for a tool change you may find the line with:
      – Right click on the GCode
      – Find and replace
      – Find M06
      – Find Next until you reach the right line

      If you change something by mistake into GCode, do many undo with CTRL-Z until the message disappears “Modified” from GCode window title

      Do you still care, When leave as random points, the first movement starts from the top, to avoid scratching the slip or break tips.

      If these methods are not enough write us again and we will see, If possible, Add the reinstatement of the line in future releases.

      • Mirko trinca colonel says:

        Here's what I was missing :D right click. Thank you 1000. Anyway I haven't done anything special, the fact is that theremino never misses steps nor the location, then the mechanics I took from creostamp makes his with ball screws and guides on skids traveling which is a beauty

  4. Mirko says:

    Hi it's me again the screwup of the neighborhood :D. Recently I've been using cnc and often do I grind the gcode from theremino one behind the other. I'm also trying to go faster and faster the system and doing some testing I'm noticing that the trajectory of theremino cnc control system is much more accurate and faster than what we currently use on Autodesk Fusion 360(an excellent program in every way I have to say and in + free … highly recommended) Since the one of theremino also manages the accelleration. the only thing is that theremino doesn't seem to distinguish between the cnc feed horizontally and vertically, leading the drills that I use to be stressed a bit. I was wondering if there was no way to separate the two types of feeds or if there is some loophole type to limit the max speed from theremino master. Thank you 1000 in advance :D

    • Livio says:

      If you move the axis simultaneously then the Feed refers to the combined motion (speed along the diagonal that is covered). Therefore the axis that makes a greater path will go faster and the other will go slower. If your feed is too much for the cutters and the material that uses, just lower it. You must set the GCode, not in the HAL or Manual Feed. The cam can prepare the GCode changing Feed at any time of processing.

      If you move one axis at a time you can precede any movement from a different Feed, and even in this case we speak of Feed into GCode.

      Theremino CNC does what he says the GCode and handles the command exactly as any other Feed CNC Gcode.

      Feed speeds should be written into GCode, the field feeds that you manually adjust only serves to do manual testing.

  5. Livio says:

    Ferdinand wrote
    On some machines, not on all, I noticed a strange behavior as if they were skipped during reading program lines G002/03. If I repeat processing, the error is always equal.


    Skip program lines
    Almost certainly the defect you've experienced was not due to G02 and G03 but missing prefix G02 or G03 at beginning of line.

    Past versions were not repeated if the codes were occurring in all lines of G02 G03 defects. The G01 not talking resented this problem myself the G02/G03 without code ran as if they were G01. In the latest versions (4.4 and 4.6) These errors are eliminated. But equally it is good practice to start all rows with their code G.

    To explain better, the following lines:
    G01 Z-5,825
    X 105,996 Y 22,525
    G02 X 94,972 Y J I-335 76,369 56,873.
    X 104,896 Y 43.69 34,014 21.69 I-J

    should be corrected through:
    G01 Z-5,825
    G01 X 105,996 Y 22,525
    G02 X 94,972 Y J I-335 76,369 56,873.
    G02 X 104,896 Y 43.69 34,014 21.69 I-J

    The lack of G02 at the beginning of the fourth line could, past versions, cause a flaw apparently attributable to G02.

    Cut the curves
    For how does Theremino CNC GCode lines jump is impossible, but there might be a behavior of type "cutting corners", and so similar to skip rows, determined by a misunderstanding about how you have to set up Rapid and feeds.

    It is essential never set “Rapid” or “Feed” (also in Gcode) more than bearable by search engines and that are written in the parameter Max Speed of HAL. If you exceed this value the HAL protects equally the engines from losing steps, but the tip may be late to the target and then be forced to cut corners and skip workpieces. If you get it wrong much you might also break tools and ruin the piece.

    An additional flaw caused by a wrong setting “Rapid” is that manually joggando the cutter keeps moving for a time even after you release the buttons. Even in this case there is a danger of collisions and breaking tools. If you jogga long when you pull the toe was so far behind that it will not stop and slam somewhere.

    Never set “Rapid” or “Feed” greater than “Max Speed” It is written everywhere but sometimes you don't read it or understate the importance.

    Cars with small engines and large mass
    Path errors can also be caused by engines with very low acceleration compared to maximum speed. If the HAL the value MaxAcc value is greater than ten times the MaxSpeed then it is good to pay attention to this aspect.

    Read the instructions of Theremino CNC notes regarding “Options” / “Netted acceleration effects” (pages 26 and 65 in the latest versions of the instructions by October 2016 onwards).

  6. Roberto says:

    I wish I could use step motors checking them with the theremino. In particular check the motor position, speed, Acceleration. For example you can follow step a sinusoidal signal space (the speed varies sinusoidally continuously). How can I do? For example, if I connect a servo motor on slot 1 controlled by the application of alternating rotation as it moves WaveGenerator I'd love to be able to drive the step. I should be able to vary the frequency of the coils of step continuously. With the slots I can only give a final destination to be achieved at a constant speed after acceleration. In addition to the value of speed and acceleration of the slots you will not get from other application.

    • Livio says:

      Connects the stepper motor and pilot with WaveGenerator through a Slot. You'll see that will move exactly like a servant, with speed “sinusoidally continuously variable” as you wrote. No need to change the “frequency of coils”, think of all the HAL.

      To achieve this, however, you have to adjust all the parameters correctly, If you can't write us at and we will help you over the phone to figure out how to do.

      To move a stepper in a controlled manner do not have to change the MaxAcc and MaxSpeed of HAL. Those parameters are only of the highest security to prevent the stepper can lose steps. Are parameters to adjust once and for all on a certain engine and not to change more.

      And here you'll wonder:
      “How can I slow down the movement if I decreased these parameters”?

      To move a stepper (But even a servant) in a controlled manner, at any speed, also very low and with any acceleration from zero to MaxAcc you “leash” and you continue to send them new destinations (in millimeters) very frequently (at least fifty times per second but better if more than one hundred).

      If the new destinations are close to each other the movement speed is low, then as they give each other more distant destinations you can increase speed and Acceleration.

      If you overdo it and you exceed the maximum speed or maximum acceleration (what you should never do) then the servant is protected by HAL, wastes no strides but remains behind and no longer follows the path that you would want them to do. In these cases the leash stretches like a rubber band and the servo starts to cut curves always trying to come back.

      This is how it works Theremino CNC. which guide the servo at all speeds and accelerations as possible from zero up to MaxSpeed and MaxAcc written in HAL.

      Of course, doing these things in an own software requires appropriate programming skills, knowing how to use timers and threads, and also know how to treat the numbers with floating point and do the math to determine continuously new destinations (in millimeters or degrees) be sent to the slot that controls the stepper motor.

      All of these considerations are exactly the same even if it is to move the servo. Even the servant, If we don't move a small step at a time, splatter at your final destination with the utmost speed and Acceleration that can produce.

  7. Livio says:

    Ferdinand wrote:
    Some friends who have cnc homemade, tell me that Theremino cnc is very good, but that if he had the chance of recovering the backlasch would be perfect, because in homemade mechanical, the game is always present, and with few means, It is difficult to remove it mechanically.

    The Proxxon we use here in the lab is not a precision machine, has the "gibs" (dovetail guides) that ciloccano if you let them hold them too soft and you nail.

    years ago, When we still Mach3, We tried for a long time to correct the backlash. And fix on one side, and worse on the other, were always printed with tracks all frayed.

    The solution was to land a little better mechanics and now with Theremino CNC without and no corrections are printed as from images posted.

    Backlalash compensation "cannot overcome the problems with the machine in continuous cut" (as written in the manual of Mach3) but only in particular situations.

    In other words adjust at certain points in the processing but worse elsewhere. Also creating other defects, as explained on page 37 CNC Theremino manual.

    So not wanting to add compensation backlash is not to save job (It would be very easy to implement it) but to avoid users futile attempts, with apparent improvements in certain cases to then discover that they have worsened further processing and ultimately many wasting time with no real improvement.

    The same time would be better spent to improve a little’ the mechanics.

  8. Joseph Pally says:

    Hello Livio, Congratulations again for Theremino CNC goes like a dream. I have yet to get to grips with some parameters, but everything is very precise and functional. My fantasy but I always pushes towards things I know little…therefore a question: I'm very intrigued by the performance of robots (or printers that use the same mechanics) Delta type (with three columns 120 degrees…or control arms)… do that with Theremino CNC we must rewrite the firmware right? I guess it's a long and hard work but that he would support to other projects that you have already published visual recognition type….
    Excuse the question…Thanks again for what you do

    • Livio says:

      The firmware, located inside the Master modules, It's fine as it is now and could drive cars with any structure (Cartesian as the usual cutters, Delta like spiders coming from above and even Scara as the arms of the crabs).

      And in addition to the firmware software (Theremino CNC) would be able to successfully execute GCode created for Delta machinery or Scara. just create these Gcode with a CAM that is configured for the specific machine that you want to drive (However, much more difficult than a Cartesian with parallel axes).

      The only part that we have not yet implemented, and I do not think we will implement given the small number of users who Delta machines or Scara, is displaying the GCode for machines other than Cartesian coordinates. And in this would be to include foam cutting machines.

      In other words: even without viewing, You can do very well in the CAM, processing is perfect for every type of machine.

  9. Vincenzo says:

    Salve, I'm going to start building a project in CNC stepper with size nema23 and placing modules already dvr8825 and master V4 I would need to figure out which engines buy. Workspace of 80 cm x 55 cm approx.
    Can I drive even engines that require more amps?
    Hopefully there are tables that represent ideal pairings?
    Thank you very much.


    • Livio says:

      There are no tables I know but there is not much to calculate.

      Advisable to put a fan over to DRV8825 that cool all together with cold air from above and naturally equip them with heat sink. In these conditions you can adjust the drivers up to two amps and still have some room.

      But that doesn't mean you have to use two motors amps, If possible it would be better to put them even from three or four amps and use them, as you should always make, not to the current maximum bearable,

      Though, and this may decide that only those who know the specific mill and its friction, you could also use smaller engines, for example, from one and a half or two amps. And pilot them then with 700 but o 1 To maximally (about half of the maximum current).

      In other words all engines are fine but the top speed won't be the same and you can't compute a priori, only experience with the specific machine can get to define if you need more power or maybe engines with less power (less current) but with a top speed greater than.

      • Vincenzo says:

        Hello Livio, in thanking you in advance I would need a little help. Should I study the Pwm circuit to RESUME assembling the integrated lmc6482. In my part not found and not find what any equivalent. What can I use? Ci sono “PWM to HP”already made and marketed? I'll have to fly a spindle with inverter.
        Thank you.

        • Livio says:

          To drive a motor does not need PwmToCv with fast response time and low noise (fourth-order filters) as for music. But just a simple filter, with a resistor in series with the signal followed by a capacitor to ground. As noted in the first three patterns that you see here:

          It would also be useful to add a photocoupler for the Master outlet and before each filter, but be aware that it takes a photocoupler very fast (fractions of a microsecond), for example a 6N137 which is easy to find and cheap.

          With a photo-coupler you should then have a voltage from 5 Volts from motor side (You cannot use the Master otherwise you ruin the insulation between master and engine that is the only reason you add a photo-coupler).

          Finally everything will be coordinated with the actual motor driver circuit. And here everything changes depending on whether the engine is in 220 volts AC or DC. If there is already a photo-coupling in motor driver circuit then the photo-coupler would be useless.

          In all cases, careful not to unite the masses by means of wires that carry the signal. If you must join the masses of heavy equipment between them (such as motors and computer) You must use professional techniques of “Earth star”. All United in a common point (the Star Center) connected to the ground of the electrical system.

          Never signal cables should be used to connect the mass of a big device (as a motor) the mass of the Master, which then goes to the computer via the USB cable weak.

          Make connections of approximate mass can make you lose the USB communication, during the starting point of the engine or other heavy loads of the machine. If this happens it will ruin the piece and then you have to press “Recognize” about HAL to share.

          If you can't write us and we'll help you develop the pattern specific to your case.

          • Vincenzo says:

            Good morning, for driving an inverter with 0-10v and get the spindle speed variation directly from software I thought I understand that this circuit could turn the o-3, 3v to 0-10v needed. or have I misunderstood?
            Good job

            • Livio says:

              You got it right. The PwmToCv circuit can generate a voltage from 0..10 volts, supplying it to 12 Volts and modifying it as explained.

              But, always provided that you have the 12 volts. then you could use the pattern “From Pwm or FastPwm to 5 Volts” located in this section:

              This scheme does not use the LMC6482 but simple two transistor easy to find and it is so simple that it can be mounted on a small piece of veroboard in ten minutes.

              To get the excursion from 0 to 10 Volt you must disconnect the wire that goes from the emitter of BC557 at 5 Volt Master and connect it to a power supply unit 10 volts.

              Or you could link it to a 12 Volt by adding a resistor from 39 ohms in series with the collector of the transistor BC557, which will drop the two volts too and will adjust the output exactly 0 to 10 volts.

              Wanting a faster response and lower noise, you could fly it with a FastPWM output adjusted 15 KHz, changing C1 from 100 UF to 10uF and (but only if you want to get maximum linearity up to zero volts) also add a resistor from 100 ohm between base and emitter of the transistor BC557.

              As soon as possible we will post the patterns for these versions.

              • Vincenzo says:

                Thank you.

                I forgot… but when will they trade the Master v5?

                are not available at the moment.

                • Livio says:

                  The masters are already on their way from China and have them shipped with a fast courier. I think in a week you will restore the normal functioning of the site ThereminoStore (I remember him is run by Chinese, while we are completely non-profit). In the past month have had many issues we hope it won't happen to them ever again a period so their sorrowand others.

                  Attention that we added some lines to the previous message…

                  • Vincenzo says:

                    Here I am, especially to thank to infinity.
                    Among a thousand mechanical difficulties just a few minutes, game with master. Question: But how do you connect multiple master so that one of the two become slave? Or USB connection required for each?
                    Thank you.

                    • Livio says:

                      USB connection required for each Master. You can use any USB HUB. We tried both USB2 and USB3 HUB with gl and years ago even with the USB1 and they always worked fine. There are those who also uses eight masters and are always reliable results.

  10. Joseph says:

    Hello Livio, Sorry if I'm always here to ask questions. Always on the issue of driving with Theremino cnc a delta robots ….(you were advised to find a cam can generate gcode suitable for delta). I saw that between configurations of Theremino Arm there is also the Delta and the questions would these:
    1) could be the appropriate software to extract the gcode?
    2) would it be possible to interface with cnc Theremino?
    3) Maybe I missed something (Indeed …for sure) but I saw the descriptions that are based exclusively on the robotic arm….and not to the possibility of Delta configuration
    Thanks again

    • Livio says:

      1) could be the appropriate software to extract the gcode?
      Theremino Arm performs the GCode, do not create.

      2) would it be possible to interface with cnc Theremino?
      It is not possible to interface because Theremino ARM is a CNC himself and then replaces all Theremino CNC.
      Perhaps you mean interface with the Theremino Master who then goes to move the Stepper Motors to move the Servo. And this is theoretically possible. No one has yet made but it is just to match the “Steps Per Millimeter” about HAL with what is mechanics, and then consider them StepPerGrado. This is just to make sure that at the end of it all, mechanical including different overall gear ratios, 90 grades software match 90 degrees of hardware.

      3) Maybe I missed something (indeed ... for sure) but I saw the descriptions that are based exclusively on the robotic arm. .. and not to the possibility of Delta configuration
      If you go to the Robot Arm at the top there is a small window for selecting and changing them to Articulate a Scara, Delta and Axed. There are no instructions, only one image in the folder “Docs” with axis names “Delta_Names.jpg” and a file that explains the meaning of the parameters “Delta_Names.txt”.

  11. Livio says:

    Daniel asked us:
    If I put an IF condition, type if there is a GoTo to this point is get the piece, but not just yet, After for example 4 times, as if it mattered. To be more clear from testing to the discharge of the piece the turntable makes other 4 stops. So from the start the first and good the second and the third good scrap. Let's say that after the machine that tests gave me an arm takes it and then when you walked away from a clean signal as one door interlock, I don't know if I explained, to give an input.

    Before you can schedule a should I write it or imagine it mentally with precision. Learning to program isn't easy, It takes years before you start writing decent software. Then write it really well it takes decades of experience.

    Just to give an idea, the original question would be something like the following lines:
    Variable1 = 0
    IF LeggiSlotScarto > 500
    Variable1 = Variable1 +1
    IF Variable1 > 4
    ScriviSlotX 120
    ScriviSlotY 150
    Gosub PrendiPezzo

    This piece of program is written in Italian to understand easily, but it should be re-written with instructions of programming language uses (Theremino Automation / Theremino Script / VBNET / CSharp )

    But before you start you have to write it (or imagine him mentally) with precision, with Italian sentence type:
    1) If this happens then increment the counter
    2) If the counter exceeds 4 then do this other
    3) otherwise, I'm back at the point (1)
    And so on…

    If the problem is functioning well in words, then it will work also in the program, otherwise it will be impossible to translate it into a software. This early stage is called “analysis”.

    Lack of experience is very difficult to write complex procedures, they are something more than “turn on an led/attendi 10 seconds / turn off the led”.

    You can start learning the basics of programming exploring one by one all the examples that are in the Theremino Automation. You can then experiment with these examples and the SlotViewer but always remembering that are just simple basics. Complex automation procedures require necessarily moving on to more powerful languages.

    The initial question is already complex to the point that it would be better to use VbNet (with VisualStudio 2008).

  12. Livio says:

    Luke wrote:
    A few months ago I built a cutter controlled by Theremino Master. Things go very well, especially with the latest version of the Theremino CNC, with the compensation of the low acceleration. I would now like to turn the spindle and aspiration by program and I took two flyable with solid state relays 3-32 V DC.

    I have two questions:
    1- can I directly connect the relay to the master( pin at + and GND to – ) or need something else?
    2-can I control two relays with a single Pin, simply clobbing the signal?

    The relays can be connected directly to the Master
    – Signal to the + of relay
    – GND to – of relay

    If the relay switch with 3 Volts then have a margin of 0.3 volts (Come on 3.3 Volt Master theorists). It's little but enough for sure, because if I give them from 3 volts then are certainly also 2.5 volts, and then almost got a volt of margin.

    Almost certainly you can connect two parallel. You could say with certainty only by knowing the current they absorb relays with approximately 3 Volts of power.

    To be sure you should try to connect two parallel, turn on the Master output, and then measure the voltage that the Master can send two relays in parallel.
    If this voltage is at least 3 volts then there are no problems. Otherwise you could try using an output from 7 to 12 (who do not have the resistor from 100 ohm in series and then give a slightly higher voltage at constant current consumption).

    If in any case you are unable to get to three volts with two relays on the same Pin, then it would be better to connect to two different Pin and then join the pins, the event handler with the same Slot in Theremino HAL.

  13. Livio says:

    Daniele wrote
    I am trying to use Visual Basic with Visual Studio 2008 but it is complicated to start. With Theremino Automation seem to do a good portion of what I need… The script version how many extra functions would? What are the differences between Theremino and Theremino Script Automation?

    Theremino Script is a cross between Automation and VisualStudio.

    With Theremino Script can do everything you would do with Visual Studio, you have the full power and all functions of VbNet. But write everything in one file and if this early simplifies learning, some operations become much more difficult than with Visual Studio true.

    Here is a list of Theremino Script:
    – Make the window that communicates with the user is difficult. You have to be an expert to know which controls to use (buttons, text boxes etc..) and how to write them, While using Visual Studio would graphically and it would help him to set them.
    – Suggestions for functions are very limited and sometimes misleading
    – You can't follow the evolution of the program (like you did with Automation) nor can you add control points (break point) and explore the value of variables as you might do with VisualStudio.
    – The editor is limited and much slower than that of Visual Studio.

    Anyway Theremino Script is much more powerful than Theremino Automation. Possibly try using it, contains many examples already ready to start.

    An important difference from Automation is that Theremino Script can also produce true applications. I.e. executable files (.exe) which can then be started by double clicking on it, even without opening the application Theremino Script.

  14. Gianni says:

    Good morning Livio,
    I saw your Theremino card StepperDriver, that supports two different drivers.
    I can't find it anywhere on your portal connecting the master to card stepper driver, to install DVR8825 drivers or A4988 since they are different as fairways, I install them
    Excuse me for being trivial questions but I'm not very familiar with electronics.
    Thank you

    • Livio says:

      Are not trivial questions, indeed thank you pointed out this lack.
      We have added a picture that explains how to position the drivers:

      With regard to the links you simply connect the ground side of the Master with the driver tab with wires Dupont female-female. Then the Master adapter GND Gnd-IN drivers. To be safe I suggest you connect the masses with at least two or three female-female jumper cables.

      Then, for every engine you will connect two cables Dupont female-female between the SIGNAL of the Master and DIR and STEP of the card drivers.

      Here's how to connect the first engine:
      Master Pin1 SIG < ---> Driver1 STEP
      Pin2 Master SIG < ---> Driver1 DIR
      The other engines are connected in the same way but with Pins 3-4, 5-6, 7-8 and 9-10.

      You can find more useful information here:

  15. Gianni says:

    Thank you 1000

  16. Marco says:

    Dear Livius, To bother you again because I replaced my old home made cnc machine with a much more compact and, the first tests, more precise. I come to the point: I installed a new engine for cutters, a classic from China from 400W 48V diameter 52 mm. Together with the engine speed regulator has arrived relatively “sophisticated” that can be flown with a potentiometer or via a connector “PWM” (signed Mach3). The problem that I couldn't solve is that the engine does not reach the maximum number of revolutions using the PWM input connected to Theremino, compared to the ear with the speed obtainable via the potentiometer. I tried to mess with the values of the slot, both PWM and PWM_fast but the top speed is still the same, sensibilmente minore di quella possibile. Può essere un limite del circuito del controller o sono io che non riesco a regolare lo slot per avere un duty cicle “continuous” e arrivare al massimo delle prestazioni? Di seguito gli unici dati che ho recuperato sul controller. Thank you!

    1: Default potentiometer control (5K-100K),defaults 10K;

    2: MACH3 -PWM speed control signal input, external PWM input requirements: level 3.5-12V VPP, frequency 1K-10KHZ, suitable for MACH3 spindle speed control.

    3. Rated current: 10A, overload and short circuit protection current 12A. (Over-current cut output, overcurrent indicator flashes, the potential light is off, overcurrent lift).

    4.soft-start function. Prevent excessive current caused by the motor and power damage (default 0 seconds soft start), 0-5 seconds adjustable.

    5.Control power: 12V120W, 24V240W, 36V360W, 48V480W, 60V600W

    6.Pulse width modulation range: 0% -100%

    • Livio says:

      Since it takes a frequency by 1 kHz to 10 kHz you should use PwmFast and set it to 2 to 5 kHz

      Then just put the “Value” Dell Slot of the Pwm tops (usually 1000) and the Master will issue the maximum time, that is always a signal to 3.3 volts. If you want you can check with an oscilloscope but I'm sure that's it.

      If you don't have an oscilloscope you can measure with a multimeter and when you arrive at most should come out a 3.3 Volt fixed.

      They write from 3.5 to 12 volts.
      I'm not sure that the 3.5 He is really necessary but perhaps the problem is that.
      You can verify this by trying to send them an 5 Volt drive and see if it turns at most.
      And then a 3.3 Volt fixed and see how it goes.

  17. Marco says:

    Thanks for the tips! Sending to 3.3 V Pwm input controller the motor does not rotate at maximum. To 5V instead turns to 98% (to ear…).
    I tried using a variable voltage power supply and with that I could control the motor speed from zero to max.
    I'm already building Pwm adapter 0-5V as per your projects and if you tell me that there are no contraindications, I think that will solve the problem. Thanks again.

    • Livio says:

      It should work.
      You may also delete the capacitor C1 and then create a real PWM (variable voltage but not true pwm 0 to 5 volts).
      It would be easier to build and smaller. And would respect the specifications of your engine that (I seem to have understood) would a PWM 1 to 10 KHz and not a variable voltage.

      • Marco says:

        Ok, done! Without condenser, It works great. When I can find time, I will publish a movie on Youtube. A little’ advertising is the least I can make you. Thanks again.

        • Livio says:

          Thank you!!!
          If you want a great place to post your creations and also a forum to discuss any topic of electronics and automation… I suggest GRIX.

          Links l on this page:

          The site theremino is very technical and has many (too many) pages, but it doesn't have a forum and so it's not a real “Community”. We however found on GRIX a serene hosting us again.

          Gradually the discussions will move there.

  18. Mirko trinca colonel says:

    Good morning, always behind with cnc and have recently switched to using the software fusion360. great for all setting and easy to understand …. until you get to pull the gcode. I have some problems related to curves almost as if she saw me a curve like so many broken lines rather than a solid line, therefore slows down and warms me cutters (route some :C). I was wondering if maybe some of you had a setting for the setup of fusion or do I have to go to total ignorance of elimination (that the only one who will be the last that I try :D ). While I look I look a little like jump PCBs by laser and will also make some test in week. Sorry if I have dwelt and wait for your reply. Thanks in advance

    • Mirko trinca colonel says:

      question: I am using theremino cnc, great as usual and I switched from a normal usb controller to the xbox one wireless. all perfect for use, the only problem is the button layout that is a little convoluted to use. is there a way of changing the key configuration? I will also later to finally finish cnc cnc type with a nice industrial control box

      • Livio says:

        To move and change the size of the keys you should open the project with Visual Studio 2008 and edit the main Form. But it's not an easy job, the sizes and positions are all well coordinated otherwise s messes up everything as soon as you resize the window.

        I think it is better that you get used to using it as is. Basically we are all pretty well with this arrangement of keys so I guess it is just to know her a bit.

        • Mirko trinca says:

          Sorry mea culpa I expressed myself badly :D. I meant the button layout of the controller that uses me some enable that are really awkward to reach and which would be more comfortable in other places (then depending on usage. is that lately I've been really using theremino as dro and just doing work in “Manual” to find the right feeds to sing well the machine

          • Livio says:

            Indeed you had written controller but I didn't understand.
            I would recommend you to use the Interior of any controller and connect the wires to the industrial pushbutton willing as you please.

  19. Keya Dasgupta says:

    I built a cnc for cutting foam wings, Currently only the mechanics.
    Looking around, for internet, looking for a valid software I came across theremino.
    The system seems very valid, Although at the time I confused.
    Arei need to know what make up the system (software and hardware), to begin to understand and start and take the first steps. The engines that I took and edited are nema 17, and if possible I would like to use them.
    A thanks for the info I get from your reply.

  20. Vincenzo Senator says:

    Hello Livio, Yesterday I tried version 4.7 the CNC and I noticed that the keyboard key movements “shift” pressed do not reduce the speed. This seems to happen after calibrating Z axis (but I'm not sure). With vers. 4.6 works.

    Greetings and good work.

    • Livio says:

      In version 4.7 There are commands to adjust the speed of JOG as a percentage of the RAPID. You can independently adjust the JOG speed without SHIFT and SHIFT. Open the OPTIONS menu and you'll get it.

      There are also other two fixed speeds (non-adjustable with options) the one with ALT that is very slow and one with CTRL that is one step at a time.

      The speeds are explained in the instructions, on page 13, and regulations of the options menu are on page 26.

      • Vincenzo says:

        It's where I checked and it has the same configuration as the 4.6.
        When the 4.7 at first start, the movements with the shift key comply with the settings and everything is ok but after calibrating Z axis… no longer works… It's all in quick.
        Tonight or tomorrow I try with another PC.
        See you soon

        • Livio says:

          We were able to repeat it, Thanks I found out.

          We fix it soon and will post the fix with version 4.8

          • Livio says:

            The version 4.8 with the correction shall be published. Please try it and let us know if everything is OK.

            • Vincenzo says:

              Hello Livio,
              everything OK. works.
              I continue with the tests.

              Thank you.

              • Livio says:

                If you downloaded the 4.8 It is good that the replace with 4.9 that includes two other small fixes.

                • Vincenzo says:

                  Hello Livio, I tried the 4.9 and everything OK.
                  I proceed in small steps for lack of time waiting for the days become 48 hours.
                  A question: I turn on the inverter with a relay connected to the master to close to ground pin fwd on the inverter; now I would like to isolate this circuit from the master using a opto-relays V3 (arrived a few days ago)… How so? Electronically you can close two contacts as a physical relay?

                  Another little question: during a test, I do have some thoughts. And if the spindle stops…. break your toes…
                  Is there a way to pause the cnc with the accidental stop of the electro-spindle?

                  Thank you.

                  • Livio says:

                    For the first question I do not understand. What do you mean two contacts? With a relay or opto relay stops a thread and link them to the two pins of the opto relay. If you stop an alternating current will be the two extreme Pin (4 and 6) otherwise, see the other two connection schemes.

                    Also be careful that the opto relay does not hold a lot of power and can burn easily if you interrupt 220 spindle power. You should break a link of the driver circuit. It would take the schema. Possibly write to us by email and send me the diagram of your spindle drive.

                    For question 2 you would lift the emergency Slots when the spindle stops. But how are you going to do to acknowledge that he's stopping? However when it stops it is already too late, now the tip is gone. You should understand in advance and it didn't seem possible.

                    My philosophy would be not to complicate the machine with safety devices useless (that much when then should serve not working) but to endeavour to ensure that the important things always work. The spindle so should not stop, If you suspect that there is a weak delete it and make a thousand tests up to be sure that it works well you don't ever stop.

  21. Mirko trinca colonel says:

    Hello, I installed a laser from 7, 5w on my cnc and I was having a little with imgtogcode. I saw between the various settings that exit the raise and lower the z-axis according to grayscale. However, being a laser I was wondering if could be added as an option in addition to the vertical axis can adjust another axis/device by command m allowing so to adjust a pwm signal to adjust the laser intensity, maybe still leaving the option to set the minimum and maximum (only wood engraving I must already hold the maximum under the 10% or I burn everything). If even without changing the program just a idea to overcome this XD
    Thanks in advance for your reply.

    • Livio says:

      The Z axis is nothing special. The CNC application writes a number in a Slot and this number represents a height but may represent around, Thus the power of a laser. What happens when this Slot change, It depends on what kind of Pin uses and what is electrically connected to the Master Pin.

      If you are interested in, about HAL doesn't set the Pin relative to the Z axis (normally 5 and 6) as Stepper, but set the first of two (normally 5) as Pwm. And finally you will use the Pwm signal (with a suitable circuit) to adjust the laser power.

      Inside the Gcode will use values for the Z axis from zero to a thousand (0 = minimum output, 1000 = maximum power) and to adjust the minimum and maximum power limits, you can use the MinValue and MaxValue of the PWM Pin in application HAL.

      This is an example of the flexibility given by our communication system based on slots. Using fine slots one can construct even more complex mechanisms of this. For example, you could filter signals with the application Filters, or add them, multiply, subtract or do the AND AND the OR with the application Automation or Theremino Script… Not embark in mechanisms that use multiple applications if you do not know perfectly well theremino the system and all its possibilities: How to build folders with many applications, How to make them start simultaneously with StartALL, How to close them with Helper and the middle mouse button… etc…

      • Mirko trinca says:

        I have just, I hadn't thought :D. Thank you 1000 of the aid

        • Mirko trinca colonel says:

          also doing your method I have encountered a big problem. doing so in gcode whenever the z axis you should move the program “Hold on” with the laser on and also using the slot 11 as “Activator” seeing it as a laser cutter do not turn it off during the raising. There is no way to tell that the engine of the z axis moves instantly to the new value without waiting(a sort of look ahead disabled but only for the axis in question)?

          • Livio says:

            Damn you're right, I hadn't thought. I think we should change Theremino for him to do this and it's quite difficult.

            You couldn't use another exit? For example the slot 12 that can be adjusted with the control S (Speed)?

            • Mirko trinca colonel says:

              OK then I try to feed the gcode to an excel macro and see what pops out :D then I know

              • Mirko trinca colonel says:

                Ok. I solved it by passing the creation of gcode file and to inkscape and I rispolto the problem of fixed focal point. now I use the pwm on engine rpm and seems to be fine

                • Livio says:

                  Then, If I understand correctly, You can still use the Z axis to move the laser and focus. Great and thank you for having shared, so will serve also to other.

                  Thank you so much you had the patience to follow various roads. Change the axis Z, always it was possible, We would mess up the whole mechanism of trails in five dimensions.

  22. Anonymous says:

    I'm not a Director (Although I would love) and the time available is always very little, However I managed at last to publish a small video of my milling machine controlled by Theremino.
    Before the end of the world I will try to post more, even the Mostly Printed CNC woodworking use, always controlled by Theremino.

  23. Livio says:

    Alexander sent us this witness:

    I knew the system Theremino on Electroyou (where I write the occasional article) and exploration of the site led me to Theremino CNC which has forced me to brush up on some mechanical components (buy yourself again with the lira!!!!) an old project to build a CNC mill to 3 axes.

    I bought a MasterDil and the shield A4988 drivers on Ebay and mounted all electronics as instructed in the manual plus some customization. Everything worked right away and now I will study the various CAD/CAM applications to generate G-CODE.

    I've arranged the CNC also to mount a laser head in place of mandrel for engravings on aluminium panels (Anodized) containers for electronics.

    I wrote this email to share my experience, which I am very pleased with, but above all to thank all the staff at Theremino for work and ideas posted on the site. Maybe my testimony will serve others to embark on a similar construction that offers many satisfactions.


  24. Vincenzo says:

    Hello Livio, among the numerous tests carried out with CNC every now and then the same crashes with the message “stop limit switch”. I realize that you'll need to figure out what happens but I'm talking about an attempt to use a ball with two sharp from 14 mm in diameter on Walnut. even with very slow speed of 1 mm after lunging 10 mm curved cutting hangs.
    The empty machine never blocks, and performs with accuracy any rapid movement up to 2000 mm/m and acc.max 150. The engines are from 3Nm piloted with approximately 1 amps and dvr8825. Would you be so kind as to tell me what happens?

    • Livio says:

      There are a multitude of possibilities:

      1) Switch that really touches them.
      2) Defective switch vibration makes a bad contact.
      3) Inappropriate wiring with power wires (search engines and more) passing parallel and close to the wires of the switch and disturb them.
      4) Wrong wiring of the masses that transfers strong the power connections to the signal wires.

      For points 3 and 4 It would be good to read page 46 of the instructions, possibly add two resistors (close to the master) and, just in cases of exaggerated disorders, Add a capacitor to 100 NF between Signal and GND.

      Explanations on not much ball end mill to understand what is happening. What you need to know is what happens after. That is, if the State of “limit” endures even after (then a mechanical defect or electromechanical) or if it was a momentary disturbance (then pulses of noise coming from the power cables in the moments of commutations or during the cues of engines).

      • Vincenzo says:

        The resistors are installed because without the car leaked steps.
        Checking out good separation of the masses.
        However by disabling the limit switches is not interrupted… so it seems.
        Question: It might serve to connect the micro with shielded wire?

        • Livio says:

          You still haven't answered if limit continues even after or if it was a momentary disturbance.

          If this is disorder and if the power cables run alongside those of the signals then shielded cables can solve the problem. But it might solve it even a simple capacitor between GND and Signal (After the resistors, then right at the entrance to the Master).

          You may observe the signal arriving at the Slots of the limit switches with oscilloscope of HAL or better yet with the SignalScope. And then, by turning Chuck repeatedly and engines while watching the signal, could you identify what causes eating disorders.

          • Vincenzo says:

            Hello Livio, the State of limit occurs at greater effort and is definitely a disturbance. A click on stop and resets all. If I disable the micro the machine works fine. I will try to install the capacitor. I check with the oscilloscope.
            You upgrade.
            Thank you

            • Livio says:

              If the disturbance is short (for example a motor powered due to inductance) then the capacitor will eliminate completely.

              • Vincenzo says:

                Hello Livio, I installed capacitors and controlled with “signal scope”, now the problem is eliminated.

                Thank you very much.

                P.S. I forgot, every now and then I hear a short movement of some motor after pressing the stop button when the machine is stopped.
                I try to understand when.
                See you soon

                • Livio says:

                  Step motors at standstill are definitely due to disorder on signals that go to the drivers.
                  Happened to me every time I turned the neon and I had to redo the ground connections and also put a filter on 220.

                  If there are ground loops and wiring imprecise even a fridge that turns on and off may take steps to search engines.


  25. Andrea says:

    Salve, Thanks to theremino I can operate safely a small homemade cnc. In the software I see that there are options to control temperatures in a 3d printer. I assume then that I can use theremino cnc to control a 3d printer. I was wondering if the management of the axes is the same and especially the engine that controls Wire feeding. Also can I do without temperature controls?.

    Thank you

    • Livio says:

      Is the management of the axes is the same.
      For advancement using an axis, and specify the GCode what to do.
      You can definitely do without controls (and adjust by hand I guess).

      The expert on these things is Lello thereminoshop site, get in touch with him and we will help better.

  26. Mirko trinca colonel says:

    Hello, recently I did a clean are Mirko and mechanics that uses the CoreXY principle for handling a laser. I wanted to use it to make incisions and create pcb etching a coat of paint on a copper base. I wanted to ask if it was possible to implement the kinematics of this mechanic in theremino cnc or if I have to edit the parameters contained in the cnc Module_Vectors. vb theremino

    • Livio says:

      Display kinematics that machine in the graphics window of theremino CNC is unable (or would require a very long job). But if the GCode is right Theremino CNC will run any machine, regardless of how it's built.
      Prepare the GCode giusti (so know the geometric characteristics of the machine) It is a task of the CAM, not of the CNC.
      The CNC is a simple executor of GCode lines and does not need to know how you made the machine.

  27. Joseph says:

    Hello, wonder if there's a connection Guide to do between Master and CncShieldV3,
    Today I am using cncshild coupled with arduino x control a cnc made three axles, After discovering master and seeing the master cnc management program ,I did not hesitate has buy a master to replace it to arduino, He commands that grbl controll if there dreams. Complimenti x il. work you do , and x the great explanations that you give on the site.
    Soon Joseph

  28. Joseph says:

    Salve, today came master ,connected to cncsheld ,set the parameters and nauseous # tt which is gorgeous,with the program have an infinite number of movements that I had with arduino.
    The only thing that let me know if you can not keep the engines in tension until the launch of gcode, Let me explain, I mounted tow bars of knobs x carry axes manually but now when I give power to the drivers I can't to move. You can resolve and how??
    Other amenities would be if the toolpath with the view of gcode envelope would measure the workplan of the axes x y. To have a idea of the work that is being done.
    Thanks in advance. Joseph

    • Mirko trinca says:

      to manually move you may use theremino cnc of enable motors (You should also connect the output enable from the master to the drivers and then look at the top right of theremino cnc). For the measures couldn't tell you I'm going to eyeball you should ask the experts here :D

      • Livio says:

        Enabling search engines
        You cannot give or remove power to the Stepper Motors by means of STEP and DIR signals. Then you should do what she says Mirco.

        You must use the ENABLE input engine drivers and connect it to a Master output pins configured as DigOut. Then you'll need to associate this Pin in one of the slots of the CNC application output.

        The slots can be used to enable the engines could be the 23 or the 24, or even more if your Gcode from righteous commands. You can easily prove various slots and see how you work best. The complete table of all the slots that you use is on page 42 the CNC application instructions.

        I'm sorry but you can't add. The CNC application is deliberately minimalist and works with only one set of coordinates, that is, only the coordinates relative to the zero point and working boot.

        In applying the concept of ThereminoCNC “coordinates machine” There is no right. It is impossible to add the workspace unless you significantly alter the software.

        Maybe someday someone will have months to think about this possibility but don't get your hopes too.

        By the time you get used to working in a relative manner and in some ways it's even better. Do not delegate the control functions of the machine and then buy a better grasp of what you do. In other words you get used to measure as you would with a lathe, or with a hand mill with flyers. And then, with the experience, you end up making fewer errors than those who would just trusting the machine.

  29. Francesco says:

    Salve, my name is Francesco , I'm a locksmith in palermo, Thanks to Hobbild I came to you.
    I have a homemade cnc and using Artcam and Mack3, everything runs smooth, a person a little’ great olds asking me for a small machine to make plywood plates 3 different sizes ( 30cm , 35 and 38 cm)
    and want everything to function with a usb key where have been previously uploaded files
    tap. How can’ do not run the cnc without the pc and choose the measures and give the start the machine? Thanks for watching and maybe I'm hoping for a reply ” feasible”. Francis.

  30. Francesco says:

    a cnc without the pc , with usb uploaded files to make it possible?

    • Livio says:

      The system theremino is an input output for PC, so no PC nothing happens.

      For realizations without PC you should use Arduino.

      If you decide to take that route won't be able to use any of our simple applications. So to avoid confusion eliminates everything that is written on our site (Sometimes we talk about Arduino but always as IN-OUT for PC and then even in those cases the PC is essential).

      So you should search the internet how to make with Arduino, There are thousands of sites that talk about it, also too many, hard to relate to it.

Leave a Reply

Your email address will not be published.