SlideShare a Scribd company logo
GOVERNMENT ENGINEERING COLLEGE IDUKKI
PAINAVU 685 603
2D ROBOTIC PLOTTER
(CNC MODEL)
MAIN PROJECT REPORT
Submitted By
ALEENA BOBAN (12004725)
ANANDKRISHNAN V S (12004728)
SABANA UNNIKRISHNAN (12004768)
SHIBIL P B (12004772)
In partial fulfilment
of
BACHELOR OF TECHNOLOGY
ELECTRONICS AND COMMUNICATION
ENGINEERING
MAHATMA GANDHI UNIVERSITY
MAY 2016
GOVERNMENT ENGINEERING COLLEGE
IDUKKI
PAINAVU 685 603
DEPARTMENT OF
ELECTRONICS AND COMMUNICATION
ENGINEERING
BONAFIDE CERTIFICATE
This is to certify that the project report entitled 2D ROBOTIC PLOTTER (CNC MODEL)
is a bonafide record of the paper presented by ALEENA BOBAN (Reg.no:12004725),
ANANDKRISHNAN V S (Reg. no:12004728),SABANA UNNIKRISHNAN (Reg
.no:12004768), SHIBIL P B (Reg.no:12004772) during their final semester in partial
fulfillment of the requirement for the award of B-Tech Degree in Electronics & Communi-
cation Engineering of Mahatma Gandhi University, Kottayam, Kerala.
PROJECT GUIDE PROJECT COORDINATOR
Linu Shine Dr.S Santhosh Kumar
Asst.Prof ECE Asso.Prof ECE
HEAD OF THE DEPARTMENT
DECLARATION
I hereby declare that the project titled 2D ROBOTIC PLOTTER (CNC MODEL) being
submitted in partial fulfillment for the award of B.Tech degree is the original work carried out
by me. It has not formed the part of any other thesis submitted for award of any degree or
diploma, either in this or any other University.
(Signature of the Candidate)
NAME:
Register No:
3
ACKNOWLEDGEMNT
We give all honor and praise to the LORD who gave us wisdom and enabled us to complete
this project successfully.
We express our heartfelt thanks to Dr. Asok Kumar N, Government Engineering College,
Idukki for granting us permission to do the project.
We express our sincere thanks to our head of the department Prof.Jalaja M J and project guide
Ms Linu Shine and project coordinator Dr.S Santhosh Kumar for their valuable advice and
guidance.
We also express our gratitude and thanks to all our teachers and other faculty members of the
department of Electronics and Communication, Government Engineering College, Idukki for
their sincere and friendly cooperation in completing this project.
We are extremely grateful to our parents for their silent prayer.
4
ABSTRACT
2D Robotic Plotter is an embedded system that works based on the principle Computer
Numerical Control.Robotic 2D Plotter basically works with two stepper motors and a
servo motor, wherein the robot plots the input given from the computer on the drawing
board using ATMEGA 328p microcontroller on a open-source physical computing platform
Arduino. The Robotic 2D plotter has a two axis control and a special mechanism to raise and
lower the pen. Each axis is powered and driven by using an Arduino compactable driver
L293D. Pen control is achieved using a servo.The X and Y axis mainly consists of step-
per motors taken from CD-drives.The software used for programming the Arduino board are
namely Inkscape(0.48.5),Processing (3.0.2),CAMOTICS,Arduino IDE.The correct and efficient
arrangement and proper use of the programs along with the circuit makes up an efficient 2D
Robotic Plotter (CNC).
5
Contents
1 Introduction 9
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Computer Numerical Control (CNC) . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 2D Robotic Plotter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Aim of the Thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Literature Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7 Organisation of the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Project Description 15
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Industrial Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Software 17
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Inkscape (0.48.5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.1 Scalar Vector Graphics(SVG) . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.2 Inkscape Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.3 Inkscape Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.4 Generating gcode files using inkscape . . . . . . . . . . . . . . . . . . . . 21
3.3 CAMotics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5 Processing 3.0.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5.1 Sketching with Processing . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6
4 Hardware 27
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2 Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3 Adafruit L293D Motor Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.4 Servo Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.1 Working principle of Servo Motors. . . . . . . . . . . . . . . . . . . . . . 30
4.4.2 Controlling Servo Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.5 Stepper Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Industrial Design 34
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2 X-Y Direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3 Stand holding the whole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.4 Pen Setup (Z-axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.5 Final Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6 Overall View and Setup of the Project 37
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Steps Involved in the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7 Applications 40
8 Conclusion and Future Aspects 41
Appendices 44
.1 Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
.2 Arduino UNO Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
.3 L293D Specifications (Motor Driver IC) . . . . . . . . . . . . . . . . . . . . . . . 58
7
List of Figures
1.1 Intersecting lines form right angles and establish the zero point (Allen-Bradley) 10
1.2 The three-dimensional coordinate planes (axes) used in CNC. (The Superior
Electric Company) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 The quadrants formed when the X and Y axes cross are used to accurately located 11
3.1 Inkscape Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Processing Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1 Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 Adafruit L293D Motor Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Servo Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 Controlling of Servo Motor (PWM) . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.5 Stepper Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1 Lens Frame in CD Drive (Containing Stepper Motor) . . . . . . . . . . . . . . . 35
5.2 CD Drive Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3 Pensetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4 View 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.5 View 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.1 Main Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Plotted Output Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
.31 Pin Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
.32 Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
.33 Electrical Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8
Chapter 1
Introduction
1.1 Introduction
CNC stands for Computer Numeric Control and typically refers to a machine whose operation
is controlled by a computer. The most common usage of CNC, and the one relevant to us, is
the name given to devices that, under computer control are able to cut, etch, mill, engrave,
build, turn and otherwise perform manufacturing operations on various materials. Typically,
a CNC machine has the ability to move a cutting or 3D printing head in 2 to 6 axes, meaning
that it can position that tool head at a precise point in or on the material to create the cut
or operation desired at that point. By moving the head through multiple points, the cutting
head can cut or sculpt the design represented by a data stream of positioning points being sent
by the PC. By controlling a CNC machine through a PC it is possible for the user to design
a product on-screen, convert it to CNC-readable code and then send that data to the CNC
machine for it to produce a physical copy of the item designed.
1.2 Computer Numerical Control (CNC)
The term numerical control is a widely accepted and commonly used term in the machine tool
industry. Numerical control (NC) enables an operator to communicate with machine tools
through a series of numbers and symbols.
NC which quickly became Computer Numerical Control (CNC) has brought tremendous changes
to the metalworking industry. New machine tools in CNC have enabled industry to consis-
tently produce parts to accuracies undreamed of only a few years ago. The same part can be
reproduced to the same degree of accuracy any number of times if the CNC program has been
properly prepared and the computer properly programmed.
The operating commands which control the machine tool are executed automatically with
9
Figure 1.1: Intersecting lines form right an-
gles and establish the zero point (Allen-
Bradley)
Figure 1.2: The three-dimensional coordi-
nate planes (axes) used in CNC. (The Su-
perior Electric Company)
amazing speed, accuracy, efficiency, and repeatability. The ever-increasing use of CNC in in-
dustry has created a need for personnel who are knowledgeable about and capable of preparing
the programs which guide the machine tools to produce parts to the required shape and accu-
racy.
Cartesian Coordinate System
Almost everything that can be produced on a conventional machine tool can be produced
on a computer numerical control machine tool, with its many advantages. The machine tool
movements used in producing a product are of two basic types: pointto- point (straight-line
movements) and continuous path (contouring movements).
The Cartesian, or rectangular, coordinate system was devised by the French mathematician
and philosopher Rene’ Descartes. With this system, any specific point can be described in
mathematical terms from any other point along three perpendicular axes. This concept fits
machine tools perfectly since their construction is generally based on three axes of motion (X,
Y, Z) plus an axis of rotation. On a plain vertical milling machine, the X axis is the horizontal
movement (right or left) of the table, the Y axis is the table cross movement (toward or away
from the column), and the Z axis is the vertical movement of the knee or the spindle. CNC
systems rely heavily on the use of rectangular coordinates because the programmer can locate
every point on a job precisely.
The three-dimensional coordinate planes are shown in Fig. 1.2. The X and Y planes (axes)
are horizontal and represent horizontal machine table motions. The Z plane or axis represents
10
the vertical tool motion. The plus (+) and minus (-) signs indicate the direction from the zero
point (origin) along the axis of movement. The four quadrants formed when the XY axes cross
are numbered in a counterclockwise direction (Fig. 1.3). All positions located in quadrant 1
would be positive (X+) and positive (Y+). In the second quadrant, all positions would be
negative X (X-) and positive (Y+). In the third quadrant, all locations would be negative X
(X-) and negative (Y-). In the fourth quadrant, all locations would be positive X (X+) and
negative Y (Y-). In Fig. 1.3 , point A would be 2 units to the right of the Y axis and 2 units
Figure 1.3: The quadrants formed when the X and Y axes cross are used to accurately located
above the X axis. Assume that each unit equals 1.000. The location of point A would be X +
2.000 and Y + 2.000. For point B, the location would be X + 1.000 and Y - 2.000. In CNC
programming it is not necessary to indicate plus (+) values since these are assumed. However,
the minus (-) values must be indicated. For example, the locations of both A and B would be
indicated as follows:
A X2.000 Y2.000
B X1.000 Y-2.000
11
1.3 2D Robotic Plotter
Robotics is the branch of technology that deals with the design, construction, operation, and
application of robots, as well as computer systems for their control, sensory feedback, and
information processing. The design of a given robotic system will often incorporate principles
of mechanical engineering, electronic engineering and computer science (particularly artificial
intelligence).The term ’robotics’ was coined by Isaac Asimov in his science fiction short story
called ’Liar’. Robot is an electro-mechanical machine which is guided by a electronic circuitry
or computer program to perform various tasks. A robotic arm is a robotic manipulator, usually
programmable, with functions similar to that of human arm. Robotic 2D Plotter is a plotter
that offers the fastest way to efficiently produce very large drawings. Pen plotters will be able
to print by moving a pen or other writing device across the surface of a piece of paper. This
means that plotters are vector graphics devices, rather than raster graphics. Pen plotters can
draw complex line art, including text, but do so slowly because of the mechanical movement
of the writing device such as pen.
1.4 Aim of the Thesis
Aim of the thesis is to set up a 2D Robotic Plotter for the following constraints:
• A general idea of CNC Models.
• Generating GCODE. Integrating the diffrent softwares along with the hardware setup.
1.5 Literature Review
1. Jae Wook Jeon and Young Youl Ha, A Generalized Approach for the Acceleration and
Deceleration of Industrial Robots and CNC Machine Tools, IEEE Transactions on Indus-
trial Electronics, Vol. 47, No. 1, February 2000, pp. 133-139
Many techniques for the acceleration and deceleration of industrial robots and computer
numerical control (CNC) machine tools have been proposed in order to make industrial
robots and CNC machine tools perform given tasks efficiently. Although the techniques
selecting polynomial functions can generate various acceleration and deceleration charac-
teristics, the major problem is the computational load. The digital convolution techniques
are more efficient than the techniques selecting polynomial functions. However, neither
velocity profiles of which the deceleration characteristics is independent from the accel-
eration characteristics nor those of which the acceleration interval is different from the
deceleration interval can be generated by the digital convolution techniques. This paper
proposes a generalized approach for generating velocity profiles that cannot be gener-
ated by the digital convolution techniques. According to the desired characteristics of
12
acceleration and deceleration, each set of coefficients is calculated and is stored. Given
a moving distance, and acceleration and deceleration intervals, a velocity profile having
the desired characteristics of acceleration and deceleration can be efficiently generated
by using these coefficients. Several velocity profiles generated by the proposed technique
will be applied to one single-axis control system.
2. Allen G. Morinec, Power Quality Considerations for CNC Machines: Grounding, IEEE
Transactions on Industrial Electronics, Vol. 38, No. 1, January/February 2002, pp. 3-11.
Computer numerical control (CNC) machines are used to shape metal parts by milling,
boring, cutting, drilling, and grinding. A CNC machine generally consists of a computer-
controlled servo-amplifier, servo-motors, spindle motor, and various tooling. The machine
can be programmed to shape a part by use of a front control panel. More sophisticated
models allow a computer-aided design drawing to be uploaded to the machine. The
electronic components within a CNC machine are particularly sensitive to the ground-
ing techniques used in the electrical supply to the machine. Malfunction, degradation,
and damage to the electronics can often be traced to supplemental ground rods and
lightning strikes to earth. Production downtime, product loss, and expensive repair bills
result.With the wide-spread use of CNC machines across the world, these problems have
become a significant financial concern to many CNC machine users and their electric
utility companies. This paper begins with a brief explanation of the fundamentals of
service and equipment grounding. The basic design of CNC machines is also explained.
Based on a survey of several CNC machine representatives, the paper will explore the
common grounding techniques recommended by many CNC machine tool builders with
particular emphasis on the ground-rod problem. In addition, several actual case studies
that support the ground-rod problem will be described. Finally, a recommended power-
ing and grounding practice is presented to help eliminate power quality related operating
problems with CNC machines while maintaining the safety requirements of electrical
codes.
3. .Venkatram Ramachandran, Evaluation of Performance Criteria of CNC Machine Tool
Drive System, IEEE Transactions on Industrial Electronics, Vol. 45, No. 3, June 1998,
pp. 462-468.
The stability, steady-state error analysis, damping factor, and setting time of discrete
data drives for computer numerical control (CNC) machine tools are analyzed to obtain
the necessary information for the design of a practical system. The stability of the drive
is reviewed using Jury’s test and the Mitrovic criterion. The variation of damping factor
and settling time with respect to system parameters are presented based on the Mitrovic
criterion.
13
1.6 Motivation
Computer Numeric Control (CNC) refers to a wide variety of machines which are controlled
electronically and have many uses, including milling, drawing, extruding, cutting, and lathing.
CNC machines are really expensive. They are widely used in the fabrication of both electronic
and mechanical parts of large machines .So our group has decided to do a model to know about
theoretical and practical knowledge about this concept [2D Robotic Plotter].
1.7 Organisation of the Project
The report is organised as follows:
Abstract
Table of Contents
List of Figures
Chapter 1 : Introduction
Chapter 2 : Project Description
Chapter 3 : Software Description
Chapter 4 : Hardware Description
Chapter 5 : Mechanical Setup
Chapter 6 : Conclusion
References
Appendix
1.8 Conclusion
In this chapter,brief introduction of the project,literature review, motivation and organization
of the project has been prensented.
14
Chapter 2
Project Description
2.1 Introduction
The three main sections of Robotic 2D Plotter:
• Hardware
• Software
• Industrial Design
2.2 Hardware
Electronic hardware consists of interconnected electronic components which perform analog
or logic operations on received and locally stored information to produce as output or store
resulting new information or to provide control for output actuator mechanisms. Electronic
hardware can range from individual chips/circuits to distributed information processing sys-
tems. Well designed electronic hardware is composed of hierarchies of functional modules
which inter-communicate via precisely defined interfaces The XY-plotter consists of two axes
operating orthogonally to each other. Each axis includes a CD drive system that is driven by
an appropriate means. Additionally, a third axis, with limited motion capability is used to
actuate the write head.
2.3 Software
Computer software, or simply software, is that part of a computer system that consists of
encoded information or computer instructions, in contrast to the physical hardware from which
the system is built.The softwares used in this project comes under open source.Open-source
software (OSS) is computer software with its source code made available with a license in which
the copyright holder provides the rights to study, change, and distribute the software to anyone
15
and for any purpose. Open-source software may be developed in a collaborative public manner.
Open-source software is the most prominent example of open-source development.
2.4 Industrial Design
Industrial design is a process of design applied to products that are to be manufactured through
techniques of mass production. Its key characteristic is that design is separated from manu-
facture: the creative act of determining and defining a product’s form takes place in advance
of the physical act of making a product, which consists purely of repeated, often automated,
replication.The mechanical part is taken fully from CD-drive.
2.5 Conclusion
In this chapter a brief idea of the main three sections,software,hardware and industrial design
are discussed.
16
Chapter 3
Software
3.1 Introduction
Engineering as a discipline often requires more integration than large amounts of original devel-
opment. In a typical project, writing new code presents significant challenges, and the number
of features shared between projects means that it is possible to create shared components which
implement common features. A library or an existing module allows the use of a well developed
and tested component, which saves significant resources in the implementation of the project.
The drawback of components is the need to integrate various potentially conflicting interfaces,
and the need to understand a complex system in order to effectively use the component.
Components can be purchased, or may be freely available, as in the case of Open Source soft-
ware. Open Source also provides the opportunity to contribute new features and bug fixes back
in to the community. The programs and tools we chose for this project are all open source,
and use international standards, which allowed to rapidly develop the features needed.
The project software system consists of:
1. Inkscape (Version 0.48.5).
2. CAMotics.
3. Arduino IDE.
4. Processing 3.0.2.
3.2 Inkscape (0.48.5)
There are two basic types of graphic images: bitmap (or raster) images and vector images.
In the first case, the image is defined in terms of rows and columns of individual pixels, each
with its own color. In the second case, the image is defined in terms of lines, both straight and
17
curved. A single straight line is described in terms of its two end points.
The difference in these types of graphic images becomes readily apparent when a drawing is
enlarged. The same line is shown on the left and right. On the left it is displayed as a bitmap
image, while on the right it is displayed as a vector. In both cases, the line has been scaled up
by a factor of four from its nominal size.
When the bitmap resolution of a drawing matches the display resolution, the objects in the
drawing look smooth. The same drawing, but defined as a bitmap image on the left and a
vector image on the right. If the output device has the same resolution as the bitmap image,
there is little difference between the appearance of the two images.
If the bitmap resolution is significantly less than the display resolution, the display will show
jagged lines. The head of the gentleman in the above drawings has been scaled up by a factor
of five. Now one can see a difference in the quality of the bitmap drawing (left) and the vector
drawing (right). Note that the bitmap image uses anti-aliasing, a method of using grayscale to
attempt to smooth the drawing.
All output devices, with few exceptions, use a raster or bitmap image to display graphics. The
real difference between drawing with bitmap graphics and vector graphics is the point at which
the image is converted into a bitmap. In the case of vector graphics, this conversion is done at
the very last step before display, ensuring that the final image matches exactly the resolution
of the output device.
3.2.1 Scalar Vector Graphics(SVG)
SVG stands for Scalable Vector Graphics. Scalable refers to the notion that a drawing can
be scaled to an arbitrary size without losing detail. Scalable also refers to the idea that a
drawing can be composed of an unlimited number of smaller parts, parts that can be reused
many times. The SVG standard is directed toward a complete description of two-dimensional
graphics, including animation in an XML (eXtensible Markup Language) format. XML is an
open standard for describing a document in a way that can be easily extended and is resistant
to future changes in the document specification. A drawing saved in one version of SVG by one
version of a drawing program should be viewable, to the full extent possible, by any previous
or future version of any drawing program that adheres to the SVG standard. If a program
doesn’t support something in the SVG standard, it should just skip over any part of a drawing
that uses it, rendering the rest correctly.
SVG files are small, and drawings described by the standard adapt well to different presenta-
tion methods. This has led to great interest in the standard. Support is included in many web
browsers (Firefox, Chrome, Opera, Safari, and Internet Explorer from version 9), or is avail-
18
able through plug-ins (e.g., [Adobe [http://www.adobe.com/svg/viewer/install/, Ssrc SVG
[http://www.savarese.com/software/svgplugin/],and Google [http://www.google.com/chrome
frame]). Over a dozen companies including Apple (iPhone), Blackberry, LG, Motorola, Nokia,
Samsung, and Sony Ericsson produce mobile phones that utilize a subset of the full SVG stan-
dard (SVG Tiny) that has been tailored for devices with limited resources.
Inkscape is a free and open-source vector graphics editor; it can be used to create or edit
vector graphics such as illustrations, diagrams, line arts, charts, logos and complex paint-
ings. Inkscape’s primary vector graphics format is Scalable Vector Graphics (SVG) version
1.1. While Inkscape can import and export several formats, all editing workflow inevitably
occur within the guidelines of the SVG format.
Inkscape can render primitive vector shapes (e.g. rectangles, ellipses, polygons, arcs, spirals,
stars and isometric boxes), text and regions containing raster graphics. It also supports image
tracing, enabling the editor to create vector graphics from photos and other raster sources.
Created shapes can be subjected to further transformations, such as moving, rotating, scaling
and skewing. These objects may be filled with solid colors, patterns, radiant or linear color
gradient, their borders stroked or their transparency changed.
Inkscape SVG-based vector drawing program is useful for drawing:
• Illustrations for the Web.
• Graphics for mobile phones.
• Simple line drawings.
• Cartoons.
• Complex works of art.
• Figures for articles and books.
• Organization charts.
The file format that Inkscape uses is compact and quickly transmittable over the Internet. Yet
it is powerful and can describe complex drawings that are scalable to any size. Support for the
format has been added to web browsers and is already included in many mobile phones.
Inkscape supports the drawing of regular shapes (rectangles, circles, etc.), arbitrary paths, and
text. These objects can be given a wide variety of attributes such as color, gradient or pat-
terned fills, alpha blending, and markers. Objects can be transformed, cloned, and grouped.
Hyperlinks can be added for use in web browsers. The Inkscape program aims to be fully XML,
SVG, and CSS compliant.
Inkscape is available prepackaged for the Windows, Macintosh, and Linux operating systems.
19
The program and its source code are freely available. They can be obtained from the Inkscape
website [http://www.inkscape.org/].
Inkscape is undergoing very rapid development with new features being added and compliance
to the SVG standard being constantly improved.
3.2.2 Inkscape Window
Start by opening Inkscape.This window contains several major areas, many containing clickable
icons or pull-down menus. The following figure shows this window and labels key parts.
The Command Bar, Snap Bar, Tool Controls, and Tool Box are detachable by dragging on the
handles (highlighted in blue) at the far left or top. They can be returned to their normal place
by dragging them back. New in v0.48: Some of the bars change position depending on which
option is selected at the bottom of the View menu. When Default is selected, the Command
Bar is on the top while the Snap Bar is on the right. When Custom is selected, the Command
Bar and the Snap Bar are both on the top. When Wide is selected, the Command Bar and
the Snap Bar are both on the right. By default, Default is used if you are not using a “Wide
Screen” display while Wide is used if you are. A width to height aspect ratio of greater than
1.65 is defined to be wide. These bars, as well as the Palette and Status Bar, can be hidden
using the View Show/Hide submenu.
As Inkscape has grown more complex, the area required to include icons and entry boxes for all
the various items has also grown leading to problems when Inkscape is used on small screens.
The Command Bar, Snap Bar, Tool Controls, and Tool Box have variable widths or heights.
If there are too many items to be shown in the width (height) of the Inkscape window, a small
down arrow will appear on the right side or bottom of the bars. Clicking on this arrow will
open a drop-down menu with access to the missing items.
20
Figure 3.1: Inkscape Window
3.2.3 Inkscape Program
Inkscape has its roots in the program Gill (GNOME Illustrator application) created by Raph
Levian [http:// www.levien.com/] of Ghostscript fame. This project was expanded on by the
Sodipodi [http://sourceforge.net/projects/ sodipodi] program. A different set of goals led to
the split-off of the current Inkscape development effort.
The goal of the writers of Inkscape is to produce a program that can take full advantage of the
SVG standard. This is not a small task. A link to the road map for future development can
be found on the Inkscape website [http:// www.inkscape.org/].
Instructions on installing Inkscape can be found on the Inkscape website. Full functionality
of Inkscape requires additional helper programs to be installed, especially for importing and
exporting files in different graphic formats.
In this project the use of inkscape is to convert any image(formats) into graphics
code usually known as GCODE. .GCODE formats are generated by integrating
inkscape with necessary extension files.
3.2.4 Generating gcode files using inkscape
1. Download and install Inkscape 0.48.5 version.
2. Install an Add-on that enables the export images to gcode files.
3. Open the Inkscape, go to File menu and click ”Document Properties”.
4. Change the custom size.
21
5. Now close this window.
6. Open the required image.
7. Re-size the image to fit our printing area.
8. Click Path from menu and ”Trace Bitmap”.Make required changes.
9. Click ok and close the window.
10. Now, move the gray scale image, and delete the color one behind it. Move the grey image
to the correct place again and click from Path menu ”Object to path”.
11. Final, go to file menu, click save as and select .gcode. Click ok on next window.
GCode Tools: Gcodetools is an open source Inkscape extension, to export gcode for use
with a CNC machine, written in the Python programming language. Inkscape extensions work
in the standard Unix IO model, taking SVG on standard input, and output transformed SVG on
standard output. The Gcodetools extension generates G-Code from the SVG input and writes
it to a file as a side effect of the SVG transformation. This python extension can be easily
downloaded as a .ZIP file from https://github.com/martymcguire/inkscape-unicorn
3.3 CAMotics
CAMotics is an Open-Source software which simulates 3-axis CNC milling or engraving. It is
a fast, flexible and user friendly simulation software for the DIY and Open-Source community.
CAMotics works on Linux, OS-X and Windows.
Being able to simulate is a critical part of creating CNC tool paths. Programming a CNC
with out a simulator is cutting without measuring; it’s both dangerous and expensive. With
CAMotics we can preview the results of your cutting operation before you fire up your machine.
This will save the time and money and open up a world of creative possibilities by allowing us
to rapidly visualize and improve upon designs without wasting material or breaking tools.
At home manufacturing is one of the next big technology revolut There have been major
advances in desktop 3D printing (e.g. Maker Bot) yet uptake of desktop CNCs has lagged
despite the availability of cheap CNC machines. One of the major reasons for this is a lack of
Open-Source simulation and CAM (3D model to tool path conversion) software. CAM and NC
machine simulation present some very difficult, yet not insurmountable, programming chal-
lenges. Whereas, 3D printing simulation and tool path generation are much easier.
CAMotics aims to be a useful CNC simulation platform for the DIY and Open-Source com-
munity. CAMotics should serve the highly technical user but remain simple and user friendly
enough to support less techie types as well.
22
Features
• Fast 3-axis cut-workpiece simulation with 3D visualization.
• Simulates cylindrical, conical, ballnose, spheroid and snubnose tool shapes.
• Tool path 3D visualization.
• Multi-threaded rendering can take advantage of multi-processor CPUs.
• GCode parsing, simulation, verification and annotation.
• Supports LinuxCNC (AKA EMC2) O-codes.
• Export cut workpiece to STL file.
• Tool table editing.
• Add height probing to 2D GCode files. Very useful for circuit board cutting and metal
engraving.
• 2D GCode path optimization.
• Operates in Windows and Linux.
• Released under the GPL v2+ license.
Limitations
• Simulates only snapshots of the cutting process.
• No 5-axis simulation.
• No Lathe simulation.
• No CAM facilities yet, e.g. 3D model to tool path conversion.
• No CNC machine control, not a replacement for LinuxCNC or MACH3.
• Does not yet detect over/under cutting, collisions with the tool shaft or fixtures or rapid
moves in the material.
• Not all of the LinuxCNC G-Code language is implemented, yet.
23
3.4 Arduino IDE
The Arduino project provides the Arduino integrated development environment (IDE), which
is a cross-platform application written in the programming language Java. It originated from
the IDE for the languages Processing and Wiring. It is designed to introduce programming to
artists and other newcomers unfamiliar with software development. It includes a code editor
with features such as syntax highlighting, brace matching, and automatic indentation, and
provides simple one-click mechanism to compile and load programs to an Arduino board. A
program written with the IDE for Arduino is called a ”sketch”.
The Arduino IDE supports the languages C and C++ using special rules to organize code. The
Arduino IDE supplies a software library called Wiring from the Wiring project, which provides
many common input and output procedures. A typical Arduino C/C++ sketch consist of two
functions that are compiled and linked with a program stub main() into an executable cyclic
executive program:[.2cm]
• setup(): a function that runs once at the start of a program and that can initialize
settings.
• loop(): a function called repeatedly until the board powers off.
After compiling and linking with the GNU toolchain, also included with the IDE distribution,
the Arduino IDE employs the program avrdude to convert the executable code into a text
file in hexadecimal coding that is loaded into the Arduino board by a loader program in the
board’s firmware.
3.5 Processing 3.0.2
Processing is a simple programming environment that was created to make it easier to develop
visually oriented applications with an emphasis on animation and providing users with instant
feedback through interaction. The developers wanted a means to “sketch” ideas in code. As
its capabilities have expanded over the past decade, Processing has come to be used for more
advanced production-level work in addition to its sketching role. Originally built as a domain-
specific extension to Java targeted towards artists and designers, Processing has evolved into a
full-blown design and prototyping tool used for large-scale installation work, motion graphics,
and complex data visualization.
Processing is based on Java, but because program elements in Processing are fairly simple,
you can learn to use it even if you don’t know any Java. If you’re familiar with Java,
it’s best to forget that Processing has anything to do with Java for a while, until you get
the hang of how the API works. The latest version of Processing can be downloaded at
http://processing.org/download.
24
An important goal for the project was to make this type of programming accessible to a wider
audience. For this reason, Processing is free to download, free to use, and open source. But
projects developed using the Processing environment and core libraries can be used for any
purpose. This model is identical to GCC, the GNU Compiler Collection. GCC and its as-
sociated libraries (e.g. libc) are open source under the GNU Public License (GPL), which
stipulates that changes to the code must be made available. However, programs created with
GCC (examples too numerous to mention) are not themselves required to be open source.
Processing consists of:
• The Processing Development Environment (PDE). This is the software that runs when
you double-click the Processing icon. The PDE is an Integrated Development Envi-
ronment (IDE) with a minimalist set of features designed as a simple introduction to
programming or for testing one-off ideas.
• A collection of functions (also referred to as commands or methods) that make up the
“core” programming interface, or API, as well as several libraries that support more ad-
vanced features such as sending data over a network, reading live images from a webcam,
and saving complex imagery in PDF format.
• A language syntax, identical to Java but with a few modifications.
• An active online community, based at http://processing.org.
3.5.1 Sketching with Processing
A Processing program is called a sketch. The idea is to make Java-style programming feel
more like scripting, and adopt the process of scripting to quickly write code. Sketches are
stored in the sketchbook, a folder that’s used as the default location for saving all of your
projects. Sketches that are stored in the sketchbook can be accessed from File Sketchbook.
Alternatively, File Open... can be used to open a sketch from elsewhere on the system.
Advanced programmers need not use the PDE, and may instead choose to use its libraries with
the Java environment of choice. However, for a beginner, it’s recommended to use the PDE to
gain familiarity with the way things are done. While Processing is based on Java, it was never
meant to be a Java IDE with training wheels. The conceptual model (how programs work,
how interfaces are built, and how files are handled) is somewhat different from Java.
25
Figure 3.2: Processing Window
3.6 Conclusion
In this chapter a brief introduction about the type of software used,theoretical and some prac-
tical idea about Inkscape, CAMotics, Arduino IDE and Processing are discussed.
26
Chapter 4
Hardware
4.1 Introduction
In this hardware system consists of a metallic frame, on which is mounted three axis of motion
in a standard Cartesian coordinate system. X and Y axis is driven by a stepper motor driven
by a adafruit L293D motor driver circuit. Z axis is driven by a servo motor.
The different included parts in the project are:
• Arduino UNO.
• ADAFRUIT:MOtor Driver Shield L293D.
• Stepper Motors.
• Servo Motor.
4.2 Arduino UNO
The Uno is a microcontroller board based on the ATmega328P. It has 14 digital input/output
pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz quartz crystal,
a USB connection, a power jack, an ICSP header and a reset button. It contains everything
needed to support the microcontroller; simply connect it to a computer with a USB cable or
power it with a AC-to-DC adapter or battery to get started..Anyone can tinker with the UNO
without worrying too much about doing something wrong, worst case scenario you can replace
the chip for a few dollars and start over again. ”Uno” means one in Italian and was chosen to
mark the release of Arduino Software (IDE) 1.0. The Uno board and version 1.0 of Arduino
Software (IDE) were the reference versions of Arduino, now evolved to newer releases. The Uno
board is the first in a series of USB Arduino boards, and the reference model for the Arduino
27
platform; for an extensive list of current, past or outdated boards see the Arduino index of
boards.
The board features an Atmel ATmega328 microcontroller operating at 5 V with 2Kb of RAM,
32 Kb of flash memory for storing programs and 1 Kb of EEPROM for storing parameters.
The clock speed is 16 MHz, which translates to about executing about 300,000 lines of C source
code per second. The board has 14 digital I/O pins and 6 analog input pins. There is a USB
connector for talking to the host computer and a DC power jack for connecting an external
6-20 V power source, for example a 9 V battery, when running a program while not connected
to the host computer. Headers are provided for interfacing to the I/O pins using 22 g solid
wire or header connectors.
Overview of the Board
Figure 4.1: Arduino UNO
28
4.3 Adafruit L293D Motor Shield
Arduino-compatible boards use printed circuit expansion boards called shields, which plug into
the normally supplied Arduino pin headers. Shields can provide motor controls, Global Posi-
tioning System (GPS), Ethernet, liquid crystal display (LCD), or breadboarding (prototyping).
• 2 connections for 5V servos connected to the Arduino’s high-resolution dedicated timer.
• Up to 4 bi-directional DC motors with individual 8-bit speed selection.
• Up to 2 stepper motors (unipolar or bipolar) with single coil, double coil, interleaved or
micro-stepping.
• 4 H-Bridges: L293D chipset provides 0.6A per bridge (1.2A peak) with thermal shutdown
protection, 4.5V to 25V.
• Pull down resistors keep motors disabled during power-up.
• Big terminal block connectors to easily hook up wires (10-22AWG) and power Arduino
reset button brought up top.
• 2-pin terminal block to connect external power, for seperate logic/motor supplies.
• Tested compatible with Mega, Diecimila, Duemilanove.
Before using the Motor shield, we must install the AFM otorArduinolibrary−thiswillinstructtheArduinoho
First, grab the library from github (http://adafru.it/aOA).
Uncompress the ZIP file onto your desktop.
Rename the uncompressed folder AFMotor.
Check that inside AFMotor is AFMotor.cpp and AFMotor.h files. If not, check the steps above.
Place the AFMotor folder into the arduinosketchfolder/libraries folder. For Windows, this will
probably be something like MY Documents/Arduino/libraries for Mac it will be something like
Documents/arduino/libraries. If this is the first time you are installing a library, you’ll need
to create the libraries folder. Make sure to call it libraries exactly, no caps, no other name.
Check that inside the libraries folder there is the AFMotor folder, and inside AFMotor Is
AFMotor.cpp AFMotor.h and some other files.
Quit and restart the IDE. You should now have a submenu called File-Examples-AFMotor-
MotorParty.
29
Figure 4.2: Adafruit L293D Motor Shield
4.4 Servo Motor
A servo motor is an electrical device which can push or rotate an object with great precision.
To rotate and object at some specific angles or distance, servo motor is used. It is just made up
of simple motor which run through servo mechanism. If motor is used is DC powered then it is
called DC servo motor, and if it is AC powered motor then it is called AC servo motor. We can
get a very high torque servo motor in a small and light weight packages. Doe to these features
they are being used in many applications like toy car, RC helicopters and planes, Robotics,
CNC Machine etc. The position of a servo motor is decided by electrical pulse and its circuitry
is placed beside the motor.
4.4.1 Working principle of Servo Motors.
A servo consists of a Motor (DC or AC), a potentiometer, gear assembly and a controlling
circuit. First of all we use gear assembly to reduce RPM and to increase torque of motor. Say
at initial position of servo motor shaft, the position of the potentiometer knob is such that there
is no electrical signal generated at the output port of the potentiometer. Now an electrical
signal is given to another input terminal of the error detector amplifier. Now difference between
these two signals, one comes from potentiometer and another comes from other source, will be
processed in feedback mechanism and output will be provided in term of error signal. This error
signal acts as the input for motor and motor starts rotating. Now motor shaft is connected
with potentiometer and as motor rotates so the potentiometer and it will generate a signal.
So as the potentiometer’s angular position changes, its output feedback signal changes. After
sometime the position of potentiometer reaches at a position that the output of potentiometer
30
Figure 4.3: Servo Motor
is same as external signal provided. At this condition, there will be no output signal from the
amplifier to the motor input as there is no difference between external applied signal and the
signal generated at potentiometer, and in this situation motor stops rotating.
4.4.2 Controlling Servo Motor
Servo motor is controlled by PWM (Pulse with Modulation) which is provided by the control
wires. There is a minimum pulse, a maximum pulse and a repetition rate. Servo motor can
turn 90 degree from either direction form its neutral position. The servo motor expects to see
a pulse every 20 milliseconds (ms) and the length of the pulse will determine how far the motor
turns. For example, a 1.5ms pulse will make the motor turn to the 90 position, such as if pulse
is shorter than 1.5ms shaft moves to 0 and if it is longer than 1.5ms than it will turn the servo
to 180.
Servo motor works on PWM (Pulse width modulation) principle, means its angle of rotation is
controlled by the duration of applied pulse to its Control PIN. Basically servo motor is made
up of DC motor which is controlled by a variable resistor (potentiometer) and some gears. High
speed force of DC motor is converted into torque by Gears. We know that WORK= FORCE X
DISTANCE, in DC motor Force is less and distance (speed) is high and in Servo, force is High
and distance is less. Potentiometer is connected to the output shaft of the Servo, to calculate
the angle and stop the DC motor on required angle. Servo motor can be rotated from 0 to
180 degree, but it can go up to 210 degree, depending on the manufacturing. This degree of
rotation can be controlled by applying the Electrical Pulse of proper width, to its Control pin.
31
Servo checks the pulse in every 20 milliseconds. Pulse of 1 ms (1 millisecond) width can rotate
servo to 0 degree, 1.5ms can rotate to 90 degree (neutral position) and 2 ms pulse can rotate
it to 180 degree.
Figure 4.4: Controlling of Servo Motor (PWM)
4.5 Stepper Motor
A stepper motor is a type of DC motor which has a full rotation divided in an equal number
of steps. It is a type of actuator highly compatible with numerical control means, as it is
essentially an electromechanical converter of digital impulses into proportional movement of its
shaft, providing precise speed, position and direction control in an open-loop fashion, without
requiring encoders, end-of-line switches or other types of sensors as conventional electric motors
require. he steps of a stepper motor represent discrete angular movements, that take place in
a successive fashion and are equal in displacement, when functioning correctly the number of
steps performed must be equal to the control impulses applied to the phases of the motor. The
final position of the rotor is given by the total angular displacement resulting from the number of
steps performed. This position is kept until a new impulse, or sequence of impulses, is applied.
32
These properties make the stepper motor an excellent execution element of open-loop control
systems. A stepper motor does not lose steps, i.e. no slippage occurs, it remains synchronous
to control impulses even from standstill or when braked, thanks to this characteristic a stepper
motor can be started, stopped or reversed in a sudden fashion without losing steps throughout
its operation.
Figure 4.5: Stepper Motor
4.6 Conclusion
In this chapter all the details about the hardwares used such as Arduino UNO board,Adafruit
L293D Motor Shield,Stepper Motors and Servo Motors are discussed.
33
Chapter 5
Industrial Design
5.1 Introduction
The complete mechanical system was designed in the metallic CD drive cover.
The designs in the project are :
• X-Y Direction.
• Pen setup.
• Stand holding the Whole.
• Final Setup
Y-axis: basic axis carries X-axis move from front to back.
X-axis: carries Z-axis move from left to right.
Z-axis: carries pen part move up and down.
5.2 X-Y Direction
In computing, an optical disc drive (ODD) is a disk drive that uses laser light or electromagnetic
waves within or near the visible light spectrum as part of the process of reading or writing data
to or from optical discs. Some drives can only read from certain discs, but recent drives can
both read and record, also called burners or writers. Compact discs, DVDs, and Blu-ray discs
are common types of optical media which can be read and recorded by such drives. Optical disc
drives that are no longer in production include CD-ROM drive, CD writer drive, and combo
(CD-RW/DVD-ROM) drive. As of 2015, DVD writer drive is the most common for desktop
PCs and laptops. There are also the DVD-ROM drive, BD-ROM drive, Blu-ray Disc combo
(BD-ROM/DVDRW/CD-RW) drive, and Blu-ray Disc writer drive.
The stepper motor setup of CD drives are used in X-Y direction co-ordinate axis.
34
Figure 5.1: Lens Frame in CD Drive (Containing Stepper Motor)
5.3 Stand holding the whole
The stand holding all the parts are made by the outer metallic cover of the cd drive. Two
covers are welded together perpendicularly for holding the x and y axis.
Figure 5.2: CD Drive Cover
5.4 Pen Setup (Z-axis)
For pen setup (z axis) high-density fiberboard (HDF) is used. It is a type of fiberboard, which
is an petroleum by product. It is of light weight.Servomotor is adjusted inside the HDF to get
the up and movement required to plot the object.
5.5 Final Setup
All the sections are integrated together to get a good output.
35
Figure 5.3: Pensetup
Figure 5.4: View 1 Figure 5.5: View 2
5.6 Conclusion
In this chapter the design setup used in this project is discussed to give an idea on the me-
chanical section.
36
Chapter 6
Overall View and Setup of the Project
6.1 Introduction
The following steps shows the building stages of a low cost mini cnc plotter. For X and Y axis,
the stepper motors from CD drive is used. Servo motor is used for z axis.Inkscape,Processing
and Arduino IDE gives the command from the computer as gcode to the arduino board to get
the plotted output
Main Block Diagram
Figure 6.1: Main Block Diagram
37
6.2 Steps Involved in the Project
Step 1-Industrial Design
1. First step to start building this cnc machine is to disassemble two dvd/cd drives and take
off them the stepper motors. Use the screwdriver to open them and take off them the
rails.
2. The outer metallic cover of cd drive is welded perpendicularly to make the stand holding
the x and y axis.
3. Attach the cd drive stepper motor setup as x and y axis. And make sure that the Y axis
is straight to CNC base and the X axis vertically to it.
4. Z axis (pen setup) is attached to the x axis. The pen setup is made up of HDF, the servo
motor is attached to it and the pen is setup inside the fiber using screw and spring.
5. A metallic base is attached to the Y axis for using as paper base. Then a paper is put
above it with the help some magnets.The printing area is 4x4cm.
Step 2-Arduino and Stepper Motor Setup
1. The adafruit L293D motor driver sheild compactible with the Arduino board is mounted
on it.
2. The Arduino is connected the computer port.
3. Check the stepper motors and the servo motor.
4. The stepper motors and the servo motor are connected to the motor shield.
5. The external power is connected. (Trainer Kit 12v,3A)
Step 3-Burning of Program and Gcode take in
1. The mini cnc plotting sketch is burned to the Arduino microprocessor (ATmega 328) by
using Arduino IDE.
2. Gcode is made by Inkscape program.
3. Then use the gctrl.pde processing program. This program sends ’gcode’ images to the cnc
plotter.
4. Plotting of the image is done.
38
6.3 Result
Integrating the software along with the hardware and mechanical systems makes up an effective
2D plotter.
Figure 6.2: Plotted Output Image
6.4 Conclusion
In this chapter the steps involved in setting-up the plotter and final result are discussed.
39
Chapter 7
Applications
The main applications of CNC machines comes in industrial field.Some of them are discussed
below:
• Metal Removal Applications – CNC machines are extensively used in industries where
metal removal is required. The machines remove excess metal from raw materials to create
complex parts. A good example of this would be the automotive industries where gears,
shafts and other complex parts are carved from the raw material. CNC machines are also
used in the manufacturing industries for producing rectangular, square, rounded and even
threaded jobs. All processes, such as milling, grinding, turning, boring, reaming, etc, can
be controlled and carried out by these CNC machines using specific machine tools for each
task.
• Metal Fabrication Industry – Many industries require thin plates for different pur-
poses. These industries use CNC machines for a number of machining operations such
as plasma or flame cutting, laser cutting, shearing, forming and welding to create these
plates. CNC plasma or laser cutters are used for shaping metal, while CNC turret presses
are used for operations like punching holes. Other operations like bending metal plates
can also be carried out with very high precision using CNC press brakes.
• Electrical Discharge Machining Applications – Electrical Discharge Machines, or
EDMs as they are also known, remove metal from the raw material by producing sparks
that burn away the excess metal. EDM machining through CNC automation is carried
out in two different ways; first through Wire EDM and second through Vertical EDM.
CNC automated Wire EDM is used to punch and then die combinations for creating die
sets used in the fabrication industry. CNC automated Vertical EDM requires an electrode
in the same size and shape as the cavity that needs to be carved out.
40
Chapter 8
Conclusion and Future Aspects
In modern CNC systems, end-to-end component design is highly automated using computer-
aided design (CAD) and computer-aided manufacturing (CAM) programs. The programs
produce a computer file that is interpreted to extract the commands needed to operate a
particular machine by use of a post processor, and then loaded into the CNCmachines for
production. Since any particular component might require the use of a number of different
tools – drills, saws, etc., modern machines often combine multiple tools into a single ”cell”.
In other installations, a number of different machines are used with an external controller and
human or robotic operators that move the component from machine to machine. In either
case, the series of steps needed to produce any part is highly automated and produces a part
that closely matches the original CAD design.
PCB Mill (Future)
A PCB Mill is a device that etches out a pattern on a copper clad board such that it makes a
Printed Circuit Board (PCB). PCBs are used everywhere in the field of electrical engineering
to connect electrical components to one another. Typically, after a board is designed, the
layout files are sent to a manufacturer who then makes the board and ships it back to the
customer. When prototyping, the delay and setup costs associated with sending a layout to a
manufacturer can often mean days of down time. While this may not seem costly at first, it can
prove to be a significant nuisance since most boards contain a wiring bug that was overlooked
or misunderstood and must then be remade.
41
Bibliography
1. Venkatram Ramachandran, Evaluation of Performance Criteria of CNC
Machine Tool Drive System, IEEE Transactions on Industrial Electron-
ics, Vol. 45, No. 3, June 1998, pp. 462-468.
2. Jae Wook Jeon and Young Youl Ha, A Generalized Approach for the
Acceleration and Deceleration of Industrial Robots and CNC Machine
Tools, IEEE Transactions on Industrial Electronics, Vol. 47, No. 1,
February 2000, pp. 133-139.
3. Allen G. Morinec, Power Quality Considerations for CNC Machines:
Grounding, IEEE Transactions on Industrial Electronics, Vol. 38, No. 1,
January/February 2002, pp. 3-11.
4. Dr M Shivakumar, Stafford Michahail, Ankitha Tantry H, Bhawana C K,
Kavana H and Kavya V Rao, Robotic 2D Plotter, International Journal
of Engineering and Innovative Technology (IJEIT), Volume 3, Issue 10,
April 2014, pp.300-303.
5. Venkata Krishna Pabolu et al., Design and Implementation of a Three
Dimensional CNC Machine (IJCSE) International Journal on Computer
Science and Engineering Vol. 02, No. 08, 2010, pp. 2567-2570.
6. Mrs. R. Dayana, Gunaseelan P, Microcontroller Based X-Y Plotter, In-
ternational Journal of Advanced Research in Electrical, Electronics and
Instrumentation Engineering, Vol. 3, Special Issue 3, April 2014.
7. Ahn Luong, Willis Lutz, Jared Springle, Ashton Snelgrove, Computer
numerical control 3 axis plotter, University of Utah, Computer Engi-
neering.
8. Hassam Salamah, Ja’far Yasin, PCB CNC Machine, An-Najah national
University, Computer Engineering.
9. W Durfee, Arduino Microcontroller Guide, University of Minnesota.
10. Steve Krar, Arthur Gill, Computer Numerical Control Programming
Basics.
11. Instuctables.com
12. Wikipedia.com
42
[12pt,a4paper]report [top=0.80in, bottom=0.80in, left=0.8in,right=0.80in]geometry [utf8]inputenc
graphicx ragged2e
43
Appendices
44
.1 Programs
Program in Arduino UNO Board
#include <Servo.h>
#include <AFMotor.h>
#define LINE_BUFFER_LENGTH 512
// Servo position for Up and Down
const int penZUp = 130;
const int penZDown = 87;
// Servo on PWM pin 6
const int penServoPin = 9;
// Should be right for DVD steppers
const int stepsPerRevolution = 20;
// create servo object to control a servo
Servo penServo;
// Initialize steppers for X- and Y-axis using this Arduino pins for the L293D H-bridge
AF_Stepper myStepperY(stepsPerRevolution,1);
AF_Stepper myStepperX(stepsPerRevolution,2);
/* Structures, global variables */
struct point {
float x;
float y;
float z;
};
// Current position of plothead
struct point actuatorPos;
// Drawing settings, should be OK
float StepInc = 1;
int StepDelay = 0;
int LineDelay =40;
int penDelay = 150;
45
// Motor steps to go 1 millimeter.
// Use test sketch to go 100 steps. Measure the length of line.
// Calculate steps per mm. Enter here.
float StepsPerMillimeterX = 100.0;
float StepsPerMillimeterY = 100.0;
// Drawing robot limits, in mm
// OK to start with. Could go up to 50 mm if calibrated well.
float Xmin = 0;
float Xmax = 40;
float Ymin = 0;
float Ymax = 40;
float Zmin = 0;
float Zmax = 1;
float Xpos = Xmin;
float Ypos = Ymin;
float Zpos = Zmax;
void setup() {
// Setup
Serial.begin( 9600 );
penServo.attach(penServoPin);
penServo.write(penZUp);
delay(200);
// Decrease if necessary
myStepperX.setSpeed(600);
myStepperY.setSpeed(600);
// Notifications!!!
Serial.println("Mini CNC Plotter alive and kicking!");
Serial.print("X range is from ");
Serial.print(Xmin);
Serial.print(" to ");
Serial.print(Xmax);
Serial.println(" mm.");
Serial.print("Y range is from ");
Serial.print(Ymin);
Serial.print(" to ");
46
Serial.print(Ymax);
Serial.println(" mm.");
}
/**********************
* void loop() - Main loop
***********************/
void loop()
{
delay(200);
char line[ LINE_BUFFER_LENGTH ];
char c;
int lineIndex;
bool lineIsComment, lineSemiColon;
lineIndex = 0;
lineSemiColon = false;
lineIsComment = false;
while (1) {
// Serial reception - Mostly from Grbl, added semicolon support
while ( Serial.available()>0 ) {
c = Serial.read();
if (( c == ’n’) || (c == ’r’) ) { // End of line reached
if ( lineIndex > 0 ) { // Line is complete. Then execute!
line[ lineIndex ] = ’0’; // Terminate string
if (verbose) {
Serial.print( "Received : ");
Serial.println( line );
}
processIncomingLine( line, lineIndex );
lineIndex = 0;
}
else {
// Empty or comment line. Skip block.
}
lineIsComment = false;
lineSemiColon = false;
Serial.println("ok");
}
47
else {
if ( (lineIsComment) || (lineSemiColon) ) { // Throw away all comment characters
if ( c == ’)’ ) lineIsComment = false; // End of comment. Resume line.
}
else {
if ( c <= ’ ’ ) { // Throw away whitepace and control character
}
else if ( c == ’/’ ) { // Block delete not supported. Ignore charact
}
else if ( c == ’(’ ) { // Enable comments flag and ignore all charac
lineIsComment = true;
}
else if ( c == ’;’ ) {
lineSemiColon = true;
}
else if ( lineIndex >= LINE_BUFFER_LENGTH-1 ) {
Serial.println( "ERROR - lineBuffer overflow" );
lineIsComment = false;
lineSemiColon = false;
}
else if ( c >= ’a’ && c <= ’z’ ) { // Upcase lowercase
line[ lineIndex++ ] = c-’a’+’A’;
}
else {
line[ lineIndex++ ] = c;
}
}
}
}
}
}
void processIncomingLine( char* line, int charNB ) {
int currentIndex = 0;
char buffer[ 64 ]; // Hope that 64 is enough for 1 parameter
struct point newPos;
newPos.x = 0.0;
newPos.y = 0.0;
while( currentIndex < charNB ) {
48
switch ( line[ currentIndex++ ] ) { // Select command, if any
case ’U’:
penUp();
break;
case ’D’:
penDown();
break;
case ’G’:
buffer[0] = line[ currentIndex++ ]; // /! Dirty - Only works with 2 digit com
// buffer[1] = line[ currentIndex++ ];
// buffer[2] = ’0’;
buffer[1] = ’0’;
switch ( atoi( buffer ) ){// Select G command
case 0: // G00 & G01 - Movement or fast movement. Same here
case 1:
// /! Dirty - Suppose that X is before Y
char* indexX = strchr( line+currentIndex, ’X’ );
char* indexY = strchr( line+currentIndex, ’Y’ );
if ( indexY <= 0 ) {
newPos.x = atof( indexX + 1);
newPos.y = actuatorPos.y;
}
else if ( indexX <= 0 ) {
newPos.y = atof( indexY + 1);
newPos.x = actuatorPos.x;
}
else {
newPos.y = atof( indexY + 1);
indexY = ’0’;
newPos.x = atof( indexX + 1);
}
drawLine(newPos.x, newPos.y );
// Serial.println("ok");
actuatorPos.x = newPos.x;
actuatorPos.y = newPos.y;
break;
}
break;
49
case ’M’:
buffer[0] = line[ currentIndex++ ];// /! Dirty - Only works with 3 digit commands
buffer[1] = line[ currentIndex++ ];
buffer[2] = line[ currentIndex++ ];
buffer[3] = ’0’;
switch ( atoi( buffer ) ){
case 300:
{
char* indexS = strchr( line+currentIndex, ’S’ );
float Spos = atof( indexS + 1);
// Serial.println("ok");
if (Spos == 30) {
penDown();
}
if (Spos == 50) {
penUp();
}
break;
}
case 114: // M114 - Repport position
Serial.print( "Absolute position : X = " );
Serial.print( actuatorPos.x );
Serial.print( " - Y = " );
Serial.println( actuatorPos.y );
break;
default:
Serial.print( "Command not recognized : M");
Serial.println( buffer );
}
}
}
}
/*********************************
* Draw a line from (x0;y0) to (x1;y1).
* int (x1;y1) : Starting coordinates
* int (x2;y2) : Ending coordinates
**********************************/
void drawLine(float x1, float y1) {
50
if (verbose)
{
Serial.print("fx1, fy1: ");
Serial.print(x1);
Serial.print(",");
Serial.print(y1);
Serial.println("");
}
// Bring instructions within limits
if (x1 >= Xmax) {
x1 = Xmax;
}
if (x1 <= Xmin) {
x1 = Xmin;
}
if (y1 >= Ymax) {
y1 = Ymax;
}
if (y1 <= Ymin) {
y1 = Ymin;
}
if (verbose)
{
Serial.print("Xpos, Ypos: ");
Serial.print(Xpos);
Serial.print(",");
Serial.print(Ypos);
Serial.println("");
}
if (verbose)
{
Serial.print("x1, y1: ");
Serial.print(x1);
Serial.print(",");
Serial.print(y1);
Serial.println("");
51
}
// Convert coordinates to steps
x1 = (int)(x1*StepsPerMillimeterX);
y1 = (int)(y1*StepsPerMillimeterY);
float x0 = Xpos;
float y0 = Ypos;
// Let’s find out the change for the coordinates
long dx = abs(x1-x0);
long dy = abs(y1-y0);
int sx = x0<x1 ? StepInc : -StepInc;
int sy = y0<y1 ? StepInc : -StepInc;
long i;
long over = 0;
if (dx > dy) {
for (i=0; i<dx; ++i) {
myStepperX.onestep(sx,MICROSTEP);
over+=dy;
if (over>=dx) {
over-=dx;
myStepperY.onestep(sy,MICROSTEP);
}
delay(StepDelay);
}
}
else {
for (i=0; i<dy; ++i) {
myStepperY.onestep(sy,MICROSTEP);
over+=dx;
if (over>=dy) {
over-=dy;
myStepperX.onestep(sx,MICROSTEP);
}
delay(StepDelay);
}
}
if (verbose)
{
Serial.print("dx, dy:");
52
Serial.print(dx);
Serial.print(",");
Serial.print(dy);
Serial.println("");
}
if (verbose)
{
Serial.print("Going to (");
Serial.print(x0);
Serial.print(",");
Serial.print(y0);
Serial.println(")");
}
// Delay before any next lines are submitted
delay(LineDelay);
// Update the positions
Xpos = x1;
Ypos = y1;
}
// Raises pen
void penUp() {
penServo.write(penZUp);
delay(penDelay);
Zpos=Zmax;
digitalWrite(15, LOW);
digitalWrite(16, HIGH);
if (verbose) {
Serial.println("Pen up!");
}
}
// Lowers pen
void penDown() {
penServo.write(penZDown);
delay(penDelay);
Zpos=Zmin;
53
digitalWrite(15, HIGH);
digitalWrite(16, LOW);
if (verbose) {
Serial.println("Pen down.");
}
}
*//Program used in Processing for loading Gcode//*
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;
import processing.serial.*;
Serial port = null;
// select and modify the appropriate line for your operating system
// leave as null to use interactive port (press ’p’ in the program)
String portname = null;
//String portname = Serial.list()[0]; // Mac OS X
//String portname = "/dev/ttyUSB0"; // Linux
//String portname = "COM6"; // Windows
boolean streaming = false;
float speed = 0.001;
String[] gcode;
int i = 0;
void openSerialPort()
{
if (portname == null) return;
if (port != null) port.stop();
port = new Serial(this, portname, 9600);
port.bufferUntil(’n’);
}
void selectSerialPort()
{
54
String result = (String) JOptionPane.showInputDialog(this,
"Select the serial port that corresponds to your Arduino board.",
"Select serial port",
JOptionPane.PLAIN_MESSAGE,
null,
Serial.list(),
0);
if (result != null) {
portname = result;
openSerialPort();
}
}
void setup()
{
size(500, 250);
openSerialPort();
}
void draw()
{
background(0);
fill(255);
int y = 24, dy = 12;
text("INSTRUCTIONS", 12, y); y += dy;
text("p: select serial port", 12, y); y += dy;
text("1: set speed to 0.001 inches (1 mil) per jog", 12, y); y += dy;
text("2: set speed to 0.010 inches (10 mil) per jog", 12, y); y += dy;
text("3: set speed to 0.100 inches (100 mil) per jog", 12, y); y += dy;
text("arrow keys: jog in x-y plane", 12, y); y += dy;
text("page up & page down: jog in z axis", 12, y); y += dy;
text("$: display grbl settings", 12, y); y+= dy;
text("h: go home", 12, y); y += dy;
text("0: zero machine (set home to the current location)", 12, y); y += dy;
text("g: stream a g-code file", 12, y); y += dy;
text("x: stop streaming g-code (this is NOT immediate)", 12, y); y += dy;
y = height - dy;
text("current jog speed: " + speed + " inches per step", 12, y); y -= dy;
55
text("current serial port: " + portname, 12, y); y -= dy;
}
void keyPressed()
{
if (key == ’1’) speed = 0.001;
if (key == ’2’) speed = 0.01;
if (key == ’3’) speed = 0.1;
if (!streaming) {
if (keyCode == LEFT) port.write("G91nG20nG00 X-" + speed + " Y0.000 Z0.000n");
if (keyCode == RIGHT) port.write("G91nG20nG00 X" + speed + " Y0.000 Z0.000n");
if (keyCode == UP) port.write("G91nG20nG00 X0.000 Y" + speed + " Z0.000n");
if (keyCode == DOWN) port.write("G91nG20nG00 X0.000 Y-" + speed + " Z0.000n");
if (keyCode == KeyEvent.VK_PAGE_UP) port.write("G91nG20nG00 X0.000 Y0.000 Z" + spe
if (keyCode == KeyEvent.VK_PAGE_DOWN) port.write("G91nG20nG00 X0.000 Y0.000 Z-" +
if (key == ’h’) port.write("G90nG20nG00 X0.000 Y0.000 Z0.000n");
if (key == ’v’) port.write("$0=75n$1=74n$2=75n");
//if (key == ’v’) port.write("$0=100n$1=74n$2=75n");
if (key == ’s’) port.write("$3=10n");
if (key == ’e’) port.write("$16=1n");
if (key == ’d’) port.write("$16=0n");
if (key == ’0’) openSerialPort();
if (key == ’p’) selectSerialPort();
if (key == ’$’) port.write("$$n");
}
if (!streaming && key == ’g’) {
gcode = null; i = 0;
File file = null;
println("Loading file...");
selectInput("Select a file to process:", "fileSelected", file);
}
if (key == ’x’) streaming = false;
}
void fileSelected(File selection) {
if (selection == null) {
56
println("Window was closed or the user hit cancel.");
} else {
println("User selected " + selection.getAbsolutePath());
gcode = loadStrings(selection.getAbsolutePath());
if (gcode == null) return;
streaming = true;
stream();
}
}
void stream()
{
if (!streaming) return;
while (true) {
if (i == gcode.length) {
streaming = false;
return;
}
if (gcode[i].trim().length() == 0) i++;
else break;
}
println(gcode[i]);
port.write(gcode[i] + ’n’);
i++;
}
void serialEvent(Serial p)
{
String s = p.readStringUntil(’n’);
println(s.trim());
if (s.trim().startsWith("ok")) stream();
if (s.trim().startsWith("error")) stream(); // XXX: really?
}
57
.2 Arduino UNO Board
.3 L293D Specifications (Motor Driver IC)
The Device is a monolithic integrated high voltage, high current four channel driver designed to
accept standard DTL or TTL logic levels and drive inductive loads (such as relays solenoides,
DC and stepping motors) and switching power transistors. To simplify use as two bridges each
pair of channels is equipped with an enable input. A separate supply input is provided for
the logic, allowing operation at a lower voltage and internal clamp diodes are included. This
device is suitable for use in switching applications at frequencies up to 5 kHz. The L293D is
assembled in a 16 lead plastic packaage which has 4 center pins connected together and used
for heatsinking The L293DD is assembled in a 20 lead surface mount which has 8 center pins
58
connected together and used for heatsinking.
Figure .31: Pin Out
Figure .32: Maximum Ratings
59
Figure .33: Electrical Ratings
60

More Related Content

What's hot

Study project on knuckle joint
Study project on knuckle jointStudy project on knuckle joint
Study project on knuckle joint
SRI HARSHA VARDHAN
 
Unit 5 -cellular manufacturing &amp; fms
Unit 5 -cellular manufacturing &amp; fmsUnit 5 -cellular manufacturing &amp; fms
Unit 5 -cellular manufacturing &amp; fms
ravis205084
 
Computer Integrated Manufacturing System
Computer Integrated Manufacturing SystemComputer Integrated Manufacturing System
Computer Integrated Manufacturing System
Saif Eye
 
Integrated development environment
Integrated development environmentIntegrated development environment
Integrated development environment
Makers of India
 
Design of X-Y-Z plotter
Design of X-Y-Z plotter Design of X-Y-Z plotter
Design of X-Y-Z plotter
Rajesh Netha
 
Final year project presentation
Final year project presentationFinal year project presentation
Final year project presentation
Banwari Lal
 
Cnc feed drives
Cnc feed drivesCnc feed drives
Cnc feed drives
Akhil Krishnan G
 
Apt programming
Apt programmingApt programming
Apt programming
Vemulapalli Das
 
ppt on PLC automation
ppt on PLC automationppt on PLC automation
ppt on PLC automation
Md Talib
 
text book Programmable-Logic-Controllers plc.pdf
text book Programmable-Logic-Controllers plc.pdftext book Programmable-Logic-Controllers plc.pdf
text book Programmable-Logic-Controllers plc.pdf
Mahamad Jawhar
 
Nc Machine
Nc MachineNc Machine
Nc Machine
Satyen Champaneria
 
Adaptive control System
Adaptive control SystemAdaptive control System
Adaptive control System
SUMIT ATTRI
 
Design of Mechatronics System
Design of Mechatronics SystemDesign of Mechatronics System
Design of Mechatronics System
Veerakumar S
 
Data Exchange
Data Exchange Data Exchange
Data Exchange
Hemant Wagh
 
CNC Plotter Machine
CNC Plotter Machine CNC Plotter Machine
CNC Plotter Machine
Vaibhav Malviya
 
Synthetic curve
Synthetic curveSynthetic curve
Synthetic curve
Dhruv Shah
 
Design and Optimization of Knuckle Joint Using Trusses
Design and Optimization of Knuckle Joint Using TrussesDesign and Optimization of Knuckle Joint Using Trusses
Design and Optimization of Knuckle Joint Using Trusses
Abdul Farhan
 
Plc project report
Plc project reportPlc project report
Plc project report
Umair Rashid
 
Haas lathe programming manual
Haas lathe programming manualHaas lathe programming manual
Haas lathe programming manual
Veer Singh
 

What's hot (20)

Study project on knuckle joint
Study project on knuckle jointStudy project on knuckle joint
Study project on knuckle joint
 
Unit 5 -cellular manufacturing &amp; fms
Unit 5 -cellular manufacturing &amp; fmsUnit 5 -cellular manufacturing &amp; fms
Unit 5 -cellular manufacturing &amp; fms
 
Computer Integrated Manufacturing System
Computer Integrated Manufacturing SystemComputer Integrated Manufacturing System
Computer Integrated Manufacturing System
 
Integrated development environment
Integrated development environmentIntegrated development environment
Integrated development environment
 
Design of X-Y-Z plotter
Design of X-Y-Z plotter Design of X-Y-Z plotter
Design of X-Y-Z plotter
 
Final year project presentation
Final year project presentationFinal year project presentation
Final year project presentation
 
Cnc feed drives
Cnc feed drivesCnc feed drives
Cnc feed drives
 
Apt programming
Apt programmingApt programming
Apt programming
 
ppt on PLC automation
ppt on PLC automationppt on PLC automation
ppt on PLC automation
 
text book Programmable-Logic-Controllers plc.pdf
text book Programmable-Logic-Controllers plc.pdftext book Programmable-Logic-Controllers plc.pdf
text book Programmable-Logic-Controllers plc.pdf
 
Nc Machine
Nc MachineNc Machine
Nc Machine
 
Adaptive control System
Adaptive control SystemAdaptive control System
Adaptive control System
 
Design of Mechatronics System
Design of Mechatronics SystemDesign of Mechatronics System
Design of Mechatronics System
 
Data Exchange
Data Exchange Data Exchange
Data Exchange
 
CNC Plotter Machine
CNC Plotter Machine CNC Plotter Machine
CNC Plotter Machine
 
Synthetic curve
Synthetic curveSynthetic curve
Synthetic curve
 
Design and Optimization of Knuckle Joint Using Trusses
Design and Optimization of Knuckle Joint Using TrussesDesign and Optimization of Knuckle Joint Using Trusses
Design and Optimization of Knuckle Joint Using Trusses
 
Plc project report
Plc project reportPlc project report
Plc project report
 
Manual nx4 v2
Manual nx4 v2Manual nx4 v2
Manual nx4 v2
 
Haas lathe programming manual
Haas lathe programming manualHaas lathe programming manual
Haas lathe programming manual
 

Viewers also liked

2D Plotter Presentation
2D Plotter Presentation2D Plotter Presentation
2D Plotter PresentationMahmoud Kandil
 
Mini CNC (Router Machine)
Mini CNC (Router Machine)Mini CNC (Router Machine)
Mini CNC (Router Machine)
Amir Dawa
 
CNC Machines
CNC MachinesCNC Machines
CNC Machines
pratik207
 
Introduction to cnc machines (1)
Introduction to cnc machines (1)Introduction to cnc machines (1)
Introduction to cnc machines (1)
someshking
 
Printer Plotter (special printers )
Printer Plotter (special printers )Printer Plotter (special printers )
Printer Plotter (special printers )
Venkat Karanam
 
Computer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOM
Computer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOMComputer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOM
Computer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOM
CSCJournals
 
Gesture control robot using by Ardiuno
Gesture control robot using by ArdiunoGesture control robot using by Ardiuno
Gesture control robot using by Ardiuno
Sudhir Kumar
 
Capstone phase 2 Online Overview: 3-Axis Motorized PIC Machine
Capstone phase 2 Online Overview: 3-Axis Motorized PIC MachineCapstone phase 2 Online Overview: 3-Axis Motorized PIC Machine
Capstone phase 2 Online Overview: 3-Axis Motorized PIC Machinebri_rep_45
 
Universal CNC Milling Machine
Universal CNC Milling MachineUniversal CNC Milling Machine
Universal CNC Milling Machine
RTK Industries
 
What is a cnc machine
What is a cnc machineWhat is a cnc machine
What is a cnc machine
M.Heydar Elahi
 
Operators and expressions
Operators and expressionsOperators and expressions
Operators and expressionsvishaljot_kaur
 
Free energy magnet motor
Free energy magnet motorFree energy magnet motor
Free energy magnet motor
Akash Patel
 
ppt on cnc
ppt on cncppt on cnc
ppt on cnc
Pankaj Dhut
 
CNC Milling
CNC MillingCNC Milling
CNC Milling
endika55
 
Annual Report (FY-2015-16) of Kuwer Industries Ltd.
Annual Report (FY-2015-16) of Kuwer Industries Ltd.Annual Report (FY-2015-16) of Kuwer Industries Ltd.
Annual Report (FY-2015-16) of Kuwer Industries Ltd.
IndiaMART InterMESH Limited
 
Project report-format by vishal
Project report-format by vishalProject report-format by vishal
Project report-format by vishalvishal18900
 

Viewers also liked (20)

2D Plotter Presentation
2D Plotter Presentation2D Plotter Presentation
2D Plotter Presentation
 
Mini CNC (Router Machine)
Mini CNC (Router Machine)Mini CNC (Router Machine)
Mini CNC (Router Machine)
 
CNC Machines
CNC MachinesCNC Machines
CNC Machines
 
Introduction to cnc machines (1)
Introduction to cnc machines (1)Introduction to cnc machines (1)
Introduction to cnc machines (1)
 
Printer Plotter (special printers )
Printer Plotter (special printers )Printer Plotter (special printers )
Printer Plotter (special printers )
 
CNC Seminar
CNC SeminarCNC Seminar
CNC Seminar
 
CNC MACHINE
CNC MACHINECNC MACHINE
CNC MACHINE
 
Computer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOM
Computer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOMComputer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOM
Computer Vision for Skin Cancer Diagnosis and Recognition using RBF and SOM
 
Gesture control robot using by Ardiuno
Gesture control robot using by ArdiunoGesture control robot using by Ardiuno
Gesture control robot using by Ardiuno
 
Capstone phase 2 Online Overview: 3-Axis Motorized PIC Machine
Capstone phase 2 Online Overview: 3-Axis Motorized PIC MachineCapstone phase 2 Online Overview: 3-Axis Motorized PIC Machine
Capstone phase 2 Online Overview: 3-Axis Motorized PIC Machine
 
Plotters
PlottersPlotters
Plotters
 
Universal CNC Milling Machine
Universal CNC Milling MachineUniversal CNC Milling Machine
Universal CNC Milling Machine
 
What is a cnc machine
What is a cnc machineWhat is a cnc machine
What is a cnc machine
 
Operators and expressions
Operators and expressionsOperators and expressions
Operators and expressions
 
Free energy magnet motor
Free energy magnet motorFree energy magnet motor
Free energy magnet motor
 
ppt on cnc
ppt on cncppt on cnc
ppt on cnc
 
CNC Milling
CNC MillingCNC Milling
CNC Milling
 
Annual Report (FY-2015-16) of Kuwer Industries Ltd.
Annual Report (FY-2015-16) of Kuwer Industries Ltd.Annual Report (FY-2015-16) of Kuwer Industries Ltd.
Annual Report (FY-2015-16) of Kuwer Industries Ltd.
 
Cnc Milling
Cnc MillingCnc Milling
Cnc Milling
 
Project report-format by vishal
Project report-format by vishalProject report-format by vishal
Project report-format by vishal
 

Similar to 2D ROBOTIC PLOTTER

USB OTG
USB OTGUSB OTG
USB OTG
daviessegera
 
Uni v e r si t ei t
Uni v e r si t ei tUni v e r si t ei t
Uni v e r si t ei tAnandhu Sp
 
BE Project Final Report on IVRS
BE Project Final Report on IVRSBE Project Final Report on IVRS
BE Project Final Report on IVRSAbhishek Nadkarni
 
test6
test6test6
Report on e-Notice App (An Android Application)
Report on e-Notice App (An Android Application)Report on e-Notice App (An Android Application)
Report on e-Notice App (An Android Application)Priyanka Kapoor
 
Win plc engine-en
Win plc engine-enWin plc engine-en
Win plc engine-en
dreamtech2
 
Distributed Mobile Graphics
Distributed Mobile GraphicsDistributed Mobile Graphics
Distributed Mobile Graphics
Jiri Danihelka
 
Towards Digital Twin of a Flexible manufacturing system with AGV
Towards Digital Twin of a Flexible manufacturing system with AGV Towards Digital Twin of a Flexible manufacturing system with AGV
Towards Digital Twin of a Flexible manufacturing system with AGV
YasmineBelHajsalah
 
AAPM-2005-TG18.pdf
AAPM-2005-TG18.pdfAAPM-2005-TG18.pdf
AAPM-2005-TG18.pdf
EmadaddiAlazzani
 
Team Omni L2 Requirements Revised
Team Omni L2 Requirements RevisedTeam Omni L2 Requirements Revised
Team Omni L2 Requirements RevisedAndrew Daws
 
nasa-safer-using-b-method
nasa-safer-using-b-methodnasa-safer-using-b-method
nasa-safer-using-b-methodSylvain Verly
 
ImplementationOFDMFPGA
ImplementationOFDMFPGAImplementationOFDMFPGA
ImplementationOFDMFPGANikita Pinto
 
Ee380 labmanual
Ee380 labmanualEe380 labmanual
Ee380 labmanual
gopinathbl71
 
Discovering st32
Discovering st32Discovering st32
Discovering st32
pesccia
 
Plc report
Plc report Plc report
Plc report
Priya Hada
 

Similar to 2D ROBOTIC PLOTTER (20)

USB OTG
USB OTGUSB OTG
USB OTG
 
Uni v e r si t ei t
Uni v e r si t ei tUni v e r si t ei t
Uni v e r si t ei t
 
BE Project Final Report on IVRS
BE Project Final Report on IVRSBE Project Final Report on IVRS
BE Project Final Report on IVRS
 
thesis
thesisthesis
thesis
 
test6
test6test6
test6
 
Report on e-Notice App (An Android Application)
Report on e-Notice App (An Android Application)Report on e-Notice App (An Android Application)
Report on e-Notice App (An Android Application)
 
Win plc engine-en
Win plc engine-enWin plc engine-en
Win plc engine-en
 
Distributed Mobile Graphics
Distributed Mobile GraphicsDistributed Mobile Graphics
Distributed Mobile Graphics
 
Towards Digital Twin of a Flexible manufacturing system with AGV
Towards Digital Twin of a Flexible manufacturing system with AGV Towards Digital Twin of a Flexible manufacturing system with AGV
Towards Digital Twin of a Flexible manufacturing system with AGV
 
AAPM-2005-TG18.pdf
AAPM-2005-TG18.pdfAAPM-2005-TG18.pdf
AAPM-2005-TG18.pdf
 
Team Omni L2 Requirements Revised
Team Omni L2 Requirements RevisedTeam Omni L2 Requirements Revised
Team Omni L2 Requirements Revised
 
jc_thesis_final
jc_thesis_finaljc_thesis_final
jc_thesis_final
 
nasa-safer-using-b-method
nasa-safer-using-b-methodnasa-safer-using-b-method
nasa-safer-using-b-method
 
ImplementationOFDMFPGA
ImplementationOFDMFPGAImplementationOFDMFPGA
ImplementationOFDMFPGA
 
Ee380 labmanual
Ee380 labmanualEe380 labmanual
Ee380 labmanual
 
wronski_ugthesis[1]
wronski_ugthesis[1]wronski_ugthesis[1]
wronski_ugthesis[1]
 
Discovering st32
Discovering st32Discovering st32
Discovering st32
 
Thesis_Report
Thesis_ReportThesis_Report
Thesis_Report
 
Report-V1.5_with_comments
Report-V1.5_with_commentsReport-V1.5_with_comments
Report-V1.5_with_comments
 
Plc report
Plc report Plc report
Plc report
 

Recently uploaded

在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
seandesed
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
VENKATESHvenky89705
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
Pipe Restoration Solutions
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
Kamal Acharya
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
Intella Parts
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
gdsczhcet
 
Vaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdfVaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdf
Kamal Acharya
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
SamSarthak3
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
Pratik Pawar
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
Courier management system project report.pdf
Courier management system project report.pdfCourier management system project report.pdf
Courier management system project report.pdf
Kamal Acharya
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
TeeVichai
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
Kamal Acharya
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 

Recently uploaded (20)

在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
 
Vaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdfVaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdf
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
Courier management system project report.pdf
Courier management system project report.pdfCourier management system project report.pdf
Courier management system project report.pdf
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 

2D ROBOTIC PLOTTER

  • 1. GOVERNMENT ENGINEERING COLLEGE IDUKKI PAINAVU 685 603 2D ROBOTIC PLOTTER (CNC MODEL) MAIN PROJECT REPORT Submitted By ALEENA BOBAN (12004725) ANANDKRISHNAN V S (12004728) SABANA UNNIKRISHNAN (12004768) SHIBIL P B (12004772) In partial fulfilment of BACHELOR OF TECHNOLOGY ELECTRONICS AND COMMUNICATION ENGINEERING MAHATMA GANDHI UNIVERSITY MAY 2016
  • 2. GOVERNMENT ENGINEERING COLLEGE IDUKKI PAINAVU 685 603 DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING BONAFIDE CERTIFICATE This is to certify that the project report entitled 2D ROBOTIC PLOTTER (CNC MODEL) is a bonafide record of the paper presented by ALEENA BOBAN (Reg.no:12004725), ANANDKRISHNAN V S (Reg. no:12004728),SABANA UNNIKRISHNAN (Reg .no:12004768), SHIBIL P B (Reg.no:12004772) during their final semester in partial fulfillment of the requirement for the award of B-Tech Degree in Electronics & Communi- cation Engineering of Mahatma Gandhi University, Kottayam, Kerala. PROJECT GUIDE PROJECT COORDINATOR Linu Shine Dr.S Santhosh Kumar Asst.Prof ECE Asso.Prof ECE HEAD OF THE DEPARTMENT
  • 3. DECLARATION I hereby declare that the project titled 2D ROBOTIC PLOTTER (CNC MODEL) being submitted in partial fulfillment for the award of B.Tech degree is the original work carried out by me. It has not formed the part of any other thesis submitted for award of any degree or diploma, either in this or any other University. (Signature of the Candidate) NAME: Register No: 3
  • 4. ACKNOWLEDGEMNT We give all honor and praise to the LORD who gave us wisdom and enabled us to complete this project successfully. We express our heartfelt thanks to Dr. Asok Kumar N, Government Engineering College, Idukki for granting us permission to do the project. We express our sincere thanks to our head of the department Prof.Jalaja M J and project guide Ms Linu Shine and project coordinator Dr.S Santhosh Kumar for their valuable advice and guidance. We also express our gratitude and thanks to all our teachers and other faculty members of the department of Electronics and Communication, Government Engineering College, Idukki for their sincere and friendly cooperation in completing this project. We are extremely grateful to our parents for their silent prayer. 4
  • 5. ABSTRACT 2D Robotic Plotter is an embedded system that works based on the principle Computer Numerical Control.Robotic 2D Plotter basically works with two stepper motors and a servo motor, wherein the robot plots the input given from the computer on the drawing board using ATMEGA 328p microcontroller on a open-source physical computing platform Arduino. The Robotic 2D plotter has a two axis control and a special mechanism to raise and lower the pen. Each axis is powered and driven by using an Arduino compactable driver L293D. Pen control is achieved using a servo.The X and Y axis mainly consists of step- per motors taken from CD-drives.The software used for programming the Arduino board are namely Inkscape(0.48.5),Processing (3.0.2),CAMOTICS,Arduino IDE.The correct and efficient arrangement and proper use of the programs along with the circuit makes up an efficient 2D Robotic Plotter (CNC). 5
  • 6. Contents 1 Introduction 9 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Computer Numerical Control (CNC) . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 2D Robotic Plotter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4 Aim of the Thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5 Literature Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7 Organisation of the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 Project Description 15 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4 Industrial Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 Software 17 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 Inkscape (0.48.5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.1 Scalar Vector Graphics(SVG) . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.2 Inkscape Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.3 Inkscape Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.4 Generating gcode files using inkscape . . . . . . . . . . . . . . . . . . . . 21 3.3 CAMotics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4 Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5 Processing 3.0.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.1 Sketching with Processing . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6
  • 7. 4 Hardware 27 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3 Adafruit L293D Motor Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.4 Servo Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.4.1 Working principle of Servo Motors. . . . . . . . . . . . . . . . . . . . . . 30 4.4.2 Controlling Servo Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.5 Stepper Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5 Industrial Design 34 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2 X-Y Direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.3 Stand holding the whole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.4 Pen Setup (Z-axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.5 Final Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6 Overall View and Setup of the Project 37 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2 Steps Involved in the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.3 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 7 Applications 40 8 Conclusion and Future Aspects 41 Appendices 44 .1 Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 .2 Arduino UNO Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 .3 L293D Specifications (Motor Driver IC) . . . . . . . . . . . . . . . . . . . . . . . 58 7
  • 8. List of Figures 1.1 Intersecting lines form right angles and establish the zero point (Allen-Bradley) 10 1.2 The three-dimensional coordinate planes (axes) used in CNC. (The Superior Electric Company) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3 The quadrants formed when the X and Y axes cross are used to accurately located 11 3.1 Inkscape Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Processing Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.1 Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2 Adafruit L293D Motor Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.3 Servo Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.4 Controlling of Servo Motor (PWM) . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.5 Stepper Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.1 Lens Frame in CD Drive (Containing Stepper Motor) . . . . . . . . . . . . . . . 35 5.2 CD Drive Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.3 Pensetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.4 View 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.5 View 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.1 Main Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2 Plotted Output Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 .31 Pin Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 .32 Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 .33 Electrical Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8
  • 9. Chapter 1 Introduction 1.1 Introduction CNC stands for Computer Numeric Control and typically refers to a machine whose operation is controlled by a computer. The most common usage of CNC, and the one relevant to us, is the name given to devices that, under computer control are able to cut, etch, mill, engrave, build, turn and otherwise perform manufacturing operations on various materials. Typically, a CNC machine has the ability to move a cutting or 3D printing head in 2 to 6 axes, meaning that it can position that tool head at a precise point in or on the material to create the cut or operation desired at that point. By moving the head through multiple points, the cutting head can cut or sculpt the design represented by a data stream of positioning points being sent by the PC. By controlling a CNC machine through a PC it is possible for the user to design a product on-screen, convert it to CNC-readable code and then send that data to the CNC machine for it to produce a physical copy of the item designed. 1.2 Computer Numerical Control (CNC) The term numerical control is a widely accepted and commonly used term in the machine tool industry. Numerical control (NC) enables an operator to communicate with machine tools through a series of numbers and symbols. NC which quickly became Computer Numerical Control (CNC) has brought tremendous changes to the metalworking industry. New machine tools in CNC have enabled industry to consis- tently produce parts to accuracies undreamed of only a few years ago. The same part can be reproduced to the same degree of accuracy any number of times if the CNC program has been properly prepared and the computer properly programmed. The operating commands which control the machine tool are executed automatically with 9
  • 10. Figure 1.1: Intersecting lines form right an- gles and establish the zero point (Allen- Bradley) Figure 1.2: The three-dimensional coordi- nate planes (axes) used in CNC. (The Su- perior Electric Company) amazing speed, accuracy, efficiency, and repeatability. The ever-increasing use of CNC in in- dustry has created a need for personnel who are knowledgeable about and capable of preparing the programs which guide the machine tools to produce parts to the required shape and accu- racy. Cartesian Coordinate System Almost everything that can be produced on a conventional machine tool can be produced on a computer numerical control machine tool, with its many advantages. The machine tool movements used in producing a product are of two basic types: pointto- point (straight-line movements) and continuous path (contouring movements). The Cartesian, or rectangular, coordinate system was devised by the French mathematician and philosopher Rene’ Descartes. With this system, any specific point can be described in mathematical terms from any other point along three perpendicular axes. This concept fits machine tools perfectly since their construction is generally based on three axes of motion (X, Y, Z) plus an axis of rotation. On a plain vertical milling machine, the X axis is the horizontal movement (right or left) of the table, the Y axis is the table cross movement (toward or away from the column), and the Z axis is the vertical movement of the knee or the spindle. CNC systems rely heavily on the use of rectangular coordinates because the programmer can locate every point on a job precisely. The three-dimensional coordinate planes are shown in Fig. 1.2. The X and Y planes (axes) are horizontal and represent horizontal machine table motions. The Z plane or axis represents 10
  • 11. the vertical tool motion. The plus (+) and minus (-) signs indicate the direction from the zero point (origin) along the axis of movement. The four quadrants formed when the XY axes cross are numbered in a counterclockwise direction (Fig. 1.3). All positions located in quadrant 1 would be positive (X+) and positive (Y+). In the second quadrant, all positions would be negative X (X-) and positive (Y+). In the third quadrant, all locations would be negative X (X-) and negative (Y-). In the fourth quadrant, all locations would be positive X (X+) and negative Y (Y-). In Fig. 1.3 , point A would be 2 units to the right of the Y axis and 2 units Figure 1.3: The quadrants formed when the X and Y axes cross are used to accurately located above the X axis. Assume that each unit equals 1.000. The location of point A would be X + 2.000 and Y + 2.000. For point B, the location would be X + 1.000 and Y - 2.000. In CNC programming it is not necessary to indicate plus (+) values since these are assumed. However, the minus (-) values must be indicated. For example, the locations of both A and B would be indicated as follows: A X2.000 Y2.000 B X1.000 Y-2.000 11
  • 12. 1.3 2D Robotic Plotter Robotics is the branch of technology that deals with the design, construction, operation, and application of robots, as well as computer systems for their control, sensory feedback, and information processing. The design of a given robotic system will often incorporate principles of mechanical engineering, electronic engineering and computer science (particularly artificial intelligence).The term ’robotics’ was coined by Isaac Asimov in his science fiction short story called ’Liar’. Robot is an electro-mechanical machine which is guided by a electronic circuitry or computer program to perform various tasks. A robotic arm is a robotic manipulator, usually programmable, with functions similar to that of human arm. Robotic 2D Plotter is a plotter that offers the fastest way to efficiently produce very large drawings. Pen plotters will be able to print by moving a pen or other writing device across the surface of a piece of paper. This means that plotters are vector graphics devices, rather than raster graphics. Pen plotters can draw complex line art, including text, but do so slowly because of the mechanical movement of the writing device such as pen. 1.4 Aim of the Thesis Aim of the thesis is to set up a 2D Robotic Plotter for the following constraints: • A general idea of CNC Models. • Generating GCODE. Integrating the diffrent softwares along with the hardware setup. 1.5 Literature Review 1. Jae Wook Jeon and Young Youl Ha, A Generalized Approach for the Acceleration and Deceleration of Industrial Robots and CNC Machine Tools, IEEE Transactions on Indus- trial Electronics, Vol. 47, No. 1, February 2000, pp. 133-139 Many techniques for the acceleration and deceleration of industrial robots and computer numerical control (CNC) machine tools have been proposed in order to make industrial robots and CNC machine tools perform given tasks efficiently. Although the techniques selecting polynomial functions can generate various acceleration and deceleration charac- teristics, the major problem is the computational load. The digital convolution techniques are more efficient than the techniques selecting polynomial functions. However, neither velocity profiles of which the deceleration characteristics is independent from the accel- eration characteristics nor those of which the acceleration interval is different from the deceleration interval can be generated by the digital convolution techniques. This paper proposes a generalized approach for generating velocity profiles that cannot be gener- ated by the digital convolution techniques. According to the desired characteristics of 12
  • 13. acceleration and deceleration, each set of coefficients is calculated and is stored. Given a moving distance, and acceleration and deceleration intervals, a velocity profile having the desired characteristics of acceleration and deceleration can be efficiently generated by using these coefficients. Several velocity profiles generated by the proposed technique will be applied to one single-axis control system. 2. Allen G. Morinec, Power Quality Considerations for CNC Machines: Grounding, IEEE Transactions on Industrial Electronics, Vol. 38, No. 1, January/February 2002, pp. 3-11. Computer numerical control (CNC) machines are used to shape metal parts by milling, boring, cutting, drilling, and grinding. A CNC machine generally consists of a computer- controlled servo-amplifier, servo-motors, spindle motor, and various tooling. The machine can be programmed to shape a part by use of a front control panel. More sophisticated models allow a computer-aided design drawing to be uploaded to the machine. The electronic components within a CNC machine are particularly sensitive to the ground- ing techniques used in the electrical supply to the machine. Malfunction, degradation, and damage to the electronics can often be traced to supplemental ground rods and lightning strikes to earth. Production downtime, product loss, and expensive repair bills result.With the wide-spread use of CNC machines across the world, these problems have become a significant financial concern to many CNC machine users and their electric utility companies. This paper begins with a brief explanation of the fundamentals of service and equipment grounding. The basic design of CNC machines is also explained. Based on a survey of several CNC machine representatives, the paper will explore the common grounding techniques recommended by many CNC machine tool builders with particular emphasis on the ground-rod problem. In addition, several actual case studies that support the ground-rod problem will be described. Finally, a recommended power- ing and grounding practice is presented to help eliminate power quality related operating problems with CNC machines while maintaining the safety requirements of electrical codes. 3. .Venkatram Ramachandran, Evaluation of Performance Criteria of CNC Machine Tool Drive System, IEEE Transactions on Industrial Electronics, Vol. 45, No. 3, June 1998, pp. 462-468. The stability, steady-state error analysis, damping factor, and setting time of discrete data drives for computer numerical control (CNC) machine tools are analyzed to obtain the necessary information for the design of a practical system. The stability of the drive is reviewed using Jury’s test and the Mitrovic criterion. The variation of damping factor and settling time with respect to system parameters are presented based on the Mitrovic criterion. 13
  • 14. 1.6 Motivation Computer Numeric Control (CNC) refers to a wide variety of machines which are controlled electronically and have many uses, including milling, drawing, extruding, cutting, and lathing. CNC machines are really expensive. They are widely used in the fabrication of both electronic and mechanical parts of large machines .So our group has decided to do a model to know about theoretical and practical knowledge about this concept [2D Robotic Plotter]. 1.7 Organisation of the Project The report is organised as follows: Abstract Table of Contents List of Figures Chapter 1 : Introduction Chapter 2 : Project Description Chapter 3 : Software Description Chapter 4 : Hardware Description Chapter 5 : Mechanical Setup Chapter 6 : Conclusion References Appendix 1.8 Conclusion In this chapter,brief introduction of the project,literature review, motivation and organization of the project has been prensented. 14
  • 15. Chapter 2 Project Description 2.1 Introduction The three main sections of Robotic 2D Plotter: • Hardware • Software • Industrial Design 2.2 Hardware Electronic hardware consists of interconnected electronic components which perform analog or logic operations on received and locally stored information to produce as output or store resulting new information or to provide control for output actuator mechanisms. Electronic hardware can range from individual chips/circuits to distributed information processing sys- tems. Well designed electronic hardware is composed of hierarchies of functional modules which inter-communicate via precisely defined interfaces The XY-plotter consists of two axes operating orthogonally to each other. Each axis includes a CD drive system that is driven by an appropriate means. Additionally, a third axis, with limited motion capability is used to actuate the write head. 2.3 Software Computer software, or simply software, is that part of a computer system that consists of encoded information or computer instructions, in contrast to the physical hardware from which the system is built.The softwares used in this project comes under open source.Open-source software (OSS) is computer software with its source code made available with a license in which the copyright holder provides the rights to study, change, and distribute the software to anyone 15
  • 16. and for any purpose. Open-source software may be developed in a collaborative public manner. Open-source software is the most prominent example of open-source development. 2.4 Industrial Design Industrial design is a process of design applied to products that are to be manufactured through techniques of mass production. Its key characteristic is that design is separated from manu- facture: the creative act of determining and defining a product’s form takes place in advance of the physical act of making a product, which consists purely of repeated, often automated, replication.The mechanical part is taken fully from CD-drive. 2.5 Conclusion In this chapter a brief idea of the main three sections,software,hardware and industrial design are discussed. 16
  • 17. Chapter 3 Software 3.1 Introduction Engineering as a discipline often requires more integration than large amounts of original devel- opment. In a typical project, writing new code presents significant challenges, and the number of features shared between projects means that it is possible to create shared components which implement common features. A library or an existing module allows the use of a well developed and tested component, which saves significant resources in the implementation of the project. The drawback of components is the need to integrate various potentially conflicting interfaces, and the need to understand a complex system in order to effectively use the component. Components can be purchased, or may be freely available, as in the case of Open Source soft- ware. Open Source also provides the opportunity to contribute new features and bug fixes back in to the community. The programs and tools we chose for this project are all open source, and use international standards, which allowed to rapidly develop the features needed. The project software system consists of: 1. Inkscape (Version 0.48.5). 2. CAMotics. 3. Arduino IDE. 4. Processing 3.0.2. 3.2 Inkscape (0.48.5) There are two basic types of graphic images: bitmap (or raster) images and vector images. In the first case, the image is defined in terms of rows and columns of individual pixels, each with its own color. In the second case, the image is defined in terms of lines, both straight and 17
  • 18. curved. A single straight line is described in terms of its two end points. The difference in these types of graphic images becomes readily apparent when a drawing is enlarged. The same line is shown on the left and right. On the left it is displayed as a bitmap image, while on the right it is displayed as a vector. In both cases, the line has been scaled up by a factor of four from its nominal size. When the bitmap resolution of a drawing matches the display resolution, the objects in the drawing look smooth. The same drawing, but defined as a bitmap image on the left and a vector image on the right. If the output device has the same resolution as the bitmap image, there is little difference between the appearance of the two images. If the bitmap resolution is significantly less than the display resolution, the display will show jagged lines. The head of the gentleman in the above drawings has been scaled up by a factor of five. Now one can see a difference in the quality of the bitmap drawing (left) and the vector drawing (right). Note that the bitmap image uses anti-aliasing, a method of using grayscale to attempt to smooth the drawing. All output devices, with few exceptions, use a raster or bitmap image to display graphics. The real difference between drawing with bitmap graphics and vector graphics is the point at which the image is converted into a bitmap. In the case of vector graphics, this conversion is done at the very last step before display, ensuring that the final image matches exactly the resolution of the output device. 3.2.1 Scalar Vector Graphics(SVG) SVG stands for Scalable Vector Graphics. Scalable refers to the notion that a drawing can be scaled to an arbitrary size without losing detail. Scalable also refers to the idea that a drawing can be composed of an unlimited number of smaller parts, parts that can be reused many times. The SVG standard is directed toward a complete description of two-dimensional graphics, including animation in an XML (eXtensible Markup Language) format. XML is an open standard for describing a document in a way that can be easily extended and is resistant to future changes in the document specification. A drawing saved in one version of SVG by one version of a drawing program should be viewable, to the full extent possible, by any previous or future version of any drawing program that adheres to the SVG standard. If a program doesn’t support something in the SVG standard, it should just skip over any part of a drawing that uses it, rendering the rest correctly. SVG files are small, and drawings described by the standard adapt well to different presenta- tion methods. This has led to great interest in the standard. Support is included in many web browsers (Firefox, Chrome, Opera, Safari, and Internet Explorer from version 9), or is avail- 18
  • 19. able through plug-ins (e.g., [Adobe [http://www.adobe.com/svg/viewer/install/, Ssrc SVG [http://www.savarese.com/software/svgplugin/],and Google [http://www.google.com/chrome frame]). Over a dozen companies including Apple (iPhone), Blackberry, LG, Motorola, Nokia, Samsung, and Sony Ericsson produce mobile phones that utilize a subset of the full SVG stan- dard (SVG Tiny) that has been tailored for devices with limited resources. Inkscape is a free and open-source vector graphics editor; it can be used to create or edit vector graphics such as illustrations, diagrams, line arts, charts, logos and complex paint- ings. Inkscape’s primary vector graphics format is Scalable Vector Graphics (SVG) version 1.1. While Inkscape can import and export several formats, all editing workflow inevitably occur within the guidelines of the SVG format. Inkscape can render primitive vector shapes (e.g. rectangles, ellipses, polygons, arcs, spirals, stars and isometric boxes), text and regions containing raster graphics. It also supports image tracing, enabling the editor to create vector graphics from photos and other raster sources. Created shapes can be subjected to further transformations, such as moving, rotating, scaling and skewing. These objects may be filled with solid colors, patterns, radiant or linear color gradient, their borders stroked or their transparency changed. Inkscape SVG-based vector drawing program is useful for drawing: • Illustrations for the Web. • Graphics for mobile phones. • Simple line drawings. • Cartoons. • Complex works of art. • Figures for articles and books. • Organization charts. The file format that Inkscape uses is compact and quickly transmittable over the Internet. Yet it is powerful and can describe complex drawings that are scalable to any size. Support for the format has been added to web browsers and is already included in many mobile phones. Inkscape supports the drawing of regular shapes (rectangles, circles, etc.), arbitrary paths, and text. These objects can be given a wide variety of attributes such as color, gradient or pat- terned fills, alpha blending, and markers. Objects can be transformed, cloned, and grouped. Hyperlinks can be added for use in web browsers. The Inkscape program aims to be fully XML, SVG, and CSS compliant. Inkscape is available prepackaged for the Windows, Macintosh, and Linux operating systems. 19
  • 20. The program and its source code are freely available. They can be obtained from the Inkscape website [http://www.inkscape.org/]. Inkscape is undergoing very rapid development with new features being added and compliance to the SVG standard being constantly improved. 3.2.2 Inkscape Window Start by opening Inkscape.This window contains several major areas, many containing clickable icons or pull-down menus. The following figure shows this window and labels key parts. The Command Bar, Snap Bar, Tool Controls, and Tool Box are detachable by dragging on the handles (highlighted in blue) at the far left or top. They can be returned to their normal place by dragging them back. New in v0.48: Some of the bars change position depending on which option is selected at the bottom of the View menu. When Default is selected, the Command Bar is on the top while the Snap Bar is on the right. When Custom is selected, the Command Bar and the Snap Bar are both on the top. When Wide is selected, the Command Bar and the Snap Bar are both on the right. By default, Default is used if you are not using a “Wide Screen” display while Wide is used if you are. A width to height aspect ratio of greater than 1.65 is defined to be wide. These bars, as well as the Palette and Status Bar, can be hidden using the View Show/Hide submenu. As Inkscape has grown more complex, the area required to include icons and entry boxes for all the various items has also grown leading to problems when Inkscape is used on small screens. The Command Bar, Snap Bar, Tool Controls, and Tool Box have variable widths or heights. If there are too many items to be shown in the width (height) of the Inkscape window, a small down arrow will appear on the right side or bottom of the bars. Clicking on this arrow will open a drop-down menu with access to the missing items. 20
  • 21. Figure 3.1: Inkscape Window 3.2.3 Inkscape Program Inkscape has its roots in the program Gill (GNOME Illustrator application) created by Raph Levian [http:// www.levien.com/] of Ghostscript fame. This project was expanded on by the Sodipodi [http://sourceforge.net/projects/ sodipodi] program. A different set of goals led to the split-off of the current Inkscape development effort. The goal of the writers of Inkscape is to produce a program that can take full advantage of the SVG standard. This is not a small task. A link to the road map for future development can be found on the Inkscape website [http:// www.inkscape.org/]. Instructions on installing Inkscape can be found on the Inkscape website. Full functionality of Inkscape requires additional helper programs to be installed, especially for importing and exporting files in different graphic formats. In this project the use of inkscape is to convert any image(formats) into graphics code usually known as GCODE. .GCODE formats are generated by integrating inkscape with necessary extension files. 3.2.4 Generating gcode files using inkscape 1. Download and install Inkscape 0.48.5 version. 2. Install an Add-on that enables the export images to gcode files. 3. Open the Inkscape, go to File menu and click ”Document Properties”. 4. Change the custom size. 21
  • 22. 5. Now close this window. 6. Open the required image. 7. Re-size the image to fit our printing area. 8. Click Path from menu and ”Trace Bitmap”.Make required changes. 9. Click ok and close the window. 10. Now, move the gray scale image, and delete the color one behind it. Move the grey image to the correct place again and click from Path menu ”Object to path”. 11. Final, go to file menu, click save as and select .gcode. Click ok on next window. GCode Tools: Gcodetools is an open source Inkscape extension, to export gcode for use with a CNC machine, written in the Python programming language. Inkscape extensions work in the standard Unix IO model, taking SVG on standard input, and output transformed SVG on standard output. The Gcodetools extension generates G-Code from the SVG input and writes it to a file as a side effect of the SVG transformation. This python extension can be easily downloaded as a .ZIP file from https://github.com/martymcguire/inkscape-unicorn 3.3 CAMotics CAMotics is an Open-Source software which simulates 3-axis CNC milling or engraving. It is a fast, flexible and user friendly simulation software for the DIY and Open-Source community. CAMotics works on Linux, OS-X and Windows. Being able to simulate is a critical part of creating CNC tool paths. Programming a CNC with out a simulator is cutting without measuring; it’s both dangerous and expensive. With CAMotics we can preview the results of your cutting operation before you fire up your machine. This will save the time and money and open up a world of creative possibilities by allowing us to rapidly visualize and improve upon designs without wasting material or breaking tools. At home manufacturing is one of the next big technology revolut There have been major advances in desktop 3D printing (e.g. Maker Bot) yet uptake of desktop CNCs has lagged despite the availability of cheap CNC machines. One of the major reasons for this is a lack of Open-Source simulation and CAM (3D model to tool path conversion) software. CAM and NC machine simulation present some very difficult, yet not insurmountable, programming chal- lenges. Whereas, 3D printing simulation and tool path generation are much easier. CAMotics aims to be a useful CNC simulation platform for the DIY and Open-Source com- munity. CAMotics should serve the highly technical user but remain simple and user friendly enough to support less techie types as well. 22
  • 23. Features • Fast 3-axis cut-workpiece simulation with 3D visualization. • Simulates cylindrical, conical, ballnose, spheroid and snubnose tool shapes. • Tool path 3D visualization. • Multi-threaded rendering can take advantage of multi-processor CPUs. • GCode parsing, simulation, verification and annotation. • Supports LinuxCNC (AKA EMC2) O-codes. • Export cut workpiece to STL file. • Tool table editing. • Add height probing to 2D GCode files. Very useful for circuit board cutting and metal engraving. • 2D GCode path optimization. • Operates in Windows and Linux. • Released under the GPL v2+ license. Limitations • Simulates only snapshots of the cutting process. • No 5-axis simulation. • No Lathe simulation. • No CAM facilities yet, e.g. 3D model to tool path conversion. • No CNC machine control, not a replacement for LinuxCNC or MACH3. • Does not yet detect over/under cutting, collisions with the tool shaft or fixtures or rapid moves in the material. • Not all of the LinuxCNC G-Code language is implemented, yet. 23
  • 24. 3.4 Arduino IDE The Arduino project provides the Arduino integrated development environment (IDE), which is a cross-platform application written in the programming language Java. It originated from the IDE for the languages Processing and Wiring. It is designed to introduce programming to artists and other newcomers unfamiliar with software development. It includes a code editor with features such as syntax highlighting, brace matching, and automatic indentation, and provides simple one-click mechanism to compile and load programs to an Arduino board. A program written with the IDE for Arduino is called a ”sketch”. The Arduino IDE supports the languages C and C++ using special rules to organize code. The Arduino IDE supplies a software library called Wiring from the Wiring project, which provides many common input and output procedures. A typical Arduino C/C++ sketch consist of two functions that are compiled and linked with a program stub main() into an executable cyclic executive program:[.2cm] • setup(): a function that runs once at the start of a program and that can initialize settings. • loop(): a function called repeatedly until the board powers off. After compiling and linking with the GNU toolchain, also included with the IDE distribution, the Arduino IDE employs the program avrdude to convert the executable code into a text file in hexadecimal coding that is loaded into the Arduino board by a loader program in the board’s firmware. 3.5 Processing 3.0.2 Processing is a simple programming environment that was created to make it easier to develop visually oriented applications with an emphasis on animation and providing users with instant feedback through interaction. The developers wanted a means to “sketch” ideas in code. As its capabilities have expanded over the past decade, Processing has come to be used for more advanced production-level work in addition to its sketching role. Originally built as a domain- specific extension to Java targeted towards artists and designers, Processing has evolved into a full-blown design and prototyping tool used for large-scale installation work, motion graphics, and complex data visualization. Processing is based on Java, but because program elements in Processing are fairly simple, you can learn to use it even if you don’t know any Java. If you’re familiar with Java, it’s best to forget that Processing has anything to do with Java for a while, until you get the hang of how the API works. The latest version of Processing can be downloaded at http://processing.org/download. 24
  • 25. An important goal for the project was to make this type of programming accessible to a wider audience. For this reason, Processing is free to download, free to use, and open source. But projects developed using the Processing environment and core libraries can be used for any purpose. This model is identical to GCC, the GNU Compiler Collection. GCC and its as- sociated libraries (e.g. libc) are open source under the GNU Public License (GPL), which stipulates that changes to the code must be made available. However, programs created with GCC (examples too numerous to mention) are not themselves required to be open source. Processing consists of: • The Processing Development Environment (PDE). This is the software that runs when you double-click the Processing icon. The PDE is an Integrated Development Envi- ronment (IDE) with a minimalist set of features designed as a simple introduction to programming or for testing one-off ideas. • A collection of functions (also referred to as commands or methods) that make up the “core” programming interface, or API, as well as several libraries that support more ad- vanced features such as sending data over a network, reading live images from a webcam, and saving complex imagery in PDF format. • A language syntax, identical to Java but with a few modifications. • An active online community, based at http://processing.org. 3.5.1 Sketching with Processing A Processing program is called a sketch. The idea is to make Java-style programming feel more like scripting, and adopt the process of scripting to quickly write code. Sketches are stored in the sketchbook, a folder that’s used as the default location for saving all of your projects. Sketches that are stored in the sketchbook can be accessed from File Sketchbook. Alternatively, File Open... can be used to open a sketch from elsewhere on the system. Advanced programmers need not use the PDE, and may instead choose to use its libraries with the Java environment of choice. However, for a beginner, it’s recommended to use the PDE to gain familiarity with the way things are done. While Processing is based on Java, it was never meant to be a Java IDE with training wheels. The conceptual model (how programs work, how interfaces are built, and how files are handled) is somewhat different from Java. 25
  • 26. Figure 3.2: Processing Window 3.6 Conclusion In this chapter a brief introduction about the type of software used,theoretical and some prac- tical idea about Inkscape, CAMotics, Arduino IDE and Processing are discussed. 26
  • 27. Chapter 4 Hardware 4.1 Introduction In this hardware system consists of a metallic frame, on which is mounted three axis of motion in a standard Cartesian coordinate system. X and Y axis is driven by a stepper motor driven by a adafruit L293D motor driver circuit. Z axis is driven by a servo motor. The different included parts in the project are: • Arduino UNO. • ADAFRUIT:MOtor Driver Shield L293D. • Stepper Motors. • Servo Motor. 4.2 Arduino UNO The Uno is a microcontroller board based on the ATmega328P. It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz quartz crystal, a USB connection, a power jack, an ICSP header and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started..Anyone can tinker with the UNO without worrying too much about doing something wrong, worst case scenario you can replace the chip for a few dollars and start over again. ”Uno” means one in Italian and was chosen to mark the release of Arduino Software (IDE) 1.0. The Uno board and version 1.0 of Arduino Software (IDE) were the reference versions of Arduino, now evolved to newer releases. The Uno board is the first in a series of USB Arduino boards, and the reference model for the Arduino 27
  • 28. platform; for an extensive list of current, past or outdated boards see the Arduino index of boards. The board features an Atmel ATmega328 microcontroller operating at 5 V with 2Kb of RAM, 32 Kb of flash memory for storing programs and 1 Kb of EEPROM for storing parameters. The clock speed is 16 MHz, which translates to about executing about 300,000 lines of C source code per second. The board has 14 digital I/O pins and 6 analog input pins. There is a USB connector for talking to the host computer and a DC power jack for connecting an external 6-20 V power source, for example a 9 V battery, when running a program while not connected to the host computer. Headers are provided for interfacing to the I/O pins using 22 g solid wire or header connectors. Overview of the Board Figure 4.1: Arduino UNO 28
  • 29. 4.3 Adafruit L293D Motor Shield Arduino-compatible boards use printed circuit expansion boards called shields, which plug into the normally supplied Arduino pin headers. Shields can provide motor controls, Global Posi- tioning System (GPS), Ethernet, liquid crystal display (LCD), or breadboarding (prototyping). • 2 connections for 5V servos connected to the Arduino’s high-resolution dedicated timer. • Up to 4 bi-directional DC motors with individual 8-bit speed selection. • Up to 2 stepper motors (unipolar or bipolar) with single coil, double coil, interleaved or micro-stepping. • 4 H-Bridges: L293D chipset provides 0.6A per bridge (1.2A peak) with thermal shutdown protection, 4.5V to 25V. • Pull down resistors keep motors disabled during power-up. • Big terminal block connectors to easily hook up wires (10-22AWG) and power Arduino reset button brought up top. • 2-pin terminal block to connect external power, for seperate logic/motor supplies. • Tested compatible with Mega, Diecimila, Duemilanove. Before using the Motor shield, we must install the AFM otorArduinolibrary−thiswillinstructtheArduinoho First, grab the library from github (http://adafru.it/aOA). Uncompress the ZIP file onto your desktop. Rename the uncompressed folder AFMotor. Check that inside AFMotor is AFMotor.cpp and AFMotor.h files. If not, check the steps above. Place the AFMotor folder into the arduinosketchfolder/libraries folder. For Windows, this will probably be something like MY Documents/Arduino/libraries for Mac it will be something like Documents/arduino/libraries. If this is the first time you are installing a library, you’ll need to create the libraries folder. Make sure to call it libraries exactly, no caps, no other name. Check that inside the libraries folder there is the AFMotor folder, and inside AFMotor Is AFMotor.cpp AFMotor.h and some other files. Quit and restart the IDE. You should now have a submenu called File-Examples-AFMotor- MotorParty. 29
  • 30. Figure 4.2: Adafruit L293D Motor Shield 4.4 Servo Motor A servo motor is an electrical device which can push or rotate an object with great precision. To rotate and object at some specific angles or distance, servo motor is used. It is just made up of simple motor which run through servo mechanism. If motor is used is DC powered then it is called DC servo motor, and if it is AC powered motor then it is called AC servo motor. We can get a very high torque servo motor in a small and light weight packages. Doe to these features they are being used in many applications like toy car, RC helicopters and planes, Robotics, CNC Machine etc. The position of a servo motor is decided by electrical pulse and its circuitry is placed beside the motor. 4.4.1 Working principle of Servo Motors. A servo consists of a Motor (DC or AC), a potentiometer, gear assembly and a controlling circuit. First of all we use gear assembly to reduce RPM and to increase torque of motor. Say at initial position of servo motor shaft, the position of the potentiometer knob is such that there is no electrical signal generated at the output port of the potentiometer. Now an electrical signal is given to another input terminal of the error detector amplifier. Now difference between these two signals, one comes from potentiometer and another comes from other source, will be processed in feedback mechanism and output will be provided in term of error signal. This error signal acts as the input for motor and motor starts rotating. Now motor shaft is connected with potentiometer and as motor rotates so the potentiometer and it will generate a signal. So as the potentiometer’s angular position changes, its output feedback signal changes. After sometime the position of potentiometer reaches at a position that the output of potentiometer 30
  • 31. Figure 4.3: Servo Motor is same as external signal provided. At this condition, there will be no output signal from the amplifier to the motor input as there is no difference between external applied signal and the signal generated at potentiometer, and in this situation motor stops rotating. 4.4.2 Controlling Servo Motor Servo motor is controlled by PWM (Pulse with Modulation) which is provided by the control wires. There is a minimum pulse, a maximum pulse and a repetition rate. Servo motor can turn 90 degree from either direction form its neutral position. The servo motor expects to see a pulse every 20 milliseconds (ms) and the length of the pulse will determine how far the motor turns. For example, a 1.5ms pulse will make the motor turn to the 90 position, such as if pulse is shorter than 1.5ms shaft moves to 0 and if it is longer than 1.5ms than it will turn the servo to 180. Servo motor works on PWM (Pulse width modulation) principle, means its angle of rotation is controlled by the duration of applied pulse to its Control PIN. Basically servo motor is made up of DC motor which is controlled by a variable resistor (potentiometer) and some gears. High speed force of DC motor is converted into torque by Gears. We know that WORK= FORCE X DISTANCE, in DC motor Force is less and distance (speed) is high and in Servo, force is High and distance is less. Potentiometer is connected to the output shaft of the Servo, to calculate the angle and stop the DC motor on required angle. Servo motor can be rotated from 0 to 180 degree, but it can go up to 210 degree, depending on the manufacturing. This degree of rotation can be controlled by applying the Electrical Pulse of proper width, to its Control pin. 31
  • 32. Servo checks the pulse in every 20 milliseconds. Pulse of 1 ms (1 millisecond) width can rotate servo to 0 degree, 1.5ms can rotate to 90 degree (neutral position) and 2 ms pulse can rotate it to 180 degree. Figure 4.4: Controlling of Servo Motor (PWM) 4.5 Stepper Motor A stepper motor is a type of DC motor which has a full rotation divided in an equal number of steps. It is a type of actuator highly compatible with numerical control means, as it is essentially an electromechanical converter of digital impulses into proportional movement of its shaft, providing precise speed, position and direction control in an open-loop fashion, without requiring encoders, end-of-line switches or other types of sensors as conventional electric motors require. he steps of a stepper motor represent discrete angular movements, that take place in a successive fashion and are equal in displacement, when functioning correctly the number of steps performed must be equal to the control impulses applied to the phases of the motor. The final position of the rotor is given by the total angular displacement resulting from the number of steps performed. This position is kept until a new impulse, or sequence of impulses, is applied. 32
  • 33. These properties make the stepper motor an excellent execution element of open-loop control systems. A stepper motor does not lose steps, i.e. no slippage occurs, it remains synchronous to control impulses even from standstill or when braked, thanks to this characteristic a stepper motor can be started, stopped or reversed in a sudden fashion without losing steps throughout its operation. Figure 4.5: Stepper Motor 4.6 Conclusion In this chapter all the details about the hardwares used such as Arduino UNO board,Adafruit L293D Motor Shield,Stepper Motors and Servo Motors are discussed. 33
  • 34. Chapter 5 Industrial Design 5.1 Introduction The complete mechanical system was designed in the metallic CD drive cover. The designs in the project are : • X-Y Direction. • Pen setup. • Stand holding the Whole. • Final Setup Y-axis: basic axis carries X-axis move from front to back. X-axis: carries Z-axis move from left to right. Z-axis: carries pen part move up and down. 5.2 X-Y Direction In computing, an optical disc drive (ODD) is a disk drive that uses laser light or electromagnetic waves within or near the visible light spectrum as part of the process of reading or writing data to or from optical discs. Some drives can only read from certain discs, but recent drives can both read and record, also called burners or writers. Compact discs, DVDs, and Blu-ray discs are common types of optical media which can be read and recorded by such drives. Optical disc drives that are no longer in production include CD-ROM drive, CD writer drive, and combo (CD-RW/DVD-ROM) drive. As of 2015, DVD writer drive is the most common for desktop PCs and laptops. There are also the DVD-ROM drive, BD-ROM drive, Blu-ray Disc combo (BD-ROM/DVDRW/CD-RW) drive, and Blu-ray Disc writer drive. The stepper motor setup of CD drives are used in X-Y direction co-ordinate axis. 34
  • 35. Figure 5.1: Lens Frame in CD Drive (Containing Stepper Motor) 5.3 Stand holding the whole The stand holding all the parts are made by the outer metallic cover of the cd drive. Two covers are welded together perpendicularly for holding the x and y axis. Figure 5.2: CD Drive Cover 5.4 Pen Setup (Z-axis) For pen setup (z axis) high-density fiberboard (HDF) is used. It is a type of fiberboard, which is an petroleum by product. It is of light weight.Servomotor is adjusted inside the HDF to get the up and movement required to plot the object. 5.5 Final Setup All the sections are integrated together to get a good output. 35
  • 36. Figure 5.3: Pensetup Figure 5.4: View 1 Figure 5.5: View 2 5.6 Conclusion In this chapter the design setup used in this project is discussed to give an idea on the me- chanical section. 36
  • 37. Chapter 6 Overall View and Setup of the Project 6.1 Introduction The following steps shows the building stages of a low cost mini cnc plotter. For X and Y axis, the stepper motors from CD drive is used. Servo motor is used for z axis.Inkscape,Processing and Arduino IDE gives the command from the computer as gcode to the arduino board to get the plotted output Main Block Diagram Figure 6.1: Main Block Diagram 37
  • 38. 6.2 Steps Involved in the Project Step 1-Industrial Design 1. First step to start building this cnc machine is to disassemble two dvd/cd drives and take off them the stepper motors. Use the screwdriver to open them and take off them the rails. 2. The outer metallic cover of cd drive is welded perpendicularly to make the stand holding the x and y axis. 3. Attach the cd drive stepper motor setup as x and y axis. And make sure that the Y axis is straight to CNC base and the X axis vertically to it. 4. Z axis (pen setup) is attached to the x axis. The pen setup is made up of HDF, the servo motor is attached to it and the pen is setup inside the fiber using screw and spring. 5. A metallic base is attached to the Y axis for using as paper base. Then a paper is put above it with the help some magnets.The printing area is 4x4cm. Step 2-Arduino and Stepper Motor Setup 1. The adafruit L293D motor driver sheild compactible with the Arduino board is mounted on it. 2. The Arduino is connected the computer port. 3. Check the stepper motors and the servo motor. 4. The stepper motors and the servo motor are connected to the motor shield. 5. The external power is connected. (Trainer Kit 12v,3A) Step 3-Burning of Program and Gcode take in 1. The mini cnc plotting sketch is burned to the Arduino microprocessor (ATmega 328) by using Arduino IDE. 2. Gcode is made by Inkscape program. 3. Then use the gctrl.pde processing program. This program sends ’gcode’ images to the cnc plotter. 4. Plotting of the image is done. 38
  • 39. 6.3 Result Integrating the software along with the hardware and mechanical systems makes up an effective 2D plotter. Figure 6.2: Plotted Output Image 6.4 Conclusion In this chapter the steps involved in setting-up the plotter and final result are discussed. 39
  • 40. Chapter 7 Applications The main applications of CNC machines comes in industrial field.Some of them are discussed below: • Metal Removal Applications – CNC machines are extensively used in industries where metal removal is required. The machines remove excess metal from raw materials to create complex parts. A good example of this would be the automotive industries where gears, shafts and other complex parts are carved from the raw material. CNC machines are also used in the manufacturing industries for producing rectangular, square, rounded and even threaded jobs. All processes, such as milling, grinding, turning, boring, reaming, etc, can be controlled and carried out by these CNC machines using specific machine tools for each task. • Metal Fabrication Industry – Many industries require thin plates for different pur- poses. These industries use CNC machines for a number of machining operations such as plasma or flame cutting, laser cutting, shearing, forming and welding to create these plates. CNC plasma or laser cutters are used for shaping metal, while CNC turret presses are used for operations like punching holes. Other operations like bending metal plates can also be carried out with very high precision using CNC press brakes. • Electrical Discharge Machining Applications – Electrical Discharge Machines, or EDMs as they are also known, remove metal from the raw material by producing sparks that burn away the excess metal. EDM machining through CNC automation is carried out in two different ways; first through Wire EDM and second through Vertical EDM. CNC automated Wire EDM is used to punch and then die combinations for creating die sets used in the fabrication industry. CNC automated Vertical EDM requires an electrode in the same size and shape as the cavity that needs to be carved out. 40
  • 41. Chapter 8 Conclusion and Future Aspects In modern CNC systems, end-to-end component design is highly automated using computer- aided design (CAD) and computer-aided manufacturing (CAM) programs. The programs produce a computer file that is interpreted to extract the commands needed to operate a particular machine by use of a post processor, and then loaded into the CNCmachines for production. Since any particular component might require the use of a number of different tools – drills, saws, etc., modern machines often combine multiple tools into a single ”cell”. In other installations, a number of different machines are used with an external controller and human or robotic operators that move the component from machine to machine. In either case, the series of steps needed to produce any part is highly automated and produces a part that closely matches the original CAD design. PCB Mill (Future) A PCB Mill is a device that etches out a pattern on a copper clad board such that it makes a Printed Circuit Board (PCB). PCBs are used everywhere in the field of electrical engineering to connect electrical components to one another. Typically, after a board is designed, the layout files are sent to a manufacturer who then makes the board and ships it back to the customer. When prototyping, the delay and setup costs associated with sending a layout to a manufacturer can often mean days of down time. While this may not seem costly at first, it can prove to be a significant nuisance since most boards contain a wiring bug that was overlooked or misunderstood and must then be remade. 41
  • 42. Bibliography 1. Venkatram Ramachandran, Evaluation of Performance Criteria of CNC Machine Tool Drive System, IEEE Transactions on Industrial Electron- ics, Vol. 45, No. 3, June 1998, pp. 462-468. 2. Jae Wook Jeon and Young Youl Ha, A Generalized Approach for the Acceleration and Deceleration of Industrial Robots and CNC Machine Tools, IEEE Transactions on Industrial Electronics, Vol. 47, No. 1, February 2000, pp. 133-139. 3. Allen G. Morinec, Power Quality Considerations for CNC Machines: Grounding, IEEE Transactions on Industrial Electronics, Vol. 38, No. 1, January/February 2002, pp. 3-11. 4. Dr M Shivakumar, Stafford Michahail, Ankitha Tantry H, Bhawana C K, Kavana H and Kavya V Rao, Robotic 2D Plotter, International Journal of Engineering and Innovative Technology (IJEIT), Volume 3, Issue 10, April 2014, pp.300-303. 5. Venkata Krishna Pabolu et al., Design and Implementation of a Three Dimensional CNC Machine (IJCSE) International Journal on Computer Science and Engineering Vol. 02, No. 08, 2010, pp. 2567-2570. 6. Mrs. R. Dayana, Gunaseelan P, Microcontroller Based X-Y Plotter, In- ternational Journal of Advanced Research in Electrical, Electronics and Instrumentation Engineering, Vol. 3, Special Issue 3, April 2014. 7. Ahn Luong, Willis Lutz, Jared Springle, Ashton Snelgrove, Computer numerical control 3 axis plotter, University of Utah, Computer Engi- neering. 8. Hassam Salamah, Ja’far Yasin, PCB CNC Machine, An-Najah national University, Computer Engineering. 9. W Durfee, Arduino Microcontroller Guide, University of Minnesota. 10. Steve Krar, Arthur Gill, Computer Numerical Control Programming Basics. 11. Instuctables.com 12. Wikipedia.com 42
  • 43. [12pt,a4paper]report [top=0.80in, bottom=0.80in, left=0.8in,right=0.80in]geometry [utf8]inputenc graphicx ragged2e 43
  • 45. .1 Programs Program in Arduino UNO Board #include <Servo.h> #include <AFMotor.h> #define LINE_BUFFER_LENGTH 512 // Servo position for Up and Down const int penZUp = 130; const int penZDown = 87; // Servo on PWM pin 6 const int penServoPin = 9; // Should be right for DVD steppers const int stepsPerRevolution = 20; // create servo object to control a servo Servo penServo; // Initialize steppers for X- and Y-axis using this Arduino pins for the L293D H-bridge AF_Stepper myStepperY(stepsPerRevolution,1); AF_Stepper myStepperX(stepsPerRevolution,2); /* Structures, global variables */ struct point { float x; float y; float z; }; // Current position of plothead struct point actuatorPos; // Drawing settings, should be OK float StepInc = 1; int StepDelay = 0; int LineDelay =40; int penDelay = 150; 45
  • 46. // Motor steps to go 1 millimeter. // Use test sketch to go 100 steps. Measure the length of line. // Calculate steps per mm. Enter here. float StepsPerMillimeterX = 100.0; float StepsPerMillimeterY = 100.0; // Drawing robot limits, in mm // OK to start with. Could go up to 50 mm if calibrated well. float Xmin = 0; float Xmax = 40; float Ymin = 0; float Ymax = 40; float Zmin = 0; float Zmax = 1; float Xpos = Xmin; float Ypos = Ymin; float Zpos = Zmax; void setup() { // Setup Serial.begin( 9600 ); penServo.attach(penServoPin); penServo.write(penZUp); delay(200); // Decrease if necessary myStepperX.setSpeed(600); myStepperY.setSpeed(600); // Notifications!!! Serial.println("Mini CNC Plotter alive and kicking!"); Serial.print("X range is from "); Serial.print(Xmin); Serial.print(" to "); Serial.print(Xmax); Serial.println(" mm."); Serial.print("Y range is from "); Serial.print(Ymin); Serial.print(" to "); 46
  • 47. Serial.print(Ymax); Serial.println(" mm."); } /********************** * void loop() - Main loop ***********************/ void loop() { delay(200); char line[ LINE_BUFFER_LENGTH ]; char c; int lineIndex; bool lineIsComment, lineSemiColon; lineIndex = 0; lineSemiColon = false; lineIsComment = false; while (1) { // Serial reception - Mostly from Grbl, added semicolon support while ( Serial.available()>0 ) { c = Serial.read(); if (( c == ’n’) || (c == ’r’) ) { // End of line reached if ( lineIndex > 0 ) { // Line is complete. Then execute! line[ lineIndex ] = ’0’; // Terminate string if (verbose) { Serial.print( "Received : "); Serial.println( line ); } processIncomingLine( line, lineIndex ); lineIndex = 0; } else { // Empty or comment line. Skip block. } lineIsComment = false; lineSemiColon = false; Serial.println("ok"); } 47
  • 48. else { if ( (lineIsComment) || (lineSemiColon) ) { // Throw away all comment characters if ( c == ’)’ ) lineIsComment = false; // End of comment. Resume line. } else { if ( c <= ’ ’ ) { // Throw away whitepace and control character } else if ( c == ’/’ ) { // Block delete not supported. Ignore charact } else if ( c == ’(’ ) { // Enable comments flag and ignore all charac lineIsComment = true; } else if ( c == ’;’ ) { lineSemiColon = true; } else if ( lineIndex >= LINE_BUFFER_LENGTH-1 ) { Serial.println( "ERROR - lineBuffer overflow" ); lineIsComment = false; lineSemiColon = false; } else if ( c >= ’a’ && c <= ’z’ ) { // Upcase lowercase line[ lineIndex++ ] = c-’a’+’A’; } else { line[ lineIndex++ ] = c; } } } } } } void processIncomingLine( char* line, int charNB ) { int currentIndex = 0; char buffer[ 64 ]; // Hope that 64 is enough for 1 parameter struct point newPos; newPos.x = 0.0; newPos.y = 0.0; while( currentIndex < charNB ) { 48
  • 49. switch ( line[ currentIndex++ ] ) { // Select command, if any case ’U’: penUp(); break; case ’D’: penDown(); break; case ’G’: buffer[0] = line[ currentIndex++ ]; // /! Dirty - Only works with 2 digit com // buffer[1] = line[ currentIndex++ ]; // buffer[2] = ’0’; buffer[1] = ’0’; switch ( atoi( buffer ) ){// Select G command case 0: // G00 & G01 - Movement or fast movement. Same here case 1: // /! Dirty - Suppose that X is before Y char* indexX = strchr( line+currentIndex, ’X’ ); char* indexY = strchr( line+currentIndex, ’Y’ ); if ( indexY <= 0 ) { newPos.x = atof( indexX + 1); newPos.y = actuatorPos.y; } else if ( indexX <= 0 ) { newPos.y = atof( indexY + 1); newPos.x = actuatorPos.x; } else { newPos.y = atof( indexY + 1); indexY = ’0’; newPos.x = atof( indexX + 1); } drawLine(newPos.x, newPos.y ); // Serial.println("ok"); actuatorPos.x = newPos.x; actuatorPos.y = newPos.y; break; } break; 49
  • 50. case ’M’: buffer[0] = line[ currentIndex++ ];// /! Dirty - Only works with 3 digit commands buffer[1] = line[ currentIndex++ ]; buffer[2] = line[ currentIndex++ ]; buffer[3] = ’0’; switch ( atoi( buffer ) ){ case 300: { char* indexS = strchr( line+currentIndex, ’S’ ); float Spos = atof( indexS + 1); // Serial.println("ok"); if (Spos == 30) { penDown(); } if (Spos == 50) { penUp(); } break; } case 114: // M114 - Repport position Serial.print( "Absolute position : X = " ); Serial.print( actuatorPos.x ); Serial.print( " - Y = " ); Serial.println( actuatorPos.y ); break; default: Serial.print( "Command not recognized : M"); Serial.println( buffer ); } } } } /********************************* * Draw a line from (x0;y0) to (x1;y1). * int (x1;y1) : Starting coordinates * int (x2;y2) : Ending coordinates **********************************/ void drawLine(float x1, float y1) { 50
  • 51. if (verbose) { Serial.print("fx1, fy1: "); Serial.print(x1); Serial.print(","); Serial.print(y1); Serial.println(""); } // Bring instructions within limits if (x1 >= Xmax) { x1 = Xmax; } if (x1 <= Xmin) { x1 = Xmin; } if (y1 >= Ymax) { y1 = Ymax; } if (y1 <= Ymin) { y1 = Ymin; } if (verbose) { Serial.print("Xpos, Ypos: "); Serial.print(Xpos); Serial.print(","); Serial.print(Ypos); Serial.println(""); } if (verbose) { Serial.print("x1, y1: "); Serial.print(x1); Serial.print(","); Serial.print(y1); Serial.println(""); 51
  • 52. } // Convert coordinates to steps x1 = (int)(x1*StepsPerMillimeterX); y1 = (int)(y1*StepsPerMillimeterY); float x0 = Xpos; float y0 = Ypos; // Let’s find out the change for the coordinates long dx = abs(x1-x0); long dy = abs(y1-y0); int sx = x0<x1 ? StepInc : -StepInc; int sy = y0<y1 ? StepInc : -StepInc; long i; long over = 0; if (dx > dy) { for (i=0; i<dx; ++i) { myStepperX.onestep(sx,MICROSTEP); over+=dy; if (over>=dx) { over-=dx; myStepperY.onestep(sy,MICROSTEP); } delay(StepDelay); } } else { for (i=0; i<dy; ++i) { myStepperY.onestep(sy,MICROSTEP); over+=dx; if (over>=dy) { over-=dy; myStepperX.onestep(sx,MICROSTEP); } delay(StepDelay); } } if (verbose) { Serial.print("dx, dy:"); 52
  • 53. Serial.print(dx); Serial.print(","); Serial.print(dy); Serial.println(""); } if (verbose) { Serial.print("Going to ("); Serial.print(x0); Serial.print(","); Serial.print(y0); Serial.println(")"); } // Delay before any next lines are submitted delay(LineDelay); // Update the positions Xpos = x1; Ypos = y1; } // Raises pen void penUp() { penServo.write(penZUp); delay(penDelay); Zpos=Zmax; digitalWrite(15, LOW); digitalWrite(16, HIGH); if (verbose) { Serial.println("Pen up!"); } } // Lowers pen void penDown() { penServo.write(penZDown); delay(penDelay); Zpos=Zmin; 53
  • 54. digitalWrite(15, HIGH); digitalWrite(16, LOW); if (verbose) { Serial.println("Pen down."); } } *//Program used in Processing for loading Gcode//* import java.awt.event.KeyEvent; import javax.swing.JOptionPane; import processing.serial.*; Serial port = null; // select and modify the appropriate line for your operating system // leave as null to use interactive port (press ’p’ in the program) String portname = null; //String portname = Serial.list()[0]; // Mac OS X //String portname = "/dev/ttyUSB0"; // Linux //String portname = "COM6"; // Windows boolean streaming = false; float speed = 0.001; String[] gcode; int i = 0; void openSerialPort() { if (portname == null) return; if (port != null) port.stop(); port = new Serial(this, portname, 9600); port.bufferUntil(’n’); } void selectSerialPort() { 54
  • 55. String result = (String) JOptionPane.showInputDialog(this, "Select the serial port that corresponds to your Arduino board.", "Select serial port", JOptionPane.PLAIN_MESSAGE, null, Serial.list(), 0); if (result != null) { portname = result; openSerialPort(); } } void setup() { size(500, 250); openSerialPort(); } void draw() { background(0); fill(255); int y = 24, dy = 12; text("INSTRUCTIONS", 12, y); y += dy; text("p: select serial port", 12, y); y += dy; text("1: set speed to 0.001 inches (1 mil) per jog", 12, y); y += dy; text("2: set speed to 0.010 inches (10 mil) per jog", 12, y); y += dy; text("3: set speed to 0.100 inches (100 mil) per jog", 12, y); y += dy; text("arrow keys: jog in x-y plane", 12, y); y += dy; text("page up & page down: jog in z axis", 12, y); y += dy; text("$: display grbl settings", 12, y); y+= dy; text("h: go home", 12, y); y += dy; text("0: zero machine (set home to the current location)", 12, y); y += dy; text("g: stream a g-code file", 12, y); y += dy; text("x: stop streaming g-code (this is NOT immediate)", 12, y); y += dy; y = height - dy; text("current jog speed: " + speed + " inches per step", 12, y); y -= dy; 55
  • 56. text("current serial port: " + portname, 12, y); y -= dy; } void keyPressed() { if (key == ’1’) speed = 0.001; if (key == ’2’) speed = 0.01; if (key == ’3’) speed = 0.1; if (!streaming) { if (keyCode == LEFT) port.write("G91nG20nG00 X-" + speed + " Y0.000 Z0.000n"); if (keyCode == RIGHT) port.write("G91nG20nG00 X" + speed + " Y0.000 Z0.000n"); if (keyCode == UP) port.write("G91nG20nG00 X0.000 Y" + speed + " Z0.000n"); if (keyCode == DOWN) port.write("G91nG20nG00 X0.000 Y-" + speed + " Z0.000n"); if (keyCode == KeyEvent.VK_PAGE_UP) port.write("G91nG20nG00 X0.000 Y0.000 Z" + spe if (keyCode == KeyEvent.VK_PAGE_DOWN) port.write("G91nG20nG00 X0.000 Y0.000 Z-" + if (key == ’h’) port.write("G90nG20nG00 X0.000 Y0.000 Z0.000n"); if (key == ’v’) port.write("$0=75n$1=74n$2=75n"); //if (key == ’v’) port.write("$0=100n$1=74n$2=75n"); if (key == ’s’) port.write("$3=10n"); if (key == ’e’) port.write("$16=1n"); if (key == ’d’) port.write("$16=0n"); if (key == ’0’) openSerialPort(); if (key == ’p’) selectSerialPort(); if (key == ’$’) port.write("$$n"); } if (!streaming && key == ’g’) { gcode = null; i = 0; File file = null; println("Loading file..."); selectInput("Select a file to process:", "fileSelected", file); } if (key == ’x’) streaming = false; } void fileSelected(File selection) { if (selection == null) { 56
  • 57. println("Window was closed or the user hit cancel."); } else { println("User selected " + selection.getAbsolutePath()); gcode = loadStrings(selection.getAbsolutePath()); if (gcode == null) return; streaming = true; stream(); } } void stream() { if (!streaming) return; while (true) { if (i == gcode.length) { streaming = false; return; } if (gcode[i].trim().length() == 0) i++; else break; } println(gcode[i]); port.write(gcode[i] + ’n’); i++; } void serialEvent(Serial p) { String s = p.readStringUntil(’n’); println(s.trim()); if (s.trim().startsWith("ok")) stream(); if (s.trim().startsWith("error")) stream(); // XXX: really? } 57
  • 58. .2 Arduino UNO Board .3 L293D Specifications (Motor Driver IC) The Device is a monolithic integrated high voltage, high current four channel driver designed to accept standard DTL or TTL logic levels and drive inductive loads (such as relays solenoides, DC and stepping motors) and switching power transistors. To simplify use as two bridges each pair of channels is equipped with an enable input. A separate supply input is provided for the logic, allowing operation at a lower voltage and internal clamp diodes are included. This device is suitable for use in switching applications at frequencies up to 5 kHz. The L293D is assembled in a 16 lead plastic packaage which has 4 center pins connected together and used for heatsinking The L293DD is assembled in a 20 lead surface mount which has 8 center pins 58
  • 59. connected together and used for heatsinking. Figure .31: Pin Out Figure .32: Maximum Ratings 59