Laser pan and tilt for drawing

Hi, just wanted to get some help, maybe someone can point me in the right direction for projects I might be able to glean some info from.

My project requires me to have a laser draw out an image that will be projected onto a large wall. It only needs to follow the lines of an image, not actually project the whole thing at once like with the mirror style projectors. I'll just be marking out the image as it either slowly moves along, or maybe goes point to point.

I would need to be able to adjust the resolution/size of the projection as the distances could be quiet large, I'm thinking of having a pot so i can adjust the size with another pot controlling speed of the laser mapping the image.

Best I could find that shows what I have in mind is this, ( Raspberry Pi Laser Turret (Draws on wall!) Pt1. - YouTube ) but being all RaspberryPi and my application needing to be battery operated and (doesn't need to last a long time) I think less complicated, I'd rather try and hobble something together with arduino.

The two main parts I'm unsure of is whether I should use servos or steppers, again, the distance will be large so errors will end up large too, although the accuracy doesn't need to be super high. I'd be on battery power, whether that changes choices for motors. The second part that I'm lost on is converting a line image into something that the pan and tilt device can read. I'm semi familiar with stl files and g-code but unsure how I might go about converting that or if I can use that for this application.

Ideally the drawing for the laser would be stored in memory so I'm able to upload the image in whatever filetype I need and only have to take the device out into the field rather than my laptop as well. Although if ease and necessity dictates, it's still viable to take it with me.

Any pointers for projects or info would be greatly appreciated. I'm not new to arduino, but I'm at a bit of a loss with this one. Cheers.

I’d suggest that steppers will be easier to control in some applications, but to get a decent resolution at large scale without ‘the edged being jagged, you’ll gear them down - so they’ll be relatively slow.

Traditionally, DC galvanometers have been used (analog), to get the smoothness and speed, but require a different control strategy with good control of acceleration and damping.

Keep in mind that you’ll be projecting from a virtual ‘sphere’ onto a flat surface - which may need geometric correction unless the images are pre-processed for the display surface and distances needed.

I sort of figured with the motors only need to move very slowly the resolution wouldn't be such a huge issue, less chance to miss the mark. But I suppose if I'm far enough away those movements would need to be pretty fine even if slow.

I thought about trying a modified version of a galvonometer, where rather than drawing the whole image, the motors just hold the mirrors in place and slowly move them.

I didn't even think of that. But can see how that would be an issue, especially over long distances.

And if the laser mechanism is not perpendicular to the surface.

Well, with the large and sometimes uneven surfaces I will be projecting onto, I'm not sure how much I need to take this into consideration. Basically for some projects the projection surface won't even be fully horizontal, so the only way to view the image without it skewing will be from where the laser was placed. The perspective will be wonky from other angles, which is fine and expected. has reasonably priced pan/tilt platforms.

converting a line image into something that the pan and tilt device can read

Math, mostly trigonometry. The Arduino can easily handle the required Cartesian to polar angle coordinate system transformations.

Just got a hold of a platform. The place didn't have servos, so grabbed some steppers instead, I know they won't fit. But just gathering some things for now to have a play and see what I can do/find. Yeah, you lost me with all that. I'm sure the arduino can handle all that. I can't though haha

Will have a google tho and see what turns up

Adafruit do a Mini Pan Tilt kit which might do what you want.

Yeah, That's what I bought. Didn't have the servos tho. So just having a look at what I might be able to do with the steppers they did have. I have a 3d printer, so it's no real biggy if I stick with the steppers. Can always make something up to hold what I need

If you are using a stepper, then the step angle will determine the minimum distance on the screen. With direct drive and a 1deg step angle, if my maths is right, thats around 2in on a screen/wall 10ft away.

I may switch over to servos, or give them a try at some point. I just went and tested some distances with a pointer and yeah, the movement is going to need to be pretty fine. Pretty sure some gearing might be able to help me with that. I'm looking at the longer distances at around 660ft. Luckily even if the resolution isn't that great, I don't need it to trace exactly the entire image, just so long as there's enough res to be able to join what I mark out to complete the picture. Still hanging on direction for code from picture to movement. Just going to get these steppers into a rig and try some stuff.

I think I would try two servos. Using the Servo library you can get 1000 to about 2000 steps of resolution. You can get 16 times as many steps using the timer hardware.

If you use a mechanism where you can change the distance from the servo to the pivot, you can adjust the angle of view without giving up any resolution. Then you could use one pot to adjust the draw rate.

The project may produce a 'better' image by using several motor/laser control systems. Each 'image' could be split between the 2 control systems.

Appreciate all the replies. Any tips for getting the hardware to print an image? Trying to wrap my head around that. Best I can think of now is using g code but seems I'd still need my laptop to do this. I don't really want to have to manually code the image either.

For g code, I know that I'd have to set the "canvas" to be tiny. But also the x and y position of the motors aren't in the same position as say a cnc machine so this would somehow need be changed. Most solutions for g code and arduino seem to require a laptop as well. Ideally need this to be arduino and the hardware on a tripod only.

There are generally 2 classes of images - raster, like jpg, png, bmp, gif etc - and vector like svg, dxf etc.

If the "image" you are wanting to use is of the raster type, then i think you need what is called a vectorizer to convert it into a line drawing which you can then draw using your laser.

The problem with vectorizing a raster image is that you have no control over the order in which the points/shapes are created.

Would somebody know what the projected image was meant to be if it was drawn slowly with the shspes making up the image drawn in a random order?

Perhaps explain a little more about your project.

RC servos are going to be painfully slow…
Using old ‘meter’ movements or galvos to move lightweight front-surface mirrors is probably the only way you’re going to get the speed and precision to render a decent image.

Think like car suspension… unsprung weight drastically affects traction and handling. Accuracy & overshoot.

Simple h-bridges to control the xy mirror galvos, and a bunch of math to handle the transformation and translation and corrections needed.

If you need ideas, look at laser light shows
Laser galvo mechanism

It would be ideal if the image was created following some logic, much like how a 3d printer prints a layer. It's fine if it jumps around a bit. Like if I was mapping out 3 overlapping circles, if it only did the three outside sections before jumping to the inside sections, that would be fine.

This will be used just to put a spray paint mark around the outline of the image on walls or hills, they'll be pretty basic images, like silhouettes or line drawings. Because some of these surfaces are quiet far away and not flat, I'll be using this laser at the viewing position and this will make the images perspective perfect from that angle (relatively)

I've currently being doing this with ropes and one person at the viewing angle, this takes time and isn't at all accurate. But from doing it this way, I have learnt that in some places and depending on the image and distance, I can easily have 6 to 12 inches of error.

The real struggle I'm having moving forward with things to try is the fact that my setup needs to be (as far as I figure) like that laser turret I shared in the YouTube video. Where basically it's just two steppers on top of each other, so I can't really use gcode.

Here's an image of something I did with turf on the side of a hill. There's a bunch of tiers on this hill, so imaging the laser tracing this out, I follow along slowly marking this out, then come back later with a mower to finish it up. If the laser can draw that same image pretty well on a wall, it can do the same on the side of the hill and the perspective will hold from that position.

1 Like

Speed isn't an issue. In fact. I want it to move slowly. And with the 600ft distance, even if the motors chosen move ridiculously slow, it'll be much faster

Only if you want a graphics drawing package to create your image, otherwise you can simply put in the XY coordinates of the points, and use those, with a scaling factor to simply define the angle of each motor.

Looking at the original video I note that this uses a UV laser at quite a short distance onto some UV luminous material. Are you expecting to use the same sort of target material? If so this will be quite a risk if you were going to use it in public.

Can you give more details of what exactly you want to do with your system?