Microcontroller PIC Projects are categorized on the basis of microcontroller applications. Microchip pic microcontrollers belongs to modern family of MCUs. Step 2 Bill of Material Hardware Software Following are the Hardware Software list you want. Hardware. Arduino UNOMEGAQty1. L2. 93. D Motor shieldQty1. Hi. can you confirm that GRBL is working I usually use an Terminal Client called Putty. With it I connect to the serial port that the Arduino is exposing and then. Mini Servo MotorQty1. OLd scrap DVD DrivesQty2. MM long bolts with nut and washerQty8. A pen Qty1. Some hardwares tools Qty1lot. Software. Arduino IDE Version 1. MainSoftwareProcessing IDE Version 3. Inkscape version 0. Go to link to download the particular software select software pack according to you systemOTE Inkscape version must be 0. Step 3 Role of Hardware Software in this Machine. It is good to know role of each component and software in CNC machine. ARDUINOArduino is basically work as a brain of CNC Machine a CNC code uploded to arduino so that when Gcode stream to arduino Arduino commands motor shield to run stepper motors. L2. 93. D Motor shield. This is dedicated shield to control verities of motor with arduino here this shield control two stepper motorx axis y axis and one servo motor,https cdn learn. Servo motor. Basically this motor is used here just to UPDOWN pen servo is connected with motor shield. Arduino IDEThis is used to upload code to arduino. Processing IDEThis is used to stram G CODE to arduino. Inkscape. This is used to make G CODE file of any image. Step 5 Wiring drawing. Do componentwiring accordingly shown in images,Do cross check power polarity once before powering the components. Step 6 Programming Arduino. Now your machine is ready its time to give life to you machine. So we need to program arduino. Here we are using L2. D Motor shield, so it need to add some library AFMOTOR LIBRARY to arduino IDE Softwareso first download upload this library to Arduino IDE to know how to add library watch video Download Adafruit motor shield Library. Then upload this CNC Code to arduino. Click to download arduino code. After successfully compiling and uploading your arduino programming part is over now move towards G CODEStep 7 Preparing G CODEG code is the format of file which your machine can understand and work acordingly. Suppose you have to draw some text with machine so you need its Gcode so what you do. Inkscape software provides you a facility to convert image or text into G codehow to convert file in G code watch video n. Sample G codesample 1sample 2sample 3sample 4. How to add G Code extension in Inkscape for MINI DIY CNC Machine. Restaurant Empire 2 Patch Italy Map. But when you download Inkscape software from net there is not a G CODE save as option so you need to add a library Extension in inkscape for this download the following Makerboat g code unicorn extension. Click to download Makerbot unicorn G code extension. How to add this extension to Inkscape. Unzip the file. 2 Open the folder by double click. Copy all the sub folders files. Right click to the inkscape icon from desktop. Go to Properties. Go to open file location. Open SHARE folder. Open EXTENSION folder. Past here all that file. Step 8 Processing IDEOur arduino is ready our machine is ready and our g code is also ready to print. So we need something which can transmit g code to Arduino, so here we have Processing GCTRL program. Download GTRL Code from below link. Click to download GTRLAfter downloading the GCTRL Code unzip the folder load the gctrl code to processing and press play buttona new window open from this window you can select your communication port,By pressing G a browser is open select your g code file and upload itas soon as you upload the file Machine start drawing. Here is some ready made g code file is attached. Thanks for your attention friends. I hope i cover every point of how to make CNC machinehope you have appreciate this if you are trying to make this machine have a good luck friend. If you stuck anywhere in between feel free to contact i will surely help out my level best. If you have some new idea to improve any thing in this please most welcome you can share with us. Thanks byesubscribe our Youtube channelhttps www. UCs. OFElm. DD3e. BLDC Motor Control With Arduino, Salvaged HD Motor, and Hall Sensors 1. Steps. Below is the entire program that I wrote for the Ardjuino, with comments included BLDCcongroller 3. David Glaser The 3. ST L6. 23. 4 3 Phase Motor Driver IC Runs a disk drive motor clockwiseWith regenerative brakingMotor speed and braking is controlled by a single potentiometerMotor position is determined with three Hall Effect sensors The Arduino receives outputs from 3 hall sensors pins 2,3,4 and converts their combination to 6 different commutation stepsPWM outputs on pins 9,1. Hz corresponding to EN 1,2,3 respectively3 DO on pins 5,6,7 IN 1,2,3Analog in 0 is connected to a potentiometer to change the PWM duty and changebetween motoring and regenerative braking. There are many lines commented out that were used for debugging byprinting various values to the serial connection. Hall. State. 1 Variables for the three hall sensors 3,2,1int Hall. State. 2 int Hall. State. 3 int Hall. Val 1 binary value of all 3 hall sensorsint m. Speed 0 speed level of the motorint b. Speed 0 braking levelint throttle 0 this variable is used with analog in to measure the position of the throttle potentiometervoid setup pin. Mode2,INPUT Hall 1pin. Mode3,INPUT Hall 2pin. Mode4,INPUT Hall 3 Outputs for the L6. Motor Driverpin. Mode5,OUTPUT IN 1 pin. Mode6,OUTPUT IN 2pin. Mode7,OUTPUT IN 3 pin. Mode9,OUTPUT EN 1pin. Mode1. 0,OUTPUT EN 2 pin. Mode1. 1,OUTPUT EN 3Serial. Serial. flush command at end of program. Set PWM frequency on pins 9,1. Set PWM for pins 9,1. HzFirst clear all three prescaler bits int prescaler. Val 0x. 07 create a variable called prescaler. Val and set it equal to the binary number 0. TCCR1. B prescaler. Val AND the value in TCCR0. B with binary number 1. Now set the appropriate prescaler bits int prescaler. Val. 2 1 set prescaler. Val equal to binary number 0. TCCR1. B prescaler. Val. 2 OR the value in TCCR0. B with binary number 0. Set PWM for pins 3,1. Hz Only pin 1. 1 is used in this programFirst clear all three prescaler bits TCCR2. B prescaler. Val AND the value in TCCR0. B with binary number 1. Now set the appropriate prescaler bits TCCR2. B prescaler. Val. OR the value in TCCR0. B with binary number 0. First clear all three prescaler bits MAIN LOOP OF THE PRGROMvoid looptime millis prints time since program startedSerial. Serial. printn throttle analog. Read0 value of the throttle potentiometerm. Speed mapthrottle, 5. Speed mapthrottle, 0, 5. Speed 1. 00 used for debugging Hall. State. 1 digital. Read2 read input value from Hall 1. Hall. State. 2 digital. Read3 read input value from Hall 2. Hall. State. 3 digital. Read4 read input value from Hall 3digital. Write8, Hall. State. LEDs turned on when corresponding sensor is high originally used for debuggingdigital. Write9, Hall. State. Write1. 0, Hall. State. Hall. Val Hall. State. State. 2 4all. State. Computes the binary value of the 3 Hall sensors erial. H 1 used for debugging. Serial. printlnHall. State. 1 Serial. H 2 Serial. Hall. State. 2 Serial. H 3 Serial. printlnHall. State. 3 Serial. Serial. Speed Serial. Hall. Val Serial. Monitor transistor outputs delay1. T1 digital. Read2 T1 T1 T2 digital. Read4 T2 T2 T3 digital. Read5 T3 T3 Serial. T1 Serial. printt Serial. T2 Serial. printt Serial. T3 Serial. printn Serial. Serial. printdigital. Read3 Serial. Serial. Read9 Serial. Serial. Read1. 0 Serial. Serial. Commutation for Motoring Each binary number has a case that corresponds to different transistors being turned on Bit Math is used to change the values of the output For tutorial on bitmath with the Arduino http www. CodeBit. Math PORTD contains the outputs for the IN pins on the L6. The outputs for the EN pins are controlled by the Arduino command analog. Write, which sets the duty of the PWM 0 OFF, 2. ON or throttle value that is controlled by the potentiometer. Hall. Val case 3 PORTD B0. Desired Output for pins 0 7 xxx refers to the Hall inputs, which should not be changed. PORTD B0. PORTD B0. Write9,m. Speed PWM on Phase A High side transistoranalog. Write1. 0,0 Phase B off duty 0analog. Write1. 1,2. 55 Phase C on duty 1. Low side transistorbreak case 1 PORTD B0. Desired Output for pins 0 7. PORTD B0. PORTD B0. Write9,m. Speed PWM on Phase A High side transistoranalog. Write1. 0,2. 55 Phase B on Low side transistoranalog. Write1. 1,0 Phase B off duty 0break case 5 PORTD B1. Desired Output for pins 0 7. PORTD B0. PORTD B1. Write9,0 analog. Write1. Write1. 1,m. Speed break case 4 PORTD B1. Desired Output for pins 0 7. PORTD B0. PORTD B1. Write9,2. 55 analog. Write1. 0,0 analog. Write1. 1,m. Speed break case 6 PORTD B1. Desired Output for pins 0 7. PORTD B0. PORTD B1. Write9,2. 55 analog. Write1. 0,m. Speed analog. Write1. 1,0 break case 2 PORTD B0. Desired Output for pins 0 7. PORTD B0. PORTD B0. Write9,0 analog. Write1. Speed analog. Write1. Commutation for Regenerative Braking PORTD Outputs for IN pins on L6. PORTD B0. 00xxx. Desired Output for pins 0 7. PORTD B0. PORTD B0. Hall. Val case 3 analog. Write9,b. Speed analog. Write9,0 analog. Write1. Write1. 1,0 break case 1 analog. Write9,b. Speed analog. Write1. 0,0 analog. Write1. 1,0 break case 5 analog. Write9,0 analog. Write1. Write1. 1,b. Speed break case 4 analog. Write9,0 analog. Write1. Write1. 1,b. Speed break case 6 analog. Write9,0 analog. Write1. Speed analog. Write1. Write9,0 analog. Write1. Speed analog. Write1. Serial. Serial. printn Serial.