A pi is indeed, not a wonderful solution for motor control - as an embedded linux device it is not ideal for realtime control, and as one which depends on an SD card for a root filesystem it is notoriously fragile in state especially where unexpected power loss may be an issue. Being based on a set-top-box rather than mobile SoC, it also lacks most of the power control features one would expect for a battery powered system.
But doing USB host with an Arduino is not a great idea either - the host chip ends up costing more than your main microcontroller.
If you want to keep the ADK idea with the external device as the host, look at something like a STM32F4 or KL25Z as an inexpensive embedded USB host (the STM Nucleo boards are in the $11 range, though the USB signals only exist on pin headers rather than a USB connector)
Another option is to turn things around and use the phone as a host, with the embedded processor as a device. This is in a way more sensible, and can put you back in Arduino territory, however it does mean that you either have to come up with a way to power the phone while doing this, or end up running down its battery.
For simple motor control, running modulated signals through the headphone jack is worth looking at as well.
(I'm aware this is an old question, but there's nothing particularly dated about it. Maybe with an answer we can retire it so that it doesn't bubble up again in the automatic churn).
You can reduce the amount of noise generated by the MCU itself by telling it to enter ADC Noise Reduction sleep mode. This will turn off the CPU, I/O, and synchronous timers (which will disrupt delay()
et alia) while still allowing the ADC and other critical functions to run. A no-op ADC interrupt will allow the device to wake from sleep once the conversion has completed.
See the "Power Management" section, "ADC Noise Reduction Mode" subsection and the "Analog-to-Digital Converter" section, "ADC Noise Canceler" subsection of the MCU used in your specific Arduino for more details.
Best Answer
The SENT stream is only conveying the sensor information. The system needs not only to convert the protocol, but also to implement a suitable control loop which also takes in your positioning commands and implements the slewing actions to move the device.
** (Where is the control loop being processed?) **
The control loop should have low delay to help with stability and performance. If your board taking in the SENT stream is also doing the control loop, the Raspberry Pi has more horsepower than Arduino and so will have less delay. On the other hand if your servo is low performance then the Arduino (ATMega328) may be enough. If the R-Pi or Arduino isn't doing the control loop, and is instead only translating SENT to analog, then Arduino is more than enough.
Either way, you can translate the SENT protocol to analog using either PWM-to-analog conversion (that is, PWM to low-pass integrator), or use a multichannel DAC. Again, choose the approach with low enough delay to get good performance for your loop.
As far as a ready-made solution to convert SENT protocol, I didn't see one pop up immediately for R-Pi or Arduino, sorry.
Some Arduino-oriented SPI DAC discussion here: https://forum.arduino.cc/index.php?topic=385741.0
And an appnote from NXP on decoding SENT: https://www.nxp.com/docs/en/application-note/AN4219.pdf