MATLAB: Reading accelerometer in Arduino

accelerometerarduino

Good morning. I have to read the x,y,z values of a triple axis accelerometer (BMA220) connected to an Arduino Mega in MATLAB or Simulink. How can I do it?

Best Answer

Hi,
BMA220 has I2C connectivity interface and can be connectd to other I2C devices using the I2C bus. Each bus has an I2C Master connected to two bidirectional lines, serial data line (SDA) and serial clock (SCL). Each I2C device on an I2C bus has an unique address.
Connect BMA220 to I2C Master (Arduino or RaspberryPi), following the datasheet, example- Vcc -> 3.3V, Gnd -> Gnd, SDA -> Arduino A4 pin, SCL -> Arduino A5 pin.
You would have to connect the I2C Master to a device running MATLAB/Simulink.
Using Arduino (MATLAB R2014b and later version):
2. Use the ARDUINO command, you can load only the required library as follows:
>>a = arduino('com22', 'uno', 'Libraries', 'I2C');
% where com22 is the port on PC where arduino is identified. This can be viewed from the device manager
3. Once you have created the arduino object, use the 'scanI2CBus' command to scan the bus for I2C sensors.
4. Once you get the address of the sensors attached to the bus, create the I2C object restrictive to that address as follows:
>>BMA220 = i2cdev(a, '0x48');
% where 0x48 is where the sensor BMA220 identifies itself. This address can also be obtained from the datasheet of the sensor.
5. Use the 'readRegister' and 'writeRegister' commands to communicate with the device.
Using RaspberryPi (MATLAB 2014a and later version)
2. Create the RaspberryPi object using the command 'raspi' as follows:
>>mypi=raspi
3. Scan the i2C bus to look for the I2C sensors that are connected using the 'scanI2CBus' command as follows
>>scanI2CBus(mypi,'i2cbus')
4. Create the I2C object to use the sensor at a particular address.
>>b=i2cdev(mypi,'i2cbus','slave address');
% this slave address can be obtained by the datasheet of the sensor.
5. Use the readRegister or writeRegister commands to perform the operations on the sensor.
Related Question