bdring / 6-pack_cnc_controller Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
I am just about ready to sell some controllers. I did a small test production that went perfectly. I have about 15 to sell before I order more. I have all of the modules except the 5V Output (PWM, Lasers Etc). That is due soon. There was a delay on one of the parts.
I want to sell to people who have built a machine successfully before and have some experience with Grbl_ESP32. The goal is to get them into use as fast as possible. The hardware is pretty solid, but the firmware might be tweaked a bit. Expect to have to load the firmware a few times.
If you are interested reply to this post. It would help if you give some details about how you plan to use it and the modules you would need.
The price will be released soon, but expect the main controller to coast in the $40 - $50 range and the modules are $10-$20 range depending on the complexity.
Could you please post the source files for the external stepper motor driver jumper board?
This references issue #5
About the Quad_Basic_Input_v1p1 is it outputting 5V directly to the ESP32 inputs, is that right?
everything seems to be running fine, but i've noticed that the 2nd motor socket (y-axis) seems run unusually warm. even when just powered on and not used it seems to 5-10 degrees warmer. intuitively that doesn't seem normal, what might cause that.
i'm using tmc-5160 drivers on all three (bigtreetech)
Does this function already exist in the program?
hello mr. Bdring, thank you for the amazing program you created, I hope that if you have spare time you can give examples of pins to use on the OpenPNP board, or maybe someone has used it for openpnp.
Thanks.
Hello there!
I've been following that project for a while now and I was wondering for my next build if it would be possible to combine a rather large cnc gantry system and instead of a classical laser head, use a galvo / galvanometer head or DIY servo / stepper motor module to increase drastically the engraving speed.
With all the updates you're bringing to the table and this dev board adding support for more motor types I was wondering if it is buildable? How does the GRBL could be managed to enable the addition of another X/Y axis working on a portion of the total workspace?
This could be huge step for the DIY CNC world!
Anyway thank you for all your work, this is a blessing for all of us!
Hi Bart,
i live the UK so the postage from tindie is pretty expensive, so i thought i would get it made and have maybe with the minimum orders of 5 usually, id have spare for my other projects.
Please can you let me know where you had them made? did you assemble then your self? i searched on PCBWay but it was not there
thanks in advance!
Simon
for the external stepper module it is easier to solder the inner voltage selection pins first, may be a helpful note to add to those instructions.
for the Socket Pin Number Mapping if the default pins are unlikely to change it would be helpful to add them to the list and for them to match the order on the board. for example:
// #4 GPIO_NUM_34 (input only) default: A_LIMIT_PIN
// #3 GPIO_NUM_35 (input only) default: Z_LIMIT_PIN
// #2 GPIO_NUM_32 default: Y_LIMIT_PIN
// #1 GPIO_NUM_33 default: X_LIMIT_PIN
also the i2s_out_xyzabc.h is different, it isn't clear why but it would be nice if it matched or if it was clear what the difference was intended for.
// Socket #1
// #1 GPIO_NUM_33 default: C_LIMIT_PIN
// #2 GPIO_NUM_32 default: B_LIMIT_PIN
// #3 GPIO_NUM_35 (input only) default: A_LIMIT_PIN
// #4 GPIO_NUM_34 (input only) default: Z_LIMIT_PIN
I'm new to this process, so helpful pointers are appreciated.
CHANGES:
Added captions to the photos 'A fully populated board:' and 'A bare board (as shipped, before installation of the CNC I/O Module Supports which are included):'.
Added links to /bdring/Grbl_Esp32 and /bdring/FluidNC.
Added missing return before '(5) CNC I/O Modules'.
Replaced 'Currently there are (5) modules available.' with 'Currently there are (9) modules available, listed here'.
Added feature '5v DC power supply'.
Added 'For more detail, see the Wiki and the video A New Universal CNC Controller for Grbl_ESP32.'
Misc formatting improvements.
ADDITIONAL:
I would find some hints about specs for Micro SD Card helpful: appropriate capacity, is any formatting required?
When it says 'Trinamic SPI type driver modules. These are the ultra quiet', does 'quiet' mean sound, or electrically, or...?
Edited markdown file here:
https://github.com/Longus/6-Pack_CNC_Controller/blob/main/README.md
An input module that could connect to something like this:
Requires lots of inputs, so probably needs an I2C expander or something like.
Hi @bdring
Can you share schematic and pcb layout of your latest 6 pack board? As I can't open files given. I use EasyEDA for pcb designing. I want to make some changes as per my machine and taste.
One thing I've been thinking about a lot is the issues I'm having with tool changes and top probing. You usually want to have 2 things exact: (1) the tool position and (2) the piece.
I've basically came up with this idea:
For (1) you can use a simple probe fixed at the homing spot. When you go down, the probe will hit and because it's fixed, you know the z coordinate.
For (2) you can use something like a servo with a switch. Actually some people have reported very good z-indexing with this approach, it's quite easy to DIY, quite resilient to dust and easy to place next to a spindle.
With these two things, it should be possible to do a proper mill & any tool change. First, you home and move down until you hit the probe, that's Z1. Before milling, you basically put the spindle above the piece, the CNC can move a bit to where the servo is, go down until its hit and you know Z2. Next, start milling till the first tool change. No need to move manually down anymore, because we already know where the piece is.
Tool changes can now be done quite easily by a delay, by storing the X/Y coords, changing the tool, homing, probing (Z3), moving back up and moving back to X/Y. With the difference between Z2 and Z3, the software can compensate for the difference and do the rest.
What does this has to do with the controller? Obviously, a lot has to happen in software, but the hardware needs to support a 'servo with a probe switch on a stick', as well as a second probe. Not sure how hard that's going to be...
Here is a simple CNC I/O Module to add a couple of RC servos or a BESC (Brushless Electronic Speed Controller).
It has a switch to allow the servos to be powered from the controller's 5V (limited current) or an external power source. Some bigger servos like a higher voltage, so that could be provided through the terminal block. Grbl_ESP32 also supports BESC based spindles, so you could use this module for that as well.
There are other ways to get more servos via I2C PWM controllers, but this is a just a simple one that requires no changes to the firmware.
I have been using 5 volt devices on ESP32 for years no issue at all and already in 2016 it is confirmed by Espressif.
The ESP32 does actually have an internal snapback circuit that protects it from overvoltage.
The Wiki should address this part in sections that says the opposite.
From an old tread at Hackaday
https://hackaday.com/2016/07/28/ask-hackaday-is-the-esp8266-5v-tolerant/
The facebook group on ESP8266 where the confirmation is made by Espressif CEO Mr Teo Swee Ann
https://www.facebook.com/groups/1499045113679103/
search for Teo Swee Ann in the group
Teo Swee Ann
"i can reply officially here: it is 5V tolerant at the IO. while the supply voltage is at 3.3V."
Teo Swee Ann
"Baoshi Zhu ESP32 and ESP8285 are both 5V tolerant as well."
Teo Swee Ann
"but for ESP32, it is a very complicated matter. it supports 1.8V operations too... i don't know where to start..."
Teo Swee Ann
"the reason is too many users took it to mean that the chip is 5 V tolerant. When we say 5 V tolerant, we are only referring to the IOs. So some users mistook this to make that they can power the chip entirely off the 5 V supply. The correct usage is to use 5 V open for these 5 V tolerant pins, and only via only drain configuration."
Regards
"Onkel David now with a 6-pack"
In your schematic, there´s a jumper (J22) for logic VCC.
This is the same VCC for the stepper logic and the shift registers. If I´m right, this leads to a problem:
The datasheet of the 74AHCT595 says it needs a VCC of 4.5 to 5V. Only the 74AHC595 is compatible with 2 to 5V VCC, but it needs 3,85V logic voltage for a high input.
Is it possible to use, the TMC2130 for example, with 5V logic voltage (Step, Dir, En, Driver Logic VCC) but 3.3V on SPI and DIAG? Or maybe only Step, Dir and En with 5V and Driver Logic VCC at 3.3V? This way the 74AHCT595 could always be supplied with 5V.
I´m asking because I want to use external drives with 5V logic combined with one or two TMC2130´s.
In my case I could just put some level shifting between shift register and the stepper´s Step, Dir and En lines, but I wonder if it is necessary.
I apologize if this is not the correct place to ask these questions. If not, please direct me.
I'm looking to get one of these nifty controllers for an upcoming MPCNC build. I'm in the design phase and I'm trying to get a handle on wiring needs and such. Consider me fairly proficient when it comes to micro controllers/programming/electrical. The questions:
Any help would be appreciated including machine configurations, tips, or criticisms.
Hello,
First of all, many thanks for your great job !
I have the V1p5 board version and I have a problem to find the AP64350SP-13 component (it's out of stock or with expensive shipping cost) and I don't find any good replacement. In the V1p8, you use the TPS54360DDAR instead, which looks great...but once again, it's out of stock. I think I found a valid replacement : TPS54560DDAR.
So for now, as AP64350SP-13 is not replaceable by TPS54560DDAR, I can order the V1p8 or create a dirty specific power supply module I will plug on FAN connector (with VMot and 5V) to supply 5V from VMot.
But maybe the best answer is to convert the power supply part to a removable (and upgradable) power supply module ?
Personally I'd like to be able to run my motors at 36v or 48v and I know there are TMC5160 drivers that support this, but the 6-Pack is limited by the onboard VR and a few other components.
What do you think about splitting VMOT into two rails, one rails specifically for the stepper drivers, another for the rest of board/aux power like fans, etc. This would allow the board to be powered by say, 12v which would allow the cheaper/easier to find fans, and the steppers could be up to 36v without any other changes to the board. It would also eliminate some noise on the AUX, as you could run separate power supplies (a single power supply can still power both).
This module plugs into a driver socket to redirect the signals to the terminal block. The shift registers have the power to driver the opto couplers. They should be run with the 5V Vcc jumper installed.
Some external drivers require the common to be Gnd, some require 5V and most don't care. The jumper allows you to select.
Hello, I have a older problem with a gcodefile where Bart give me before a reply but after a computer crash i do not find the solution any more. Is it possible to point me back on the rails. i remember i must modify some file before compiling the hole thing.
Gcode file:
disk.txt
Thank you in advance
I prototyped a bit of a new case concept for the 6 Pack. I wanted to keep the flexible, modular concept. If you change out a module, you shouldn't need to redesign the case or even disassemble it.
This uses a base and a partial cover for the motherboard. There would then be individual covers for each module. The design is far from complete, but I printed a few pieces, to get the feel for it. There would be a mounting flange along the bottom and possibly some mounting features for the module covers.
Any thoughts or ideas are appreciated.
The part seems to be available @ Mouser only, which I can't purchase from. Is there any more common alternative available?
Thanks
The modules are typically supported with a single 11mm threaded standoff. It works fine, but 11mm spacers are hard to get. These (2) 3D printed parts work a little better and provide a nice finished edge.
https://github.com/bdring/6-Pack_CNC_Controller/tree/master/3D_Files
I finished the design for a high current FET module.
This uses an external supply hooked up to the terminal block in the middle of the board. The removable terminal block can be mounted for vertical entry of the wires or horizontally from the right or left.
The FETs are On Semiconductor NCV8403A rated at 42V and 15A. The terminal blocks are rated to 6A per terminal. The FETs have integrated diodes to protect them on inductive loads. There are 4 independent channels with LEDs to show the status of each channel.
This would be ideal for driving solenoids and valves.
I will be ordering a batch within the next few days, along with the other 2 recent designs.
Great board.
Im looking at servo drives (industrial ones). They basically are closed loop, having the stepper driver built in, can also operate at higher voltage or ac.
While its pretty straight forward to not use the differential drive, it would be great to have a plug in differential driver, and also support the alarm pin from the motor.
https://www.aliexpress.com/item/32714727077.html
Is the example of the motor Im talking about.
I could do this, but I use altium, and dont think that matches with your flow.
Espesially when running plasma cutters, or bigger cnc this would be great. (Of course need to mount the 6 pack in a metal box.
Happy to help on this.
This might be a bit of a frivolous idea but I was thinking it might be valuable to track hardware component usage over it's lifetime. Something simple like a step counter or time based logging maybe? The idea being it could give you a metric to look back at if something fails.
I have a small 12V laser I've mounted on my gantry and I want to know if it's possible to utilize the relay module installed on slot 3 of my 6 pack to control the ON/OFF off my laser. I'd like it to work with Gcode that's written with for a laser. I don't care about laser strength in terms of the 0 to 255 scale.
I see the example code:
// Relay module as spindle on CNC I/O Module socket #2
#define SPINDLE_TYPE SpindleType::RELAY // default, check actual $Spindle/Type Setting
#define SPINDLE_OUTPUT_PIN GPIO_NUM_2 // relay as spindle on module socket #2
// Relay module as spindle on CNC I/O Module socket #3
#define SPINDLE_TYPE SpindleType::RELAY // default, check actual $Spindle/Type Setting
#define SPINDLE_OUTPUT_PIN GPIO_NUM_26 // relay as spindle on module socket #3
// Relay module as Mist on CNC I/O Module socket #4
#define COOLANT_MIST_PIN GPIO_NUM_14 // Relay for Mist on module socket #4
However I'm questioning if it's possible to drive the laser with Gcode written for a laser. How would this be done? Thanks.
This is more of a question than a suggestion because I'm not that familiar with electronics or the vision for the CNC modules. It also might be a low priority, version 2 or 3 consideration because I suspect it involves a lot of rework. With that said, let me explain what I'm doing and my observation about the current orientation.
I'm taking a small stab at designing a 3D printed fan enclosure which got me thinking about the thermals. My high level plan is a top-mounted fan blowing down over the board with dedicated ducting to channel air more directly towards the stepper drivers. With respect to the CNC modules, I'm thinking I can provide similar ducting for bays 2, 3, and 5 while reserving bays 1 and 4 for lower current applications like sensors. Based on the universal/prototyping nature of the board, I'm thinking it might be useful to add some butterfly valves to provide selective granularity over which drivers/modules receive the most cooling.
Now, I notice the alignment of the pin headers currently forms a wall from the center, effectively blocking the underside of the boards. I'm wondering if it would be beneficial to reorient the headers 90 degrees (see below, green proposed, red existing) to allow for air flow beneath the boards. This would provide both the option to allow air flow for active cooling, or to block it off to increase airflow elsewhere.
This primarily comes down to one question: How likely do you think it is that the underside of the boards will require cooling? For example, the TMC2208's recommend this type of cooling (see below). I'm not sure how much of that is a function of space constraints, but "low-profile" CNC modules could be desirable for some applications.
If you don't envision the underside ever needing cooling, the current orientation is actually quite smart, in which case bravo!!
The MP1584EN power supply IC obsolete. I have been using it for years and did not notice it until recently. My PCB supplier has no trouble getting them though.
I have a test controller on order with the Diodes Inc AP64350SP-13. It is very close in capability and has a higher max input voltage. I will switch to that if it works out.
What is involved in getting a 6-36V or 10-30V inductive proximity sensor to work correctly?
I have a 12V power supply I can use to power the sensor, and then I would need a resistor or other electronics of some type to lower the voltage for the input of the esp32?
Thanks,
Hi, I am converting over from Bart's MPCNC specific controller board to the six pack.
I just want to verify before powering up, the 6 pack requires two power inputs, one green input terminal for the board labeled VMOT + and GND (12-24VDC), and a micro USB input to power up the ESP-32 (5VDC)?
A module to interface to an LCD display, for example:
It needs 3 input pins for the rotary encoder and its associated pushbutton, 2 output-only pins for the display, and one bidirectional pin for the display. Optionally, there can be another output pin for the beeper, and another input pin for a pushbutton switch that is conventionally used for system reset.
Lots of software work would be necessary to use something like this.
There are similar displays (see Reprap Discount Smart Controller) that need more pins - dual IDC cables instead of the one - because they run the display controller in 4-bit-data mode, and they also have an SD card slot. The external SD card slot does have a mounting advantage, in that the slot can be located in a more convenient location. That advantage is mitigated be the WebUI ability to upload files to SD from a remote computer.
There are also touchscreen displays that have an onboard STM chip , that potentially could be used without much software work on the ESP end. The on-board micro does all the menu stuff, and sends commands back to the gcode controller over an extra serial port. Unfortunately they send Marlin commands, so it might be necessary to hack their firmware.
Mostly want to make sure you're aware of @odriverobotics closed loop BLDC motor controller project--feel free to close.
My read of ODrive's current accessibility is closer to EE pastime than ambitious maker, and it seems to me that your motion controller could flatten that learning curve. Your motion controller with the momentum of grbl on more capable silicon and their motor controller could prove mutually beneficial and broaden the market for both. AFAICT there's a huge gap between grbl and centroid, and it looks like an opening for the the title of de facto DIY closed loop/CNC electronics toolstack.
I gather from posts on their community forum that ODrive is working on V4 hardware now and it is a more modular design (undoubtedly related to the volume of demands for n axes, where n != 2). There was an experimental PR started in 2017 cribbing grbl's gcode in & motion planner, but it petered out and was recently closed. Seems to me like that's just good focus/avoiding mission creep, but also signals openness/need for a motion controller to bridge from gcode to motor commands.
To be clear, the 6 Pack is already marginally compatible since ODrive is able to interface via step/dir, but they're quite clear about step/dir being the least desirable option. As of ODrive 3.6 alternatives are native commands and a CAN skeleton; I reckon their CAN is likely to be fleshed out. Their documentation here: https://docs.odriverobotics.com/can-protocol
FWIW the latest revisions of BTTs copy (S42B V2 & S57B V2) of the SmartStepper also sports CAN, so the seeds for demand of a CANable DIY motion controller are planted...
Regardless, great work, and thanks for sharing! I'm very much considering ordering a 6 Pack, because I've been running a shoehorned (heaterless, just need 3 axes) 3DP board w/ Marlin HALd on LPC1768, and after lots of attention on the mechanics motion control is increasingly a suspect wrt some positioning issues I've been trying to iron out--consistently good precision but inconsistent accuracy, and not improved by low velocity or v^2.
A new version has been designed, added to the repo and 10 samples ordered.
The CNC I/O Modules idea is defined here. More details will follow. 5 different test modules were ordered.
Note: This is still untested and I do not recommend making your own yet.
Testing of version 1.0 went great. There were no real issues with the hardware. I made a few small tweaks and released 1.1 for a small production batch.
POSSIBLE TO USE I2S STEAM ONLY STEP ENABLE AND STEP DIRECTION, AND ALL STEP PLUS PIN ARE USE DIRECT?
I needed to test a new DC-DC power supply, so I decided to make a mini controller at the same time.
This is tiny controller that uses CNC I/O Modules. It is about the size of an Arduino Uno. It has sockets for 3 axes and 3 modules. Other than the power supply, there is no active circuitry on the board. It took only about an hour to design. It shows how the modular concept allows you to quickly prototype a controller with professional level accessory support.
Hello everybody,
I wanted to drive a brushless motor with the 6-Pack CNC Controller and installed RC Servo/BESC CNC I/O Module on socket #4.
I programmed the BESC with a servo tester and then
wanted to drive it with the controller, but it didn't work.
The motor was only beeping and not turning, so I compared the PWM signals of the servo tester and the RC Servo/BESC CNC I/O Module with the scope. I found out that GPIO14 delivered the correct pulse widths at commands S0 (1ms) and S1000 (2ms), but the voltage level is about factor 10 too low. The voltage level of the pulses at GPIO14 are just 0.56V, at the servo tester they are 5V.
Does anybody know why the ESP32 delivers such a low voltage, shouldn't it be 3.3V?
How can I fix this?
Thanks and best regards,
Dan
This allows you to control Dynamixel servos. Dynamixel servos are on a bus, so you can connect a lot of them. I put two connectors, because you might have servos on either side of the controller. If your controller VMot is in the Dynamixel power range, you can use that. There is also an external connection to supply that voltage.
Here is a video of a delta running these servos and Grbl_ESP32
I also added a single RC Servo connector, because I had an extra I/O pin.
I'll probably wait to order this until I can join it with another order to save on shipping.
Would it be possible to upgrade the end stop module to support 10-30V inductive sensors (ideally both PNP and NPN)?
I added a folder for machine definitions. They could be a helpful reference.
https://github.com/bdring/6-Pack_CNC_Controller/blob/master/machine_defs
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.