Rotational range scanner with Arduino and MATLAB
An Infrared range detector rotates on a stepper motor. The stepper is driven by the arduino motor shield and the sensor is read by the arduino's ADC. The arduino itself is just a server to MATLAB, which is in control over the hardware via USB. The motor is driven in single-phase full step mode with 1.8 deg per step. A range measurement is performed every step. The nonlinear sensor output is converted to a distance by means of hyperbolic regression based on two calibration measurements. The distances and angles are mapped on a 2D plane. The inexpensive sensor is surprisingly precise and amazingly indifferent towards lighting conditions and especially the relative angle of the detected object. Additional hardware to the sensor consists of nothing more than capacitors to stabilize the input voltage and a low pass filter to smoothen the output. Hardware: Arduino UNO Arduino MotorShield IR-Sensor https://www.sparkfun.com/products/242 with analog low pass filter and decoupling capacitor Random stepper motor (200 steps per revolution) Software: the UNO runs the ardiosrv sketch, available from Mathworks under http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-support-package-for-arduino-aka-arduinoio-package Matlab runs custom made software to turn the stepper, read the sensor and display the readings. Not really complicated stuff. An ideal starting point though to play with ICP-based SLAM implementations www.mathworks.com/matlabcentral/fileexchange/27804-iterative-closest-point MATLAB might be a bit of an overkill for the PC-side of this project. Processing would also be a good option.
An Infrared range detector rotates on a stepper motor. The stepper is driven by the arduino motor shield and the sensor is read by the arduino's ADC. The arduino itself is just a server to MATLAB, which is in control over the hardware via USB. The motor is driven in single-phase full step mode with 1.8 deg per step. A range measurement is performed every step. The nonlinear sensor output is converted to a distance by means of hyperbolic regression based on two calibration measurements. The distances and angles are mapped on a 2D plane. The inexpensive sensor is surprisingly precise and amazingly indifferent towards lighting conditions and especially the relative angle of the detected object. Additional hardware to the sensor consists of nothing more than capacitors to stabilize the input voltage and a low pass filter to smoothen the output. Hardware: Arduino UNO Arduino MotorShield IR-Sensor https://www.sparkfun.com/products/242 with analog low pass filter and decoupling capacitor Random stepper motor (200 steps per revolution) Software: the UNO runs the ardiosrv sketch, available from Mathworks under http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-support-package-for-arduino-aka-arduinoio-package Matlab runs custom made software to turn the stepper, read the sensor and display the readings. Not really complicated stuff. An ideal starting point though to play with ICP-based SLAM implementations www.mathworks.com/matlabcentral/fileexchange/27804-iterative-closest-point MATLAB might be a bit of an overkill for the PC-side of this project. Processing would also be a good option.