...
The G-EDM is an electrical discharge machine that supports sinker EDM, EDM engraving, EDM drilling and Wire EDM operations. #Drahterodieren
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
...
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 »
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.
Random images showing the build progress for the EVOIII prototype.
Did a quick test of all the features on the new motionboard and it seems to work.
Looks pretty nice. Display in this case is 2.8" ILI9341 SPI Touch XPT chip
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.
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.
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
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
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.
Create an account to leave a comment. Already have an account? Log In.
You need the pulseboard too. Go for the EVOIII board as it is much easier to setup compared to the evoII cube.
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.
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.
WOW!!! That's Extremely Generous! :)
I just sent you an e-mail.
Very nice design! I am very interested. Have you shared the circuit schematics and the PCB files? Where can I check them?
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.
Thanks. Wish it would be finished soon. But still so much to do.
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)!
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.
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
The breakoutboard is very useful. It extends the SPI Mosi/MISO/CLK pins and allows to wire the display without hacking 3to1 jumper wires.
Yes. The planner of grbl was replaced with one that can move back in history.
How feedback circuit looks like? I want to build similar machine and have problem in this part.
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.
This looks interesting. Is the esp32 code already in a sharable state?
Almost. I just need to confirm that the Y axis works too. Currently building the axis. Should be ready soon.
Become a member to follow this project and never miss any updates
Just placed my order with PCBWay for motion boards! :)