Close
0%
0%

G-EDM

The G-EDM is an electrical discharge machine that supports sinker EDM, EDM engraving, EDM drilling and Wire EDM operations. #Drahterodieren

Similar projects worth following
The G-EDM is a fully automated ESP32 based three axis EDM CNC machine that supports different kinds of electrodes like brass tubes or brass sheets and is highly customizable. With the wire EDM extension it is possible to cut high precision parts out of different metals.

It uses 3D printed parts where it is possible and in the future it may support even laser and mill operations. The firmware provides many EDM specific features and is available on Github too: https://github.com/G-EDM/G-RBL

The G-EDM pulse generator is a modern buck converter based pulse power supply that does not need a power resistor.

All PCBs use big ground planes, feedback signal traces are fenced with via stitches and in general all ground zones on different layers are connected together with via stitches to get the best possible performance out of it.


Contact: gedm-support@proton.me

...

  • Makerbase Servo42C for FOC based wire tension control

    gedm-dev2 days ago 0 comments

    Building the new EVOIII router is still a long road to go and one of the major changes is the way the wire is controlled. It uses the wire feeder from the Pico designed by Alex Treseder.

    The wire feeder has to steppers. One stepper drives the pulling side while the other one will monitor and keep the desired wire tension using the Servo42C driver in FOC mode.

    The full wire unit will be controlled by this tiny ESP32 from Seeed. Next to it is a normal ESP32-Wroom board to get the size.

    I want to program the driver using the G-EDM UI but well, there is no library available. The documentation is all there is and it looks pretty complicated. They do provide a closed source interface for windows but that doesn't help much.

    Writing a library for this driver to be able to fully control it is everything but not noob friendly. And I mean it.

    First it doesn't use normal integer value that are send around via UART. It uses hexadecimal values. And they are limited to 8bit. The format for sending data to the driver is like this:

    slave_address command data1 [data2 data3 ...] checksum_modulo_256_8bit

    slave_address command data1 [data2 data3 ...] checksum_modulo_256_8bit

    If the data value exceeds the 8bit it needs to be split across multiple cells as big-endian byte array or something.

    I don't have the driver yet and all this is just extracted from the documentation that shows this for the max torque setting (manual example sets the value to 600 = 0x258 = 02 58):

    The command for setting the max torque to 1200 would look like this:

    E0 A5 04 B0 39

    Let's break that down.

    E0 is the slave_address used to identify the driver.

    A5 is the command to set the max torque

    04 B0 is the tricky part. It is the formatting of 0x4B0 (Hex representation of 1200). A number larger 255 exceeds the uint8_t (0-255) limitation and therefore it is converted into two cells or more if the number is really large.

    The last cell always contains the checksum of the previous cells also limited to 8bit. I think it is called modulo 256. Collisions will happen but it doesn't look like a real problem. Good enough for what it is.

    How to convert the 0x4B0 into 04 B0 ?

    It would be no problem to convert the hexadecimal value into a string or char array and then split it but the functions should be as fast as possible and therefore it is done with bitshifting and bitmasking. Working with strings and string streams etc. is always bloated and slower. Char arrays are somehow uint8_t and would work. But let's not get into that. I want to shift some bits.

    The start of the code looks like this:

    #define MAX_BYTES 4 // maximum input is 32-bit
    
    enum COMMANDS_42C {
        CMD_SET_MAX_TORQUE = 0
    };
    
    std::map<COMMANDS_42C, int> servo_commands = {
        { CMD_SET_MAX_TORQUE, 0xa5 }
    };
    
    static const int MAX_POS_TORQUE = 1200;
    
    
    bool SERVO42C::set_max_torque( int torque ){
        if( torque > MAX_POS_TORQUE ){ // max pos torque is static const int 1200
            torque = MAX_POS_TORQUE;
        } else if( torque < 0 ){
            torque = 0;
        }
        return send( servo_commands[CMD_SET_MAX_TORQUE], torque );
    }
    
    
    // Function to convert an integer into an array of bytes (formatted as hex)
    void SERVO42C::int_to_hex_array(uint32_t value, uint8_t *array, int *length) {
        // Determine how many bytes are needed for the value
        int needed_bytes = 0;
        for (int i = 0; i < MAX_BYTES; i++) {
            if (value >> (i * 8))
                needed_bytes = i + 1;
        }
        *length = needed_bytes;
        for (int i = 0; i < needed_bytes; i++) { // Fill the array with bytes, starting from the most significant byte
            array[needed_bytes - 1 - i] = (value >> (i * 8)) & 0xFF;
        }
        if( length <= 0 ){
            *length = 1; // at least one cell even if value is zero
        }
    }
    
    uint8_t SERVO42C::create_checksum( uint8_t *hex_blocks, int block_num ){
        int sum = 0;
        for( int i = 0; i <= block_num; ++i ) {
            sum += hex_blocks[i];
        }
        return sum & 0xFF; // Mask to 8 bits // modulo 256
    }
    
    
    bool SERVO42C::send( int command, int value ){
    
        uint8_t hex_array[MAX_BYTES]...
    Read more »

  • EVOIII Router - more build pics

    gedm-dev05/02/2025 at 14:24 0 comments

    So far the Pico wire feeder works well. Will add a few changes to it but all in all it is very good. Enough friction to break a 0.2mm wire and pulling the wire out will also move the belt and stepper.


  • EVOIII Router (work in progress) build pics

    gedm-dev05/01/2025 at 19:54 0 comments

    Random images showing the build progress for the EVOIII prototype.

  • G-EDM EVOIII Motionboard is tested and works

    gedm-dev04/25/2025 at 17:42 0 comments

    Did a quick test of all the features on the new motionboard and it seems to work.

    1. Isolated RX/TX to program the DPM/DPH ✔
    2. Fan ✔
    3. ON/OFF switch ✔
    4. LIMIT switch ✔
    5. Display ✔
    6. SD card on display or via little adapter card ✔
    7. Connection to the pulseboard ✔

    Looks pretty nice. Display in this case is 2.8" ILI9341 SPI Touch XPT chip

  • Thanks to J.B. for delivering a smile

    gedm-dev04/24/2025 at 11:18 0 comments

    Just received a little package from the US containing PCBs in bright colors that are made thicker then the ones I order.

    The package included some cards and stickers and they made me happy. Thanks to J.B. for that. 

    New Southpark season coming soon. Looking forward to it. They have a lot of crazy stuff to work with.

    I deleted the old mail address and don't have your mail anymore. If you see this please reach out to: gedm-support@proton.me

    If you need help with your EXO project let me know. Wanted to make one for a friend too but decided that without team it would blast the budget and time.


    PS: The thicker material on the pulseboard is indeed a good choice. On the motionboard it doesn't make much difference but for the pulseboard using a 2mm thick PCB instead of 1.6mm makes a big difference in flex. 2mm recommended from now on.

  • Testing the EVOIII Motionboard

    gedm-dev04/23/2025 at 19:44 0 comments

    The new EVOIII Router asked for a new motionboard that provides a better layout of the terminals. The core circuit is the same as the one used on the EVOII Motionboard but the connectors are placed more thoughtful.

    One new feature is the option to connect an SD card module directly to the PCB. This should allow using longer wires for the display without risking data loss on the sd channel.

    The common micro sd board seems to be made for arduinos 5v and does not work without hacking it. It has an AMS1117 voltage regulator on board that needs more then 3.3v input.

    I just removed it and bridged two pads. This way it works. Maybe there are better solutions available.

    This is just a feature for testing. Using the displays integrated SD card reader still works too.

    I'm waiting for the new WAGO terminals and then have to test the isolated RX/TX channels once it is wired up.

  • New G-EDM C-Arc design to guide the wire

    gedm-dev03/28/2025 at 02:30 0 comments

  • Working on the new G-EDM router with integrated electronics

    gedm-dev03/14/2025 at 21:46 0 comments

    The current router works very nice but there is so much room left to improve things. Especially the external control box adds to the footprint. The next one will have everything integrated.
     

    Integrated electronics

    Less weight

    Cheaper

    Easier to build

  • Winner of the 7th PCBway design contest, new Panel and new Firmware

    gedm-dev03/10/2025 at 10:24 0 comments

    Great day for DIY EDM. The G-EDM won the first prize at the 7th PCBway design contest.

    https://www.pcbway.com/blog/News/Meet_the_Winners_of_the_7th_Project_Design_Contest_f25c1e31.html

    And there is also a new controlpanel on Github that can be mounted from the front and gives easier access if needed:

    https://github.com/G-EDM/EVOIII-ControlPanel

    And another major update is a new firmware release that has many bugs fixed and comes with a full makeover of the user interface:

    https://github.com/G-EDM/PhantomEDM


  • G-EDM EVOIII board - pulse and sensing merged on a single PCB #wireEDM

    gedm-dev12/02/2024 at 20:54 2 comments

    G-EDM EVOIII

    The new EVOIII board provides a single PCB containing the pulse stage and the sensing stage. It replaces the EVOII pulseboard and the EVOII sensorboard.


    The EVOII Cube is a cool looking piece of Art but it is hard to manufacture. To reduce build costs and make it easier to produce the EVOIII PCB was designed. Specs and performance of both versions is the same. There is one difference: The EVOIII uses a single gate driver IC while the EVOII cube has a discrete gate driver circuit. At higher frequencies they don't switch identically and the cube needs a slightly higher duty cycle.

    The board provides two isolated analog feedbacks and also isolates the PWM to drive the mosfet gates.

View all 81 project logs

Enjoy this project?

Share

Discussions

jb333 wrote 12/28/2024 at 17:05 point

Just placed my order with PCBWay for motion boards! :)

  Are you sure? yes | no

