Following up on a product feature for the SF11/C microLiDAR™ sensor published earlier this month, we focus today’s edition of LiDAR Matters on connecting to the SF11/C.
The SF11/C microLiDAR™ is one of the most popular sensors in the LightWare range. Considered the definitive laser altimeter for drones and other unmanned aerial vehicles (UAVs), the SF11/C is the ideal solution for accurate Above Ground Level (AGL) measurements, automated landings, precision hovering and terrain following.
Operating from a regulated 5 V DC supply, the SF11/C includes Analog, I2C and Serial interfaces that easily connect to a Pixhawk flight controller or other standard processing platforms. Each interface on the SF11/C can be configured using a simple software menu that is accessible through the built-in, micro-USB port. Settings can also be changed in-situ using the command sets available for the serial and I2C ports.
The SF11/C gets power from either a regulated +5 V DC supply on the main connector or via the USB port when it is connected to a PC. There are Analog, Serial and I2C interfaces on the main connector and either one or a combination of interfaces may be connected to a host controller. The built-in micro-USB port can be used to input settings and to test the performance of the SF11/C. Settings may also be changed through the serial and I2C ports.
Power supply option 1: USB
The SF11/C can be powered directly from the USB port of a PC or laptop. This is particularly useful for testing the SF11/C before it is installed onto your system, and for changing the settings in readiness for the final application.
Power supply option 2: Regulated +5 V DC
The second power supply option is to connect a regulated voltage of 5 V ± 10% DC to the main connector. If the power wires are more than 30 cm long, we recommend using a decoupling capacitor of 100 µF, or other noise suppression components to reduce the chance interference being picked up on the power wires. It is important that this voltage is stable and well regulated.
Regulated +5 V DC power supply connections
Serial interface
The serial interface on the main connector can be used to output the measured altitude in meters as an ASCII encoded number. This interface uses 3.3 V logic levels (5 V tolerant) and can be connected directly to any similar, compatible interface. Distances are transmitted whenever the SF11/C receives an ASCII ‘d’ character from the host controller. The baud rate for the serial interface is selectable through the USB menu system. The maximum delay between receiving a character and returning the altitude is 25ms.
The serial interface also supports an ASCII based command set that can be used to read or write values to the SF11/C. To read a value, the command starts with a ‘?’ character and to write a new value, the command starts with a ‘#’ character. All command characters are in upper case and commands end with the <CR> and <LF> characters (ASCII ‘\r’ and ’\n’).
Commands are echoed back to the host along with the result allowing for totally asynchronous communication with Linux based controllers. For example, the zero-datum offset can be retrieved as follows:
command: ?LO<CR><LF> reply: ?LO 0.00<CR><LF>
Changing a setting is done in a similar way with the new value appended to the command. The new value is confirmed in the reply. For example, to change the zero-datum offset:
command: #LO,0.32<CR><LF> reply: #LO,0.32 0.32<CR><LF>
Serial interface connections
Note: The default baud rate is 115200 bps.
I2C interface
The I2C interface on the main connector can be used to output a value that represents the altitude in centimeters. This interface operates in “slave” mode and uses 3.3 V logic levels. The I2C address can be set through the USB menu system. The host controller acts as the I2C “master” and sends the address to the SF11/C as an 8-bit value (7 address bits plus 1 read/write bit). The SF11/C then returns the altitude as a 16-bit integer. The maximum delay between receiving the address and returning the altitude is 25ms.
The I2C bus also has a binary coded command set that can be used to retrieve or change values. Distance values are always in centimeters and signed values are permitted where used. The main I2C address can only be set through the USB menu and cannot be changed accidentally through the I2C port.
Values in the SF11/C are held at specific locations and once a value has been read or written the location remains active until changed. This is useful to simplify the code needed for the continuous monitoring of a value. For example, to update the distance continuously, set the distance location once then read the value in a loop like the Arduino code below:
float distance; // Distance will be in meters byte a, b; // Bytes read by the I2C port
void setup() // One time setup
{
Wire.beginTransmission(0x66); // Enable transmission to the I2C address
Wire.write(0); // Write the distance location -> 0
Wire.endTransmission(); // End the transmission
} // The output registers are now configured to send the distance
void loop() // Main loop
{
delay(50); // Delay or user code here
Wire.requestFrom(0x66, 2); // Request 2 bytes from the SF11/C
while(Wire.available()) // Make sure the SF11/C sends the required number of bytes
{
a = Wire.read(); // Fetch the high byte of the distance b = Wire.read(); // Fetch the low byte of the distance
}
distance = (float)(a * 256 + b)/100; // Convert to a floating point value in meters
}
Writing new values also makes the new location active so it needs to be changed back again if you want to monitor something else. In this example the zero-datum offset value is updated then the distance is read continuously:
float zero_offset = 0.34; // Start with a new zero-datum value in meters a = (byte)(zero_offset * 100 >> 8); // Convert to cm and fetch the high byte b = (byte)(zero_offset * 100 && 0xff); // Fetch the low byte
void setup() // One time setup
{
Wire.beginTransmission(0x66); // Enable transmission to the I2C address
Wire.write(7); // Write the zero-datum offset location -> 7
Wire.write(a); // Write the high byte of the zero-datum
Wire.write(b); // Write the low byte of the zero-datum
Wire.endTransmission(); // End the transmission
// The zero-datum location is still active but is not needed
Wire.beginTransmission(0x66); // Enable transmission to the I2C address
Wire.write(0); // Write the distance location -> 0
Wire.endTransmission(); // End the transmission – the distance location is now active
}
I2C interface connections
Caution Ensure that a unique I2C address is assigned to the SF11/C and that no other devices share this address. |
Your safety: our priority
The SF11/C is a laser-based altimeter that emits ionizing laser radiation. The level of the laser emission is Class 1M which indicates that the laser beam is safe to look at with the unaided eye but must not be viewed using binoculars or other optical devices at less than 15 meters. Notwithstanding the safety rating, avoid looking into the beam and switch the unit off when working in the area.
CAUTION — The use of optical instruments with this product will increase eye hazard.
The SF11/C should not be disassembled or modified in any way. The laser eye safety rating depends on the mechanical integrity of the optics and electronics, so discontinue using the SF11/C if these are damaged. There are no user serviceable parts for the SF11/C, and we recommend that repair work only be carried out by LightWare or a qualified service agent.
The SF11/C microLiDAR™ sensor requires no regular maintenance, but if the lenses do start to collect dust, wipe them with suitable lens cleaning materials. Also ensure that the SF11/C is switched off before looking into the lenses. Lastly, the SF11/C should be mounted using the four holes provided on the circuit board. It is important to not hold or clamp the lens tubes as this may cause damage and adversely affect the laser safety rating.
Connecting to Pixhawk Autopilot using “serial 4”
Laser radiation information
Specification | Value | Notes |
Laser wavelength | 905 nm | |
Pulse width | <20 ns | |
Pulse frequency | 31.47 kHz | |
Peak power | <10 W | 50 mm aperture at 2 meters |
Average power | <0.6 mW | 7 mm aperture |
Average energy per pulse | <300 nJ | |
NOHD (Nominal Ocular Hazard Distance) |
15 m | Distance beyond where binoculars may be used safely |
Get the best out of your microLiDAR™ sensor with these accessories:
Essential download: The SF11/C product manual
SF11/C accessories:
Let’s partner with you!
LightWare is ready to partner with your business and help achieve your airborne objectives. We strive for great service and offer a comprehensive range of sensors that seamlessly integrate with standard UAV systems. No case is alike, and we offer tailored LiDAR solutions where quality, accuracy and data-compliance is paramount to your business. Contact us on info@lightwarelidar.com