# Mini Mill Dro



## WMello (Jul 11, 2015)

Hi




Recently I've finished a DRO  for the Mini Mill using the Arduino microprocessors.

It uses iGaging scales on the X and Y axis, Quad Encoder on Z axis and infrared emitter/detector for the RPM.

Wagner


----------



## ch2co (Jul 11, 2015)

Welcome aboard!  Just keep posting, I want to see your pictures. What mini mill do you have?  
I've often heard of the Arduino units and would be interested in seeing how you implemented one.

Chuck the grumpy old guy.


----------



## WMello (Jul 11, 2015)

Hey Chuck, thank you.

My mill is the standard Central Machinery (Sieg X2)
I also own a Mini Lathe, from Cummins. (Sieg 7 x 12)

I've some experience in electronics and programming (my job), so I've been playing with the Arduino for a while. It is a wonderful and simple platform.

Today I've finished a X Feed for the mill using what I think is a car seat motor. Post about it to follow.

In the past I've build small furniture pieces, wood gear clocks, a CNC router, crank organs and pipe organs.

On the long run, I'm gathering skills and tooling for building a large, traditional brass gears, tower clock.

Wagner


----------



## brino (Jul 11, 2015)

Hi Wagner,

I too am really looking forward to some photos, video, plans, whatever you're willing to share.

From your past experience and future plans you have/will have a lot of great skills.

Welcome to the site!

-brino


----------



## WMello (Jul 12, 2015)

Hi Brino, thank you.

Some of the projects I've mentioned are really old. 

There's still a lot to learn.
I've been using store bought lathe tools. Today I will try to grind my first HSS lathe cutter.

The idea is to learn how to grind fly-cutters for cycloidal clock wheels.

I've just edited the first message. Apparently I can post pictures.

Wagner


----------



## WMello (Jul 12, 2015)

In this DRO, for the X and Y axis I've used standard iGaging Scales.

The Z axis is made of a quad-encoder mounted on a spool whit a constant-force spring, like in a tape measure.

It worked very well.







Wagner


----------



## brav65 (Jul 12, 2015)

Fantastic work!  I love  your cover plates and the Z axis scale!  Welcome to the forum. This is a great place to lean new things.


----------



## ch2co (Jul 12, 2015)

Extremely Cool!  Love the Z axis encoder setup. How do you handle the other two axis?  Any chance of your sharing the schematics and parts lists? 
I've got a couple of old tape measures that I'm willing to sacrifice ;^)

Chuck the grumpy old guy


----------



## WMello (Jul 13, 2015)

Hi Brav65, thank you.

Hello Chuck, sure I can share the info.



Just give me some time to collect more information. For now, here is the video of the prototype:






Wagner


----------



## WMello (Jul 14, 2015)

Hi chuck, 

Here is the info, if you decide to build one.

Electronics
   Encoder: LPA3806 Rotary Encoder two phases 600 pulses/rotation
   Arduino: Pro Mini Atmega328P 5V 16 MHz
   Display: Max7219 8-Digit display module

   Power Suppy: 5 Vdc 1 A min

Programming:
   USB Serial: FT232RL Usb to Serial adapter

Hardware:
   Pulley
   Spring
   Bearing
   Timing Belt
   Timing Pulley

Arduino Code:
   Attached file MillDROZ.txt (copy it to your Arduino system folder and rename it to .ino)

