Strange marks on engraving surfaces

What would you suggest to do? Use ESP32?
I have all components (DM542’s and LPS) on 5V logic, ESP can output max 3.3V.
I was testing some time ago ESP32 with TXS0108E (level shifter), but it was not giving enough amps (DM542 needs at least 10mA to react) and steering is impossible that way. Could you please tell me what is the best budget solution?

Since Arduino has 5V logic I was trying to avoid ESP32 because of 3.3V…
But it seems like it is necessary to use ESP32 due to exceeding the possibilities my poor Arduino.
So, I’m giving up on Arduino on my laser… I will try to searach for information, how to transform 3,3V PWM into 5V, same with DIR and PUL, maybe you could suggest solution?

Thanks everybody for help. :smiley:

The TXS0108E data sheet says each output pin can handle 50 mA continuous (with an overall power pin limit of 100 mA), so it should be capable of driving two or three 10 mA outputs.

How did the rest of the circuit limit the current?

If you wish to change processors, I’d suggest that you use a DLC32, there are no issues with it’s output being ttl compatible. It’s also very cheap. I would also bet you will have the same issue with any controller.


I have tried to use the software you suggested but can’t really get the results you show. Probably because I can’t really drive it. That makes it difficult for me to feel confident with your diagnosis of what I’m seeing on your posts, not to mention it makes no sense a controller would/could operation this way. If you’ve ever programmed one of these for pwm, it’s not so simple to get that output.

Although software doesn’t break and may have bugs, hardware does break. All of these indicate a hardware failure to me, not a firmware of software issue, so I think you’re chasing something that may not exist. If it was software I’d expect it to repeat with some kind of interval, not randomly like we see.

You’ve done all that’s possible, besides changing the laser module, including multiple controllers using proven software, I think you need to look elsewhere.

You’re also complicating the simplest of operations, it shouldn’t matter what the host computer is, loading an Arduino, via a Mac, Linux or variations of Windows software has/is done thousands of times a day without issue and it’s occurring to you every time with different hardware and software … very suspect. Hundreds of thousand, if not millions of the of these Arduino controllers are driving laser machines with no issues, yet you’ve tried a number of them with the same type failure, even disconnected.

I understand what you see on your software of the larger pwm duration, but it’s occurring on multiple platforms without the laser module, so it’s even more suspect that the waveform analyzing software isn’t being interpreted correctly or something else is being picked up.

I’ve used scopes and some very expensive waveform (> $100,000) analyzers for decades and this interpretation with parts being replaced like you have done makes me very uncomfortable. It’s easy to mis interpret some of these.

I don’t know what to advise at this point, which indicates a hardware issue, not a firmware or software issues and certainly not the loading of the Arduino code with different platforms as you suspect.

Since you changed out the control boards multiple times, I suggest you look elsewhere as you are getting nowhere now.


You’ve identified one pulse that is longer, yet this occurs during one period or 1mS (1kHz) and would not make a mark as long as the ones in your output. Take the period and compare it to your head speed, I think you’ll find any correlation unlikely. @ednisley can check my math, but if you’re running 10mm/s (600mm/m) the aberrant pulse would only exist for speed/period or 10/1000 (1mS period relates to 1000kHz) or 0.01 mm in length… I doubt you could even see it. Even at 100mm/s (6000mm/m) the length would only be 0.1mm or 100/1000.

I’ll follow this thread, but I think you’ve exhausted the possibility of a controller and/or firmware…

Of course this is my person view.

Best of luck

:smile_cat:

I am agreed with Jack: you’ve tried many things and the same result. What are you keeping the same in your setup?
I would not blame tiny 8-bit processor. Precompiled HEX from GitHub is known and used by many without any hint of the problem. I do not believe Atmel (if original) is at fault.

Another observation: Your LSA shows 1.748mSec period, that is 572Hz. Isn’t it too slow?
Default should be 1KHz (originally intended for spindle motor). How did you end up with lower frequency? Why don’t you try to set higher PWM frequency? $33. Check what is recommended for your laser.

Some lasers recommend 100KHz!

It is a possibility with such low frequency that timer for PWM can be overflown, I do not believe that GRBL code has protection against it. You just have to stay within reasonable range.

I looked at his waveform capture and it seems to indicate a ~1mS period (1kHz) for the pwm…

That’s why I think it would be hard to tell if one pwm on cycle was too long at any reasonable speed. I looked at the Arduino and the DLC32 and don’t see this… I’m using a scope. I don’t even have an Arduino anymore for a controller. 30 year old controllers with limited memory have a place, but I think it’s relatively slow and memory limited for today’s applications.

It also leads me to believe he has a bad laser module as there isn’t much else that would cause this randomly.

10uS is pretty fast, even my Ruida only runs at 50uS or 20kHz.

I know many modules I’ve looked at limit it to a much lower pwm control period. It would be nice to know which allow such a quick period … do you have a link? … always willing to learn.

My NEJE for my 5.5W laser module specifies

PWM Input: VPP(3.3-12V), Recomend 1KHz

:smile_cat:

But I suspect few use an ATmega 328 with a CO₂ tube at the sustained high speeds required for engraving.

The original Arduino was limited to half a kilohertz, with some trickery getting it to 1 kHz.

As @jkwilborn notes, there’s been considerable thrashing around, but the common denominator has been O.G. Arduino controllers that are not up to the task.