DUSI DUSIDatasheet ************* 1 Characteristics ***************** Parameter Value Unit -------------------------------------------------------------------------- Vcc `3'-`6v' V^1 Current with USB `25' mA Current without USB `17' mA Current in powerdown mode `80' uA Startup time `300' mS Pitch/Roll Accuracy `0.2' deg^2 Pitch/Roll Precision `0.04' deg Yaw Accuracy `1.5' deg^2 Yaw Precision `0.01' deg Accelerometer range `+- 2' G Magnetometer range `+- 6' Gauss Accelerometer output rate up to 500 hz Magnetometer output rate up to 64 hz Accelerometer bandwidth 10 bits @10 per G hz Magnetometer bandwidth 13 bits @10 per gauss hz Temperature Accuracy `+- 5' deg F Temperature Precision `+- .3' deg F 1 Can be powered via USB 2 with good calibration 2 Backlight *********** Backlight Parameter Value Unit -------------------------------------------------------------------------- White Backlight Current 8 mA Green Backlight Current 4 mA Note: On older DUSIv1 sometimes the backlight has issues because of the way the connector is placed. Please email me for a free replacement if the backlight is not functioning. 3 Battery ********* Battery Battery charges from usb with a max of 100mA. Parameter Value Unit -------------------------------------------------------------------------- Battery Type `3.6v lipo' Battery Capacity 250 mAH Battery Charge Current 100 mA Charge time 4 hours Run time >10^1 hours 1 decreases with age and backlight usage 4 Parts ******* Parts * 16key keypad * 132x64 lcd with green and white backlight * 70 series box with protective case (boxenclosures.com) * laser pointer * on/off switch * usb connector 5 Components ************ * at90usb1287 * sca3000-d01 * ad7799 * hmc1052 * hmc1051z * irf7905 (x2) * max1811 * fan2503S30 * ra8816 lcd Various capacitors resistors and connectors see schematic for details 6 DeviceData ************ This chapter describes all of the data available on the device. It assumes use of the dataclient. It should be obvious how to use the DataViewer as well. Each section begins with the name of the directory. The openmag project operates an accelerometer, magnetometer, and temperature sensor. If the device is to be used while moving, the calculated pitch, roll, and yaw are invalid due to lack of gyro compensation. If the down vector is not known, the magnetic vector output is still useful as it is not affected by acceleration, but yaw calculation is impossible. The accelerometers are in sensor coordinates, the calibrated magnetometer is aligned to the accelerometer, so both calibrated outputs are in sensor coordinates. Box coordinates are another coordinate frame which can be defined by the user, there is a rotation to get from sensor to box coordinates. There is also a rotation to get from sensor to laser coordinates. Do not be alarmed if you do not have all of the accessors listed, or you have accessors which are not listed here, they may change depending on software version. The DUSIv1 does not provide many accessors (it is stripped down from lack of flash memory) 6.1 root ======== This directory contains all of the other directories. It contains the "softwareversion" accessor for determining what software version you are using. 6.2 settings ============ * mag * range - The ADC which reads from the magnetic sensors supports variable gain. This means that with reduced precision, you can measure over a larger range. The range for the magnetometer, can be one of 6.4, 3.2, 1.6, or 0.8. This is the approximate range in gauss of the magnetic field that can be measured, the actual range that can be measured without saturation varies from unit to unit depending on the bias of the sensor. * bandwidth - The magnetometer can be read at different speeds. This is apparent when looking at the inputrate and noise of the mag after setting the bandwidth. The faster data is read, the higher the noise is. Currently there are 3 settings: fast (64hz), normal (13hz), and slow (4.5hz) * contrast - the lcd contrast * reversevideo - invert the lcd contents? * whitebacklight - control the white backlight * greenbacklight - control the green backlight 6.3 stats ========= The accessors relevant: * freeram - unused ram from the total of 8192 bytes, useful for debugging. * magsaturated - view which (if any) axes of the magnetometer have saturated * runtime - how long the device has been running since powerup in seconds * mainloopfreq - how fast the main loop is running in hz, very useful for profiling. * watchdog_resets - If the device crashes or locks up, after a timeout it automatically resets, but this counter gets incremented. If this value is ever non-zero, then a software bug has occured. 6.4 power ========= * battery * voltage - the battery voltage * chargedvoltage - the voltage of the battery when it was last charged * dischargedvoltage - the voltage of the battery when it was last discharged * state - the current state of the battery * stillsleeptype - sleep type to use when the device is still * stillsleeptimeout - time the device must be still before sleeping * buttonidlesleeptype - sleep type to use when no buttons are pressed * buttonidletimeout - time the device must not have a button pressed before sleeping * wakeonmotion - if set to true, the device will wake on motion when it sleeps from being still. It will not wake from motion from a button idle timeout. * lastsleeptype - the last type of sleep the device was in, used for debugging Note: the device does not sleep when plugged in via USB. The sleep types supported: * none - sleep disabled * idle - sensors and processor stopped, device consumes about 15% of normal power. Can wake up from the most different ways. * powersave - shutdown everything possible while still keeping the LCD and backlight on (if available) * powerdown - shutdown everything to lowest possible power consumption. Uses about 0.5% of normal operating power. Note: If wakeonmotion is set, because extra power is needed to be able to wake from motion, and the device sleeps from being still, the device will consume about 1.5% of normal operating power in powerdown mode rather than 0.5%. 6.5 calc ======== * pitch - the angle the box x-axis is pointed up or down, from -90 to 90. * roll - the rotation around the box x-axis, from -180 to 180. * yaw - the heading of the box x-axis, from 0-360. 0 is north, 180 is south. * dip - the measured inclination angle between the magnetic vector and acceleration vector. This is related to your geographic magnitic latitude and should be relatively constant when well calibrated and the device is not moving. * incline - the angle between the laser axis and horizontal. * azimuth - the direction the laser axis is pointed, like yaw. * boxalignedaccel - the calibrated accelerometer with the boxalignment applied, this is used to calculate pitch and roll * boxalignedmag - the calibrated magnetomtermeter with the boxalignment applied, this along with boxaligned accel is used to calculate yaw and dip 6.6 calibration =============== * inclination - the inclination, can be set by the user to speed up calibration * declination - the angle between magnetic and true north * fieldstrength - the strength of the field in gauss, used to make the calibrated magnetometer output correct in gauss * boxalignment - the rotation from sensor coordinates to box coordinates * laseralignment - the rotation from sensor coordinates to laser coordinates * debugging - print information related to standard calibration * fastdebugging - print information related to fast calibration * accel - Computes 3rd order ellipsoid fit for the accelerometer * accelfast - Computes biases and scale factor for the accelerometer * mag - Computes biases, scale factors, and cross-coupling coefficients * magalign - computes dip angle as well as the rotation from magnetometer to accelerometer coordinates. The rotation is displayed as a vector to rotate around, where the magnitude is the angle to rotate. * magdip - alternate calibration for the magnetometer which uses a 3x3 matrix multiplication. It can be enabled by setting settings/usemagdip to true. * magfast - fast mag calibration which only computes bias and scale factor. This is used by mouse mode. The calibration is calculated quickly without being as precise and does not require the device to stop moving. * stillpoints - The stillpoints used for calibration. These points can be applied to either accel or mag to perform calibration. See the User Guide for more details. There are 6 types of calibration: * accel - used for accelerometer, need accurate calibration to compute pitch and roll * mag - magnetometer, needed for accurate magnetometer readings * magalign - this requires both accel and mag to calculate, it is the misalignment of the magnetic sensors in relation to the accelerometers. It corrects errors in yaw calculation by as much as 5 degrees. * magfast are - this just computes biases for the magnetometer quickly, it is used for mouse movement because the more precise magnetometer calibration updates slower, can be used when relative movement is better than absolute. Each type is a directory with: * calibration - the current calibration, you may clear it with the clear operator * autocalenabled - specifies if true, calibration can continously update * debugging - enable this to automatically output calibration when it is updated 6.7 sensors =========== * outputtype - can be set to: * filtered - data is filtered (lower noise) but not calibrated * filteredcalibrate - data is filtered and calibrated * raw - raw data * rawcalibrate - raw data with calibration applied * failure - set to true if the sensor is no longer providing data * output - read from this accessor directly to read sensor data * inputrate - the rate (in hz) that the sensor data is being read * outputrate - the rate (in hz) that the sensor data should be displayed, set this to the desired value. 6.8 survey ========== The device can store various measurements * stats - get for statistics about the measurements * measurements - get to dump all of the measurements * usebacksights - set to enable automatic backsights when surveying 7 Menu ****** The menu on the device is simple, press the key of the number letter or symbol which next to the word or icon you want to perform. The main menu allows you to select a function for the device. It is always possible to press 'D' repeatedly to eventually return to the Main Menu. It is usually possible to press 'A' to read information about the current page. 7.1 Compass =========== The compass shows a 3d compass as well as other statistics. 7.2 Survey ========== The survey system allows you to take measurements of incline and azimuth using the laser. These measurements may be recorded. Typically there is enough storage for at least 500 shots. It is also possible to enter attributes to go with each measurement (such as distance between survey points) but not required. To make a measurement from the survey menu, hold '1' down and the laser will turn on, when you release it, a second later the laser will go off and the current reading is locked. Once held, you can store the measurement with '2'. If this should be a backsight for the last shot, press '3' to toggle to backsight mode. If you want to enter distance LRUD, or other parameters, enter the attributes with '4' before storing. Data required to store a shot, the minimum is 5 bytes for header, incline and azimuth, additional attributes add: * 3 bytes backsight incline and azimuth * 10 bytes - out of order stations penalty * 2 bytes - distance * 4 bytes - lrud Name To Dist Incline Azimuth LRUD bytes -------------------------------------------------------------- AFF-001 - +42.2 135.3 15 AFF-002 AFF-002 - -26.7 167.4 5 AFF-003 AFF-003 23.4 +35.2 302.7 7 AFF-004 AFF-003 - -42.1 253.9 1 1 2 19 AFF-005 3 The first measurement uses an extra 10 bytes because there is no measurement before it. The fourth measurement uses 5 bytes normally, 4 more for lrud, and 10 more because the number is not sequential. The measurements can be downloaded to a computer, or viewed on the device. 7.3 Pedometer ============= The pedometer uses a simple algorithm to detect steps by sensing verticle motion. It counts steps with a given tolerance. 7.4 Gaussmeter ============== The gaussmeter allows you to measure magnetic fields in gauss. There is support for absolute, relative and vector magnetometer modes. 7.5 Stats ========= View various statistics about the running program. 7.6 Calibration =============== Proper calibration is extremely important for accurate measurements. The device can be re-calibrated at any time without any additional equipment. The on-screen help system explains what each step of calibration does. 7.7 Settings ============ There are a few settings that can be modified on the device, there are far more settings that can be modified via the dataclient. 7.8 Plots ========= This mode allows you to plot the sensor data directly on the DUSI screen. You may enter mathematical expressions using various sensor inputs as well. 7.9 Vector View =============== This mode simply displays vectors pointing in the direction of the accelerometer and magnetometer vectors. 7.10 Advanced Survey ==================== This mode gives the user the ability to perform surveys in a linear state machine and gives error checking (FS/BS compare) 7.11 Calculator =============== This mode is simply a calculator. It peforms basic expression parsing as well as reverse-polish notation. Basic trig functions are supported. 7.12 Sphere Painter =================== This mode allows the user to draw arcs using the laser pointer, then view and rotate them in 3d on the screen.