Drawing:
   Attached file Encoder.txt (rename it to Encoder.dxf - the forum don't allow dxf files...)

Diagram:



You will need to download the Arduino IDE platform and learn the basics of it.

The Arduino Pro Mini is a simplified version of the traditional Arduino UNO. It has no USB port (cheaper and much smaller), but needs a adapter for programming, the FT232.

The USB to Serial adapater FT232 is used only for programming the Arduino Pro Mini. It is not used in operation; you will need only one for all your Arduino Pro Mini projects.

Wagner


----------



## ch2co (Jul 14, 2015)

Wagner

Thank you. This will take a little bit of study and decision making. Haven't dealt with electronics of this type since the mid '80s 
when I was monitoring banks of soil testing apparatuses (apparati? apparatus?) using Commodore 64's for data collection.
I'm not used to this new-fangled gadgetry you youngsters are using these days. But seriously, I'd really like to play around with 
the Arduino's and this could be a good starting point.  Thanks again and keep on swarfing.

Chuck the grumpy old guy


----------



## Contach (Dec 13, 2015)

As a NOB I hate asking for something my very first post but.... I'm very interested in building the MillDROZ project. I have a few encoders on the shelf so I'm part way there already. I downloaded the MillDROZ.txt file and cut and pasted it into Arduino IDE and it wouldn't even try to compile. Something is being lost in translation.  Would it be possible to get a copy of the .ino file emailed to me so I can see if that will fly.

Jerry


----------



## WMello (Dec 13, 2015)

Sure Jerry, I will try posting the ino file again, but .ino files are not allowed. Renamed it again to .txt. You have to rename it to .ino and place it on a folder named MillDroZ under your working arduino folders.

I've just compiled the code on Arduino 1.6.4; works ok.

It needs the library LedControl. Get it at the arduino website. (https://www.arduino.cc/en/Reference/Libraries)

If it still not work, send me a email to wmbuskerATgmailDOTcom and I will reply with the code.

Wagner


----------



## Contach (Dec 14, 2015)

Wagner, you were right. I have the current version of IDE 1.6.6 but it turned out my LEDCONTROL libary hadn't been updated for some reason. Compiled just fine this time. Thanks for the info.

Jerry


----------



## takis.karas (Apr 22, 2016)

Hello can somebody help with the MillDROZ i want to mesure 1/100 mm
how can i do  move the dot to the fourth digit? 
600ppr encoder direct on the 5mm pitch ballsrew


----------



## WMello (Apr 22, 2016)

Hy takis.karas,

For a 600 ppr encoder connected directly to a 5 mm pitch screw, you will have 2400 pulses per revolution (600 ppr * 4 interruptions per pulse). To read 500 (5.00 mm) on the display, use the factor 0.2083333 on the code. (500/(600*4))

Edit the code from:

#define SCF 4.000000 // Encoder factor (1/((600*4)/(12*0.08))*10000)

To:

#define SCF 0.208333333 // Encoder factor 5 mm pitch, 600 * 4 pulses/rotation 1/100 mm resolution (500/(600*4))

To change the decimal point position, rewrite the function ThrDsp as follows: (copy/paste)


void ThrDsp(void) // Display measure
{
 long v;
 int i,n,m;


n=0;
v=DroMea;
if(v<0)
  {
   n=1;
   v*=-1; 
  }
for(i=0;i<8;i++)
  {
   m=v%10; 
   switch(i)
    {
     case 0:
     case 1:
            lc.setDigit(0,7-i,m,false);              // normal
            break;
     case 2:
            lc.setDigit(0,7-i,m,true);               // true = decimal point
            break;
     case 3:
     case 4:
     case 5:
     case 6:
case 7:
            if(v)
             lc.setDigit(0,7-i,m,false);             // normal
            else
             {
              if(n)
               {
                n=0;
                lc.setChar(0,7-i,'-',false);         // negative
               }
              else
               lc.setChar(0,7-i,' ',false);          // blank
             }
            break; 
   }
  v/=10; 
}
}



Wagner


----------



## takis.karas (Apr 22, 2016)

Thank you for the fast reply 
 the tree digits  move to the left, in the beginning of the 8 digit display 
takis.karas


----------



## WMello (Apr 22, 2016)

Hy takis.karas,

Sorry, but I don't understand; are you still having problems ?

Wagner


----------



## takis.karas (Apr 22, 2016)

Hi yes it begin to count from the first digit


----------



## takis.karas (Apr 22, 2016)

Wagner i attach a image


----------



## WMello (Apr 22, 2016)

I think you display module is somehow different from mine.
Try changing all 7-i to i on the function ThrDsp, like this line here:

Before: lc.setChar(0,7-i,'-',false);
After: lc.setChar(0,i,'-',false);

Wagner


----------



## takis.karas (Apr 22, 2016)

ok thanks it work fine 
takis.karas


----------



## romspacenut (Oct 10, 2016)

Been looking for something like this. Thanks for posting!


----------



## bmac2 (Feb 24, 2017)

Hi Wagner. Nice clean build.

I have the iGaging scales on the X and Y of my Mini Mill and have picked up a third for the Z. I love having the DROs but I’m not a fan of the displays. With no backlight I find that if I’m not looking straight on to them they are hard to read (getting old?). I was thinking I could try to rework Yuriy's sketch to work with an LED display and use a Nano for each axis. I wouldn’t have to change anything if I could convince my wife she needed a new tablet but she won’t budge.

So. The big ask. Would you be willing to share your sketch for the iGaging scales?  

Bob. Alberta Canada


----------



## WMello (Feb 24, 2017)

Hi Bob,

Sure, here is the info:


----------



## bmac2 (Feb 27, 2017)

Wagner you are my new super hero. Thanks for this I tried calculating how much time this is going to save me but I think I’d need a spreadsheet. I’d found a sketch I was trying to rework that used a LCD keypad shield that only went to 2 decimal points. The sketch looked to be well commented but was in Romanian and Google translate can only do so much . . . .  

Now if I can only manage to get some shop time in I’m laughing. I’ll post my progress.

Thanks again. Bob


----------



## bmac2 (Mar 2, 2017)

Hi Wagner.

My lesson for today was “don’t buy cheap breadboard jumpers”. My wife said I was clear to go hide in the dungeon so I got the circuit together on a breadboard. Built up the 3.3v supply using an LM317 (what I had on hand) and was having a devil of a time getting the display to stabilize. Tore it down and rewired everything and it started working. At this point the breadboard was such a mess I couldn’t get to the “zero” button so I did a cleanup using shorter jumpers. I was back to the display running all over the place. In the end it some of these jumpers I’d picked up cheap as dirt and as it turns out that is about all they are worth. Rewired the circuit again this time just using the 3.3v supply on the Arduino and its working great. The refresh rate looks to be much faster than the stock iGaging display which is a bonus. All the cheap jumpers had round ends so I’ve sorted them out of my wire bin and after checking trashed the lot of them.    

Thanks again for posting this, it’s a great project.


----------



## WMello (Mar 2, 2017)

Hello Bob,

Looking good. I'm glad it worked.

If you want to change the direction of measurements (positive/negative), just change the definition of SCF for a positive or negative value.
#define SCF   -3.906250

The refresh rate is given by DLY; it is a value in milliseconds of wait between measurements. DLY = 100 ms = 10 per second
#define DLY   100     

Sneaky little devils your jumpers.

Wagner


----------



## bmac2 (Mar 2, 2017)

No worries. I had the scale upside down so the cord wouldn’t hit the breadboard. And those jumpers are now resting comfortably in the wire recycling bin at work . . . . you know . . save the whales and all that


----------



## ascarons22 (Sep 29, 2020)

good morning, I was reviewing the milldrox sketch to implement it in my mill and it is in inches, can someone tell me how to put it in mm ??, thanks in advance. Greetings


----------