gedm-dev wrote 12/28/2024 at 17:29 point

You need the pulseboard too. Go for the EVOIII board as it is much easier to setup compared to the evoII cube.

  Are you sure? yes | no

jb333 wrote 12/29/2024 at 07:00 point

Of course! :) 

I agree with you, the EVO2 cubes are works of art, but the EVO3 boards have to be a lot easier to cool! And, I appreciate the minimal number of connectors; That reduces costs a bit!

See, I'm very poor, minimum disability payment, so I can only afford to do one step at a time; Here's my plan:

1st: I bought a 38-pin ESP32-WROOM-32 with CP2102 USB Interface, a 38-pin breakout board, and rainbow wires with 2.54mm female terminals. Prices = $7, $3, and $0.20, respectively.

2nd: Installed VSCode and the platform.IO extension, then compiled and uploaded the firmware to the ESP32. Price = FREE - Yay Roland! :)

3rd: Bought a 2.4-inch iLi9341 Display with XPT2046 Touch Input. Price = $10

4th: Soldered J1 on rear of screen, then confirmed firmware and touch input, using the breakout board and rainbow wires. Price = FREE - Yay Roland! :)

5th: Ordered motionboards. Price = ~$130 for 20 PCBs.

6th: Acquiring components to solder motionboards.

