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
Committer:
AstrodyneSystems
Date:
Wed Dec 18 17:43:09 2013 +0000
Revision:
4:09ffcb9bc1d3
Added MOSFET switches and ADC reading

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AstrodyneSystems 4:09ffcb9bc1d3 1 /* SCIboard(TM) MOSFET.cpp
AstrodyneSystems 4:09ffcb9bc1d3 2 Copyright (c) 2013 K. Andres
AstrodyneSystems 4:09ffcb9bc1d3 3
AstrodyneSystems 4:09ffcb9bc1d3 4 Permission is hereby granted, free of charge, to any person obtaining a copy
AstrodyneSystems 4:09ffcb9bc1d3 5 of this software and associated documentation files (the "Software"), to deal
AstrodyneSystems 4:09ffcb9bc1d3 6 in the Software without restriction, including without limitation the rights
AstrodyneSystems 4:09ffcb9bc1d3 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
AstrodyneSystems 4:09ffcb9bc1d3 8 copies of the Software, and to permit persons to whom the Software is
AstrodyneSystems 4:09ffcb9bc1d3 9 furnished to do so, subject to the following conditions:
AstrodyneSystems 4:09ffcb9bc1d3 10
AstrodyneSystems 4:09ffcb9bc1d3 11 The above copyright notice and this permission notice shall be included in
AstrodyneSystems 4:09ffcb9bc1d3 12 all copies or substantial portions of the Software.
AstrodyneSystems 4:09ffcb9bc1d3 13
AstrodyneSystems 4:09ffcb9bc1d3 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
AstrodyneSystems 4:09ffcb9bc1d3 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
AstrodyneSystems 4:09ffcb9bc1d3 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AstrodyneSystems 4:09ffcb9bc1d3 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
AstrodyneSystems 4:09ffcb9bc1d3 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
AstrodyneSystems 4:09ffcb9bc1d3 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
AstrodyneSystems 4:09ffcb9bc1d3 20 THE SOFTWARE.
AstrodyneSystems 4:09ffcb9bc1d3 21 */
AstrodyneSystems 4:09ffcb9bc1d3 22
AstrodyneSystems 4:09ffcb9bc1d3 23 #include "SCIboard_MOSFET.h"
AstrodyneSystems 4:09ffcb9bc1d3 24
AstrodyneSystems 4:09ffcb9bc1d3 25 #define ADC_SCALE_FACTOR 14.2376
AstrodyneSystems 4:09ffcb9bc1d3 26
AstrodyneSystems 4:09ffcb9bc1d3 27 // LEDs
AstrodyneSystems 4:09ffcb9bc1d3 28 extern DigitalOut led1;
AstrodyneSystems 4:09ffcb9bc1d3 29 extern DigitalOut led2;
AstrodyneSystems 4:09ffcb9bc1d3 30 extern DigitalOut led3;
AstrodyneSystems 4:09ffcb9bc1d3 31 extern DigitalOut led4;
AstrodyneSystems 4:09ffcb9bc1d3 32
AstrodyneSystems 4:09ffcb9bc1d3 33 // Buzzer
AstrodyneSystems 4:09ffcb9bc1d3 34 extern DigitalOut alert;
AstrodyneSystems 4:09ffcb9bc1d3 35
AstrodyneSystems 4:09ffcb9bc1d3 36 // FET controls
AstrodyneSystems 4:09ffcb9bc1d3 37 extern DigitalOut fet_out1;
AstrodyneSystems 4:09ffcb9bc1d3 38 extern DigitalOut fet_out2;
AstrodyneSystems 4:09ffcb9bc1d3 39 extern DigitalOut fet_out3;
AstrodyneSystems 4:09ffcb9bc1d3 40 extern DigitalOut fet_out4;
AstrodyneSystems 4:09ffcb9bc1d3 41
AstrodyneSystems 4:09ffcb9bc1d3 42 // ADC inputs
AstrodyneSystems 4:09ffcb9bc1d3 43 extern AnalogIn batt_mon;
AstrodyneSystems 4:09ffcb9bc1d3 44 extern AnalogIn fet_mon1;
AstrodyneSystems 4:09ffcb9bc1d3 45 extern AnalogIn fet_mon2;
AstrodyneSystems 4:09ffcb9bc1d3 46 extern AnalogIn fet_mon3;
AstrodyneSystems 4:09ffcb9bc1d3 47 extern AnalogIn fet_mon4;
AstrodyneSystems 4:09ffcb9bc1d3 48
AstrodyneSystems 4:09ffcb9bc1d3 49 // Timers
AstrodyneSystems 4:09ffcb9bc1d3 50 Timeout timeoutFet1, timeoutFet2, timeoutFet3, timeoutFet4;
AstrodyneSystems 4:09ffcb9bc1d3 51
AstrodyneSystems 4:09ffcb9bc1d3 52
AstrodyneSystems 4:09ffcb9bc1d3 53 SCIboard_Mosfet::SCIboard_Mosfet(void) {
AstrodyneSystems 4:09ffcb9bc1d3 54 }
AstrodyneSystems 4:09ffcb9bc1d3 55
AstrodyneSystems 4:09ffcb9bc1d3 56
AstrodyneSystems 4:09ffcb9bc1d3 57 // Timeout subroutines
AstrodyneSystems 4:09ffcb9bc1d3 58 void fet1_Off() {
AstrodyneSystems 4:09ffcb9bc1d3 59 led1 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 60 fet_out1 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 61 timeoutFet1.detach();
AstrodyneSystems 4:09ffcb9bc1d3 62 }
AstrodyneSystems 4:09ffcb9bc1d3 63
AstrodyneSystems 4:09ffcb9bc1d3 64 void fet2_Off() {
AstrodyneSystems 4:09ffcb9bc1d3 65 led2 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 66 fet_out2 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 67 timeoutFet1.detach();
AstrodyneSystems 4:09ffcb9bc1d3 68 }
AstrodyneSystems 4:09ffcb9bc1d3 69
AstrodyneSystems 4:09ffcb9bc1d3 70 void fet3_Off() {
AstrodyneSystems 4:09ffcb9bc1d3 71 led3 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 72 fet_out3 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 73 timeoutFet1.detach();
AstrodyneSystems 4:09ffcb9bc1d3 74 }
AstrodyneSystems 4:09ffcb9bc1d3 75
AstrodyneSystems 4:09ffcb9bc1d3 76 void fet4_Off() {
AstrodyneSystems 4:09ffcb9bc1d3 77 led4 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 78 fet_out4 = 0;
AstrodyneSystems 4:09ffcb9bc1d3 79 timeoutFet1.detach();
AstrodyneSystems 4:09ffcb9bc1d3 80 }
AstrodyneSystems 4:09ffcb9bc1d3 81
AstrodyneSystems 4:09ffcb9bc1d3 82
AstrodyneSystems 4:09ffcb9bc1d3 83 // Command MOSFET on for duration (seconds)
AstrodyneSystems 4:09ffcb9bc1d3 84 void SCIboard_Mosfet::setFet(int iFetNum, float fDuration) {
AstrodyneSystems 4:09ffcb9bc1d3 85 switch(iFetNum) {
AstrodyneSystems 4:09ffcb9bc1d3 86 case 1:
AstrodyneSystems 4:09ffcb9bc1d3 87 led1 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 88 fet_out1 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 89 timeoutFet1.attach(&fet1_Off, fDuration);
AstrodyneSystems 4:09ffcb9bc1d3 90 break;
AstrodyneSystems 4:09ffcb9bc1d3 91
AstrodyneSystems 4:09ffcb9bc1d3 92 case 2:
AstrodyneSystems 4:09ffcb9bc1d3 93 led2 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 94 fet_out2 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 95 timeoutFet2.attach(&fet2_Off, fDuration);
AstrodyneSystems 4:09ffcb9bc1d3 96 break;
AstrodyneSystems 4:09ffcb9bc1d3 97
AstrodyneSystems 4:09ffcb9bc1d3 98 case 3:
AstrodyneSystems 4:09ffcb9bc1d3 99 led3 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 100 fet_out3 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 101 timeoutFet1.attach(&fet3_Off, fDuration);
AstrodyneSystems 4:09ffcb9bc1d3 102 break;
AstrodyneSystems 4:09ffcb9bc1d3 103
AstrodyneSystems 4:09ffcb9bc1d3 104 case 4:
AstrodyneSystems 4:09ffcb9bc1d3 105 led4 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 106 fet_out4 = 1;
AstrodyneSystems 4:09ffcb9bc1d3 107 timeoutFet1.attach(&fet4_Off, fDuration);
AstrodyneSystems 4:09ffcb9bc1d3 108 break;
AstrodyneSystems 4:09ffcb9bc1d3 109
AstrodyneSystems 4:09ffcb9bc1d3 110 default:
AstrodyneSystems 4:09ffcb9bc1d3 111 break;
AstrodyneSystems 4:09ffcb9bc1d3 112 }
AstrodyneSystems 4:09ffcb9bc1d3 113 }
AstrodyneSystems 4:09ffcb9bc1d3 114
AstrodyneSystems 4:09ffcb9bc1d3 115
AstrodyneSystems 4:09ffcb9bc1d3 116 // CAUTION: Small current flows through sense resistor (30K ohm)
AstrodyneSystems 4:09ffcb9bc1d3 117 // whenever arm switch is on. Used to determine continuity of circuit
AstrodyneSystems 4:09ffcb9bc1d3 118 // Does not include reverse polarity protection diode voltage drop
AstrodyneSystems 4:09ffcb9bc1d3 119 float SCIboard_Mosfet::getFetVoltage(int iFetNum) {
AstrodyneSystems 4:09ffcb9bc1d3 120 float f;
AstrodyneSystems 4:09ffcb9bc1d3 121
AstrodyneSystems 4:09ffcb9bc1d3 122 switch(iFetNum) {
AstrodyneSystems 4:09ffcb9bc1d3 123 case 1:
AstrodyneSystems 4:09ffcb9bc1d3 124 f = fet_mon1;
AstrodyneSystems 4:09ffcb9bc1d3 125 break;
AstrodyneSystems 4:09ffcb9bc1d3 126
AstrodyneSystems 4:09ffcb9bc1d3 127 case 2:
AstrodyneSystems 4:09ffcb9bc1d3 128 f = fet_mon2;
AstrodyneSystems 4:09ffcb9bc1d3 129 break;
AstrodyneSystems 4:09ffcb9bc1d3 130
AstrodyneSystems 4:09ffcb9bc1d3 131 case 3:
AstrodyneSystems 4:09ffcb9bc1d3 132 f = fet_mon3;
AstrodyneSystems 4:09ffcb9bc1d3 133 break;
AstrodyneSystems 4:09ffcb9bc1d3 134
AstrodyneSystems 4:09ffcb9bc1d3 135 case 4:
AstrodyneSystems 4:09ffcb9bc1d3 136 f = fet_mon4;
AstrodyneSystems 4:09ffcb9bc1d3 137 break;
AstrodyneSystems 4:09ffcb9bc1d3 138
AstrodyneSystems 4:09ffcb9bc1d3 139 default:
AstrodyneSystems 4:09ffcb9bc1d3 140 f=0;
AstrodyneSystems 4:09ffcb9bc1d3 141 break;
AstrodyneSystems 4:09ffcb9bc1d3 142 }
AstrodyneSystems 4:09ffcb9bc1d3 143 return(f * ADC_SCALE_FACTOR);
AstrodyneSystems 4:09ffcb9bc1d3 144 }
AstrodyneSystems 4:09ffcb9bc1d3 145
AstrodyneSystems 4:09ffcb9bc1d3 146 // Does not include reverse polarity protection diode voltage drop
AstrodyneSystems 4:09ffcb9bc1d3 147 float SCIboard_Mosfet::getBattVoltage(void) {
AstrodyneSystems 4:09ffcb9bc1d3 148 return(batt_mon * ADC_SCALE_FACTOR);
AstrodyneSystems 4:09ffcb9bc1d3 149 }