Inhoudsopgave:
- Stap 1: Verzamel benodigdheden
- Stap 2: Bedrading
- Stap 3: Test het scherm uit
- Stap 4: De magnetometercode
- Stap 5: Toekomstig werk
Video: Arduino-magnetometer: 5 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Wat bouwen we?
Mensen kunnen geen magnetische velden detecteren, maar we gebruiken apparaten die altijd op magneten vertrouwen. Motoren, kompassen, rotatiesensoren en windturbines hebben bijvoorbeeld allemaal magneten nodig om te kunnen werken. Deze tutorial beschrijft hoe je een op Arduino gebaseerde magnetometer bouwt die magnetisch veld detecteert met behulp van drie Hall-effectsensoren. De magnetische veldvector op een locatie wordt weergegeven op een klein scherm met behulp van isometrische projectie.
Wat is een Arduino?
Een Arduino is een kleine open-source gebruiksvriendelijke microcontroller. Het heeft digitale invoer- en uitvoerpinnen. Het heeft ook analoge invoerpinnen, die handig zijn voor het lezen van invoer van sensoren. Er zijn verschillende Arduino-modellen beschikbaar. Deze tutorial beschrijft hoe je de Arduino Uno of de Arduino MKR1010 gebruikt. Er kunnen echter ook andere modellen worden gebruikt.
Voordat u aan deze zelfstudie begint, downloadt u de Arduino-ontwikkelomgeving en alle bibliotheken die nodig zijn voor uw specifieke model. De ontwikkelomgeving is beschikbaar op https://www.arduino.cc/en/main/software, en installatie-instructies zijn beschikbaar op
Wat is een magnetisch veld?
Permanente magneten oefenen krachten uit op andere permanente magneten. Stroomvoerende draden oefenen krachten uit op andere stroomvoerende draden. Permanente magneten en stroomvoerende draden oefenen ook krachten op elkaar uit. Deze kracht per eenheid teststroom is een magnetisch veld.
Als we het volume van een object meten, krijgen we een enkel scalair getal. Magnetisme wordt echter beschreven door een vectorveld, een meer gecompliceerde grootheid. Ten eerste varieert het met de positie in de hele ruimte. Zo is het magnetische veld op één centimeter van een permanente magneet waarschijnlijk groter dan het magnetische veld op tien centimeter afstand.
Vervolgens wordt het magnetische veld op elk punt in de ruimte weergegeven door een vector. De grootte van de vector vertegenwoordigt de sterkte van het magnetische veld. De richting staat loodrecht op zowel de richting van de kracht als de richting van de teststroom.
We kunnen ons het magnetische veld op een enkele locatie voorstellen als een pijl. We kunnen ons het magnetische veld in de ruimte voorstellen door een reeks pijlen op verschillende locaties, mogelijk van verschillende grootte en in verschillende richtingen. Een mooie visualisatie is beschikbaar op https://www.falstad.com/vector3dm/. De magnetometer die we bouwen geeft het magnetische veld ter plaatse van de sensoren als een pijl op het display weer.
Wat is een Hall-effectsensor en hoe werkt het?
Een Hall-effectsensor is een klein, goedkoop apparaatje dat de sterkte van het magnetische veld in een bepaalde richting meet. Het is gemaakt van een stuk halfgeleider dat is gedoteerd met overtollige ladingen. De output van sommige Hall-effectsensoren is een analoge spanning. Andere Hall-effectsensoren hebben een geïntegreerde comparator en produceren een digitale output. Andere Hall-effectsensoren zijn geïntegreerd in grotere instrumenten die de stroomsnelheid, rotatiesnelheid of andere grootheden meten.
De fysica achter het Hall-effect wordt samengevat door de Lorentz-krachtvergelijking. Deze vergelijking beschrijft de kracht op een bewegende lading als gevolg van een extern elektrisch en magnetisch veld.
Onderstaande figuur illustreert het Hall-effect. Stel dat we de sterkte van het magnetische veld in de richting van de blauwe pijl willen meten. Zoals in het linkerdeel van de figuur te zien is, laten we een stroom lopen door een stuk halfgeleider loodrecht op de richting van het te meten veld. Stroom is de stroom van ladingen, dus een lading in de halfgeleider beweegt met enige snelheid. Deze lading zal een kracht voelen als gevolg van het externe veld, zoals weergegeven in het middelste deel van de figuur. Ladingen zullen door de kracht bewegen en zich ophopen aan de randen van de halfgeleider. Ladingen stapelen zich op totdat de kracht als gevolg van de geaccumuleerde ladingen de kracht als gevolg van het externe magnetische veld in evenwicht houdt. We kunnen de spanning over de halfgeleider meten, zoals weergegeven in het rechterdeel van de figuur. De gemeten spanning is evenredig met de sterkte van het magnetische veld en staat in de richting loodrecht op de stroom en de richting van het magnetische veld.
Wat is isometrische projectie?
Op elk punt in de ruimte wordt het magnetische veld beschreven door een driedimensionale vector. Ons beeldscherm is echter tweedimensionaal. We kunnen de driedimensionale vector in een tweedimensionaal vlak projecteren, zodat we het op het scherm kunnen tekenen. Er zijn meerdere manieren om dit te bereiken, zoals isometrische projectie, orthografische projectie of schuine projectie.
Bij isometrische projectie liggen de x-, y- en z-assen 120 graden uit elkaar en lijken ze even verkort. Aanvullende informatie over isometrische projectie, evenals de benodigde formules, is te vinden op Wikipedia's pagina over het onderwerp.
Stap 1: Verzamel benodigdheden
Arduino en kabel
De Arduino is het brein van de magnetometer. Deze instructies beschrijven hoe u een Arduino Uno of een Arduino MKR1010 gebruikt. In beide gevallen is een kabel nodig om hem op de computer aan te sluiten.
Optie 1: Arduino Uno en USB AB-kabel
www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006
www.digikey.com/product-detail/nl/stewart-connector/SC-2ABE003F/380-1424-ND/8544570
Optie 2: Arduino MKR1010 en microUSB-kabel
www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713
www.digikey.com/product-detail/nl/stewart-connector/SC-2AMK003F/380-1431-ND/8544577
TFT-scherm
TFT staat voor Thin Film Transistor. Dit 1,44-inch scherm bevat 128 bij 128 pixels. Het is klein, helder en kleurrijk. Het wordt bevestigd aan een breakout-bord. De header-pinnen komen echter los, dus u moet ze erop solderen. (Soldeer en een soldeerbout zijn nodig zijn.)
www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830
- Analoge Hall-effectsensoren
Er zijn drie Hall-effectsensoren vereist. De onderstaande link is voor Allegro onderdeelnummer A1324LUA-T. Voor deze sensor is pin 1 de voedingsspanning, pin 2 is aarde en pin 3 is de uitgang. Andere Hall-sensoren zouden ook moeten werken, maar zorg ervoor dat ze analoog zijn, niet digitaal. Als u een andere sensor gebruikt, controleer dan de pinout en pas indien nodig de bedrading aan. (Ik heb eigenlijk een andere sensor van hetzelfde bedrijf gebruikt voor testdoeleinden, maar degene die ik heb gebruikt is verouderd en deze sensor is de vervanging ervan.)
www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144
Kleine Breadboard en Draad
www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929
Permanente magneten voor testen
Koelkastmagneten werken prima.
Stap 2: Bedrading
Soldeer de headers op het display.
Plaats de sensoren aan het ene uiteinde van het breadboard en plaats het display en Arduino aan het andere uiteinde. Stroom in de draden in de Arduino en het display wekt magnetische velden op, die we niet willen dat de sensoren lezen. Bovendien willen we de sensoren misschien in de buurt van permanente magneten plaatsen, wat een nadelige invloed kan hebben op de stroom in de draden van het display en de sensor. Om deze redenen willen we de sensoren ver van het display en Arduino. Ook om deze redenen moet deze magnetometer uit de buurt van zeer sterke magnetische velden worden gehouden.
Plaats de sensoren loodrecht op elkaar, maar zo dicht mogelijk bij elkaar. Buig de sensoren voorzichtig om ze loodrecht te krijgen. Elke pin van elke sensor moet zich in een aparte rij van het breadboard bevinden, zodat deze afzonderlijk kan worden aangesloten.
De bedrading is om twee redenen iets anders tussen de MKR1010 en de Uno. Ten eerste communiceren de Arduino en het display via SPI. Verschillende Arduino-modellen hebben verschillende speciale pinnen voor bepaalde SPI-lijnen. Ten tweede kunnen analoge ingangen van de Uno tot 5 V accepteren, terwijl analoge ingangen van de MKR1010 slechts tot 3,3 V kunnen accepteren. De aanbevolen voedingsspanning voor de Hall-effectsensoren is 5 V. De sensoruitgangen zijn verbonden met Arduino analoge ingangen, en deze kunnen zo groot zijn als de voedingsspanningen. Gebruik voor de Uno de aanbevolen 5 V-voeding voor de sensoren. Gebruik voor de MKR1010 3,3 V zodat de analoge ingang van de Arduino nooit een grotere spanning ziet dan hij aankan.
Volg de onderstaande diagrammen en instructies voor de Arduino die u gebruikt.
Bedrading met de Arduino Uno
Het display heeft 11 pinnen. Sluit ze als volgt aan op de Arduino Uno. (NC betekent niet aangesloten.)
- Vin →5V
- 3.3 →NC
- Gnd →GND
- SCK →13
- SO → NC
- SI →11
- TCS →10
- RST →9
- Gelijkstroom →8
- CCS → NC
- Lite → NC
Sluit Vin van de sensoren aan op 5V van de Arduino. Sluit de aarde van de sensor aan op de aarde van de Arduino. Sluit de uitgang van de sensoren aan op de analoge ingangen A1, A2 en A3 van de Arduino.
Bedrading met de Arduino MKR1010
Het display heeft 11 pinnen. Verbind ze als volgt met de Arduino. (NC betekent niet aangesloten.)
- Vin →5V
- 3.3 →NC
- Gnd →GND
- SCK →SCK 9
- SO → NC
- SI →MOSI 8
- TCS →5
- RST →4
- Gelijkstroom →3
- CCS → NC
- Lite → NC
Verbind Vin van de sensoren met Vcc van de Arduino. Deze pin is op 3.3V, niet op 5V. Sluit de aarde van de sensor aan op de aarde van de Arduino. Sluit de uitgang van de sensoren aan op de analoge ingangen A1, A2 en A3 van de Arduino.
Stap 3: Test het scherm uit
Laten we het TFT-scherm laten werken. Gelukkig heeft Adafruit een aantal gebruiksvriendelijke bibliotheken en een uitstekende tutorial die daarbij hoort. Deze instructies volgen nauwgezet de tutorial, Open de Arduino-ontwikkelomgeving. Ga naar Extra → Bibliotheken beheren. Installeer de bibliotheken Adafruit_GFX, Adafruit_ZeroDMA en Adafruit_ST7735. Start de Android-ontwikkelomgeving opnieuw.
Het grafische testvoorbeeld wordt meegeleverd met de bibliotheken. Open het. Bestand → Voorbeelden → Adafruit ST7735 en ST7789 Bibliotheek → graphicstest. Voor het selecteren van de 1,44 display commentaar uit lijn 95 en uncomment regel 98.
Originele versie:
94 // Gebruik deze initializer bij gebruik van een 1,8 TFT-scherm:
95 tft.initR(INITR_BLACKTAB); //Init ST7735S-chip, zwart lipje 96 97 //OF gebruik deze initializer (zonder commentaar) bij gebruik van een 1,44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R-chip, groen lipje
Correcte versie voor 1,44 display:
94 // Gebruik deze initializer bij gebruik van een 1,8 TFT-scherm:
95 //tft.initR(INIT_BLACKTAB); //Init ST7735S-chip, zwart lipje 96 97 //OF gebruik deze initializer (zonder commentaar) bij gebruik van een 1,44 TFT: 98 tft.initR(INITR_144GREENTAB); //Init SST35R-chip, groen lipje
Het display communiceert via SPI en verschillende Arduino-modellen gebruiken verschillende speciale pinnen voor sommige communicatielijnen. Het grafische testvoorbeeld is ingesteld om met de Uno-pinnen te werken. Als u de MKR1010 gebruikt, voegt u de volgende regels toe tussen regel 80 en 81.
Correcties voor de 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 vlotter p=3.1415926;
Sla het gewijzigde grafische testvoorbeeld op. Sluit de Arduino aan op de computer als je dat nog niet hebt gedaan. Ga naar Tools → Board and Tools → Port om te controleren of de computer de Arduino kan vinden. Ga naar Schets → Uploaden. Als het voorbeeld werkt, toont het display lijnen, rechthoeken, tekst en de volledige demo. De Adafruit-tutorial biedt meer details als probleemoplossing nodig is.
Stap 4: De magnetometercode
Download de bijgevoegde code en open deze in de Arduino-ontwikkelomgeving.
Dit programma gebruikt zes functies:
Setup() initialiseert de weergave
Loop() bevat de hoofdlus van het programma. Het maakt het scherm zwart, tekent de assen, leest de invoer en tekent de pijl die de magnetische veldvector voorstelt. Het heeft een verversingssnelheid van één seconde die kan worden gewijzigd door regel 127 te wijzigen
DrawAxes3d() tekent en labelt de x-, y- en z-assen
DrawArrow3d() neemt een x, y en z invoer op van 0 tot 1023. Op basis van deze waarden berekent het de eindpunten van de pijl in de ruimte. Vervolgens gebruikt het de functies isometricxx() en isometricyy() om de eindpunten op het scherm te berekenen. Ten slotte tekent het de pijl en drukt het de spanningen af aan de onderkant van het scherm
Isometricxx() vindt de x-coördinaat van de isometrische projectie. Het neemt x-, y- en z-coördinaten van een punt in en retourneert de corresponderende x-pixellocatie op het scherm
Isometricyy() vindt de y-coördinaat van de isometrische projectie. Het neemt de x-, y- en z-coördinaten van een punt in en retourneert de corresponderende y-pixellocatie op het scherm
Voordat we de code uitvoeren, moeten we specificeren welke pinnen we moeten gebruiken voor SPI-communicatie met het display, en we moeten de bronspanning voor de sensoren specificeren. Als u de MKR1010 gebruikt, becommentarieert u regels 92-96 en regel 110. Verwijder vervolgens de opmerkingen van regels 85-89 en regel 108. Als u de Uno gebruikt, becommentarieert u regels 85-89 en regel 108 Verwijder vervolgens de opmerkingen van regels 92-96 en regel 110.
Upload de code, Sketch → Upload.
Je zou de x-, y- en z-assen in het rood moeten zien. Een groene pijl met een blauwe cirkel voor de punt vertegenwoordigt de magnetische veldvector bij de sensoren. De spanningsmetingen worden linksonder weergegeven. Naarmate u een magneet dichter bij de sensoren brengt, moeten de spanningswaarden veranderen en moet de grootte van de pijl toenemen.
Stap 5: Toekomstig werk
De volgende stap zou zijn om het apparaat te kalibreren. Het sensorgegevensblad geeft informatie over het converteren van onbewerkte sensorspanningswaarden naar magnetische veldsterkte. Kalibratie kan worden geverifieerd door te vergelijken met een nauwkeuriger magnetometer.
Permanente magneten werken samen met stroomvoerende draden. Draden in de buurt van het display en in de Arduino genereren magnetische velden die de sensormetingen kunnen beïnvloeden. Bovendien, als dit apparaat wordt gebruikt om te meten in de buurt van een sterke permanente magneet, zal het magnetische veld van het geteste apparaat interageren met, ruis introduceren in en mogelijk de Arduino en het display beschadigen. Afscherming zou deze magnetometer robuuster kunnen maken. De Arduino kan grotere magnetische velden weerstaan als deze is afgeschermd in een metalen doos, en er zal minder ruis worden geïntroduceerd als afgeschermde kabels de sensoren verbinden in plaats van blote draden.
Magnetisch veld is een functie van positie, dus het is op elk punt in de ruimte anders. Dit apparaat gebruikt drie sensoren, één om de x-, de y- en de z-component van het magnetische veld op een punt te meten. De sensoren bevinden zich dicht bij elkaar, maar niet op een enkel punt, en dit beperkt de resolutie van de magnetometer. Het zou cool zijn om magnetische veldmetingen op verschillende punten op te slaan en ze vervolgens weer te geven als een reeks pijlen op de overeenkomstige locaties. Dat is echter een project voor een andere dag.
Referenties
Informatie over Adafruit Arduino Graphics-bibliotheken
https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overzicht
Magnetisch veld visualisatie
https://www.falstad.com/vector3dm/
Informatie over Hall-effect- en Hall-effectsensoren
- https://sensing.honeywell.com/index.php?ci_id=47847
- https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx
Informatie over isometrische projectie
- https://en.wikipedia.org/wiki/3D_projection
- https://en.wikipedia.org/wiki/Isometrische_projectie
Aanbevolen:
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
PCB-ontwerp met eenvoudige en gemakkelijke stappen: 30 stappen (met afbeeldingen)
PCB-ontwerp met eenvoudige en gemakkelijke stappen: HELLO VRIENDEN Het is een zeer nuttige en gemakkelijke tutorial voor diegenen die PCB-ontwerp willen leren, laten we beginnen
Een video met gesplitst scherm maken in vier stappen: 4 stappen (met afbeeldingen)
Een video met gesplitst scherm maken in vier stappen: we zien vaak dezelfde persoon twee keer in een scène in een tv-toneelstuk. En voor zover we weten heeft de acteur geen tweelingbroer. We hebben ook gezien dat er twee zangvideo's op één scherm worden gezet om hun zangkunsten te vergelijken. Dit is de kracht van spl