SCIboard(TM): mbed base board data logger - Altimeter: MPL3115A2 - Accelerometer: LSM303DLHC - Gyro: L3G4200D - 4 High Current MOSFET switches

Dependencies:   mbed

/media/uploads/AstrodyneSystems/sciboard_top.jpg

/media/uploads/AstrodyneSystems/sciboard_bottom.jpg

Product Description

SCIboard will take your model rocketry, science, or engineering project to new heights with a complete 10-Degree-Of-Freedom (10-DOF) Inertial Measurement Unit (IMU), 4 high current MOSFET switches, PWM interface (RC servos), USB (memory sticks or BlueTooth) and interfaces for GPS and an XBee® RF module. The SCIboard is an mbed base board ideal for use in college and high school science labs, science fair projects, high power model rocketry, model airplanes, and near space balloon projects. SCIboard is also designed for Open Source software so you can customize the application. Example applications include high power model rocketry, near space balloon projects, and R/C airplanes/quadcopters. While SCIboard requires some basic electronics and software knowledge, it combines multiple breakout boards into a single base board which improves reliability, especially in high g environments such as in model rocketry. Available on Amazon. Search on "SCIboard".

  • Dimensions: 1.5 x 3.8 inches (3.8 x 9.7 cm)
  • Weight: 0.8 ounces (24 g)

10-DOF Inertial Measurement Unit

Going beyond just the 6 degrees of freedom afforded by a 3-axis accelerometer and 3-axis gyro, SCIboard includes an additional 3-axis magnetometer, and highly accurate altimeter / atmospheric pressure sensor. Sensors provide digital measurements over an I2C shared bus (p27 and p28).

Precision Altimeter

(Freescale Semiconductor – MPL3115A2) MEMS pressure sensor with 24-bit Analog-to-Digital Converter (ADC) employs temperature compensation resulting in fully compensated 20-bit pressure/altitude measurements (resolution down to 1 foot).

  • Pressure range: 50 – 110 kPa.
  • Pressure reading noise: 1.5 Pa RMS over -10 to +70° C. Conversion rate: up to 100 Hz.
  • 12-bit temperature sensor measurement range: -40 to +85° C.

3-Axis MEMS Accelerometer

(STMicroelectronics – LSM303DLHC) The sensor measures linear acceleration. Pointing any axis to the earth will apply 1 g in that axis when stationary.

  • Selectable full scale range: +/-2 g to +/-16 g.
  • Sensitivity: 1 – 12 mg/LSB depending on full scale range.
  • Zero-g level offset: +/-60 mg.
  • Acceleration noise density: 220 micro-g/sqrt(Hz).
  • Operating temp range: -40 to +85° C.
  • Conversion rate up to 400 Hz.

3-Axis Ultra-Stable MEMS Gyroscope

(STMicroelectronics – L3G4200D) A gyroscope is an angular rate sensor.

  • Selectable full scale ranges: 250/500/2000 degrees per second (DPS).
  • Resolution: 16-bit.
  • Bandwidth: user selectable.
  • Sensitivity: 8.75/17.50/70 milli-degrees per second/LSB.
  • Nonlinearity: 0.2% full scale
  • Rate noise density: 0.03 DPS/sqrt(Hz).
  • Operating temp range: -40 to +85°C.

Digital I/O

4 MOSFET switches are included. They provide 6-amperes momentary current sinking. Example uses include high power strobes, and lights for night launches or buzzers for location. Switches can be activated at apogee or prior to landing for model rocketry. A continuity check through an analog to digital converter allows verification of circuit continuity before launch. A piezoelectric buzzer provides software control for audible alert and low battery voltage measurement.

/media/uploads/AstrodyneSystems/mosfet.jpg

Host USB Type-A with 5.0 Vdc regulator

USB Type-A connector wired as a host controller provides regulated 5 volt power from a battery. A variety of USB devices from memory sticks, Bluetooth, and Wi-Fi can be used with multiple software projects from the mbed web site.

