Innehållsförteckning:
- Steg 1: Samla förbrukningsmaterial
- Steg 2: Kabeldragning
- Steg 3: Testa skärmen
- Steg 4: Magnetometerkoden
- Steg 5: Framtidsarbete
Video: Arduino magnetometer: 5 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Vad bygger vi?
Människor kan inte upptäcka magnetfält, men vi använder enheter som är beroende av magneter hela tiden. Motorer, kompasser, rotationssensorer och vindkraftverk kräver till exempel alla magneter för drift. Denna handledning beskriver hur man bygger en Arduino -baserad magnetometer som känner av magnetfält med hjälp av tre Hall -effektsensorer. Magnetfältvektorn på en plats visas på en liten skärm med isometrisk projektion.
Vad är en Arduino?
En Arduino är en liten öppen källkod användarvänlig mikrokontroller. Den har digitala in- och utgångsstiften. Den har också analoga ingångsstiften, som är användbara för att läsa ingång från sensorer. Olika Arduino -modeller finns tillgängliga. Denna handledning beskriver hur du använder antingen Arduino Uno eller Arduino MKR1010. Men andra modeller kan också användas.
Innan du börjar den här självstudien, ladda ner Arduino -utvecklingsmiljön samt alla bibliotek som behövs för just din modell. Utvecklingsmiljön finns på https://www.arduino.cc/en/main/software och installationsanvisningar finns på
Vad är ett magnetfält?
Permanenta magneter utövar krafter på andra permanentmagneter. Strömbärande trådar utövar krafter på andra strömbärande trådar. Permanenta magneter och strömförande trådar utövar också krafter på varandra. Denna kraft per enhet testström är ett magnetfält.
Om vi mäter volymen på ett objekt får vi ett enda skalärt tal. Magnetismen beskrivs dock av ett vektorfält, en mer komplicerad mängd. För det första varierar det med position i hela rummet. Till exempel är magnetfältet en centimeter från en permanentmagnet troligen större än magnetfältet tio centimeter bort.
Därefter representeras magnetfältet vid varje punkt i rymden av en vektor. Vektorns storlek representerar magnetfältets styrka. Riktningen är vinkelrät mot både kraftens riktning och testströmens riktning.
Vi kan föreställa magnetfältet på en enda plats som en pil. Vi kan föreställa magnetfältet i hela rymden genom en rad pil på olika platser, möjligen av olika storlekar och pekande i olika riktningar. En fin visualisering finns på https://www.falstad.com/vector3dm/. Magnetometern vi bygger visar magnetfältet på plats för sensorerna som en pil på displayen.
Vad är en Hall -effektsensor och hur fungerar den?
En Hall -effektsensor är en liten, billig enhet som mäter styrkan hos magnetfältet längs en viss riktning. Den är gjord av en bit halvledare dopad med överskott. Utsignalen från vissa Hall -effektsensorer är en analog spänning. Andra Hall -effektsensorer har en integrerad komparator och producerar en digital utgång. Andra Hall -effektsensorer är integrerade i större instrument som mäter flödeshastighet, rotationshastighet eller andra mängder.
Fysiken bakom Hall -effekten sammanfattas av Lorentz -kraftekvationen. Denna ekvation beskriver kraften på en rörlig laddning på grund av ett externt elektriskt och magnetiskt fält.
Figuren nedan illustrerar Hall -effekten. Antag att vi vill mäta styrkan hos magnetfältet i riktning mot den blå pilen. Som visas i den vänstra delen av figuren applicerar vi en ström genom en bit halvledare vinkelrätt mot fältets riktning som ska mätas. Ström är flödet av laddningar, så en laddning i halvledaren rör sig med viss hastighet. Denna laddning kommer att känna en kraft på grund av det yttre fältet, som visas i mitten av figuren. Avgifter kommer att röra sig på grund av kraften och ackumuleras på kanterna på halvledaren. Avgifter byggs upp tills kraften på grund av de ackumulerade laddningarna balanserar kraften på grund av det yttre magnetfältet. Vi kan mäta spänningen över halvledaren, som visas i figurens högra del. Den uppmätta spänningen är proportionell mot magnetfältets styrka, och den är i riktningen vinkelrätt mot strömmen och magnetfältets riktning.
Vad är isometrisk projektion?
Vid varje punkt i rymden beskrivs magnetfältet av en tredimensionell vektor. Vår skärm är dock tvådimensionell. Vi kan projicera den tredimensionella vektorn till ett tvådimensionellt plan så att vi kan rita den på skärmen. Det finns flera sätt att åstadkomma detta såsom isometrisk projektion, ortografisk projektion eller sned projektion.
I isometrisk projektion är x-, y- och z -axlarna 120 grader från varandra och de verkar lika förkortade. Ytterligare information om isometrisk projektion, liksom de formler som behövs, finns på Wikipedias sida om ämnet.
Steg 1: Samla förbrukningsmaterial
Arduino och kabel
Arduino är magnetometerns hjärnor. Dessa instruktioner beskriver hur du använder antingen en Arduino Uno eller en Arduino MKR1010. I båda fallen behövs en kabel för att ansluta den till datorn.
Alternativ 1: Arduino Uno och USB AB -kabel
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
Alternativ 2: Arduino MKR1010 och microUSB -kabel
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
TFT -skärm
TFT står för Thin Film Transistor. Denna 1,44 -skärm innehåller 128 x 128 pixlar. Den är liten, ljus och färgstark. Den fästs på en utbrottskort. Huvudstiften kommer dock separata, så du måste lödda dem. (Löd och ett lödkolv är behövs.)
www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830
- Analoga halleffektsensorer
Tre Hall -effektsensorer krävs. Länken nedan är för Allegro artikelnummer A1324LUA-T. För denna sensor är stift 1 matningsspänningen, stift 2 är jordat och stift 3 är utgången. Andra Hall -sensorer borde också fungera, men se till att de är analoga, inte digitala. Om du använder en annan sensor, kontrollera stiften och justera kablarna om det behövs. (Jag använde faktiskt en annan sensor från samma företag för teständamål. Den jag använde är dock föråldrad och den här sensorn ersätter den.)
www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144
Litet brödbräda och tråd
www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929
Permanenta magneter för testning
Kylskåpsmagneter fungerar bra.
Steg 2: Kabeldragning
Löd rubrikerna på displayen.
Placera sensorerna i ena änden av brödbrädan och placera displayen och Arduino i motsatt ände. Ström i ledningarna i Arduino och display genererar magnetfält, som vi inte vill att sensorerna ska läsa. Dessutom kanske vi vill placera sensorerna nära permanenta magneter, vilket kan påverka strömmen i skärmarna och sensorn. Av dessa skäl vill vi ha sensorerna långt från displayen och Arduino. Även av dessa skäl bör denna magnetometer hållas borta från mycket starka magnetfält.
Placera sensorerna vinkelrätt mot varandra men så nära varandra som möjligt. Böj försiktigt sensorerna för att få dem vinkelräta. Varje stift på varje sensor måste vara i en separat rad på brödbrädan så att den kan anslutas separat.
Kablarna är något annorlunda mellan MKR1010 och Uno av två skäl. Först kommunicerar Arduino och display med SPI. Olika Arduino -modeller har olika dedikerade stift för vissa SPI -linjer. För det andra kan analoga ingångar på Uno acceptera upp till 5 V medan analoga ingångar på MKR1010 endast kan ta upp till 3,3 V. Den rekommenderade matningsspänningen för Hall -effektsensorerna är 5 V. Sensorutgångarna är anslutna till Arduino analoga ingångar, och dessa kan vara lika stora som matningsspänningarna. För Uno, använd den rekommenderade 5 V -matningen för sensorerna. För MKR1010, använd 3,3 V så att den analoga ingången på Arduino aldrig ser en spänning större än den klarar.
Följ diagrammen och instruktionerna nedan för den Arduino du använder.
Kabeldragning med Arduino Uno
Displayen har 11 stift. Anslut dem till Arduino Uno enligt följande. (NC betyder inte ansluten.)
- Vin → 5V
- 3.3 → NC
- Gnd → GND
- SCK → 13
- SO → NC
- SI → 11
- TCS → 10
- RST → 9
- D/C → 8
- CCS → NC
- Lite → NC
Anslut sensorerna Vin till 5V på Arduino. Anslut sensorns jord till Arduino -marken. Anslut sensorns utgång till analoga ingångar A1, A2 och A3 på Arduino.
Kabeldragning med Arduino MKR1010
Displayen har 11 stift. Anslut dem till Arduino enligt följande. (NC betyder inte ansluten.)
- 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
Anslut sensorerna Vin till Vcc på Arduino. Denna stift är på 3,3V, inte 5V. Anslut jordning av sensorn till jord på Arduino. Anslut sensorns utgång till analoga ingångar A1, A2 och A3 på Arduino.
Steg 3: Testa skärmen
Låt oss få TFT -skärmen att fungera. Lyckligtvis har Adafruit några användarvänliga bibliotek och en utmärkt handledning att följa med dem. Dessa instruktioner följer noga handledningen, Öppna Arduino -utvecklingsmiljön. Gå till Verktyg → Hantera bibliotek. Installera Adafruit_GFX, Adafruit_ZeroDMA och Adafruit_ST7735 bibliotek. Starta om utvecklingsmiljön för Android.
Det grafiska exemplet ingår i biblioteken. Öppna den. Arkiv → Exempel → Adafruit ST7735 och ST7789 bibliotek → grafiskt test. För att välja 1,44 visa kommentar ut rad 95 och okommentera rad 98.
Original version:
94 // Använd denna initialiserare om du använder en 1,8 TFT -skärm:
95 tft.initR (INITR_BLACKTAB); // Init ST7735S -chip, svart flik 96 97 // ELLER använd denna initialiserare (okommentera) om du använder ett 1,44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R -chip, grön flik
Rätt version för 1,44 display:
94 // Använd denna initialiserare om du använder en 1,8 TFT -skärm:
95 //tft.initR(INIT_BLACKTAB); // Init ST7735S -chip, svart flik 96 97 // ELLER använd denna initialiserare (okommentera) om du använder ett 1,44 TFT: 98 tft.initR (INITR_144GREENTAB); // Init SST35R -chip, grön flik
Displayen kommunicerar med SPI, och olika modeller Arduinos använder olika dedikerade stift för vissa kommunikationslinjer. Det grafiska exemplet är konfigurerat för att fungera med Uno -stiften. Om du använder MKR1010, lägg till följande rader mellan raderna 80 och 81.
Korrigeringar för 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; 81 float p = 3.1415926;
Spara det modifierade grafiska exemplet. Anslut Arduino till datorn om du inte har gjort det ännu. Gå till Verktyg → Kort och verktyg → Port för att kontrollera att datorn kan hitta Arduino. Gå till Sketch → Ladda upp. Om exemplet fungerar visar displayen linjer, rektanglar, text och den fullständiga demoen. Adafruit -handledningen ger mer information om felsökning behövs.
Steg 4: Magnetometerkoden
Ladda ner den bifogade koden och öppna den i Arduino -utvecklingsmiljön.
Detta program använder sex funktioner:
Setup () initierar displayen
Loop () innehåller programmets huvudslinga. Den svär ut skärmen, ritar axlarna, läser inmatningarna och ritar pilen som representerar magnetfältvektorn. Den har en uppdateringshastighet på en sekund som kan ändras genom att ändra rad 127
DrawAxes3d () ritar och märker axlarna x, y och z
DrawArrow3d () tar in en x-, y- och z -ingång som sträcker sig från 0 till 1023. Från dessa värden beräknar den slutpunkterna för pilen i rymden. Därefter använder den funktionerna isometricxx () och isometricyy () för att beräkna slutpunkterna på skärmen. Slutligen ritar den pilen och skriver ut spänningarna längst ner på skärmen
Isometricxx () hittar x -koordinaten för den isometriska projektionen. Den tar in x-, y- och z -koordinaterna för en punkt och returnerar motsvarande x -pixelplats på skärmen
Isometricyy () hittar y -koordinaten för den isometriska projektionen. Den tar in x, y och z -koordinaterna för en punkt och returnerar motsvarande y -pixelplats på skärmen
Innan vi kör koden måste vi ange vilka stift som ska användas för SPI -kommunikation med displayen, och vi måste ange källspänningen för sensorerna. Om du använder MKR1010, kommentera raderna 92-96 samt rad 110. Sedan kommentera raderna 85-89 samt rad 108. Om du använder Uno, kommentera raderna 85-89 samt rad 108. Sedan, kommentera raderna 92-96 samt linje 110.
Ladda upp koden, Skissa → Ladda upp.
Du bör se x-, y- och z -axlarna i rött. En grön pil med en blå cirkel för spetsen representerar magnetfältvektorn vid sensorerna. Spänningsmätningar visas längst ned till vänster. När du tar en magnet närmare sensorerna bör spänningsmätningarna förändras och pilens storlek ska växa.
Steg 5: Framtidsarbete
Nästa steg skulle vara att kalibrera enheten. Sensordatabladet ger information om hur man konverterar råa sensorspänningsvärden till magnetfältstyrka. Kalibrering kan verifieras genom att jämföra med en mer exakt magnetometer.
Permanenta magneter interagerar med strömtrådar. Ledningar nära displayen och i Arduino genererar magnetfält som kan påverka sensoravläsningar. Dessutom, om den här enheten används för att mäta nära en stark permanent magnet, kommer magnetfältet från enheten som testas att interagera med, introducera brus i och eventuellt skada Arduino och display. Skärmning kan göra denna magnetometer mer robust. Arduino tål större magnetfält om den är skärmad i en metalllåda, och mindre buller kommer att introduceras om skärmade kablar ansluter sensorerna istället för bara ledningar.
Magnetfält är en funktion av position, så det är olika vid varje punkt i rymden. Denna enhet använder tre sensorer, en för att mäta x-, y- och z -komponenten i magnetfältet vid en punkt. Sensorerna är nära varandra men inte vid en enda punkt, och detta begränsar magnetometerupplösningen. Det skulle vara häftigt att spara magnetfältavläsningar vid olika punkter och sedan visa dem som en rad pilar på motsvarande platser. Det är dock ett projekt för en annan dag.
Referenser
Information om Adafruit Arduino Graphics -bibliotek
https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview
Magnetfältvisualisering
https://www.falstad.com/vector3dm/
Information om Hall -effekt- och Hall -effektsensorer
- https://sensing.honeywell.com/index.php?ci_id=47847
- https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx
Information om isometrisk projektion
- https://en.wikipedia.org/wiki/3D_projection
- https://en.wikipedia.org/wiki/Isometric_projection
Rekommenderad:
Bärbar magnetometer: 7 steg (med bilder)
Bärbar magnetometer: En magnetometer, ibland även kallad Gaussmeter, mäter magnetfältets styrka. Det är ett viktigt verktyg för att testa styrkan hos permanentmagneter och elektromagneter och för att förstå fältformen hos icke -diskreta magnetkonfigurationer
Digital kompass med Arduino och HMC5883L magnetometer: 6 steg
Digital kompass med hjälp av Arduino och HMC5883L Magnetometer: Hej killar, Denna sensor kan indikera det geografiska norr, söder, öst och väst, vi människor kan också använda den ibland när det behövs. Så. I den här artikeln låt oss försöka förstå hur magnetometersensorn fungerar och hur den ska kopplas till en mikrokontro
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen
SmartPhone Game Simulator- Spela Windows-spel med Gesture Control IMU, Accelerometer, Gyroskop, Magnetometer: 5 steg
SmartPhone Game Simulator- Spela Windows-spel med Gesture Control IMU, Accelerometer, Gyroscope, Magnetometer: Stöd detta projekt: https://www.paypal.me/vslcreations genom att donera till öppen källkoder & stöd för vidare utveckling