I'm trying to build a test-automation robotic arm which can repeatedly present an ID-tag (such as RFID or NFC card or fob) to a card reader.

I suspect our reader fails either (a) after hundreds of presentations or due to fast presentations or (b) at a specific moment in the reader duty cycle.

The tag needs to move in a well-controlled manner:

  1. Quickly present the card,
  2. Pause (mark)
  3. Quickly remove the card,
  4. Pause (space)
  5. Repeat at 1.

I'm calling the present/remove sequence the mark-space ratio for simplicity.

The tests I want to perform involve varying (a) the frequency and (b) the mark-space ratio, to (a) stress-test and (b) boundary-test the re-presentation guard times built into the reader to debounce presentations.

The guard times are around 400ms, response around 100ms, so I need something that can move in and out of a 5-10cm range quickly and repeat within those sorts of timescales.

The distance the card needs to move depends on the reader model, as they have different field ranges. I want to get through the edge of the field quickly to avoid any inconsistencies in testing.

I'm able to do any programming (professional) and simple electromechanical design and build (ex-professional, now hobbyist). I only need to build one, it doesn't have to be particularly robust, but it does need to be fairly accurate with regard to the timings to do the second test.

What I've done so far:

I've built one version already using a Raspberry Pi, GPIO, a stepper motor with an aluminium arm screwed to a wheel. It works, but it's a bit jerky and too slow, even with a 30cm arm to amplify the motion. It will probably do for the repeat test, but it's not time-accurate enough to do the timing tests.

My other design ideas were:

  • Servo (are these also slow?)
  • Solenoid (fast, but too limited range? and might cause EM?)
  • Motor (too uncontrollable, and will require too much mechanical work for me)
  • Rotating drum (fast, stable, but cannot control mark-space ratio)

I'm not a electro-mechanical design expert, so I'm wondering if I'm missing an electrical device or mechanical design which can do this more easily.

  • $\begingroup$ Why can a rotating drum not control mark-space ratio and could you give a better definition of that term? $\endgroup$ May 14, 2016 at 18:52
  • $\begingroup$ I was only thinking of a constantly rotating drum. The mark-space would be fixed at the ratio of the width of the card to the circumference of the drum. Were you thinking the drum would stop,start,stop then? I'd presumed inertia would be a problem but I suppose a very lightweight construction might make it possible. But it would need position sensing switches and gearing to control speed... $\endgroup$
    – scipilot
    May 14, 2016 at 22:32
  • $\begingroup$ "it would need position sensing switches and gearing to control speed" so would everything else. Control means feedback means measurement means sensors. $\endgroup$ May 14, 2016 at 22:39
  • $\begingroup$ Except the stepper motor. It's been oscillating for a day and is still in exactly the same spot! Perhaps I'm just being lazy. $\endgroup$
    – scipilot
    May 14, 2016 at 22:41
  • $\begingroup$ Ah yes, stepper motors. Used for everything these days applicable or not. For higher speed, the force or acceleration a stepper motor can assert drops significantly, which might result in missed steps. Even for a stepper motor, you should add sensors for the end positions so that you can be certain that it always reaches them. $\endgroup$ May 14, 2016 at 22:58

1 Answer 1


I'd go for a linear axis. The cheapest version could be from a printer or you buy a small belt and two gears. A brushless DC would however fit better in this scenario. Such systems are easily faster than a normal user and easy to control.

  • $\begingroup$ Ok, thanks. I hadn't thought of that. Yes printer heads are very fast and accurate. How would I control the position accurately? I can imagine it drifting after a lot of motion without feedback from say a photoresistor? $\endgroup$
    – scipilot
    May 14, 2016 at 22:25
  • $\begingroup$ You normally use an end switch to zero the axis. The could for be a photoresistor or a simple reed switch that detects the sledge in on of the extreme positions. $\endgroup$
    – FooTheBar
    May 15, 2016 at 12:59
  • $\begingroup$ I've accepted this as the best answer, but haven't built this design yet, as we've now found just leaving the card stationary at the edge of the field triggers enough jitter to fail the reader! So I don't really need the robot arm for the stress test after all, but I will return to this linear design if we need to work on the precision timing test. $\endgroup$
    – scipilot
    May 18, 2016 at 1:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.