XBee® and XBee-PRO® Modules

The XBee-PRO® interface supports multiple different XBee and XBee-PRO modules such as Wi-Fi, ZigBee, 802.15.4, Bluetooth, and longer range 900 MHz RF Modules. Compatible modules are Roving Networks and Digi-International. SCIboard provides dual 10 pin headers with regulated 3.3 volt power (from p40) and serial UART (Tx=p9/Rx=p10). Alternatively if the headers are not installed, the serial port may be connected to a SMS cell phone evaluation module. Since the 3.3 volt provided to XBee modules is from the mbed regulator, the user is responsible for power calculations. Testing was done with RN-XV and a 9-volt battery but higher battery voltages or higher current XBee modules could overheat the 3.3 volt regulator on the mbed. When using XBee modules, the user may need to perform hard/soft iron calibration if using the magnetometer.

Interface for GPS

SCIboard provides a serial UART interface for GPS receivers. It also provides 3.3 and 5.0 Vdc for power and Vbat (battery not included). PCB has 0.1” holes for soldered cable or header of your choice. This provides flexibility to use a variety of GPS modules.

/media/uploads/AstrodyneSystems/gps.jpg

Interface for Ethernet Cable

PCB has 0.1” interface for an Ethernet cable of your choice of Ethernet magnetics interface with LEDs. For Ethernet direct wire, use RD-, RD+, TD+, and TD-. For magnetics, several 3.3 Vdc and Grounds are provided allowing easy interfacing. For both LEDs a 160 ohm resistor is provided. Both LEDs share the 2 PWMs out.

/media/uploads/AstrodyneSystems/ethernet.jpg

Interface for PWM RC Servos

SCIboard provides a Pulse Width Modulation (PWM) header for RC servo motors. Up to 6 PWM servos can be controlled. Terminal block is provided for separate servo power source if desired. If the user chooses to not install the headers, the PCB has 0.1” spacing thru-holes for 3-pin R/C servos. (Pins 21 – 26)

/media/uploads/AstrodyneSystems/pwm.jpg

Applications

A 10-Degree-Of-Freedom Inertial Measurement Unit (IMU) can be used to measure distance traveled, velocity, acceleration, attitude (yaw, pitch, and roll), and attitude rate. When combined with a GPS, SCIboard will provide a GPS aided inertial navigation solutions. The PWM can be used to control a camera attached to a servo motor. This enables near space projects to point the camera up at the weather balloon, horizontally at the earth’s horizon, and down directly at the earth.

  1. College and high school science labs
  2. Science Fairs
  3. High Power Model Rocketry
  4. Near Space Balloons
  5. Quadcopters
  6. R/C Airplanes
  7. R/C Helicopter

Processor Board Support (Direct Pin-Out compatible)

  • mbed LPC1768
  • mbed LPC11U24
  • Embedded Artists LPCexpresso LPC1769

SCIboard_LSM303DLHC.h

Committer:
AstrodyneSystems
Date:
2013-12-15
Revision:
0:ab51d784ef36

File content as of revision 0:ab51d784ef36:

/* SCIboard(TM) LSM303DLHC.h
Copyright (c) 2013 K. Andres

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

#ifndef SCIboard_LSM303DLHC_H
#define SCIboard_LSM303DLHC_H

#include "mbed.h"
#include "SCIboard_I2C.h"

// STMicroelectronics www.st.com - Ultra compact high performance
// e-compass, 3D accelerometer, and 3D magnetometer module
// Data sheet - Preliminary data - Rev 1
#define ACC_I2C_ADDR (0x19<<1)
#define MAG_I2C_ADDR (0x1E<<1)

// Acc Registers
#define ACCREG_CTRL_REG1        0x20
#define ACCREG_CTRL_REG2        0x21
#define ACCREG_CTRL_REG3        0x22
#define ACCREG_CTRL_REG4        0x23
#define ACCREG_CTRL_REG5        0x24
#define ACCREG_CTRL_REG6        0x25
#define ACCREG_REFERENCE        0x26
#define ACCREG_STATUS           0x27
#define ACCREG_OUT_X_L          0x28
#define ACCREG_OUT_Y_L          0x2A
#define ACCREG_OUT_Z_L          0x2C

#define ACCREG_INT1_CFG         0x30
#define ACCREG_INT1_SOURCE      0x31
#define ACCREG_INT1_THS         0x32
#define ACCREG_INT1_DURATION    0x33

#define ACCREG_INT2_CFG         0x34
#define ACCREG_INT2_SOURCE      0x35
#define ACCREG_INT2_THS         0x36
#define ACCREG_INT2_DURATION    0x37

// Mag Resisters
#define MAGREG_CRA_REG          0x00
#define MAGREG_CRB_REG          0x01
#define MAGREG_MR_REG           0X02
#define MAGREG_OUT_X_H          0x03
#define MAGREG_OUT_Z_H          0x05    // Note Z out of order
#define MAGREG_OUT_Y_H          0x07
#define MAGREG_SR_REG           0x09

#define MAGREG_IRA_REG          0x0A

#define MAGREG_TEMP_OUT_H       0x31


// Status Register
#define STATUS_REG_ZYXDA        0x08

// ACCREG_CTRL_REG1 Output Data Rate (ODR)
#define ACC_1HZ                 1
#define ACC_10HZ                2
#define ACC_25HZ                3
#define ACC_50HZ                4
#define ACC_100HZ               5
#define ACC_200HZ               6
#define ACC_400HZ               7
#define ACC_1620HZ              8       // Low power mode
#define ACC_5376HZ              9       // Low power mode / Normal 1344Hz

// ACCREG_CTRL_REG4 Full-scale selection +/-g
#define ACC_2G                  0
#define ACC_4G                  1
#define ACC_8G                  2
#define ACC_16G                 3

// MAGREG_CRA_REG
#define MAG_TEMP_EN             0x80
#define MAG_0p75HZ              0
#define MAG_1p5HZ               1
#define MAG_3p0HZ               2
#define MAG_7p5HZ               3
#define MAG_15HZ                4       // Default
#define MAG_30HZ                5
#define MAG_75HZ                6
#define MAG_220HZ               7

// MAGREG_CRB_REG Gain setting [Gauss]
#define MAG_1p3G                1
#define MAG_1p9G                2
#define MAG_2p5G                3
#define MAG_4p0G                4
#define MAG_4p7G                5
#define MAG_5p6G                6
#define MAG_8p1G                7

// MAGREG_MR_REG Mode select bits
#define MAG_Continuous_Conv     0
#define MAG_Single_Conv         1
#define MAG_Sleep_Mode          2

// MAGREG_SR_REG 
#define MAG_DRDY                1
#define MAG_LOCK                2


class SCIboard_LSM303DLHC
{
public:
    SCIboard_LSM303DLHC(SCIboard_I2C *ptr_I2C);
    void getDeviceID(unsigned char *id);

    void setAccMode(unsigned char AccFs, unsigned char AccRate);
    unsigned char getAccStatus(void);
    bool bAccDataAvailable(void);
    void getAccData(float *fData);
    unsigned char getInt1Src(void);
    void writeCtrlReg(unsigned char reg, unsigned char value);

    void setMagMode(unsigned char MagFs, unsigned char MagRate);
    unsigned char getMagStatus(void);
    bool bMagDataAvailable(void);
    void getMagData(float *fData);
    void getMagData(char *cData);
    float getTemp(void);
    void getTemp(char *cData);
  
private:
    SCIboard_I2C *pI2C;
    float accSF;
    float accRate;
    float magSF[3];
    float magRate;
};

#endif