Arduino controlled roller

Hello all.
I want to make a a film roller that transfers material from one roll to another and want to see if anyone can point me to some literature of how to do it.
My idea is to roll film onto a tube with a dc motor.
As it is rolling have a measurement of how many feet of material is going into the roll.
And at a certain measurement stop the rotation of the dc motor.
I sure I can figure out how to make the material roll onto the new tube. The only problem I'm running up against is figuring out have to stop the motor at a certain Measurement. Because as the motor rotated the circumference of the roll gets larger.
And pointers would be great. Thanks in advance!

This is movie or photographic film? That normally has perforations or sprocket holes. Could you use perhaps an optical sensor to detect and count those holes?

1 Like

Excuse the loose term film. I make greenhouses and want to make a poly film roller.

Oh, Ok.

Is the film always approximately the same thickness? If so, measure the diameter of the empty tube, then roll, say, 20 turns of film onto it and measure the diameter of that. From this, you can work out an average thickness.

For the Arduino circuit, you will need to measure how many revolutions the tube has made. If using a DC motor, you need some kind of sensor, perhaps optical, to detect each completed rotation. Your code can then calculate what length of film has been rolled based on the number of rotations and the thickness of the film.

1 Like

Another option could be to use a stepper motor. With this type of motor, you would not need a rotation sensor, in theory, your code can simply instruct the motor to take the required number of steps to achieve each revolution. In practice, if the turning load is too great, the stepper motor can slip and lose track of the actual number of rotations performed. For this reason, using a stepper motor would need some careful engineering.

1 Like

How about a simple measuring wheel with a rotary encoder similar to:
Measuring wheel

1 Like

Yes, I think if you want to be accurate you need a measuring wheel, or cylinder. They should be off centre so that eg the old reel and new reel are aligned but the measuring wheel is out of line so that there is tension on it. This would normally be regulated by a spring of some type. You need it to have a surface that has some friction with the polyfilm that you are using. To reduce overall friction on the cylinder it can be mounted with bearings either and and rather than using a mechanical rotary encoder etc you can use a hall sensor or cut cut notches/place reflectors to count pulses of light using an optical tachometer. Since you know the cylinders circumference you can easily calculate the length of film. This will have the added benefit of helping tension the film going on the new reel and can assist alignment. You might find that a slight dome in the middle of the cylinder keeps the film better aligned if you want high speed of transfer but then you need to calculate by testing the rotation to length equations

1 Like

That exactly what I have been researching. I have to figure out how to get the arduino to trigger a relay after a certain amount of rotations that is of the encoder. Do you know of any info on that?

That is a very easy thing for the Arduino to do. Counting pulses from the rotation sensor is very similar to counting presses of a button and there are lots of example sketches out there. But ignore any examples that use interrupts, they are absolutely not needed.

But do you not need to trigger the relay after a certain length of film has been dispensed? That's a little more difficult because of the reason you mentioned: the roll diameter gets a little larger for each rotation.

Yes in my head I have an encoder with a 1ft around wheel that is touching the film and at say 25 full rotations of the encoder it will send a signal to the relay to turn off the motor. In turn that will measure out 25ft of film. If you know of anything about triggering a relay from encoder after chosen rotation that would be great:) Pretty sure that what I need to figure out.

Yeah, like I said, it is very simple. You only need to use digitalRead() to detect when the rotation sensor is triggered and digitalWrite() to control the relay module.

I guess you will also need a start button to switch on the motor and reset the rotation count.

You seem to imagine code as if you have to find just a specific shape that fits exactly to another shape.

It is very unlikely to find a code that fits exactly to your application. Programming is like building with Lego. There are a lot of small blocks with which you can build almost anything.

You have to think functional in smaller parts

  • switching on off a "thing" where thing can be an LED, a relay, a buzzer etc.

  • counting "pulses" where the pulses can come from a button, a lot of different kind of sensors, or an encoder

  • using conditions like if number-of-pulses-is-bigger-than-THEN do action where "action" can be a lot of different things

In your case the "action" will be switch_OFF_relay (which boils down to change state of an IO-pin.

Are you somehow interested in learning basic things about electronics and basic programming?

best regards Stefan

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.