Bij deze gelegenheid gaan we het hebben over een van de sensoren die het meest wordt gebruikt in Arduino-projecten met betrekking tot navigatie en oriëntatie: de GY-271. Deze module bevat de sensor HMC5883L, een magnetometer met drie assen die magnetische velden kan detecteren en ons daarom oriëntatie kan geven ten opzichte van het magnetische noorden.
Als u erover denkt om het in een project met Arduino te integreren, zullen we in dit artikel alle details ervan uitleggen: van de kenmerken, hoe u het aansluit en programmeert, tot gebruiksvoorbeelden en tips om de beste precisie te verkrijgen. Lees dus verder en ontdek hoe je een digitaal kompas maakt met Arduino!
Wat is een GY-271-sensor?
De sensor GY-271 Het is een module waarin de magnetometer is geïntegreerd HMC5883L. Deze chip is in staat het magnetische veld in de drie assen (X, Y en Z) te meten en met deze gegevens is het mogelijk om de oriëntatie ten opzichte van het magnetische veld van de aarde te kennen. Deze sensor heeft een hoge nauwkeurigheid en wordt veel gebruikt in technische projecten. robotnavigatie of autonome voertuigen.
Communicatie tussen deze module en de Arduino vindt plaats via de I2C-bus, wat het verkrijgen van de gemeten gegevens enorm vergemakkelijkt. De HMC5883L heeft een meetbereik van ±0.88 Gauss tot ±8.1 Gauss, afhankelijk van de configuratie, en dekt een breed scala aan toepassingen.
Aansluitingen en montage met Arduino
Het aansluiten van de GY-271 op je Arduino is heel eenvoudig, je hebt alleen wat kabels nodig en volgt het basisschema:
- Sluit de pin aan GND van de module met de GND-pin van de Arduino
- De pincode VCC van de GY-271 moet worden aangesloten op de 5V van de Arduino
- Sluit de pin aan SDA van de GY-271 met pin A4 van de Arduino (of SCL in sommige modellen zoals de Mega)
- De pincode SCL zou naar pin A5 van de Arduino moeten gaan (of in sommige gevallen SDA)
Zodra u alles heeft aangesloten, is de module klaar om te gaan werken. Als het je doel is om magnetische veldgegevens te verkrijgen en een digitaal kompas te maken, heb je de basis al. Houd er echter rekening mee dat de milieu waar u de sensor plaatst, moet vrij zijn magnetische interferentie, omdat metalen of elektronische apparaten in de buurt de metingen kunnen veranderen.
Codevoorbeelden met Arduino
Hieronder laten we u een basisvoorbeeld zien van hoe u de X-, Y- en Z-waarden van het magnetische veld kunt lezen met behulp van de juiste bibliotheek. Deze bibliotheek zal I2C-communicatie en sensormetingen vergemakkelijken:
#include <Wire.h>
#include <HMC5883L.h>
HMC5883L compass;
int16_t mx, my, mz;
void setup() {
Serial.begin(9600);
Wire.begin();
compass.initialize();
}
void loop() {
compass.getHeading(&mx, &my, &mz);
Serial.print("X: ");
Serial.print(mx);
Serial.print(" Y: ");
Serial.print(my);
Serial.print(" Z: ");
Serial.println(mz);
delay(500);
}
Deze code is ideaal voor het verkrijgen van de componenten van het magnetische veld in de drie assen. Zodra u deze waarden heeft, kunt u met behulp van de functie de oriëntatie van de sensor ten opzichte van het magnetische noorden berekenen atan2, waarmee we de X- en Y-assen in een hoek kunnen omzetten.
Berekening van de hoek ten opzichte van het noorden
Nu je de metingen van het magnetische veld hebt, is de volgende stap het berekenen van de oriëntatie ten opzichte van het magnetische noorden. Om dit te doen, kunt u de volgende formule gebruiken:
float angulo = atan2(my, mx) * (180 / PI);
Deze berekening geeft ons een hoek in graden die de richting naar het magnetische noorden weergeeft. Wel moet u rekening houden met de magnetische declinatie, wat het verschil is tussen het magnetische noorden en het geografische noorden. Afhankelijk van uw geografische locatie kan deze waarde variëren, en het is belangrijk om deze te corrigeren om een nauwkeuriger kompas te verkrijgen.
Extra instellingen en bedrijfsmodi
De GY-271 biedt verschillende configuraties waarmee u de werking ervan kunt aanpassen aan uw behoeften. Je kunt er bijvoorbeeld twee kiezen werkingsmodi:
- continue manier:: De magnetometer voert voortdurend metingen uit en werkt de bijbehorende registers bij (X, Y, Z).
- Enkele meetmodus: De sensor doet alleen een meting als de Arduino erom vraagt, wat handig kan zijn als je energie wilt besparen.
Bovendien kunt u de gevoeligheid van de sensor aanpassen door de rango van medicijnen. Beschikbare bereiken variëren van ±0.88 Ga tot ±8.1 Ga, waardoor u de sensor kunt aanpassen aan verschillende omgevingen en werkomstandigheden.
Houd er rekening mee dat u, om het meetbereik te wijzigen, de functie moet gebruiken setVersterking uit de bibliotheek, waarmee u de sensorversterking kunt instellen afhankelijk van het magnetische bereik dat u wilt meten.
GY-271-toepassingen
De GY-271 sensor kent talloze toepassingen op het gebied van robotica en navigatie. Omdat het een relatief goedkoop en eenvoudig te implementeren apparaat is, wordt het gebruikt in projecten zoals:
- autonome rovers: Hiermee kunnen robots weten in welke richting ze kijken.
- quadcopters: Helpt tijdens de vlucht de oriëntatie van de drone ten opzichte van het noorden te behouden.
- navigatie systemen: Elk voertuig dat zijn positie en oriëntatie moet kennen, kan profiteren van deze module.
Een van de meest merkwaardige details is dat, hoewel de GY-271 onder gecontroleerde omstandigheden een grote nauwkeurigheid heeft, de metingen kunnen worden beïnvloed door interferenties, zoals de aanwezigheid van metalen of nabijgelegen elektromagnetische velden. Dit kan met behulp van technieken worden gecorrigeerd ijking gecombineerd met versnellingsmeters of gyroscopen (IMU), wat typisch is voor meer geavanceerde navigatiesystemen.
De combinatie van deze sensor met versnellingsmeters maakt bijvoorbeeld de constructie mogelijk van nauwkeurigere apparaten die bestand zijn tegen magnetische ruis, wat een scala aan mogelijkheden opent voor gebruik in projecten met Arduino en andere microcontrollers...