Taula de continguts:

Magnetòmetre Arduino: 5 passos (amb imatges)
Magnetòmetre Arduino: 5 passos (amb imatges)

Vídeo: Magnetòmetre Arduino: 5 passos (amb imatges)

Vídeo: Magnetòmetre Arduino: 5 passos (amb imatges)
Vídeo: RT, Инерциальный измерительный блок, бесплатформенный 2024, Setembre
Anonim
Magnetòmetre Arduino
Magnetòmetre Arduino

Què estem construint?

Els humans no podem detectar camps magnètics, però fem servir dispositius que confien sempre en imants. Els motors, les brúixoles, els sensors de rotació i els aerogeneradors, per exemple, necessiten imants per al seu funcionament. Aquest tutorial descriu com construir un magnetòmetre basat en Arduino que detecta el camp magnètic mitjançant tres sensors d’efecte Hall. El vector del camp magnètic en una ubicació es mostra en una pantalla petita mitjançant projecció isomètrica.

Què és un Arduino?

Un Arduino és un petit microcontrolador de codi obert fàcil d’utilitzar. Té pins d'entrada i sortida digitals. També té pins d'entrada analògics, que són útils per llegir l'entrada de sensors. Hi ha disponibles diferents models Arduino. Aquest tutorial descriu com utilitzar l'Arduino Uno o l'Arduino MKR1010. No obstant això, també es poden utilitzar altres models.

Abans de començar aquest tutorial, descarregueu l'entorn de desenvolupament d'Arduino i totes les biblioteques necessàries per al vostre model en particular. L’entorn de desenvolupament està disponible a https://www.arduino.cc/en/main/software i les instruccions d’instal·lació estan disponibles a

Què és un camp magnètic?

Els imants permanents exerceixen forces sobre altres imants permanents. Els cables de transport de corrent exerceixen forces sobre altres cables de transport de corrent. Els imants permanents i els cables de transport de corrent també exerceixen forces els uns sobre els altres. Aquesta força per unitat de corrent de prova és un camp magnètic.

Si mesurem el volum d’un objecte, obtindrem un sol nombre escalar. No obstant això, el magnetisme es descriu mitjançant un camp vectorial, una quantitat més complicada. En primer lloc, varia amb la posició de tot l'espai. Per exemple, és probable que el camp magnètic a un centímetre d’un imant permanent sigui més gran que el camp magnètic a deu centímetres de distància.

A continuació, el camp magnètic en cada punt de l’espai es representa mitjançant un vector. La magnitud del vector representa la força del camp magnètic. La direcció és perpendicular a la direcció de la força i la direcció del corrent de prova.

Podem imaginar el camp magnètic en un sol lloc com una fletxa. Podem imaginar el camp magnètic a través de l’espai mitjançant una matriu de fletxes en diferents llocs, possiblement de mides diferents i apuntant en direccions diferents. Una bona visualització està disponible a https://www.falstad.com/vector3dm/. El magnetòmetre que estem construint mostra el camp magnètic a la ubicació dels sensors com una fletxa a la pantalla.

Què és un sensor d'efecte Hall i com funciona?

Un sensor d’efecte Hall és un dispositiu petit i econòmic que mesura la intensitat del camp magnètic al llarg d’una direcció concreta. Està fabricat a partir d’un tros de semiconductor dopat amb càrregues excessives. La sortida d’alguns sensors d’efecte Hall és un voltatge analògic. Altres sensors d’efecte Hall tenen un comparador integrat i produeixen una sortida digital. Altres sensors d’efecte Hall s’integren en instruments més grans que mesuren el cabal, la velocitat de rotació o altres quantitats.

La física darrere de l’efecte Hall es resumeix en l’equació de la força de Lorentz. Aquesta equació descriu la força sobre una càrrega en moviment a causa d’un camp elèctric i magnètic extern.

Imatge
Imatge

