Not sure where the ESP would limit you, in my case it is the shift registers who are limited to <6MHz bit clock. In the screenshot up there you can see 185kHz for the yellow channel, but that is for word clock. Bit clock is 32x higher, 5.92MHz. If you are using a single data output it can be updated at this rate (actually higher since you are not using the shifter), which means that you wouldby lhartmann - Developers
I evolved a little on the software side, very little in the hardware. - created a subchannel driver for slower outrputs (direction, enables, led lighting) that can change only once per move. This let's me use up to 30 outputs for fast outputs (pwm, step, delta-sigma modulators). - wrote modular motion drivers which should allow for up to 30 steppers (bresenham line drawing and acceleration). Tby lhartmann - Developers
Solved: I mixed up row and column indexes while looking for a suitable row for swapping... function m4inv_solve(i,mx) = !m4inv_zero(mx[ i ]) ? m4inv_solve2(i, mx ) : i+1<4 && !m4inv_zero(mx[ i ]) ? m4inv_solve2(i, m4inv_rowswap(i,i+1,mx)) : i+2<4 && !m4inv_zero(mx[ i ]) ? m4inv_solve2(i, m4inv_rowswap(i,i+2,mx)) :by lhartmann - OpenSCAD
Sometime ago I wrote a small set of functions for construction and use transformation matrices, including matrix inversion. Here is the code: Matrix inversion code works most of the time, except I just detected a bug I can not solve. A simple dual rotation matrix, 90º around Y then 90º around Z, is yielding nan+inf on all elements of the inverse. Works nicely for other angles, though... M = mby lhartmann - OpenSCAD
To find out what types of display configuration are supported check the configuration tool or file for your particular firmware. There will be pointers to some display types. As for making pcbs on a 3D printer it is definitely possible. I believe this is the sanest, most reliable process: - completely cover the pcb in permanent marker ink - strap a very sharp nail/needle to the print head -by lhartmann - Let's design something! (I've got an idea ...)
A princípio sim, os drivers A4988 funcionam com motores de passo a 4 fios. Só cuidado com a correte pois os seus motores são de 0.7A, e a maioria das impressoras usa 1A. Você pode ajustar a corrente por meio de um potenciômetro na placa de cada driver, mas tem que ver no manual do A4988 qual tensão colocar pra definir em 0.7A.by lhartmann - Brazil, São Paulo RUG
Envy... Make sure you feed engineering porn to YouTube as you get projects done.by lhartmann - CNC Routers, Mills, and Hybrid RepRapping
Yes, the reflection is enough to cause permanent damage. No, sunglasses are not offering any protection. Even with correct glasses you are not supposed to look at the laser dot, they provide only protection against short accidental exposure. Safest option is to buy a $5 Webcam, enclose the laser in a black box, and never directly look at it.by lhartmann - Laser Cutter Working Group
I use a small piece of EVA foam taped to the side of the reel mount, making sure it touches the reel lightly in order to create a little drag. This way the filament tension is not enough to unravel it, but the drag is not enough to block it either. I would suggest you first tape or glue a piece of foam in a similar setup, place the reel on the support, and then feed it into the printer.by lhartmann - Mechanics
I have accumulated so many components over the last 15 years that I had to work a decent system to find them. I ended up buying 10 boxes with 25 divisions each, plus a lot of shoe box sized plastic boxes, stored everything there and created a Google Spreadsheet to keep track of what is where. This is simple enough, and helps me keep track of everything. I named large boxes S01..S12, the dividedby lhartmann - Developers
That's an invalid preprocessing directive. :-) First comment it out and try to compile. If it complains that PORTD is undefined somewhere else then change it to #define and look for other #defines, like PORTC, to see what exactly is supposed to be there.by lhartmann - Controllers
Stack the five drivers, run DIR and ENABLE in parallel, use independent STEP signals. Same thing for the demux, use it to route the STEP signals, not the ENABLEs. 3 gpio driving the selector lines, one gpio driving the demux enable, demux outputs driving the STEP pins of each driver. This way all motors stay powered up.by lhartmann - Developers
While shapeoko and xcarve look phenomenal, both use belt drives. Precision will be limited, but good for wood and plastics. Just do not expect fine traces on printed circuit boards, maybe 0.5mm traces with some luck. The Chinese ones use ball screws which ideally provide way better accuracy and precision, but they are Chinese screws, so who knows? You should be able to use the original Chinese cby lhartmann - CNC Routers, Mills, and Hybrid RepRapping
Full stepping might work. Microstepping positions will not hold, for the detent torque will pull the motor out of it. Sharing the direction bits, and possibly using a demux like 74hc138, may be more reliable for up to 8 steppers on 5 gpio.by lhartmann - Developers
There is also the possibility that CoreXY printers are less problematic, therefore less people and up looking for help.by lhartmann - CoreXY Machines
It varies wildly according to slicing settings, so it can only be done accurately after you have gcode ready. Other than that you could probably use a linear approach multiplying several parameters by constant gains and adding them up, e.g.: K0*1 + K1*height + K2*surface area + K3*volume + K4*XY plane protection area + ... Figuring out the K gains via least-squares fitting of several sampledby lhartmann - Developers
How long does a brass nozzle usually lasts? I've got my printer running every now and then for about two years now, and I'm still in my first nozzle...by lhartmann - Let's design something! (I've got an idea ...)
Yes, that's what I mean. A rotating bed is completely possible, just make sure to design something that allows fine-tuning of the YZ alignment. Moving the extruder through a slotted hole sounds doable, as long as you don't move it by hand. Using a couple of fine pitched screws pushing the extruder against each other should provide reasonably good positioning. Screw ===> extruder <=== Screby lhartmann - Mechanics
Rotating beds are usually painful to get the center aligned properly. Maybe you should use a sliding bed like printrbot simple. Your YZ axis idea is nice! I would just suggest you replace the bottom two rods by a hinge-like plate, this would make your Extruder carriage way more stable.by lhartmann - Mechanics
You will probably need to modify your firmware for that. I don't know if any of the current firmwares has spi targeted M codes in them. Otherwise you may be able to bitbang spi over a few gpio, using existing M codes for each level change. While this is terribly inefficient and slow, you will probably change fan states once every several seconds, so it should be a functional solution.by lhartmann - Let's design something! (I've got an idea ...)
Do you need simple on/off or pwm control? On/off = use shift registers as IO expanders. If you can use the same pwm for all enabled fans then use shift registers such as 74hc595 to enable individual fans, and have the pwm triggering OE pin. This will cause the outputs to go high z while the pwm is high. A lot of pull down resistors then ensure the fans are off during high z. If you want 50by lhartmann - Let's design something! (I've got an idea ...)
I saw a video review of a commercial printer a while ago, too bad I can't remember which, that used electrical contact between the nozzle and 4 washers used to hold the bed corners. To ensure the nozzle was clean the printed swiped it across some kind of brush coupled to the edge of the print bed. Seems like a nice solution.by lhartmann - Let's design something! (I've got an idea ...)
Do you use Openscad? Import the object. Align it to the XY plane. Minkowski it with a cylinder(r=SMALL, h=BIG, center=true) so as to create a pseudo extrusion. This will make the projection of the horse show at Z=0, or you get no legs. Finally create a cube(, center=true) with the size of your stencil frame an subtract the horse from it. Got it? I am not at my computer right now, so I can'tby lhartmann - Let's design something! (I've got an idea ...)
I saw some on the Marlin firmware configuration file. Search for @section lcd In that section you will find several supported control panels, most of them opensource.by lhartmann - Developers
You should probably look into the already available LCD+Keyboard interfaces. They display way more interesting information than the raw GCODE lines...by lhartmann - Developers
The slowest SD cards are expected to be able run SPI at 25MHz. Faster cards can go over 100MHz. This is still probably slower than the original duet, but we are not trying to make the duet board faster. This is the duet web interface for other boards, usually based on ATMEGA microcontrollers. This means we are trying to get around the sluggish 115.2kb/s assynchronous serial between ESP and ATMEby lhartmann - Developers
As a matter of fact I suggested M22 just cause I found it while looking for M21. :-) I have never "safely removed" (M22) the SD from a printer before. I just pull it out, write new files, and plug it back on the printer. After hundreds of cycles it is still working fine. I believe that, as fas as the printer is not currently writing anything, we should be fine simply taking over the card withoutby lhartmann - Developers
It may be possible to achieve faster upload speed if we let the ESP8266 temporarily take control over the SD from the printer. Theoretically ESP8266 can do 40Mb/s on the SPI (~4MB/s). Some other bottleneck (wifi, SD card or CPU power) will probably limit the upload below that point. Here is the idea: HARDWARE Connect SD card directly to the ESP8266, as in the SD WebServer example. The same SDby lhartmann - Developers
There are FreeRTOS ports for ESP8266, and apparently there is already an official FreeRTOS SDK released for the ESP32... I guess developing/porting firmware for FreeRTOS could solve several issues at once: - Legacy support (ESP8266). - Future proofing (ESP32). - Realtime versus TCP/IP stack concerns. - Potentially portable to other CPUs supported by FreeRTOS.by lhartmann - Developers
Quoteo_lampeHow would you read thermistors and where would you translate the gcode? As far as I know ESP8266 has a single analog input, so some kind of mux would be required: 1 - Maybe a CMOS analog mux IC, probably the best option. 2 - Maybe use a GPIO driving the low-side of each thermistor, and a single resistor pulling all thermistors up. Something like a Y upside-down. Switching the GPIOs bby lhartmann - Developers