Taula de continguts:

Com utilitzar el mòdul GY511 amb Arduino [Feu una brúixola digital]: 11 passos
Com utilitzar el mòdul GY511 amb Arduino [Feu una brúixola digital]: 11 passos

Vídeo: Com utilitzar el mòdul GY511 amb Arduino [Feu una brúixola digital]: 11 passos

Vídeo: Com utilitzar el mòdul GY511 amb Arduino [Feu una brúixola digital]: 11 passos
Vídeo: It Became Unliveable! ~ Abandoned Home Of The Spenser's In The USA 2024, De novembre
Anonim
Com s'utilitza el mòdul GY511 amb Arduino [Feu una brúixola digital]
Com s'utilitza el mòdul GY511 amb Arduino [Feu una brúixola digital]

Visió general

En alguns projectes d’electrònica, hem de conèixer la ubicació geogràfica en qualsevol moment i fer una operació específica en conseqüència. En aquest tutorial, aprendreu a utilitzar el mòdul de brúixola LSM303DLHC GY-511 amb Arduino per fer una brúixola digital. Primer, coneixereu aquest mòdul i el seu funcionament i, a continuació, veureu com s’interfata el mòdul LSM303DLHC GY-511 amb Arduino.

Què aprendràs

  • Què és el mòdul de brúixola?
  • Mòdul de brúixola i interfície Arduino.
  • Feu una brúixola digital amb el mòdul GY-511 i Arduino.

Pas 1: Informació general sobre el mòdul Brúixola

Informació general sobre el mòdul Brúixola
Informació general sobre el mòdul Brúixola

El mòdul GY-511 inclou un acceleròmetre de 3 eixos i un magnetòmetre de 3 eixos. Aquest sensor pot mesurar l’acceleració lineal a escala completa de ± 2 g / ± 4 g / ± 8 g / ± 16 g i camps magnètics a escala completa de ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Gauss.

Quan aquest mòdul es col·loca en un camp magnètic, segons la llei de Lorentz indueix un corrent d’excitació a la seva bobina microscòpica. El mòdul de la brúixola converteix aquest corrent en la tensió diferencial per a cada direcció de coordenades. Mitjançant aquestes tensions, podeu calcular el camp magnètic en cada direcció i obtenir la posició geogràfica.

Consell

QMC5883L és un altre mòdul de brúixola d'ús habitual. Aquest mòdul, que té una estructura i una aplicació similars al mòdul LMS303, té un rendiment lleugerament diferent. Per tant, si esteu fent els projectes, tingueu cura del vostre tipus de mòdul. Si el vostre mòdul és QMC5882L, utilitzeu la biblioteca i els codis adequats que també s'inclouen al tutorial.

Pas 2: components necessaris

Components obligatoris
Components obligatoris

Components de maquinari

Arduino UNO R3 * 1

Acceleròmetre + magnetòmetre de 3 eixos GY-511 * 1

Servomotor TowerPro SG-90 * 1

Mòdul LCD 1602 * 1

Saltadors * 1

Aplicacions de programari

IDE Arduino

Pas 3: Interfície del mòdul de brúixola GY-511 amb Arduino

Interfície del mòdul de brúixola GY-511 amb Arduino
Interfície del mòdul de brúixola GY-511 amb Arduino
Interfície del mòdul de brúixola GY-511 amb Arduino
Interfície del mòdul de brúixola GY-511 amb Arduino

El mòdul de brúixola GY-511 té 8 pins, però només en necessiteu 4 per connectar-vos amb Arduino. Aquest mòdul es comunica amb Arduino mitjançant el protocol I2C, de manera que connecteu els pins SDA (sortida I2C) i SCK (entrada de rellotge I2C) del mòdul als pins I2C de la placa Arduino.

Nota Com podeu veure, hem utilitzat el mòdul GY-511 en aquest projecte. Però podeu utilitzar aquesta instrucció per configurar altres mòduls de brúixola LMS303.

Pas 4: Calibratge del mòdul de la brúixola GY-511

Per navegar, primer cal calibrar el mòdul, que significa establir l’interval de mesura de 0 a 360 graus. Per fer-ho, connecteu el mòdul a Arduino com es mostra a continuació i pengeu el següent codi a la vostra placa. Després d'executar el codi, podeu veure els valors mínim i màxim del rang de mesura per a l'eix X, Y i Z a la finestra del monitor sèrie. Necessitareu aquests números a la següent part, així que escriviu-los.

Pas 5: Circuit

Circuit
Circuit

Pas 6: Codi

En aquest codi, necessiteu la biblioteca Wire.h per a la comunicació I2C i la biblioteca LMS303.h per al mòdul de brúixola. Podeu descarregar aquestes biblioteques des dels següents enllaços.

Biblioteca LMS303.h

Biblioteca Wire.h

Nota: Si utilitzeu QMC5883, necessitareu la biblioteca següent:

MechaQMC5883L.h

Aquí expliquem el codi per a LMS303, però també podeu baixar-los per al mòdul QMC.

Vegem algunes de les noves funcions:

compass.enableDefault ();

Inicialització del mòdul

brúixola.read ();

Lectura dels valors de sortida del mòdul de brúixola

running_min.z = min (running_min.z, compass.m.z); running_max.x = max (running_max.x, brúixola.m.x);

Determinació dels valors mínim i màxim del rang de mesura mitjançant la comparació dels valors mesurats.

Pas 7: fer una brúixola digital

Després de calibrar el mòdul, construirem una brúixola connectant un servomotor al mòdul. De manera que l'indicador de servo sempre ens mostra la direcció nord, com la fletxa vermella a la brúixola. Per fer-ho, primer el mòdul de la brúixola calcula primer la direcció geogràfica i l’envia a Arduino i, a continuació, aplicant un coeficient adequat, calcularà l’angle que ha de girar el servomotor de manera que el seu indicador apunti cap al nord magnètic. Finalment, apliquem aquest angle al servomotor.

Pas 8: Circuit

Circuit
Circuit

Pas 9: Codi

Codi
Codi

Per a aquesta part també necessiteu la biblioteca Servo.h, que està instal·lada al vostre programari Arduino per defecte.

Vegem algunes de les noves funcions:

Servo Servo1;

Inicialització del mòdul

brúixola.read ();

Presentació de l'objecte servomotor

Servo1.attach (servoPin); compass.init (); compass.enableDefault ();

Inicialització del mòdul de la brúixola i del servomotor

L'argument Servo1.attach () és el número del pin connectat al servomotor.

compass.m_min = (LSM303:: vector) {- 32767, -32767, -32767}; compass.m_max = (LSM303:: vector) {+ 32767, +32767, +32767};

Mitjançant aquestes línies es defineixen els valors mínim i màxim per mesurar l'interval obtingut a la part anterior.

float heading = compass.heading ((LSM303:: vector) {0, 0, 1});

La funció heading () retorna l'angle entre l'eix de coordenades i un eix fix. Podeu definir l'eix fix amb un vector a l'argument de funció. Per exemple, aquí, definint el (LSM303:: vector) {0, 0, 1}, es considera l'eix Z com a eix constant.

Servo1.write (encapçalament);

La funció Servo1.write () aplica el valor de lectura del mòdul de brúixola al servomotor.

Nota: tingueu en compte que el servomotor pot tenir un camp magnètic, de manera que és millor col·locar el servomotor a una distància adequada del mòdul de la brúixola, de manera que no faci que el mòdul de la brúixola es desvii.

Recomanat: