Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
De MMA8452Q is een slimme, energiezuinige, drie-assige, capacitieve, micromachined accelerometer met 12 bits resolutie. Flexibele door de gebruiker programmeerbare opties worden geboden met behulp van ingebouwde functies in de accelerometer, configureerbaar tot twee interrupt-pinnen. Het heeft door de gebruiker selecteerbare volledige schalen van ±2g/±4g/±8g met high-pass filter gefilterde data en niet-gefilterde data die in realtime beschikbaar zijn. Hier is de demonstratie met raspberry pi met behulp van python-code.
Stap 1: Wat je nodig hebt.
1. Raspberry Pi
2. MMA8452Q
3. I²C-kabel
4. I²C-schild voor Raspberry Pi
5. Ethernet-kabel
Stap 2: Aansluitingen:
Neem een I2C-schild voor Raspberry Pi en duw het voorzichtig over de gpio-pinnen van Raspberry Pi.
Sluit vervolgens het ene uiteinde van de I2C-kabel aan op de MMA8452Q-sensor en het andere uiteinde op de I2C-afscherming.
Sluit ook de Ethernet-kabel aan op de pi of u kunt een WiFi-module gebruiken.
De aansluitingen zijn weergegeven in de afbeelding hierboven.
Stap 3: Coderen:
De python-code voor MMA8452Q kan worden gedownload van onze github-repository- ControlEverythingCommunity
Hier is de link.
We hebben de SMBus-bibliotheek gebruikt voor python-code, de stappen om SMBus op raspberry pi te installeren worden hier beschreven:
pypi.python.org/pypi/smbus-cffi/0.5.1
U kunt de code ook hier kopiëren, deze wordt als volgt gegeven:
# Gedistribueerd met een vrije wilslicentie.
# Gebruik het zoals je wilt, winst of gratis, op voorwaarde dat het past in de licenties van de bijbehorende werken.
# MMA8452Q
# Deze code is ontworpen om te werken met de MMA8452Q_I2CS I2C Mini Module.
import smbus
import tijd
# Krijg I2C-bus
bus = smbus. SMBus(1)
# MMA8452Q adres, 0x1C(28)
# Selecteer Besturingsregister, 0x2A(42)
# 0x00(00) Standby-modus
bus.write_byte_data(0x1C, 0x2A, 0x00)
# MMA8452Q adres, 0x1C(28)
# Selecteer Besturingsregister, 0x2A(42)
# 0x01(01) Actieve modus
bus.write_byte_data(0x1C, 0x2A, 0x01)
# MMA8452Q adres, 0x1C(28)
# Selecteer Configuratieregister, 0x0E(14)
# 0x00(00) Stel bereik in op +/- 2g
bus.write_byte_data(0x1C, 0x0E, 0x00)
tijd.slaap(0.5)
# MMA8452Q adres, 0x1C(28)
# Lees gegevens terug van 0x00 (0), 7 bytes
# Statusregister, X-as MSB, X-as LSB, Y-as MSB, Y-as LSB, Z-as MSB, Z-as LSB
data = bus.read_i2c_block_data(0x1C, 0x00, 7)
# Converteer de gegevens
xAccl = (gegevens[1] * 256 + gegevens[2]) / 16
als xAccl > 2047:
xAccl -= 4096
yAccl = (gegevens[3] * 256 + gegevens[4]) / 16
indien yAccl > 2047:
yAccl -= 4096 z
Accl = (gegevens[5] * 256 + gegevens[6]) / 16
als zAccl > 2047:
zAccl -= 4096
# Gegevens uitvoeren naar scherm
print "Versnelling in X-as: %d" %xAccl
print "Versnelling in Y-as: %d" %yAccl
print "Versnelling in Z-as: %d" %zAccl
Stap 4: Toepassingen:
MMA8452Q heeft verschillende toepassingen, waaronder E-kompas-toepassingen, detectie van statische oriëntatie met detectie van portret/landschap, omhoog/omlaag, links/rechts, positie-identificatie achter/voor, notebook, e-reader en tuimel- en vrije valdetectie van laptops, realtime oriëntatiedetectie inclusief virtual reality en gaming 3D-gebruikerspositiefeedback, real-time activiteitenanalyse zoals stappenteller tellen, vrije val-valdetectie voor HDD, gegist bestede GPS-back-up en nog veel meer.