Boîte personnelle de Black - Arduino Mega, ultime bouclier GPS + LSM303 (3 / 4 étapes)

Étape 3: Arduino Mega + accéléromètre (LSM303)

Pour raccorder l’accéléromètre, simplement attaché les SCL et SDA broches sur le LSM303 à la Mega SCL(21) et SDA (20) pins. (C’est LSM303 SCL à Mega Cal, puis LSM303 SDA à Mega SDA)

Puis attacher le 5v et sol vers les emplacements appropriés. J’ai aussi réussi à utiliser un morceau d’anti mousse statique sous le dispositif avec un peu de colle chaud pour monter l’accéléromètre au Conseil d’administration de la GPS proto.

j’ai commencé avec la bibliothèque LSM303 de (https://github.com/pololu/lsm303-arduino). Ce paquet contient trois exemples, un dont, « Calibrer », j’ai fini par utiliser assez souvent. Cela a fonctionné pour moi, sans aucune modification et m’a permis de tester mon câblage. J’ai utilisé cela pour tirer les valeurs minimales et maximales pour l’accéléromètre x, y, x axe, ces valeurs serviront à équilibrer l’appareil lors du calcul de Forces-G.

G-Forces :
Pour calculer les G-Forces sur le LSM303, il suffit d’équilibrer les valeurs de l’accéléromètre et puis de les réduire. Je ne peux pas trouver le site où j’ai obtenu le code donc je m’excuse d’avance, mais j’espère avoir bientôt mis à jour.

Première ! Exécutez l’esquisse de calibrage de la bibliothèque de LSM303 pour obtenir votre x, y, z max et les valeurs min. Pour ce faire, maintenez votre LSM303 sur chacun des six axes et actualiser l’esquisse tenant toujours très. Vous ne voulez pas provoquer toute secoue vers le périphérique qui va secouer ses lectures, il m’a fallu plusieurs essais pour le faire enfin étalonné correctement.

Lorsque vous avez terminé, sur une surface plane, vous devriez obtenir une lecture comme ça (:: 0.00G, - 0.00G, 1.00G) où x et y sont 0 et z est 1. il n’est peut-être pas exact, mais il devrait flotter autour de ces chiffres.

#include < Wire.h >
#include < LSM303.h >

Compas de LSM303 ;
Ce sont mes valeurs, ils ne fonctionneront probablement pas pour vous
Exécutez l’esquisse de calibrage de la bibliothèque de LSM303 pour obtenir votre
les valeurs maximales et minimales pour x, y, z
int xRawMin =-16240 ;
int xRawMax = 15616 ;
int yRawMin =-17216 ;
int yRawMax = 16992 ;
int zRawMin =-14560 ;
int zRawMax = 18448 ;

void setup()
{
Serial.Begin(14400) ;
Wire.Begin() ;
Compass.init() ;
compass.enableDefault() ;
}

void loop()
{
Compass.Read() ;
long aimsthe desasters = compass.a.x ;
long yRaw = compass.a.y ;
long zRaw = compass.a.z ;

Convertir les valeurs brutes pour ' milli-Gs "
xScaled long = carte (aimsthe desasters, xRawMin, xRawMax, -1000, 1000) ;
yScaled long = carte (yRaw, yRawMin, yRawMax, -1000, 1000) ;
zScaled long = carte (zRaw, zRawMin, zRawMax, -1000, 1000) ;

ré-adapter à Gs fractionnaires
float xAccel = xScaled / 1000.0 ;
float yAccel = yScaled / 1000.0 ;
float zAccel = zScaled / 1000.0 ;

Serial.Print("::") ;
Serial.Print(xAccel) ;
Serial.Print (« G ») ;
Serial.Print(yAccel) ;
Serial.Print (« G ») ;
Serial.Print(zAccel) ;
Serial.println("G") ;

Delay(200) ;
}

Tangage et roulis :
J’ai trouvé un fil sur les forums arduino par « ArthurSpooner » pour le calcul de tangage et roulis
, j’ai simplement modifié le code existant pour mon LSM303. Ajouter dans les bibliothèques et le programme d’installation de l’esquisse de l’étalonner, puis juste enlever de l’analogread et remplacez-le par votre compass.a.x.

Voici la version modifiée du code de Arnie que j’ai utilisé :
code par Arne
l’avait il mis en place la manière dont l’accélération z Regarde
au ciel, et x y est plat--> comme la plupart des systèmes de coordonnées cartésiennes
J’utilise un A7270 comme un accéléromètre -> ils sont sur une carte de dérivation pour environ 20 $ USD
et un HMC5843 comme un axe triple capteur magnétique 50 $ USD
n’hésitez pas à commenter le code -> amélioration est toujours apprécié
vous pouvez poser des questions en anglais ou en allemand

requis pour les calculs
#include < math.h >
#include < Wire.h >
#include < LSM303.h >
Compas de LSM303 ;
en augmentant l’alphaAccel la réponse deviendra plus rapide
mais le bruit va increae [alpha doit être comprise entre 0 et 1.]
valeurs de filtre passe-bas numérique
float alphaAccel = 0,4 ;
float alphaMagnet = 0,4 ;
unsigned int xOffset = 0 ; unsigned int Décalage_y = 0 ; unsigned int Décalage_z = 0 ;
flotteur hauteur = 0 ;
flotteur Roll = 0 ;
flotteur Yaw = 0 ;
aimsthe desasters int = 0 ; int yRaw = 0 ; int zRaw = 0 ;
float xFiltered = 0 ; float yFiltered = 0 ; float zFiltered = 0 ;
float xFilteredOld = 0 ; float yFilteredOld = 0 ; float zFilteredOld = 0 ;
float xAccel = 0 ; float yAccel = 0 ; float zAccel = 0 ;

void setup()
{
Serial.Begin(115200) ;       initialiser le port série
analogReference(EXTERNAL) ;  Utilisez la tension de référence externe (3, 3V)
Delay(2000) ;  calibrer le capteur après un court délai
Wire.Begin() ;
Compass.init() ;
compass.enableDefault() ;
getAccelOffset() ;           garder plat et non mobile sur la table
Il existe d’autres moyens pour calibrer l’offset, chacun a des avantages
et disadvantes...
comparer la note d’application AN3447
http://www.Freescale.com/files/sensors/doc/app_note/AN3447.pdf
}

Sub FilterAD()
{
lire AD et soustraire l’offset
xRaw=compass.a.x-Décalage_x ;
yRaw=compass.a.y-Décalage_y ;
zRaw=compass.a.z-Décalage_z ;
Numérique passe-bas - Comparez: (pour accéléromètre)
http://en.wikipedia.org/wiki/Low-pass_filter
xFiltered = xFilteredOld + alphaAccel * (aimsthe desasters - xFilteredOld) ;
yFiltered = yFilteredOld + alphaAccel * (yRaw - yFilteredOld) ;
zFiltered = zFilteredOld + alphaAccel * (zRaw - zFilteredOld) ;
xFilteredOld = xFiltered ;
yFilteredOld = yFiltered ;
zFilteredOld = zFiltered ;
}

Sub AD2Degree()
{
3.3 = Vref ; 1023 = 10bits AD ; 0,8 = sensibilité accéléromètre
(Comparez la fiche technique de votre accéléromètre)
le * Accel doit être comprise entre -1 et 1 ; vous devrez peut-être
pour ajouter/soustraire + 1 selon l’orientation de l’accéléromètre
(comme moi sur le zAccel)
ils ne sont pas nécessaires, mais sont utiles pour le débogage
xAccel = xFiltered * 3.3 / (1023.0 * 0,8) ;
yAccel = yFiltered * 3.3 / (1023.0 * 0,8) ;
zAccel = zFiltered * 3.3 / (1023.0 * 0,8) + 1.0 ;

Calculer de tangage et roulis (Comparez Application Note AN3461 de Freescale
http://www.Freescale.com/files/sensors/doc/app_note/AN3461.pdf
Microsoft Excel met les valeurs pour atan2
-> cette info peut vous faciliter la vie:-D
d’angle sont radian, degré (* 180/3.14159)
Rouleau = atan2 (yAccel, sqrt(sq(xAccel)+sq(zAccel))) ;
Hauteur = atan2 (xAccel, sqrt(sq(yAccel)+sq(zAccel))) ;
}

void loop()
{
Compass.Read() ;
FilterAD() ;
AD2Degree() ;
Serial.Print ("Pitch:") ;
Serial.Print(int(Pitch*180/pi)) ;
Serial.Print ("Roll:") ;
Serial.println(int(Roll*180/pi)) ;
Delay(50) ;
}

Sub getAccelOffset()
{//you peut faire environ 60 itérations car nous utilisons un unsigned int
dans le cas contraire, vous obtenez un dépassement de capacité. Mais 60 itérations devraient être bon
Compass.Read() ;
pour (int i = 1; i < = 60; i ++) {}
Décalage_x += compass.a.x ;
Décalage_y += compass.a.y ;
Décalage_z += compass.a.z ;
}
Décalage_x / = 60 ;
Décalage_y / = 60 ;
Décalage_z / = 60 ;
Serial.Print ("Décalage_x:") ; Serial.Print(xoffset) ;
Serial.Print ("Décalage_y:") ; Serial.Print(yOffset) ;
Serial.Print ("Décalage_z:") ; Serial.println(zOffset) ;

}

Le code de ArthurSpooner aussi contient la boussole vers, cependant j’ai réussi à trouver ce code sur adafruit et a décidé d’utiliser leur au lieu de cela, j’ai essayé d’utiliser compass.heading() mais je n’ai pas des résultats précis :

Compass.Read() ;
mx int = compass.m.x ;
int ma = compass.m.y ;

flotteur Pi = 3.14159 ;
position de flotteur = (atan2(my,mx) * 180) / Pi ;
Normaliser 0-360
Si (rubrique < 0)
{
rubrique = 360 + intitulé ;
}
Serial.println(Heading) ;

Articles Liés

Arduino Mega Intro

Arduino Mega Intro

Hey tout le mondeL'Arduino Mega est un microcontrôleur incroyable pour les projets nécessitant une grande quantité d'énergie e/s ou de la transformation et est très amusant à utiliser. Dans ce instructable nous nous pencherons sur les :Fiche de l'Ard
Comment utiliser 2,4 pouces TFT LCD SPFD5408 avec arduino MEGA 2560

Comment utiliser 2,4 pouces TFT LCD SPFD5408 avec arduino MEGA 2560

Cette instructable va vous montrer comment interfacer le SPFD5408 2.4 pouces lcd à l'arduino MEGAÉtape 1 :Étape 2: bibliothèquesCertains d'entre vous pourraient avoir acheté cet écran LCD ou la pensée d'obtenirune. Son un grand écran pour l'affichage
Arduino Mega GPS avec écran LCD et enregistrement SD

Arduino Mega GPS avec écran LCD et enregistrement SD

Utilisez votre Audino Mega comme un enregistreur GPS avec un écran LCD clair et 5 touches de fonction. Une LED bicolore est utilisé pour fournir des informations d'État.La carte SD peut être laissée dans et lues à l'aide d'un croquis de lecteur de ca
RS485 Communication série entre Arduino Mega et Arduino Nano avec Visuino

RS485 Communication série entre Arduino Mega et Arduino Nano avec Visuino

Parfois, il faut connecter les cartes Arduino situés très loin les uns des autres. RS-485 est un moyen très pratique pour connecter les planches avec seulement 2 conducteurs et peut fonctionner à une distance de 1200 m (4000 ft). Il permet aussi de m
Week-end projet horloge date thermomètre et humidité avec Arduino mega

Week-end projet horloge date thermomètre et humidité avec Arduino mega

les gars, je veux partager mon projet de fin de semaine sur la création d'une horloge avec capteur de température, d'humidité etIl est à l'aide de capteur DHT11, RTC DS1307, LCD 16 x 2 et Arduino Mega 2560,Continuer la lecture et bonne chanceÉtape 1:
Ford CD changeur Emulator - Arduino Mega

Ford CD changeur Emulator - Arduino Mega

bien... J'ai des Ford Focus, et un jour ma radio d'origine, Ford 6000, ont cessé d'être n'importe quelle station FM. Il a tourné vers le haut que le proccessor FM est en panne. J'ai eu une autre radio Ford - 5000, avec un lecteur de cassettes.J'ai co
Comment utiliser Arduino Mega 2560 comme Arduino FAI

Comment utiliser Arduino Mega 2560 comme Arduino FAI

quand je construis mon Atmega328p-pu sur un circuit pour ma mobylette j'en avais besoin pour bootload.Parce que je n'ai aucun externe matériel de programmation j'ai dû utiliser mon Arduino Mega 2560 comme ArduinoISP ( http://arduino.cc/en/Tutorial/Ar
Calculatrice simple basée sur l’Arduino MEGA

Calculatrice simple basée sur l’Arduino MEGA

De nos jours, faire des calculs n'est pas un problème du tout. Calculatrices puissants peuvent être achetés pour quelques euros ou faciles à installer sur les téléphones et les ordinateurs. Cependant, nous avons décidé de transformer notre Arduino en
Usine de WIFI, système de surveillance basé sur Arduino MEGA et ESP8266

Usine de WIFI, système de surveillance basé sur Arduino MEGA et ESP8266

Aujourd'hui, que nous allons vous montrer notre première expérience sur l'Internet des objets. À cette fin, nous avons décidé d'utiliser un Arduino MEGA au lieu d'un Arduino UNO. C'est parce que l'Arduino MEGA a plus d'un port série et de ce fait nou
Alimenter l’Arduino Mega avec une pile au Lithium

Alimenter l’Arduino Mega avec une pile au Lithium

il s'agit d'un petit et court tutorial qui explique étape par étape comment connecter le blindage de matériel opensource Mega Lithium sac à dos à l'Arduino Mega, pour lui donner la vie de la batterie et permettre le méga être untethered de l'ordinate
Comment câbler une imprimante 3d schématique Arduino Mega

Comment câbler une imprimante 3d schématique Arduino Mega

Ce dont vous avez besoin >1 Arduino Mega1 imprimante 3D rampes contrôleur 1,45 conducteur de moteur pas à pas à A4988 avec le dissipateur de chaleur1 perle de chaleur1 alimentation d'énergie5 moteurs pas à pas1 extrudeuseThermistance 33 butée1 imprim
Arduino Mega hexapode

Arduino Mega hexapode

Deuxième vidéo (peu près la même chose, sauf les mouvements de la main plus rapides) :https://www.youtube.com/watch?v=zepHB4h5JS4&featu...Il s'agit de mon hexapode, il s'articule autour de hexapode Phoenix de Lynxmotion et exécute une version modifié
Kit Arduino Mega + débutant Gearbest

Kit Arduino Mega + débutant Gearbest

Gearbest est une entreprise en ligne à croissance très rapide, il offre une large gamme de produits de haute qualité dans un grand nombre de catégories. Grâce à ses grandes remises, son assistance professionnelle et fiable et sa fonction dans le mond
DIY Arduino Mega 2560 ou 1280

DIY Arduino Mega 2560 ou 1280

donc c'est mon premier instructables... Essayons cela !* original peut être trouvé ici : http://tsjwang.blogspot.com/2013/08/diy-arduino-mega-2560.html*Alright.Voici l'histoire : J'ai travaillé sur ce projet Arduino frustrant, et j'ai décidé de faire