La figura següent il·lustra l’efecte Hall. Suposem que volem mesurar la força del camp magnètic en la direcció de la fletxa blava. Com es mostra a la part esquerra de la figura, apliquem un corrent a través d’un tros de semiconductor perpendicular a la direcció del camp a mesurar. El corrent és el flux de càrregues, de manera que una càrrega al semiconductor es mou amb certa velocitat. Aquesta càrrega sentirà una força a causa del camp extern, tal com es mostra a la part central de la figura. Les càrregues es mouran a causa de la força i s’acumularan a les vores del semiconductor. Les càrregues s’acumulen fins que la força deguda a les càrregues acumulades equilibra la força deguda al camp magnètic extern. Podem mesurar la tensió a través del semiconductor, tal com es mostra a la part dreta de la figura. La tensió mesurada és proporcional a la força del camp magnètic i es troba en la direcció perpendicular al corrent i a la direcció del camp magnètic.

Imatge
Imatge

Què és la projecció isomètrica?

En cada punt de l’espai, el camp magnètic es descriu mitjançant un vector tridimensional. Tot i això, la nostra pantalla és bidimensional. Podem projectar el vector tridimensional en un pla bidimensional per poder dibuixar-lo a la pantalla. Hi ha múltiples maneres d’aconseguir-ho, com ara projecció isomètrica, projecció ortogràfica o projecció obliqua.

En la projecció isomètrica, els eixos x, y i z estan separats per 120 graus i apareixen igualment escorçats. A la pàgina de Viquipèdia sobre el tema es pot trobar informació addicional sobre la projecció isomètrica, així com les fórmules necessàries.

Pas 1: reuniu subministraments

Arduino i Cable

L'Arduino és el cervell del magnetòmetre. Aquestes instruccions descriuen com utilitzar un Arduino Uno o un Arduino MKR1010. En qualsevol cas, cal un cable per connectar-lo a l'ordinador.

Opció 1: Arduino Uno i cable USB AB

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

Opció 2: Arduino MKR1010 i cable microUSB

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

Pantalla TFT

TFT significa Thin Film Transistor. Aquesta pantalla d'1,44 conté 128 per 128 píxels. És petita, brillant i acolorida. S'adjunta a un tauler de ruptura. No obstant això, els passadors de capçalera estan separats, de manera que els heu de soldar. necessari.)

www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830

    Imatge
    Imatge
  • Sensors d'efecte Hall analògics

Es requereixen tres sensors d’efecte Hall. L'enllaç següent és per al número de peça Allegro A1324LUA-T. Per a aquest sensor, el pin 1 és la tensió d’alimentació, el pin 2 està connectat a terra i el pin 3 és la sortida. Altres sensors Hall també haurien de funcionar, però assegureu-vos que siguin analògics i no digitals. Si utilitzeu un sensor diferent, comproveu el pinout i ajusteu el cablejat si cal. (De fet, he utilitzat un sensor diferent de la mateixa empresa per fer proves. No obstant això, el que he utilitzat està obsolet i aquest sensor és el seu substitut).

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Tauler de pa petit i filferro

www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929

Imants permanents per a proves

Els imants de nevera funcionaran bé.

Pas 2: cablejat

Cablejat
Cablejat

Soldeu les capçaleres de la pantalla.

Imatge
Imatge

Col·loqueu els sensors en un dels extrems de la placa de configuració i col·loqueu la pantalla i Arduino a l’extrem oposat. El corrent als cables de la pantalla i Arduino genera camps magnètics, que no volem que llegeixin els sensors. A més, és possible que vulguem situar els sensors a prop d’imants permanents, cosa que podria afectar negativament el corrent dels cables de la pantalla i del sensor. Per aquests motius, volem que els sensors estiguin allunyats de la pantalla i d’Arduino. També per aquestes raons, aquest magnetòmetre s’ha de mantenir allunyat de camps magnètics molt forts.

Col·loqueu els sensors perpendiculars entre si però el més a prop possible. Doblegueu suaument els sensors perquè siguin perpendiculars. Cada pin de cada sensor ha d'estar en una fila separada del tauler de control perquè es pugui connectar per separat.

Imatge
Imatge

