===== sensord - Data aquisition software =====
==== Description ====
The **sensord** is a Linux Daemon program to interface the [[projects:series_00:electrical_tests:sensorboard|SensorBoard]] to XCSoar using NMEA Sentences
* Height - static pressure (MS5611)
* Vario - TEK pressure (MS5611)
* Speed - differential pressure (AMS5915)
* Battery Voltage (ADS1110 or ADS 1100 on the [[projects:series_00:electrical_tests:adapterboard|Adapterboard]])
* Temperature (DS18B20)
* Acceleration (MPU 9150)
* Gyroscope (MPU 9150)
The measured values are processed by **sensord** and sent to **variod** and finally to **XCSoar** using NMEA data sentences. Here is an Overview about the [[projects:series_00:build:audio_vario_speed_to_fly#general_operation_principle|General operation principle]].
====Internal Data Flow====
**Sensors** --> [i2c bus] --> **sensord** --> [NMEA over TCP port 4353] --> **variod** --> [NMEA over TCP port 4352] <--> **XCSoar**
==== Sensor Mapping ====
^ Sensor ^ Sensortype ^ I2C Adr. ^ Quantity measured ^ Remarks |
|MS5611 | absolute | 0x77 | TEK-pressure | TEK probe |
|MS5611 | absolute | 0x76 | static pressure | static port |
|AMS5915 | differential | 0x28 | dynamic pressure | static port and total pressure |
|MPU-9150 | Motion Processor | 0x68 | Yaw, Pitch, Roll | in preparation |
|ADS1110 or ADS1100 | AD-Converter | 0x48 | Battery Voltage | image 16108 + xcsoar-testing_git-r8.0 |
|DS18B20 | External Temperature | 0x18 | Temperature | in preparation, via 1 wire Bus Master |
==== Command Line Parameter ====
-v print version information
-c [filename] Config file for sensor compensation
-d[n] set debug level. n can be [1..2]. default=1
-r [filename] record measurement values to file
-p [filename] use values from file instead of measuring
-s use second order temperature compensation for MS5611
==== Config File Format (e.g. -c sensord.conf)====
The default configuration file is /opt/conf/sensord.conf
#Section for static pressure sensor
# Unit: Pa
#format: static_sensor [offset] [linearity]
#Example: static_sensor 1.5 1.3
static_sensor 0.0 1.0
#Section for tek pressure sensor
# Unit: Pa
#format: tek_sensor [offset] [linearity]
#Example: tek_sensor 1.5 1.3
tek_sensor 0.0 1.0
#Section for dynamic pressure sensor
# Unit: Pa
#format: dynamic_sensor [offset] [linearity]
#Example: dynamic_sensor 1.5 1.3
dynamic_sensor 0.0 1.0
#Output value config
output_POV_E
output_POV_P_Q
output_POV_V
#Vario parameter
#format: vario_config [x_accel]
vario_config 0.3
#Voltage Sensor parameter
#format: voltage_config [division_factor]
voltage_config 736
The default values for the Voltage Sensor are:
*voltage_config 736 for ADS1100 (External reference 3.3 V)
*voltage_config 1200 for ADS1110 (Internal reference 2.048 V)
==== Data flow ====
{{:projects:series_00:software:sensordaemon_dataflow.png?600|}}
==== Compensation of Sensors ====
The sensor readings can be compensated using two values. The values are stored in a file for the moment. For a future version the values should be stored in the EEPROM on the sensor board, because they are dependent on the sensors mounted on the board. This will improve the interchangeability on board level.
[[projects:series_00:software:sensorcal_diff_press|Automatic Differential Pressure Calibration]]
==== Functional Principle ====
P = linearity * P_meas + offset
P = final calculated pressure
P_meas = pressure measured from sensor
linearity = correction factor for linearity
offset = correction factor for offset
Values are floating point decimal.
==== NMEA sentences ====
The full range of NMEA-strings used by the Openvario-Project can be found here: [[nmea|NMEA-Definition]]
==== Source Code ====
The source code of the whole program is hosted in a git repository.
To clone the repository, use the following command:
git clone http://git-ro.openvario.org/sensord.git
Navigate to [[variod]]
Go back to [[overview|Overview]]
Go to [[projects:series_00:build:setupguide|Setup Guide]]