7th: Order Stepper Motors to confirm motionboards, using power supply I already have.

8th: Order EVO3 pulseboards.

9th: Order components to solder pulseboards.

10th: Order Power Supplies, Wires, Case, etc.

11th: Order 3D-printed parts, including the G-EDM v1 toolhead.

12th: Order an "Aluminum-Foil" Enclosure for RF shielding.

13th: Order gantry plate. (I'm guessing that's the right term.)

14th: Order Aluminum Extrusions.

15th: Build plexiglass tank with filters.

16th: Install extraction fan.

17th: Buy dielectric fluid.

18th: Calibrate Machine and start testing!

I think that's everything! I hope to get this done sometime this Summer, if my budget and health will allow it.

  Are you sure? yes | no

gedm-dev wrote 12/29/2024 at 11:14 point

Sounds like a plan.

  Are you sure? yes | no

gedm-dev wrote 12/29/2024 at 12:03 point

PS: I still like the cube. It feels rock solid while the EVOIII board does flex easy due to the cutouts. But for me they are too much work building compared to the new board. If you want the raw cube PCBs I would give them away for free if you pay the shipment.

  Are you sure? yes | no

jb333 wrote 12/31/2024 at 23:03 point

WOW!!! That's Extremely Generous! :) 

I just sent you an e-mail.

  Are you sure? yes | no

yfsnd wrote 06/11/2024 at 05:38 point

Very nice design! I am very interested. Have you shared the circuit schematics and the PCB files? Where can I check them?

  Are you sure? yes | no

Mike K wrote 03/13/2024 at 13:31 point

Amazing work. I am waiting for the PCB files to build and test one myself. I had made an edm machine in the past but my spark wasnt strong enough. Hopefully this board works in my machine.

  Are you sure? yes | no

dgourlay wrote 11/22/2023 at 22:44 point

this is GREAT!  I just saw your youtube.  Excellent work!

  Are you sure? yes | no

gedm-dev wrote 11/23/2023 at 07:41 point

Thanks. Wish it would be finished soon. But still so much to do.

  Are you sure? yes | no

H wrote 10/06/2023 at 00:59 point

Looks amazing so far! As far as I know there haven't been any other EDM makers that were willing to share their files, so thanks (even though you're not to that point yet)!

  Are you sure? yes | no

gedm-dev wrote 10/06/2023 at 02:19 point

The only thing unreleased are the PCBs and people may be surprised how simple they actually are. The ESP motion controller is jsut a breakout board that makes life easier. The pulseboard is a little more complex but still pretty basic. At some point they will be available.

  Are you sure? yes | no

H wrote 10/06/2023 at 23:51 point

Oh dam I should look more into this. I don't need the motion board since I already have individual drivers + breakout boards that are easy to wire

  Are you sure? yes | no

gedm-dev wrote 10/07/2023 at 00:34 point

The breakoutboard is very useful. It extends the SPI Mosi/MISO/CLK pins and allows to wire the display without hacking 3to1 jumper wires.

  Are you sure? yes | no

Jimmy wrote 10/04/2023 at 08:44 point

Does your GRBL version backtrack on short?

  Are you sure? yes | no

gedm-dev wrote 10/05/2023 at 07:26 point

Yes. The planner of grbl was replaced with one that can move back in history.

  Are you sure? yes | no

Piotr wrote 08/10/2023 at 00:00 point

How feedback circuit looks like? I want to build similar machine and have problem in this part.

  Are you sure? yes | no

gedm-dev wrote 08/10/2023 at 01:31 point

The feedback is just a voltage divider. that outputs between 0 and 2.8v depending on the voltage drop created. Everything else happens at software level.

  Are you sure? yes | no

joram wrote 07/12/2023 at 08:48 point

This looks interesting. Is the esp32 code already in a sharable state?

  Are you sure? yes | no

gedm-dev wrote 07/12/2023 at 12:49 point

Almost. I just need to confirm that the Y axis works too. Currently building the axis. Should be ready soon.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates