Professional Documents
Culture Documents
com
LSM9DS1BreakoutHookupGuide
CONTRIBUTORS: JIMB0
FAVORITE 1
Introduction
TheLSM9DS1isaversatile,motionsensingsysteminachip.Ithousesa3axisaccelerometer,3axis
gyroscope,and3axismagnetometerninedegreesoffreedom(9DOF)inasingleIC!Eachsensorin
theLSM9DS1supportsawiderangeofranges:theaccelerometersscalecanbesetto2,4,8,or16
g,thegyroscopesupports245,500,and2000/s,andthemagnetometerhasfullscalerangesof2,
4,12,or16gauss.TheIMUinachipissocoolweputitonaquartersizedbreakoutboard.
TheLSM9DS1isequippedwithadigitalinterface,buteventhatisflexible:itsupportsbothI2CandSPI,
soyoullbehardpressedtofindamicrocontrolleritdoesntworkwith.
CoveredInThisTutorial
ThistutorialisdevotedtoallthingsLSM9DS1.Wellintroduceyoutothechipitself,thenthebreakout
board.Thenwellswitchovertoexamplecode,andshowyouhowtointerfacewiththeboardusingan
ArduinoandourLSM9DS1Arduinolibrary.
Thetutorialissplitintothefollowingpages:
LSM9DS1OverviewAnoverviewoftheLSM9DS1,examiningitsfeaturesandcapabilities.
BreakoutBoardOverviewThispageexaminestheLSM9DS1BreakoutBoardtopicslikethe
pinout,jumpers,andschematicarecovered.
HardwareAssemblyAssemblytipsandtricks,plussomeinformationaboutthebreakouts
dimensions.
HardwareHookupExampleI2CandSPIwiringdiagrams.
InstlalingtheArduinoLibraryHowtoinstalltheArduinolibrary,anduseasimpleexample
sketchtoverifythatyourhookupworks.
UsingtheArduinoLibraryAnoverviewoftheSFE_LSM9DS1Arduinolibrarysfunctionsand
variables.
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 1/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
RequiredMaterials
ThistutorialexplainshowtousetheLSM9DS1BreakoutBoardwithanArduino.Tofollowalong,youll
needthefollowingmaterials:
LSM9DS1BreakoutBoard
ArduinoUNO,RedBoard,oranotherArduinocompatibleboard
StraightMaleHeadersOrwire.Somethingtoconnectbetweenthebreakoutandabreadboard.
BreadboardAnysize(evenmini)shoulddo.
M/MJumperWiresToconnectbetweenArduinoandbreadboard.
TheLSM9DS1isa3.3Vdevice!Supplyingvoltagesgreaterthan~3.6Vcanpermanentlydamage
theIC.AslongasyourArduinohasa3.3Vsupplyoutput,andyou'reOKwithusingI2C,you
shouldn'tneedanyextralevelshifting.ButifyouwanttouseSPI,youmayneedalevelshifter.
Alogiclevelshifterisrequiredforany5VoperatingArduino(UNO,RedBoard,Leonardo,etc).Ifyouuse
a3.3VbasedduinoliketheArduinoPro3.3Vor3.3VProMinithereisnoneedforlevelshifting.
SuggestedReading
Ifyourenotfamiliarwithsomeoftheconceptsbelow,werecommendcheckingoutthattutorialbefore
continuingon.
AccelerometerBasics
Gyroscopes
SerialPeripheralInterface(SPI)
InterICCommunication(I2C)
LogicLevels
BiDirectionalLevelShifterHookupGuide
LSM9DS1Overview
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 2/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
TheLSM9DS1isoneofonlyahandfulofICsthatcanmeasurethreekeypropertiesofmovement
angularvelocity,acceleration,andheadinginasingleIC.
Thegyroscopecanmeasureangularvelocitythatishowfast,andalongwhichaxis,amIrotating?
AngularvelocitiesaremeasuredindegreespersecondusuallyabbreviatedtoDPSor/s.The
LSM9DS1canmeasureupto2000DPS,thoughthatscalecanalsobesettoeither245or500DPSto
getafinerresolution.
Anaccelerometermeasuresacceleration,whichindicateshowfastvelocityischanginghowfastamI
speedinguporslowingdown?Accelerationisusuallyeithermeasuredinm/s2(meterspersecondper
second)orgs(gravities[about9.8m/s2]).Ifanobjectissittingmotionlessitfeelsabout1gof
accelerationtowardstheground(assumingthatgroundisonearth,andtheobjectisnearsealevel).
TheLSM9DS1measuresitsaccelerationings,anditsscalecanbesettoeither2,4,8,or16g.
Finally,theresthemagnetometer,whichmeasuresthepoweranddirectionofmagneticfields.Though
theyrenoteasilyvisible,magneticfieldsexistallarounduswhetheryoureholdingatinyferromagnet
orfeelinganattractiontoEarthsmagneticfield.TheLSM9DS1measuresmagneticfieldsinunitsof
gauss(Gs),andcansetitsmeasurementscaletoeither4,8,12,or16Gs.
Bymeasuringthesethreeproperties,youcangainagreatdealofknowledgeaboutanobjects
movementandorientation.9DOFshavetonsandtonsofapplications.Measuringtheforceanddirection
ofEarthsmagneticfieldwithamagnetometer,youcanapproximateyourheading.Anaccelerometerin
yourphonecanmeasurethedirectionoftheforceofgravity,andestimateorientation(portrait,
landscape,flat,etc.).Quadcopterswithbuiltingyroscopescanlookoutforsuddenrollsorpitches,and
correcttheirmomentumbeforethingsgetoutofhand.
AxisorientationsoftheLSM9DS1IC.NotetheICspolaritymarkingdot(forsomereasontheyrotated
themagnetometerinthedatasheet).
TheLSM9DS1measureseachofthesemovementpropertiesinthreedimensions.Thatmeansit
producesninepiecesofdata:accelerationinx/y/z,angularrotationinx/y/z,andmagneticforcein
x/y/z.TheLSM9DS1Breakouthaslabelsindicatingtheaccelerometerandgyroscopeaxisorientations,
whichsharearighthandrulerelationshipwitheachother.Notethat,accordingtothedatasheet,thex
andyaxesofthemagneticsensorareflipped(theimageaboveiscopiedfromthedatasheet).
TheLSM9DS1is,inasense,twoICssmashedintoonepackagelikeifyoucombinedanLSM6DS3
accel/gryowithanLSM303DLMTRaccel/mag.Onehalfofthedevicetakescareofallthingsgyroscope
andaccelerometer,andtheotherhalfmanagessolelythemagnetometer.Infact,afewofthecontrol
pinsarededicatedtoasinglesensortherearetwochipselectpins(CS_AGfortheaccel/gyroand
CS_Mforthemag)andtwoserialdataoutpins(SDO_AGandSDO_M).
ChooseYourOwnAdventure:SPIorI2C
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 3/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
Inadditiontobeingabletomeasureawidevarietyofmovementvectors,theLSM9DS1isalsomulti
featuredonthecommunicationinterfaceend.ItsupportsbothSPIandI2C,soyoushouldhaveno
difficultyfindingamicrocontrollerthatcantalktoit.
SPIisgenerallytheeasierofthetwotoimplement,butitalsorequiresmorewiresfourversusI2Cs
two.
BecausetheLSM9DS1supportsbothmethodsofcommunication,somepinshavetopulldouble
duty.TheSerialDataOut(SDO)pinforexample,doesjustthatforSPImode,butifyoureusingthe
deviceoverI2Citbecomesanaddressselector.Thechipselect(CS_MandCS_AG)pinsactivateSPI
modewhenlow,butiftheyrepulledhighthedeviceassumesI2Ccommunication.Inthesectionbelow
wediscusseachoftheLSM9DS1spins,watchoutforthosepinsthatsupportbothinterfaces.
FormuchmoredetailedinformationabouttheIC,weencourageyoutocheckoutthedatasheet!
BreakoutBoardOverview
NowthatyouknoweverythingyouneedtoabouttheLSM9DS1IC,letstalkabitaboutthebreakout
boarditsrestingon.Onthispagewelldiscussthepinsthatarebrokenout,andsomeoftheother
featuresontheboard.
ThePinout
Intotal,theLSM9DS1Breakoutbreaksout13pins.
Thebareminimumconnectionsrequiredarebrokenoutontheleftsideoftheboard.Thesearethe
powerandI2Cpins(thecommunicationinterfacetheboarddefaultsto):
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 4/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
Theremainingpinsarebrokenoutontheotherside.ThesepinsbreakoutSPIfunctionalityandinterrupt
outputs:
CS Accel/Gyro ThispinselectsbetweenI2CandSPIontheaccel/gyro.KeepitHIGHfor
AG ChipSelect I2C,oruseitasan(activelow)chipselectforSPI.
HIGH(1):SPIidlemode/I2Cenabled
LOW(0):SPIenabled/I2Cdisabled.
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 5/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
Select
PowerSupply
TheVDDandGNDpinsarewhereyoullsupplyavoltageand0VreferencetotheIC.Thebreakout
boarddoesnotregulatethisvoltage,somakesureitfallswithintheallowedsupplyvoltagerangeofthe
LSM9DS1:2.4Vto3.6V.Belowistheelectricalcharacteristicstablefromthedatasheet.
Thecommunicationpinsarenot5Vtolerant,sotheyllneedtoberegulatedtowithinafewmVofVDD.
Anotherverycoolthingaboutthissensorishowlowpoweritis.Innormaloperationwitheverysensor
turnedonitllpullaround4.5mA.
Communication
CS_AG,CS_M,SDO_AG,SDO_M,SCL,andSDAareallusedfortheI2CandSPIinterfaces.The
functionofthesepinsdependsuponwhichofthetwointerfacesyoureusing.
IfyoureusingusingI2Chereshowyoumightconfigurethesepins:
PullCS_AGandCS_MHIGH.Thiswillsetboththeaccel/gyroandmagnetometertoI2Cmode.
SetSDO_AGandSDO_MeitherHIGHorLOW.ThesepinssettheI2Caddressofthegyroand
accel/magsensors.
ConnectSCLtoyourmicrocontrollersSCLpin.
ConnectSDAtoyourmicrocontrollersSDApin.
Theboardhasabuiltin10kpullupresistoronbothSDAandSCLlines.Ifthatvalueistoohigh,
youcanaddasecondresistorinparalleltodividethepullupresistancedown(another10kin
parallel,forexample,wouldcreateanequivalent5kresistance).
Or,ifyoureusingSPI:
ConnectCS_AGandCS_Mtotwoindividuallycontrollablepinsonyourmicrocontroller.These
chipselectsareactivelowwhenthepingoesLOW,SPIcommunicationwitheitherthe
accel/gyro(CS_AG)ormagnetometer(CS_M)isenabled.
SDO_AGandSDO_Maretheserialdataoutpins.Inmanycasesyoullwanttoconnectthem
together,andwirethemtoyourmicrocontrollersMISO(masterin,slaveout)pin.
ConnectSCLtoyourmicrocontrollersSCLK(serialclock)pin.
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 6/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
ConnectSDAtoyourmicrocontrollersMOSI(masterout,slavein)pin.
Interrupts
ThereareavarietyofinterruptsontheLSM9DS1.Whileconnectinguptotheseisnotascriticalasthe
communicationorpowersupplypins,usingthemwillhelpyougetthemostoutofthechip.
TheaccelerometerandgyroscopespecificinterruptsareINT1andINT2.Thesecanbothbe
programmedtointerruptaseitheractivehighoractivelow,triggeringoneventslikedatareadyorwhen
anaccelerationorangularrotationexceedsasetthreshold.
DRDYandINTMaredevotedmagnetometerinterrupts.DRDYwillgolowwhennewmagnetometer
readingsareavailable.INTMisalittlemorecustomizableitcanbeusedtotriggerwhenevermagnetic
fieldreadingsexceedathresholdonasetaxis.
TheJumpers
FlippingtheLSM9DS1breakoutoverrevealsatriooftwoway,surfacemountjumpers.Eachofthese
jumperscomesclosed.TheirpurposeistoautomaticallyputtheLSM9DS1intoI2Cmode.
Thethreetwowayjumpersonthebackoftheboard.Followthelabelstoseewhichpintheypullup.
EachofthesejumperspullsapairofpinsuptoVDD,througha10kresistor.Themiddlepadofthe
jumperconnectstotheresistor,andtheedgepadsconnecttoapin(followthelabelstofindoutwhich
one).Youcanseehowthosejumpersmatchupontheschematic:
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 7/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
ThetopjumperconnectsCS_AGandCS_MtoapullupthisllsettheLSM9DS1toI2Cmode.The
middlejumperpullsupSDO_AGandSDO_M,whichsetstheI2Caddressofthechip.Finally,thefarleft
jumperaddspullupresistorstotheI2CcommunicationpinsSDAandSCL.
Theintentionofthesejumpersistomakeitaseasyaspossibletousetheboardusingasfewwiresas
possible.IfyoureusingthebreakoutwithI2C,youcanignorethefourSDOandCSpins.
Todisableanyofthesejumpers,whipoutyourhandyhobbyknife,andcarefullycutthesmalltraces
betweenmiddlepadandedgepads.EvenifyoureusingSPI,though,thejumpersshouldnthinderyour
abilitytocommunicatewiththechip.
HardwareAssembly
Onthispagewelldiscussassemblyhints.Theresreallynotmuchtoassemblingthebreakoutboard
therealkeyissolderingsomethingintothebreakoutholes.
SolderSomething
TogetasolidelectricalandphysicalconnectiontotheLSM9DS1Breakout,youllneedtosoldereither
connectorsorwirestothebreakoutpins.What,exactly,yousolderintotheboarddependsonhow
youregoingtouseit.
Ifyouregoingtousethebreakoutboardinabreadboardorsimilar0.1"spacedperfboard,we
recommendsolderingstraightmaleheadersintothepins(therearealsolongheadersifyouneedem).
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 8/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
IfyoureonlygoingtousetheI2Cinterfaceandignoretheinterruptsyoucangetawaywithsoldering
justthefourpinheader.
Ifyouregoingtomountthebreakoutintoatightplace,youmaywanttooptforsolderingwires(stranded
orsolidcore)intothepins.
MountingtheBreakout
BecausetheLSM9DS1sensesmotion,itsimportant(formostapplications,atleast)tokeepitpinnedin
place.Sotheboardshavefourmountingholestowardthecorners.Thedrillholesare0.13"indiameter,
sotheyshouldaccommodateany4/40screw.
ConsulttheEAGLEPCBdesignfilestofindoutmoreabouttheBreakoutsdimensions.
HardwareHookup
2
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 9/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
TheLSM9DS1willworkovereitherI2CorSPI.Herearesomeexamplewiringdiagrams,demonstrating
howtowireupeachinterface.
I2CHardwareHookup
Outofthebox,theboardisconfiguredforanI2Cinterface,assuchwerecommendusingthishookupif
youreotherwiseagnostic.Allyouneedisfourwires!
ConnectingtheLSM9DS1toaRedBoardviaI2C.
Thishookupreliesonallofthejumpersonthebackoftheboardbeingset(astheyshouldbe,unless
theyvebeensliced).Ifthejumpershavebeencut,connectallfourCSandSDOpinsto3.3V.
NolevelshifterseventhoughtheArduinosI/Opinsare5V?Well,I2Cisafunnyinterface:pinsarent
directlypulledhighbyaGPIO,insteadanopendrainMOSFETreliesonpullupresistorstocreatea
logichigh.Becausethebreakoutboardpullupresistorsarestronger(lessresistance)thantheArduinos
internalpullups,thevoltageonthelogicpinswillbemuchcloserto3.3V(thoughalittlehigher)than5V
withinatolerablerange.JustmakesureyoupowerthebreakoutoffoftheArduinos3.3Vpowerrail!
SPIHardwareHookup
FortheSPIhookup,wellusetheArduinoshardwareSPIpins11(MOSI),12(MISO),and13(SCLK)
inadditiontotwodigitalpinsofyourchoice(forthechipselects).Ifyoureusinga3.3VArduino,likethe
3.3V/8MHzProMini,youcanhookthemicrocontrollerpinsdirectlyuptotheLSM9DS1.
Ifyoureusinga5VArduino,youllalsoneedtograbalevelshiftertokeeptheSPIsignalswithinthe
tolerablevoltagerange.YoucouldusetheSparkFunBiDirectionalLogicLevelConverterforexample:
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 10/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
(Unlessyouenjoywiretangles,theI2Cor3.3VSPIhookupsarerecommended.)
InstallingtheArduinoLibrary
WevewrittenafullfeaturedArduinolibrarytohelpmakeinterfacingwiththeLSM9DS1sgyro,
accelerometer,andmagnetometeraseasyaspossible.VisittheGitHubrepositorytodownloadthemost
recentversionofthelibrary,orclickthelinkbelow:
DOWNLOADTHESPARKFUNLSM9DS1ARDUINOLIBRARY
Forhelpinstallingthelibrary,checkoutourHowToInstallAnArduinoLibrarytutorial.Youllneedto
movetheSparkFun_LSM9DS1_Arduino_LibraryfolderintoalibrariesfolderwithinyourArduino
sketchbook.
TheLSM9DS1_Basic_I2CExample
Toverifythatyourhookupworks,loaduptheLSM9DS1_Basic_I2CexamplebygoingtoFile>
Examples>LSM9DS1Breakout>LSM9DS1_Basic_I2C.(IfyoureusingtheSPIhookup,loadthe
LSM9DS1_Basic_SPIexampleinstead.)
Thedefaultvaluessetbythissketchshouldworkforafresh,outoftheboxLSM9DS1Breakoutit
assumesallofthejumpersonthebacksideareclosed.Uploadthesketch,thenopenupyourserial
monitor,settingthebaudrateto115200.Youshouldseesomethinglikethis:
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 11/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
Thecurrentreadingfromeachaxisoneachsensorisprintedout,thenthosevaluesareusedto
estimatethesensorsorientation.Pitchistheanglerotatedaroundtheyaxis,rollistheboardsrotation
aroundthexaxis,andheading(i.e.yaw)isthesensorsrotationaroundthezaxis.Tryrotatingthe
board(withoutpullingoutanywires!)toseehowthevalueschange.
UsingtheArduinoLibrary
Tohelpdemonstratethelibrarysfunctionality,ahandfulofexamplesareincludedwhichrangefrom
basictomoreadvanced.TobegintogetafeelforthelibrarysAPI,tryloadingupsomeoftheother
examples.Thecommentsatthetopofthesketchwillinstructyouonanyextrahookupthatmaybe
requiredtouseinterruptsorotherfeatures.
Onthispagewellquicklyrundownsomeofthemorebasic,fundamentalconceptsimplementedbythe
library.
SetupStuff
Toenablethelibrary,youllneedtoincludeit,andyoualsoneedtoincludetheSPIandWirelibraries:
#include<SPI.h>//SPIlibraryincludedforSparkFunLSM9DS1
#include<Wire.h>//I2ClibraryincludedforSparkFunLSM9DS1
#include<SparkFunLSM9DS1.h>//SparkFunLSM9DS1library
MakesuretheSPIandWireincludesareabovetheSparkFunLSM9DS1(eventhoughyoullonlybe
usingoneofthetwointerfaces).
Constructor
TheconstructorcreatesaninstanceoftheLSM9DS1class.Onceyouvecreatedtheinstance,thats
whatyoullusetocontrolthebreakoutfromthereon.Thissinglelineofcodeisusuallyplacedinthe
globalareaofyoursketch.
Theconstructorshouldbeleftwithoutanyparameters:
//UsetheLSM9DS1classtocreateanobject.[imu]canbe
//namedanything,we'llrefertothatthroughtthesketch.
LSM9DS1imu;
SettingUptheInterface
TheLSM9DS1hastonsofsettingstobeconfigured.Someareminute,othersaremorecritical.The
threemostcriticalsettingswellneedtoconfigurearethecommunicationinterfaceandthedevice
addresses.Toconfigurethesevalues,wellmakecallstotheIMUs settings struct.
HeresanexamplethatsetstheIMUupforI2Cmode,withthedefault(high)I2Caddresses:
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 12/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
//SDO_XMandSDO_Garebothpulledhigh,soouraddressesare:
#defineLSM9DS1_M0x1E//Wouldbe0x1CifSDO_MisLOW
#defineLSM9DS1_AG0x6B//Wouldbe0x6AifSDO_AGisLOW
...
imu.settings.device.commInterface=IMU_MODE_I2C;//SetmodetoI2C
imu.settings.device.mAddress=LSM9DS1_M;//Setmagaddressto0x1E
imu.settings.device.agAddress=LSM9DS1_AG;//Setagaddressto0x6B
imu.settings.device.commInterface=IMU_MODE_SPI;//SetmodetoSPI
imu.settings.device.mAddress=9;//MagCSpinconnectedtoD9
imu.settings.device.agAddress=10;//AGCSpinconnectedtoD10
begin()ingandSettingSensorRanges
OnceyouvecreatedtheLSM9DS1object,andconfigureditsinterface,callthe begin() member
functiontoinitializetheIMU.
if(!imu.begin())
{
Serial.println("FailedtocommunicatewithLSM9DS1.");
Serial.println("Loopingtoinfinity.");
while(1)
;
}
ReadingandInterpretingtheSensors
Whatgoodisthesensorifyoucantgetanydatafromit!?Herearethefunctionsyoullneedtoget
acceleration,rotationspeed,andmagneticfieldstrengthdatafromthelibrary.
readAccel(),readGyro(),andreadMag()
Thesethreefunctions readAccel() , readGyro() ,and readMag() polltheLSM9DS1togetthemost
uptodatereadingsfromeachofthethreesensors.
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 13/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
Thereadfunctionsdonttakeanyparameters,andtheydontreturnanything,sohowdoyougetthat
data?Afterthefunctionrunsitscourse,itllupdateasetofthreeclassvariables,whichwillhavethe
sensordatayoudesire. readAccel() willupdate ax , ay ,and az , readGyro() willupdate gx , gy ,
and gz ,and readMag() willupdate mx , my ,and mz .Heresanexample:
imu.readAccel();//Updatetheaccelerometerdata
Serial.print(imu.ax);//Printxaxisdata
Serial.print(",");
Serial.print(imu.ay);//printyaxisdata
Serial.print(",");
Serial.println(imu.az);//printzaxisdata
Anexampleofreadingandprintingallthreeaxesofaccelerometerdata.
Thosevaluesareallsigned16bitintegers,meaningtheyllrangefrom32,768to32,767.Thatvalue
doesntmeanmuchunlessyouknowthescaleofyoursensor,whichiswherethenextfunctionscome
intoplay.
calcAccel(),calcGyro(),andcalcMag()
Thelibrarykeepstrackofeachsensorsscale,anditimplementsthesehelperfunctionstomake
translatingbetweentherawADCreadingsofthesensortoactualunitseasy.
Heresanexampleofprintingcalculatedgyroscopevalues:
imu.readGyro();//Updategyroscopedata
Serial.print(imu.calcGyro(imu.gx));//PrintxaxisrotationinDPS
Serial.print(",");
Serial.print(imu.calcGyro(imu.gy));//PrintyaxisrotationinDPS
Serial.print(",");
Serial.println(imu.calcGyro(imu.gz));//PrintzaxisrotationinDPS
SettingSensorRangesandSampleRates
SomeofthemorecommonlyalteredattributesintheIMUarethesensorrangesandoutputdatarates.
Thesevaluescanbeconfigured,onceagain,bysettingavalueinthe settings struct.
Forexample,tosettheIMUsaccelerometerrangeto16g,gyroscopeto2000/s,andmagnetometer
to8Gs,dosomethinglikethis:
imu.settings.accel.scale=16;//Setaccelrangeto+/16g
imu.settings.gyro.scale=2000;//Setgyrorangeto+/2000dps
imu.settings.mag.scale=8;//Setmagrangeto+/8Gs
imu.begin();//Callbegintoupdatethesensor'snewsettings
Theoutputdataratesareabitmoreabstract.Thesevaluescanrangefrom16,where1istheslowest
updaterateand6isthefastest.
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 14/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
Resources&GoingFurther
HopefullythatinfodumpwasenoughtogetyourollingwiththeLSM9DS1.Ifyouneedanymore
information,herearesomemoreresources:
LSM9DS1ProductGitHubRepositoryYourrevisioncontrolledsourceforallthingsLSM9DS1.
Hereyoullfindourmostuptodatehardwarelayoutsandcode.
LSM9DS1DatasheetThisdatasheetcoverseverythingfromthehardwareandpinoutoftheIC,
totheregistermappingofthegyroscopeandaccelerometer/magnetometer.
LSM9DS1BreakoutSchematic
LSM9DS1BreakoutEAGLEFiles
GoingFurther
NowthatyouvegottheLSM9DS1upandrunning,whatprojectareyougoingtoincorporatemotion
sensinginto?Needalittleinspiration?Checkoutsomeofthesetutorials!
DungeonsandDragonsDiceGauntletThisprojectusesanaccelerometertosensearollingthe
dicemotion.YoucouldswapintheLSM9DS1toaddmorefunctionalitylikecompassbased
damagemultipliers!
AreYouOkay?WidgetUseanElectricImpandaccelerometertocreateanAreYouOKwidget.
AcozypieceoftechnologyyourfriendorlovedonecannudgetoletyouknowtheyreOKfrom
halfaworldaway.
LeapMotionTeardownAnIMUsensoriscool,butimagebasedmotionsensingisthefuture.
CheckoutthisteardownoftheminiatureKinectlikeLeapMotion!
PushingDatatoData.SparkFun.comNeedanonlineplacetostoreyourIMUdata?Checkout
data.sparkfun.com!ThistutorialdemonstrateshowtouseahandfulofArduinoshieldstopostyour
dataonline.
LeapMotionTeardown DungeonsandDragonsDiceGauntlet
Let'sseewhat'sinsidetheamazingnewLeap Aplayful,geekytutorialforaleatherbracerthat
Motioninputdevice! usesaLilyPadArduino,LilyPadaccelerometer,
andsevensegmentdisplaytorollvirtual4,6,8,
10,12,20,and100sidediceforgaming.
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 15/16
3/25/2016 LSM9DS1BreakoutHookupGuidelearn.sparkfun.com
AreYouOkay?Widget PushingDatatoData.SparkFun.com
UseanElectricImpandaccelerometertocreate Agrabbagofexamplestoshowoffthevarietyof
an"AreYouOK"widget.Acozypieceof routesyourdatacantakeonitswaytoa
technologyyourfriendorlovedonecannudgeto Data.SparkFun.comstream.
letyouknowthey'reOKfromhalfaworldaway.
https://learn.sparkfun.com/tutorials/lsm9ds1breakouthookupguide?_ga=1.1350513.1738047427.1456537067 16/16