El cablejat és lleugerament diferent entre el MKR1010 i l’Uno per dos motius. En primer lloc, l'Arduino i la pantalla es comuniquen mitjançant SPI. Els diferents models Arduino tenen diferents pins dedicats per a certes línies SPI. En segon lloc, les entrades analògiques de l’Uno poden acceptar fins a 5 V mentre que les entrades analògiques del MKR1010 només poden acceptar fins a 3,3 V. La tensió d’alimentació recomanada per als sensors d’efecte Hall és de 5 V. Les sortides del sensor estan connectades a les entrades analògiques Arduino, i poden ser tan grans com les tensions d'alimentació. Per a l’Uno, utilitzeu el subministrament recomanat de 5 V per als sensors. Per al MKR1010, utilitzeu 3,3 V perquè l’entrada analògica de l’Arduino mai vegi una tensió més gran del que pot suportar.

Seguiu els diagrames i les instruccions següents per a l'Arduino que utilitzeu.

Cablatge amb l'Arduino Uno

Imatge
Imatge

La pantalla té 11 pins. Connecteu-los a l'Arduino Uno de la següent manera. (NC significa que no està connectat.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TCS → 10
  • RST → 9
  • D / C → 8
  • CCS → NC
  • Lite → NC

Connecteu Vin dels sensors a 5V de l'Arduino. Connecteu la terra del sensor a la terra de l’Arduino. Connecteu la sortida dels sensors a les entrades analògiques A1, A2 i A3 de l’Arduino.

Imatge
Imatge

Cablatge amb l'Arduino MKR1010

Imatge
Imatge

La pantalla té 11 pins. Connecteu-los a l'Arduino de la manera següent. (NC significa que no està connectat.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TCS → 5
  • RST → 4
  • D / C → 3
  • CCS → NC
  • Lite → NC

Connecteu Vin dels sensors a Vcc de l'Arduino. Aquest passador està a 3,3 V, no a 5 V. Connecteu la terra del sensor a la terra de l’Arduino. Connecteu la sortida dels sensors a les entrades analògiques A1, A2 i A3 de l’Arduino.

Imatge
Imatge

Pas 3: proveu la pantalla

Fem funcionar la pantalla TFT. Afortunadament, Adafruit té algunes biblioteques fàcils d’utilitzar i un excel·lent tutorial per acompanyar-les. Aquestes instruccions segueixen de prop el tutorial, Obriu l’entorn de desenvolupament Arduino. Aneu a Eines → Gestiona les biblioteques. Instal·leu les biblioteques Adafruit_GFX, Adafruit_ZeroDMA i Adafruit_ST7735. Reinicieu l'entorn de desenvolupament d'Android.

L'exemple graphicstest s'inclou a les biblioteques. Obre-ho. Fitxer → Exemples → Biblioteca Adafruit ST7735 i ST7789 → graphicstest. Per seleccionar la línia 95 del comentari de la pantalla 95 i la línia 98 del comentari de visualització.

Versió original:

94 // Utilitzeu aquest inicialitzador si utilitzeu una pantalla TFT d'1,8 :

95 tft.initR (INITR_BLACKTAB); // Xip Init ST7735S, pestanya negra 96 97 // O utilitzeu aquest inicialitzador (sense comentari) si utilitzeu un TFT de 1,44 : 98 //tft.initR(INITR_144GREENTAB); // Xip Init ST7735R, pestanya verda

Versió correcta per a pantalla de 1,44 :

94 // Utilitzeu aquest inicialitzador si utilitzeu una pantalla TFT d'1,8 :

95 //tft.initR(INIT_BLACKTAB); // Xip Init ST7735S, pestanya negra 96 97 // O utilitzeu aquest inicialitzador (sense comentari) si utilitzeu un TFT d’1,44 : 98 tft.initR (INITR_144GREENTAB); // Xip Init SST35R, pestanya verda

La pantalla es comunica mitjançant SPI i Arduinos de diferents models utilitzen diferents pins dedicats per a algunes línies de comunicació. L'exemple graphicstest està configurat per funcionar amb els pins Uno. Si feu servir el MKR1010, afegiu les línies següents entre les línies 80 i 81.

Correccions per al MKR1010:

80

#define TFT_CS 5 #define TFT_RST 4 #define TFT_DC 3 #define TFT_MOSI 8 #define TFT_SCLK 9 Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST) 81 flotador p = 3,1415926;

Deseu l'exemple de graphicstest modificat. Connecteu l'Arduino a l'ordinador si encara no ho heu fet. Aneu a Eines → Tauler i Eines → Port per verificar que l’ordinador pot trobar l’Arduino. Aneu a Esbós → Penja. Si l'exemple funciona, la pantalla mostrarà línies, rectangles, text i la demostració completa. El tutorial d'Adafruit proporciona més detalls si cal una solució de problemes.

Pas 4: el codi del magnetòmetre

Baixeu-vos el codi adjunt i obriu-lo a l'entorn de desenvolupament Arduino.

Aquest programa utilitza sis funcions:

Setup () inicialitza la pantalla

Loop () conté el bucle principal del programa. Ennegreix la pantalla, dibuixa els eixos, llegeix les entrades i dibuixa la fletxa que representa el vector del camp magnètic. Té una freqüència d’actualització d’un segon que es pot canviar alterant la línia 127

DrawAxes3d () dibuixa i etiqueta els eixos x, y i z

DrawArrow3d () pren una entrada x, y, z que oscil·la entre 0 i 1023. A partir d'aquests valors, calcula els punts finals de la fletxa a l'espai. A continuació, utilitza les funcions isometricxx () i isometricyy () per calcular els punts finals de la pantalla. Finalment, dibuixa la fletxa i imprimeix els voltatges a la part inferior de la pantalla

Isometricxx () troba la coordenada x de la projecció isomètrica. Pren coordenades x, y i z d’un punt i retorna la ubicació x píxel corresponent a la pantalla

Isometria () troba la coordenada y de la projecció isomètrica. Pren coordenades x, y i z d’un punt i retorna la ubicació corresponent en píxels a la pantalla

Abans d’executar el codi, hem d’especificar quins pins utilitzar per a la comunicació SPI amb la pantalla i hem d’especificar la tensió de la font dels sensors. Si feu servir el MKR1010, comenteu les línies 92-96 i la línia 110. Després, descomenteu les línies 85-89 i la línia 108. Si feu servir l’Uno, comenteu les línies 85-89 i la línia 108 Després, descomenteu les línies 92-96 i la línia 110.

Pengeu el codi, Esbós → Penja.

Hauríeu de veure els eixos x, y i z en vermell. Una fletxa verda amb un cercle blau per a la punta representa el vector del camp magnètic als sensors. Les lectures de tensió es mostren a la part inferior esquerra. A mesura que apropeu un imant als sensors, les lectures de voltatge haurien de canviar i la mida de la fletxa hauria de créixer.

Imatge
Imatge

Pas 5: Treball futur

Treball futur
Treball futur

El següent pas seria calibrar el dispositiu. El full de dades del sensor proporciona informació sobre com convertir els valors de tensió del sensor en brut a intensitat de camp magnètic. La calibració es podria verificar comparant-la amb un magnetòmetre més precís.

Els imants permanents interactuen amb els cables de transport actuals. Els cables propers a la pantalla i a l’Arduino generen camps magnètics que podrien afectar la lectura del sensor. A més, si aquest dispositiu s’utilitza per mesurar a prop d’un fort imant permanent, el camp magnètic del dispositiu que s’està provant interactuarà amb, introduirà soroll i possiblement farà malbé l’Arduino i la pantalla. El blindatge pot fer aquest magnetòmetre més robust. L'Arduino pot suportar camps magnètics més grans si està protegit en una caixa metàl·lica i s'introduirà menys soroll si els cables blindats connecten els sensors en lloc de cables nus.

El camp magnètic és una funció de la posició, de manera que és diferent en cada punt de l'espai. Aquest dispositiu utilitza tres sensors, un per mesurar la component x, y i z del camp magnètic en un punt. Els sensors estan a prop els uns dels altres, però no en un sol punt, i això limita la resolució del magnetòmetre. Seria fantàstic guardar les lectures del camp magnètic en diferents punts i després mostrar-les com una matriu de fletxes als llocs corresponents. Tot i això, aquest és un projecte per a un altre dia.

Referències

Informació sobre les biblioteques de gràfics Adafruit Arduino

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Visualització del camp magnètic

https://www.falstad.com/vector3dm/

Informació sobre sensors d’efecte Hall i efectes Hall

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

Informació sobre projecció isomètrica

  • https://ca.wikipedia.org/wiki/3D_projection
  • https://ca.wikipedia.org/wiki/Isometric_projection

Recomanat: