<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <meta name="Author" content="Srecko Lavric"> <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win95; I) [Netscape]"> <title>Cnc drilling machine</title> </head> <body background="backgrou.gif"> <b><font face="Verdana"><font color="#990000"><font size="+2">Home made CNC drilling machine</font></font></font></b> <p><font face="Verdana"><font color="#000000"><font size="+1">This article was published in&nbsp;</font></font></font><a href="http://www.svet-el.si/"><img src="se-logo.gif" border="0" height="71" width="136" align="middle"></a> <br> &nbsp; </p> <p><b><font face="Verdana">CNC drilling machine is a tool which is required for drilling of holes in PCB, thaw it can be used for many other purposes too. The software communicates with machine via serial port (COM1...COM4) of PC. The software works <span style="text-decoration: underline;">only</span> with machine which has the right micro controller built in.</font></b> <br> &nbsp; </p> <p><b><font face="Verdana"><font color="#990000">TABLE OF CONTENTS:</font></font></b> </p> <p><b><font face="Verdana"><a href="#01">WHAT IS CNC DRILLING MACHINE?</a></font></b> <br> <b><font face="Verdana"><a href="#02">HOW DOES IT WORK?</a></font></b> <br> <b><font face="Verdana"><a href="#cd">CIRCUIT DESCRIPTION</a></font></b> <br> <b><font face="Verdana"><a href="#mo">MICRO CONTROLLER OPERATION AND ROUTINE EXAMPLES</a></font></b> <br> <b><font face="Verdana"><a href="#as">ASSEMBLING THE PCB</a></font></b> <br> <b><font face="Verdana"><a href="#ho">HOW TO CONNECT A STEPPER MOTOR?</a></font></b> <br> <b><font face="Verdana"><a href="#fi">FIRST STARTUP AND CALIBRATION</a></font></b> <br> <b><font face="Verdana"><a href="#03">SOFTWARE</a></font></b> <br> <b><font face="Verdana"><font color="#000000"><a href="#04">HOW TO MAKE MECHANICAL PART OF MACHINE?</a></font></font></b> <br> <b><font face="Verdana"><a href="#co">COMPONENTS LIST</a></font></b> <br> <b><font face="Verdana"><a href="#do">DOWNLOADS</a></font></b> </p> <p><a name="01"></a><br> <b><font face="Verdana">WHAT IS CNC DRILLING MACHINE?</font></b> </p> <p><font face="Verdana">The name itself (CNC = Computer Numerical Control) says pretty much. The machine is intended to be used to help hobbyists with their prototyping. Also if you draw something else with your software, you can easily do other jobs as well. The machine described below functions like many others. That means that the computer transmits positions and commands to machine. The machine then executes desired operation and replies to the computer when done. In our case one part of job is done when one hole is drilled. This machine can't mill PCBs yet, but I'm working on it.</font> </p> <p><a name="02"></a><br> <b><font face="Verdana">HOW DOES THE MACHINE WORK?</font></b> </p> <p><font face="Verdana">The machine I made works similar like other machines of this type. It is connected to serial port of IBM compatible personal computer and controlled by program written for MS Windows® operating system. The program transmits data from PC to machine and checks if it's responding. The machine replies every time when operation is done or when computer asks it if it is powered on. The program first sends coordinate for X axes, then for Y and finally for Z. After sending last coordinate also the command is sent which tells the machine what to do with drilling head. That command can send head towards PCB, it can drill a hole of certain depth, which means that the head will go down for certain distance and then move back up. It can also move head up or initialize it.</font> <br> <font face="Verdana">The core of machine is simple micro controller AT89C2051, which is fully filled with program, written with Bascom-8051. (By the way, thanks to mr. Mark Alberts for his wonderful program) The mcu has a lot to do. It takes care of receiving and sending data, motor direction and pulses needed by motor controller, current through motors and driller power. It also calculates it's relative coordinates from absolute ones, sent by computer. In fact it's really busy.</font> </p> <p><a name="cd"></a><br> <b><font face="Verdana">CIRCUIT DESCRIPTION</font></b> </p> <p><font face="Verdana">The core of our circuit is well known micro controller AT89C2951. It works at 12MHz, which isn't ideal for baud rate generator, but it works fine. Most of I/O pins have external pull-ups except P1.1 which is used to control current flow through motor windings. Reason for this are interference's generated by motor current control. The capacitors C13, 18 and 23 are therefor the same reason. P3.1 and P3.2 are used for PC communication.</font> </p> <p><font face="Verdana">C24 (470n) is used as reset capacitor who's pull down resistor is in already in micro controller. I thought it makes no sense to put external electrolytic capacitor and pull down resistor in such cases. The MAX232 is also well known RS232 level converter. These two circuits are powered from +36V line via 15V zener diode and 78L05 voltage regulator. I decided for this because translators L297 generate much noise in their power line. +5V power supply for L297 must be connected externally.</font> </p> <p><font face="Verdana">I also included drilling machine's power supply in my circuit. It is configured for 12V motor. If you use other motor voltages you should adjust components in this circuit, specially RE1, C1 and power transformer.</font> </p> <p><font face="Verdana">At the end there are motor controllers which are well described in ST's data sheets. I should mention that JP1, JP3 and JP4 are used to set step mode of motors; half step or full step. With half step we double motor's resolution and exclude spurious resonance, but we also loose some torque. There are also two points marked with SP1 and SP2. These are spare connections and are not used yet.</font> </p> <p><font face="Verdana">Micro controller also takes care of motor current. The voltage divider is made with resistor 2k2, and trimmer 470R. When P1.1 is low the divider is additionally pulled low via 180R resistor. This way we reduce standby current to 1/3 of full current. This way motors stay cool when the machine isn't in use. The current through each motor is controlled with 470R trimmer potentiometers TP1, TP2 and TP3. The power loss on output chips depends on motor currents and chopper frequency. Probably you will need a smaller cooler and maybe a little fan on top of it.</font> </p> <p><font face="Verdana">The power of power supply required by our circuit depends on motors we use. In most cases the 36V/2A and 5V/0.3A PS will do fine. The cable between PC and driller is usual with two DB9 connectors, male and female. The initialization switches are normal mechanical. I decided so, because they aren't sensible to light or dust like IR.</font> <br> &nbsp; <br> &nbsp; <br> </p> <center> <p><font face="Verdana"><font size="-2">Note: if the schematics doesn't load, hold SHIFT and click on picture to</font></font> <br> <font face="Verdana"><font size="-2">save it to disk and then open it with your favorite image viewer.</font></font> <br> <font face="Verdana"><font size="-2">The same goes for other High resolution images too.</font></font> </p> <p><a href="http://www2.arnes.si/%7Esspslavr/cnc_eng/cnc_sch.gif"><img src="http://www2.arnes.si/%7Esspslavr/cnc_eng/cnc_sch-s.gif" title="" alt="" style="border: 0px solid ; width: 400px; height: 346px;"></a><br> </p> <p><font face="Verdana">Circuit schematics</font></p> </center> <p><a name="mo"></a> <br> <b><font face="Verdana">MICRO CONTROLLER OPERATION AND ROUTINE EXAMPLES</font></b> </p> <p><font face="Verdana">On power on the micro controller first initializes all three motors. First it lifts Z motor on top, to avoid drill breaking. If the motors are in initial position, they are moved a little and initialized back again. The motors run until they hit their end switch. The mcu then stops that motor and initializes next one. The initialization routine looks like this.</font> <br> &nbsp; </p> <p><b><font face="Courier New,Courier">'Z axis initialization</font></b> <br> <b><font face="Courier New,Courier">If P3.5 = 0 Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'if the end switch is pressed</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; P1.3 = 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set motor direction to CW</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; For N = 0 To 100</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P1.2 = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'reset CLOCK line</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'wait a moment</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P1.2 = 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set CLOCK back</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For J = 0 To M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'with this loop we set the</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'speed of motor by changing</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'the pause between CLOCK pulses</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Next N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'repeat this 100 times</font></b> <br> <b><font face="Courier New,Courier">End If</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">P1.3 = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set motor direction to CCW</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'repeat following routine</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; P1.2 = 0</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Delay</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Delay</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; P1.2 = 1</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; For J = 0 To M</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delay</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Next J</font></b> <br> <b><font face="Courier New,Courier">Loop Until P3.5 = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'until the switch is pressed</font></b> </p> <p><font face="Verdana">The same happens for X and Y axes too. When initialization is done, the MCU sends message to PC that it's ready.</font> </p> <p><b><font face="Courier New,Courier">Print "Ready";</font></b> </p> <p><font face="Verdana">After that it waits for computer commands. It's interested in coordinates and command which tells it what to do. The computer asks MCU if it's ready before starting the job. If he doesn't get any reply from machine he warns as with error dialog. If the MCU is ready, then computer sends him the first coordinate with a command what to do when it gets there. When the driller is in position, it can do the following:</font> <br> &nbsp; </p> <ul> <li> <font face="Verdana">decrease the driller on position marked with "a" in settings and switch it on,</font></li> <li> <font face="Verdana">make a hole, that means go down for "b" and then go up for "b" too,</font></li> <li> <font face="Verdana">lift it up to the certain coordinate or</font></li> <li> <font face="Verdana">initialize it (send it to top) and switch it off</font></li> </ul> <font face="Verdana">Every time when operation is successfully done, MCU sends computer a message.</font> <p><b><font face="Courier New,Courier">Print "Done";</font></b> </p> <p><font face="Verdana">When PC receives the reply from MCU it sends him next coordinate, if necessary. MCU receives coordinate with following routine:</font> </p> <p><b><font face="Courier New,Courier">Pom1 = Waitkey&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'reads 5 variables</font></b> <br> <b><font face="Courier New,Courier">Pom2 = Waitkey&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'from serial port</font></b> <br> <b><font face="Courier New,Courier">Pom3 = Waitkey</font></b> <br> <b><font face="Courier New,Courier">Pom4 = Waitkey</font></b> <br> <b><font face="Courier New,Courier">Pom5 = Waitkey</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Num = Chr(pom1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'converts from character to ASCII</font></b> <br> <b><font face="Courier New,Courier">Pom1 = Val(num)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'converts from ASCII to integer</font></b> <br> <b><font face="Courier New,Courier">Temp = Pom1 * 10000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'multiply with 10000</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Num = Chr(pom2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'again convert char</font></b> <br> <b><font face="Courier New,Courier">Pom2 = Val(num)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'to integer</font></b> <br> <b><font face="Courier New,Courier">Pom2 = Pom2 * 1000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'and multiply it with 1000 and</font></b> <br> <b><font face="Courier New,Courier">Temp = Temp + Pom2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'add it to previous temp variable</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Num = Chr(pom3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'do the same for</font></b> <br> <b><font face="Courier New,Courier">Pom3 = Val(num)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'hundreds</font></b> <br> <b><font face="Courier New,Courier">Pom3 = Pom3 * 100</font></b> <br> <b><font face="Courier New,Courier">Temp = Temp + Pom3</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Num = Chr(pom4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'tens</font></b> <br> <b><font face="Courier New,Courier">Pom4 = Val(num)</font></b> <br> <b><font face="Courier New,Courier">Pom4 = Pom4 * 10</font></b> <br> <b><font face="Courier New,Courier">Temp = Temp + Pom4</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Num = Chr(pom5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'and ones</font></b> <br> <b><font face="Courier New,Courier">Pom5 = Val(num)</font></b> <br> <b><font face="Courier New,Courier">Temp = Temp + Pom5</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">X = Temp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'at the end assign this variable to X</font></b> </p> <p><font face="Verdana">The computer sends absolute coordinates to computer. The MCU then calculates relative coordinates (number of motor steps).</font> <br> &nbsp; </p> <p><b><font face="Courier New,Courier">Clkx = X  Xs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'he calculates nr. of steps from old value</font></b> <br> <b><font face="Courier New,Courier">Xs = X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'and saves value of new coordinate</font></b> <br> <b><font face="Courier New,Courier">If Clkx &gt; 0 Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'assign motor direction</font></b> <br> <b><font face="Courier New,Courier">Dirx = 1</font></b> <br> <b><font face="Courier New,Courier">End If</font></b> <br> <b><font face="Courier New,Courier">If Clkx &lt; 0 Then</font></b> <br> <b><font face="Courier New,Courier">Dirx = 0</font></b> <br> <b><font face="Courier New,Courier">End If</font></b> <br> <b><font face="Courier New,Courier">Clkx = Abs(clkx)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'calculate absolute number of steps</font></b> </p> <p><font face="Verdana">Then it moves on desired position.</font> </p> <p><b><font face="Courier New,Courier">Do</font></b> <br> <b><font face="Courier New,Courier">If Clkx &gt; 0 Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'if number of steps is greater then 0</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; P1.6 = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'generate clock</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Decr Clkx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'and subtract one</font></b> <br> <b><font face="Courier New,Courier">End If</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">If Clky &gt; 0 Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'repeat the same</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; P1.4 = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'for Y axes</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Decr Clky</font></b> <br> <b><font face="Courier New,Courier">End If</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Delay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'wait a moment</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">P1.6 = 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'end clock pulses</font></b> <br> <b><font face="Courier New,Courier">P1.4 = 1</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">For N = 0 To M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'generate a delay</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Delay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'which determines</font></b> <br> <b><font face="Courier New,Courier">Next N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'motor speed</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">If Clkx = 0 Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'when nr. of steps on X axes is equal to 0</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; If Clky = 0 Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'and nr. of steps on Y axes also equal to 0</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; Exit Do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'end loop</font></b> <br> <b><font face="Courier New,Courier">&nbsp;&nbsp; End If</font></b> <br> <b><font face="Courier New,Courier">End If</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">loop</font></b><font face="Courier New,Courier"></font> </p> <p><b><font face="Courier New,Courier">Print "Done";</font></b> </p> <p><font face="Verdana">That's all about main routines. Some of them are repeated several times, but I explained only the main examples.</font> </p> <p><a name="as"></a><br> <b><font face="Verdana">ASSEMBLING THE PCB</font></b> </p> <p><font face="Verdana">If you are going to make the PCB at home, you will encounter a problem, because it's double sided with lots of vias. I suppose that best way to make a professional PCB is to have it done by PCB manufacturer. The plans for pcb and all other stuff you can get at the end of this document.</font> </p> <p><font face="Verdana">When you have your PCB done, you can start soldering SMD components. All 100n capacitors are filter capacitors for power supply. If you don't have 100n you can use greater values as well. They should be dimensioned for 50VDC and preferred size is 1206.</font> <br> &nbsp; <br> &nbsp; <br> </p> <center> <p><img src="http://www2.arnes.si/%7Esspslavr/cnc_eng/bs.gif" title="" alt="" style="width: 1024px; height: 567px;"><br> </p> <p><font face="Verdana">SMD components layout (bottom side)</font></p> </center> <p><font face="Verdana">Then follows soldering of "normal" wired components. First solder the lowest components and then proceed to higher ones. Please, use sockets for DIL chips. The diodes must be 2A/100V fast recovery. FE2B can be used from Diotec.</font> <br> <font face="Verdana">ICs L298N must be cooled properly. they should be attached on heat sink <font color="#ff0000">WITH INSULATION BETWEEN HEAT SINK AND ICS. THE THERMO CONDUCTIVE PASTE MUST BE USED!</font></font> </p> <p><font face="Verdana">Power supply connections are made with screw type connectors assembled from three pieces (3+3+2 pins). As motor connectors I used Speedy 10 pins connectors with flat cables and two wires for one connection. That means that 8 pins are used for 4 wires. The last two are used for end switch. (pin 9 = hot, pin 10 = GND) Be sure not to short circuit the motor cables. The current regulator cannot limit current fast enough, since short circuit means only a little inductance.</font> <br> &nbsp; <br> &nbsp; <br> </p> <center> <p><img src="http://www2.arnes.si/%7Esspslavr/cnc_eng/ts.gif" title="" alt="" style="width: 1024px; height: 615px;"><br> </p> <p><font face="Verdana">Components layout (top side of PCB)</font></p> </center> <p><br> <br> </p> <p><a name="ho"></a><br> <b><font face="Verdana">HOW TO CONNECT A STEPPER MOTOR?</font></b> </p> <p><font face="Verdana">As we know, there are two basic groups of stepper motors, looking from point of coil connections. Unipolar motor has four coils (or two coils with center connection, if you wish) and 6 wires on outside. Some of them have center of coils connected together and have only 5 wires on the outside. Bipolar stepper motors have only two coils and four wires on outside. Considering that our circuit is intended for driving bipolar motors we will have no problem connecting bipolar motor to our circuit. If we want to connect a unipolar motor then things get a little different.</font> <br> <font face="Verdana">Since unipolar motor has center connection on each coil, we can leave this connection free (NC) and, as you se on schematics of motor, by doing so, we transformed this motor to bipolar. Only problem is coil resistance, so we should choose this option when coil resistance is low and motor is made for low voltages (3 to 5V). If it is too high, the current won't reach it's nominal level and the torque will be lost (Variant 1). In this case we can disassemble motor and brake connection on middle terminal and then connect coils parallel, as it's visible on picture, variant 3. If you don't need motor's full torque, you can connect it on one of the side wires and on center wire, as you can see on variant 2. Maybe someone will ask why don't we just connect the side wires together and we would get lower resistance for variant 3 without disassembling the motor. But this won't work, since the coils are winded bifilar and magnetic flux would be compensated.</font> </p> <p><font face="Verdana"><font color="#ff0000">IMPORTANT!</font></font> </p> <ul> <li> <font face="Verdana"><font color="#ff0000">When disassembling motor NEVER pull the rotor out of stator! This way you will partially demagnetize the permanent magnet in rotor and motor will no longer have specified torque.</font></font></li> <li> <font face="Verdana"><font color="#ff0000">Increasing current over specified point, when the magnetic core is saturated, no longer increases torque but only thermal losses in motor, resulting in motor's overheating and damage.</font></font></li> </ul> <center><img src="http://www2.arnes.si/%7Esspslavr/cnc_eng/mot_conn.gif" title="" alt="" style="width: 640px; height: 463px;"><br> <p><font face="Verdana">Variants of motor connection</font></p> </center> <p><font face="Verdana">We'll achieve best results with motors designed for 4 to 10V and for currents between 0.2 and 1.5A.</font> <br> &nbsp; </p> <p><a name="fi"></a><br> <b><font face="Verdana">FIRST STARTUP AND CALIBRATION</font></b> </p> <p><font face="Verdana">Don't try to power on the machine without a cooler on output stage IC-s since they cam be burned very quickly (I should know, unfortunately). The trimmer potentiometers must be in final CCW position. You can connect motors for testing right on your desktop. The end switches you can simulate with some keys or switches. Be sure you assembled all as described and as seen on component layout pictures. If you checked it all twice, you can power on your circuit and slowly turn the TP3 (Z axis trim pot) in CW direction. The motor will start turning. Maybe at certain current, specially when full step is selected, the motor will start behaving strange. This is due to motor's resonance, because it is not loaded. This phenomena will disappear when motor will have a load to carry around. When you press on that mtor's end switch then the X motor will start turning (after current adjusting procedure). Press on it's end switch as well and then repeat all this for Y axis motor. When all of this is done and if PCB is connected with your computer, you can start Easy NC drill program, described below, open file for drilling and press Start. The motors will start turning as they will later, when they will be fastened in their position. If any of motors has wrong direction, just swap the two wires of one of the coils. If the motors get hot, reduce the current.</font> <br> <font face="Verdana">If all of this works for you, you are really on a good way to make the final product working. Congratulations.</font> <br> &nbsp; </p> <p><br> </p> <center> <p><img src="sl6.jpg" height="345" width="417"></p> <p><font face="Verdana">Assembled PCB prototype</font></p> </center> <p><br> <br> </p> <p><a name="03"></a><br> <b><font face="Verdana">SOFTWARE</font></b> </p> <p><font face="Verdana">The software for controlling of our machine is written for MS Windows® operating system. I tried to implement as many functions as possible, tow I know that many things can be done better. Any ideas and suggestions are welcome.</font> </p> <p><font face="Verdana">The recommended hardware configuration is:</font> <br> &nbsp; </p> <ul> <li> <font face="Verdana">P100</font></li> <li> <font face="Verdana">16MB of RAM</font></li> <li> <font face="Verdana">1MB of hard disk space</font></li> <li> <font face="Verdana">SVGA color monitor (800*600)</font></li> <li> <font face="Verdana">1 free serial (RS232) port</font></li> <li> <font face="Verdana">Windows® 95</font></li> </ul> <font face="Verdana">The program easy to use and I hope very intuitive too, but I'll explain some details any way.<br> <br> <br> </font> <div style="text-align: center;"><font face="Verdana"><img src="http://www2.arnes.si/%7Esspslavr/cnc_eng/screenshot.gif" title="" alt="" style="width: 794px; height: 603px;"></font><br> </div> <p><font face="Verdana">The program Easy NC Drill reads standard drilling files (*.NCD) generated by various PCB designing programs, but there are some settings to be carefully set in order to make file readable by Easy NC Drill. These settings are:</font> </p> <p><font face="Verdana">Units: Inches</font> </p> <p><font face="Verdana">Code: ASCII None</font> </p> <p><font face="Verdana">Zero Suppression: Trailing</font> </p> <p><font face="Verdana">The CAD program will this way generate a file that will be understandable by Easy NC Drill. I made an example of file which has only one tool and three holes. On the beginning of file there must be line with text M48 or M72, otherwise the file will be considered of wrong format.</font> </p> <p><b><font face="Verdana">M48</font></b> <br> <b><font face="Verdana">INCH,LZ</font></b> <br> <b><font face="Verdana">T04F00S00C0.030</font></b> <br> <b><font face="Verdana">%</font></b> <br> <b><font face="Verdana">T04</font></b> <br> <b><font face="Verdana">X+002Y+004</font></b> <br> <b><font face="Verdana">Y+002</font></b> <br> <b><font face="Verdana">X+003Y+003</font></b> <br> <b><font face="Verdana">T00</font></b> <br> <b><font face="Verdana">M30</font></b> </p> <p><font face="Verdana">Easy NC Drill supports up to eight different tools and 1000 holes of each one. When you open the file, the coordinates are visible in table on the left side of screen.</font> <br> &nbsp; </p> <p><br> </p> <center> <p><img src="koordinate.jpg" height="92" width="168"></p> </center> <p><br> </p> <p><font face="Verdana">When you have a file opened and all settings set you can start drilling. Many of settings are those, which are set only once for your machine and others may be set several times. The settings are available by clicking on button, via menu or shortcut keys. So, lets take a look of these settings:</font> </p> <p><font face="Verdana">Warning! Some names of settings may be changed in the future.</font> </p> <p><b><font face="Verdana">Communication</font></b> </p> <center><img src="komunikacija.jpg" height="237" width="365"></center> <p><br> </p> <p><font face="Verdana">Under Communication tab you can choose a port that your machine is connected to. If you don't know which one is it, you can click on the Find button and machine will be detected automatically. There are no other communication settings necessary since they are controlled internally.</font> <br> &nbsp; </p> <p><b><font face="Verdana">Steps Per Inch (SPI)</font></b> </p> <center> <p><img src="merila.jpg" height="237" width="365"></p> </center> <p><font face="Verdana">In these fields you can type how many steps does your machine have to do to "travel" 1 inch (25,4mm). You can come to that numbers by trying. You can draw a PCB with four holes and then drill it with machine and adjust parameters. The numbers are usually around 200 and 400 when stepper motor with belt directly on it's axes is used. If you use same motors for X and Y axes, the numbers should be the same.</font> <br> &nbsp; </p> <p><b><font face="Verdana">Range</font></b> </p> <center> <p><img src="doseg.jpg" height="238" width="365"></p> </center> <p><font face="Verdana">In these fields you should enter the full range of your machine. This depends on it's construction and is defined in mils. These numbers you get by measuring of machine range with ruler and subtracting about 2 mm of it. If you enter too big numbers, the machine can crash into the end mechanism.</font> <br> &nbsp; </p> <p><b><font face="Verdana">Offset</font></b> </p> <center> <p><img src="offset.jpg" height="238" width="365"></p> </center> <p><font face="Verdana">Offset tells us where the 0,0 coordinate should be. Increasing offset means decreasing our active area of work, so consider setting offset to minimum. Also offset can not be bigger then range anyway. The offset coordinate is ignored when tool change coordinate is sent.</font> <br> &nbsp; </p> <p><b><font face="Verdana">Trapezoid</font></b> </p> <center> <p><img src="trapez.jpg" height="238" width="365"></p> </center> <p><font face="Verdana">The trapezoid distortion occurs, when machine mechanics is not mad enough precisely (90°angle between X and Y axes) or when you use laser printer it's output can be distorted too. Usually you don't notice that. I didn't too until I had to drill PCBs made with laser printed film. We can test machine and printer the same way. Draw a rectangle and print (drill corners of) it. Then measure opposite points. Maybe you'll be stunned with results. I measured difference on one Epson laser. It was almost Num! The value can be positive or negative.</font> </p> <p><b><font face="Verdana">Tool change</font></b> </p> <center> <p><img src="orodja.jpg" height="238" width="365"></p> </center> <p><font face="Verdana">In these fields we enter coordinate for tool change. This is a position where the tool is most easily exchanged. If enabled, the machine will go to this coordinate every time the tool has to be changed.</font> <br> &nbsp; </p> <p><b><font face="Verdana">Head</font></b> </p> <center> <p><img src="vrtalnik.jpg" height="238" width="365"></p> </center> <p><font face="Verdana">Under mark "a" we enter offset from initial position on top to the PCB's copper layer. We should leave 1 to 2 mm for safety reasons, otherwise the drill can break if it hits something.</font> <br> <font face="Verdana">Under "b" we enter drilling depth. This depends on thickness of our board.</font> </p> <p><b><font face="Verdana">Speed</font></b> </p> <center> <p><img src="hitrost.jpg" height="238" width="365"></p> </center> <p><font face="Verdana">The speed can be set for X and Y axes together and for Z axes. The number we enter tells the micro controller how many delays he should make between motor's clock pulses. Higher value faster transport. Speed must be set in reasonable limits. If it's too slow, drilling will take a while, if too fast, the motors can loose their position on startup and board will be ruined. Speed of motors depends on machine design, motor torque and motor current. You can get your value with testing.</font> </p> <p><font face="Verdana">When you're done with setting parameters click the OK button and settings will be saved to program and to hard disk in file cnc.ini. Settings are also saved when you exit the program.</font> </p> <p><b><font face="Verdana">Offset (again? nooop)</font></b> </p> <p><font face="Verdana">In latest version of Easy NC Drill I implemented setting of offset when machine is running. By clicking the buttons you move it to certain point and then hit OK when you are done. By default the machine is turned off. If you want to turn it on, click the button Machine ON and it will go to offset position.</font> </p> <center> <p><img src="offset2.JPG" height="390" width="659"></p> </center> <p><br> </p> <p><font face="Verdana">I should mention some other settings, which are not available from settings window. They are available only in program's main window.</font> </p> <p><b><font face="Verdana">Warn for tool change</font></b> </p> <p><font face="Verdana">If this box is checked, the program will warn you every time the tool should be changed. The drill head will go to coordinates set in Tool change settings window. The dialog will also tell you which drill diameter is next. If unchecked, the machine will not ask anything while drilling and all holes will be done with the same diameter.</font> </p> <p><b><font face="Verdana">Mirror X</font></b> </p> <p><font face="Verdana">If this option is checked, the image and drilling path will be mirrored. This option is very usable, since we design PCBs in "top view" mode, but when we want to drill, we do it from copper side of board, if PCB is single sided.</font> </p> <p><b><font face="Verdana">Go to 0,0 when done</font></b> </p> <p><font face="Verdana">If this option is checked, the machine will go to 0,0 when the job is done, otherwise it will go to Tool change position.</font> <br> &nbsp; </p> <p><font face="Verdana">O.K. So now the tool bar is next. The commands on toolbar are the basic ones.</font> </p> <center> <p><img src="orodni_trak.jpg" height="62" width="447"></p> </center> <p><b><font face="Verdana">Open NCD</font></b> </p> <p><font face="Verdana">Opens file with extension NCD in last used directory if possible. If file format isn't supported or if the coordinates are out of range the error message appears. In case that coordinate is out of range it's possible that we made our project far from bottom left corner. Usually the easiest solution is to move our PCB in bottom left corner or to put origin point closer to our project.</font> <br> &nbsp; </p> <p><b><font face="Verdana">Drill</font></b> </p> <p><font face="Verdana">Well, I guess we'll need this one. It starts the machine and executes selected job. If the machine is powered off or if it's COM port isn't properly selected the message will warn us, that the machine isn't responding. Also it will warn if no job is selected.</font> <br> &nbsp; </p> <p><b><font face="Verdana">Stop</font></b> </p> <p><font face="Verdana">Press stop when you want to end drilling prematurely. A dialog for confirmation will appear ae&nbsp;&nbsp;&nbsp; .</font> <br> &nbsp; </p> <p><b><font face="Verdana">Settings</font></b> </p> <p><font face="Verdana">Opens dialog with settings mentioned before.</font> </p> <p><b><font face="Verdana">Offset</font></b> </p> <p><font face="Verdana">Opens dialog with offset settings mentioned before.</font> </p> <p><b><font face="Verdana">About</font></b> </p> <p><font face="Verdana">Opens dialog with some program info and links to this page.</font> </p> <p><b><font face="Verdana">Exit</font></b> </p> <p><font face="Verdana">Closes program and saves it's settings.</font> <br> &nbsp; </p> <p><font face="Verdana">There are four speed buttons in right upper corner for sending machine to some often used coordinates:</font> </p> <center> <p><img src="opcije.jpg" height="63" width="255"></p> </center> <p><font face="Verdana">TC means tool change position, Offset means offset position, 0,0 means position 0,0 and MAX means maximum range position.</font> </p> <p><font face="Verdana">Some of options are not visible until a file is loaded. In upper left corner of "drawing surface" the painted circles with check boxes, drill diameter and number of holes are shown when the file loads. The circle paint corresponds to paint of holes on drawing surface. You can select type of holes to be drilled by checking the appropriate check box.</font> </p> <center> <p><img src="Izbira_vrt.jpg" height="197" width="264"></p> </center> <p><br> </p> <p><font face="Verdana">During the drilling process you can monitor it on screen. Finished holes are marked with red cross and driller path is colored green. We can also trace progress on two progress bars in status line.</font> </p> <center> <p><img src="med_vrt.jpg" height="457" width="447"></p> <p><font face="Verdana">Job in progress</font></p> </center> <p><a name="04"></a> <br> <font face="Verdana"><font color="#000000"><font size="+1">HOW TO MAKE A MECHANICAL PART OF MACHINE</font></font></font> </p> <p><font face="Verdana">I personally think, that making machine's hardware is the hardest thing to do. The prototype I made isn't very neat, but it works quite well. The main issue from my point of view was product's price. I wanted to make a machine that would be very cheap. I guess in your country, which ever it is, there is a lot of junk computer equipment and that's very nice, since we don't have to buy the expensive stepper motors.</font> </p> <p><font face="Verdana">I will explain how I made my machine and where I got my parts. The motor which drives machine in X axes and all mechanics around it was taken out from an old scanner. The motor should be one with 200 steps per revolution (1,8° step angle) and strong enough to move other mechanical parts around. You can see the motor and "home switch" on the picture below.</font> <br> &nbsp; <br> &nbsp; <br> </p> <center> <p><img src="motor_x.jpg" height="380" width="551"></p> </center> <p><br> </p> <p><font face="Verdana">The mechanism of Y axes is fastened on the arm, which is driven by X axis motor.</font> <br> &nbsp; <br> &nbsp; <br> </p> <center> <p><img src="motor_y.jpg" height="434" width="693"></p> </center> <p><br> </p> <p><font face="Verdana">The smaller motor is driving Y axis on which the driller is fastened. The third motor, which drives driller on Z axis can be connected directly to spiral axis if it has high enough resolution, otherwise it should have a gear transmission like in my case, where the motor is 7,5°. As you can see the mechanism which holds the Z axis is made from PCB material. It isn't very neat, but it works. The only problem is it's stability which is quite gentle due to weaker construction. But it's prototype anyway.</font> <br> &nbsp; <br> &nbsp; <br> </p> <center> <p><img src="motor_z.jpg" height="558" width="708"></p> </center> <p><br> </p> <p><font face="Verdana">The swirly axis i took out of an older, double speed Mitsumi CD-ROM, the "guides" (I don't know the right word for it but I mean that metal stick on which everything slides.) are ones from old floppy disk units. The motor and mechanism of X axes is from old scanner and of Y axes from Epson Stylus 400 printer. The power supply is also from this printer.</font> </p> <p><br> </p> <center> <p><img src="napajalnik.jpg" height="237" width="472"></p> </center> <p><br> </p> <p><font face="Verdana">The motor of Z axes is from Canon's typewriter, the flat cables are from steering wheel of Fiat's Bravo (Air bag connection). You can also use cables from old dot matrix printers which lead to printing head. All together is mounted on 16 mm wooden board and it is quite fine. The driller is a little motor with drilling head.</font> </p> <a name="co"></a><br> <p><b><font face="Verdana">COMPONENTS LIST</font></b> <br> &nbsp; <br> &nbsp; <table border="1" cols="4" width="100%"> <tbody> <tr> <td width="30%"><b><font face="Verdana"><font color="#990000">Label</font></font></b></td> <td><b><font face="Verdana"><font color="#990000">Value</font></font></b></td> <td width="5%"><b><font face="Verdana"><font color="#990000">Pcs</font></font></b></td> <td><b><font face="Verdana"><font color="#990000">Comment</font></font></b></td> </tr> <tr> <td><font face="Verdana">R1</font></td> <td><font face="Verdana">22k SMD</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">Size 1206</font></td> </tr> <tr> <td><font face="Verdana">R2, R3, R5, R6, R8, R9</font></td> <td><font face="Verdana">0,47R/2W</font></td> <td><font face="Verdana">6</font></td> <td><font face="Verdana">Vertical mounting</font></td> </tr> <tr> <td><font face="Verdana">R4, R7, R10</font></td> <td><font face="Verdana">2k2 SMD</font></td> <td><font face="Verdana">3</font></td> <td><font face="Verdana">Size 1206</font></td> </tr> <tr> <td><font face="Verdana">R11, R12, R13</font></td> <td><font face="Verdana">180R SMD</font></td> <td><font face="Verdana">3</font></td> <td><font face="Verdana">Size 1206</font></td> </tr> <tr> <td><font face="Verdana">R14 - R25</font></td> <td><font face="Verdana">5k6 SMD</font></td> <td><font face="Verdana">12</font></td> <td><font face="Verdana">Size 1206</font></td> </tr> <tr> <td><font face="Verdana">C1</font></td> <td><font face="Verdana">2200u/25V</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">C2, C3, C5, C6, C8, C10, C12, C14, C15, C17, C19, C20, C22, C27, C28,</font> <br> <font face="Verdana">C33 - C35, C37- C39, C41</font></td> <td><font face="Verdana">100n SMD</font></td> <td width="10%"><font face="Verdana">22</font></td> <td><font face="Verdana">Size 1206, can be replaced with greater values, 220n for example. Not critical.</font></td> </tr> <tr> <td><font face="Verdana">C4</font></td> <td><font face="Verdana">47u/25V</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">C7</font></td> <td><font face="Verdana">4u7/25V</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">C9</font></td> <td><font face="Verdana">2,2n SMD</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">Size 1206 or 0805</font></td> </tr> <tr> <td><font face="Verdana">C11, C16, C21</font></td> <td><font face="Verdana">470u/40V</font></td> <td><font face="Verdana">3</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">C13, C18, C23</font></td> <td><font face="Verdana">1n SMD</font></td> <td><font face="Verdana">3</font></td> <td><font face="Verdana">Size 1206 or 0805</font></td> </tr> <tr> <td><font face="Verdana">C24</font></td> <td><font face="Verdana">470n SMD</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">Size 1206</font></td> </tr> <tr> <td><font face="Verdana">C25, C26</font></td> <td><font face="Verdana">33p SMD</font></td> <td><font face="Verdana">2</font></td> <td><font face="Verdana">Size 0805</font></td> </tr> <tr> <td><font face="Verdana">C29 - C32</font></td> <td><font face="Verdana">1u/25V</font></td> <td><font face="Verdana">4</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">C36</font></td> <td><font face="Verdana">100u/63V</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">C40</font></td> <td><font face="Verdana">47u/6,3V</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">D1</font></td> <td><font face="Verdana">1N4148 SMD</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">D2 - D25</font></td> <td><font face="Verdana">FE2B</font></td> <td><font face="Verdana">24</font></td> <td><font face="Verdana">2A fast recovery</font></td> </tr> <tr> <td><font face="Verdana">IC1</font></td> <td><font face="Verdana">LM78L05</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">IC2, IC4, IC6</font></td> <td><font face="Verdana">L297</font></td> <td><font face="Verdana">3</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">IC3, IC5, IC7</font></td> <td><font face="Verdana">L298N</font></td> <td><font face="Verdana">3</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">IC8</font></td> <td><font face="Verdana">AT89C2051</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">must be programmed with propper software. <a href="http://www2.arnes.si/%7Esspslavr/cnc_eng/cnc22d.hex">Get DEMO VERSION</a></font></td> </tr> <tr> <td><font face="Verdana">IC9</font></td> <td><font face="Verdana">MAX232</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">ZD1</font></td> <td><font face="Verdana">BZX85, 15V/800mW</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">RE1</font></td> <td><font face="Verdana">JSM1-12V-4</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">or similar with same footprint</font></td> </tr> <tr> <td><font face="Verdana">T1</font></td> <td><font face="Verdana">BC239C</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">can be any other NPN with&nbsp;</font> <br> <font face="Verdana">hFE &gt; 200, Icmax 200mA and Ucemax 40V</font></td> </tr> <tr> <td><font face="Verdana">TP1, TP2, TP3</font></td> <td><font face="Verdana">470R</font></td> <td><font face="Verdana">3</font></td> <td><font face="Verdana">trimmerpotentiometer, horizontal</font></td> </tr> <tr> <td><font face="Verdana">GR1</font></td> <td><font face="Verdana">B20C2300-1500</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">rectifier for 2A/40V</font></td> </tr> <tr> <td><font face="Verdana">X1</font></td> <td><font face="Verdana">12MHz</font></td> <td><font face="Verdana">1</font></td> <td><br> </td> </tr> <tr> <td><font face="Verdana">JP1</font></td> <td><font face="Verdana">2 pin</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">WITHOUT JUMPER!</font> <br> <font face="Verdana">Close only for reset.</font></td> </tr> <tr> <td><font face="Verdana">JP2</font></td> <td><font face="Verdana">3 pin</font></td> <td><font face="Verdana">3</font></td> <td><font face="Verdana">Select half or full step</font></td> </tr> <tr> <td><font face="Verdana">CN1</font></td> <td><font face="Verdana">In line screwdriver connector, 7 pin</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">Can be assembled with 3+2+2 pin</font></td> </tr> <tr> <td><font face="Verdana">CN2, CN10</font></td> <td><font face="Verdana">&nbsp;DB9FA</font></td> <td><font face="Verdana">2</font></td> <td><font face="Verdana">Female adapter</font></td> </tr> <tr> <td><font face="Verdana">CN3, CN4, CN5</font></td> <td><font face="Verdana">Speedy 10 M</font></td> <td><font face="Verdana">3</font></td> <td><font face="Verdana">Male</font></td> </tr> <tr> <td><font face="Verdana">CN6, CN7, CN8</font></td> <td><font face="Verdana">Speedy 10 F</font></td> <td><font face="Verdana">3</font></td> <td><font face="Verdana">Female, for flat cable</font></td> </tr> <tr> <td><font face="Verdana">CN9</font></td> <td><font face="Verdana">DB9MA</font></td> <td><font face="Verdana">1</font></td> <td><font face="Verdana">Male</font></td> </tr> </tbody> </table> </p> <p><a name="do"></a><br> <b><font face="Verdana">DOWNLOADS</font></b> </p> <p><b><font face="Verdana"><font color="#993300">Easy NC Drill V2.2.3 Download</font></font></b> </p> <p><b><font face="Verdana"><font color="#ff0000">TERMS AND CONDITIONS OF SOFTWARE USE</font></font></b> </p> <p><font face="Verdana"><font color="#ff0000">The Easy NC Drill software is <b><u>freeware</u></b>. It was made as a hobby project and is not intended to be sold. You can freely copy and distribute it if you wish. It is brought to you as is with no warranties of any kind.&nbsp; By using this software you agree with all terms and conditions of use written on this page. The CNC Drilling machine is dangherous. Use of the machine and software is at your risk. I'm not liable for any consequences made with it.</font></font> </p> <center> <p><font face="Verdana"><a href="http://www2.arnes.si/%7Esspslavr/cnc_slo/encd223.zip">I agree with terms and conditions</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www2.arnes.si/%7Esspslavr/micro.html">I don't agree with terms and conditions</a></font></p> </center> <p><br> </p> <p><b><font face="Verdana"><font color="#993300">NCD file examples Downloads</font></font></b> </p> <center> <p><font face="Verdana"><a href="http://www2.arnes.si/%7Esspslavr/cnc_slo/examples.zip">Download *.NCD file examples</a></font></p> </center> <p><br> </p> <p><b><font face="Verdana"><font color="#993300">PCB in PostScript or Corel Draw 7 format</font></font></b> </p> <p><font face="Verdana"><font color="#000000">Included PCB film for top and bottom side and components layouts on top and bottom side.</font></font> </p> <center> <p><font face="Verdana"><a href="http://www2.arnes.si/%7Esspslavr/cnc_eng/cnc.zip">Download PCB (ZIP file)</a></font></p> </center> <p><br> <br> </p> <p><b><font face="Verdana"><font color="#993300">Microcontroller firmware in HEX format (DEMO)</font></font></b> </p> <center> <p><font face="Verdana"><a href="http://www2.arnes.si/%7Esspslavr/cnc_eng/cnc22d.hex">Download cnc22d.hex</a></font></p> </center> <p><br> </p> <p><font face="Verdana">Author:</font> </p> <p><font face="Verdana">Srecko Lavric</font> <br> <font face="Verdana">Stare Zage 4</font> <br> <font face="Verdana">SI 8350 Dolenjske Toplice</font> </p> <center><a href="mailto:srecko.lavric@guest.arnes.si?subject=Info%20about%20CNC%20drilling%20machine"><img src="mailani.gif" border="0" height="66" width="50"></a></center> <font face="Verdana">Tel. +386 73 065 810</font> <br> <font face="Verdana">GSM +386 31 65 71 71<br> <br> <br> Last update: 11. January 2005</font> <br> <p>&nbsp; </p> </body> </html>