Inhaltsverzeichnis:
- Schritt 1: Vorräte sammeln
- Schritt 2: Verkabelung
- Schritt 3: Testen Sie das Display
- Schritt 4: Der Magnetometer-Code
- Schritt 5: Zukünftige Arbeit
Video: Arduino Magnetometer - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Was bauen wir?
Menschen können keine Magnetfelder erkennen, aber wir verwenden Geräte, die ständig auf Magneten angewiesen sind. Motoren, Kompasse, Rotationssensoren oder Windkraftanlagen benötigen zum Beispiel Magnete zum Betrieb. In diesem Tutorial wird beschrieben, wie Sie ein Arduino-basiertes Magnetometer bauen, das ein Magnetfeld mit drei Hall-Effekt-Sensoren erfasst. Der Magnetfeldvektor an einem Ort wird mittels isometrischer Projektion auf einem kleinen Bildschirm angezeigt.
Was ist ein Arduino?
Ein Arduino ist ein kleiner benutzerfreundlicher Open-Source-Mikrocontroller. Es hat digitale Ein- und Ausgangspins. Es verfügt auch über analoge Eingangspins, die zum Lesen von Eingaben von Sensoren nützlich sind. Es stehen verschiedene Arduino-Modelle zur Verfügung. Dieses Tutorial beschreibt, wie Sie entweder das Arduino Uno oder das Arduino MKR1010 verwenden. Es können jedoch auch andere Modelle verwendet werden.
Bevor Sie mit diesem Tutorial beginnen, laden Sie die Arduino-Entwicklungsumgebung sowie alle Bibliotheken herunter, die für Ihr spezielles Modell benötigt werden. Die Entwicklungsumgebung ist unter https://www.arduino.cc/en/main/software verfügbar, und Installationsanweisungen sind unter https://www.arduino.cc/en/main/software verfügbar.
Was ist ein Magnetfeld?
Permanentmagnete üben Kräfte auf andere Permanentmagnete aus. Stromführende Drähte üben Kräfte auf andere stromführende Drähte aus. Auch Permanentmagnete und stromführende Drähte üben Kräfte aufeinander aus. Diese Kraft pro Einheit Teststrom ist ein magnetisches Feld.
Wenn wir das Volumen eines Objekts messen, erhalten wir eine einzelne Skalarzahl. Magnetismus wird jedoch durch ein Vektorfeld beschrieben, eine kompliziertere Größe. Erstens variiert es mit der Position im gesamten Raum. Zum Beispiel ist das Magnetfeld, das einen Zentimeter von einem Permanentmagneten entfernt liegt, wahrscheinlich größer als das Magnetfeld, das zehn Zentimeter entfernt ist.
Als nächstes wird das Magnetfeld an jedem Punkt im Raum durch einen Vektor dargestellt. Die Größe des Vektors repräsentiert die Stärke des Magnetfelds. Die Richtung ist sowohl zur Kraftrichtung als auch zur Richtung des Prüfstroms senkrecht.
Wir können uns das Magnetfeld an einer einzigen Stelle als Pfeil vorstellen. Wir können uns das Magnetfeld im ganzen Raum durch eine Reihe von Pfeilen an verschiedenen Orten vorstellen, möglicherweise von unterschiedlicher Größe und in verschiedene Richtungen. Eine schöne Visualisierung ist unter https://www.falstad.com/vector3dm/ verfügbar. Das von uns gebaute Magnetometer zeigt das Magnetfeld am Ort der Sensoren als Pfeil auf dem Display an.
Was ist ein Hall-Effekt-Sensor und wie funktioniert er?
Ein Hall-Effekt-Sensor ist ein kleines, kostengünstiges Gerät, das die Stärke des Magnetfelds in einer bestimmten Richtung misst. Es besteht aus einem mit Überschussladungen dotierten Halbleiterstück. Der Ausgang einiger Hall-Effekt-Sensoren ist eine analoge Spannung. Andere Hall-Effekt-Sensoren haben einen integrierten Komparator und erzeugen einen digitalen Ausgang. Andere Hall-Effekt-Sensoren werden in größere Instrumente integriert, die Durchfluss, Drehzahl oder andere Größen messen.
Die Physik hinter dem Hall-Effekt wird durch die Lorentz-Kraft-Gleichung zusammengefasst. Diese Gleichung beschreibt die Kraft auf eine sich bewegende Ladung aufgrund eines externen elektrischen und magnetischen Feldes.
Die folgende Abbildung veranschaulicht den Hall-Effekt. Angenommen, wir möchten die Stärke des Magnetfelds in Richtung des blauen Pfeils messen. Wie im linken Teil der Abbildung gezeigt, führen wir einen Strom senkrecht zur Richtung des zu messenden Feldes durch ein Stück Halbleiter. Strom ist ein Ladungsfluss, also bewegt sich eine Ladung im Halbleiter mit einer gewissen Geschwindigkeit. Diese Ladung wird aufgrund des externen Felds eine Kraft spüren, wie im mittleren Teil der Abbildung gezeigt. Ladungen bewegen sich aufgrund der Kraft und sammeln sich an den Kanten des Halbleiters. Ladungen bauen sich auf, bis die Kraft aufgrund der angesammelten Ladungen die Kraft aufgrund des externen Magnetfelds ausgleicht. Wir können die Spannung am Halbleiter messen, wie im rechten Teil der Abbildung gezeigt. Die gemessene Spannung ist proportional zur Stärke des Magnetfelds und liegt senkrecht zum Strom und zur Richtung des Magnetfelds.
Was ist isometrische Projektion?
An jedem Punkt im Raum wird das Magnetfeld durch einen dreidimensionalen Vektor beschrieben. Unser Bildschirm ist jedoch zweidimensional. Wir können den dreidimensionalen Vektor in eine zweidimensionale Ebene projizieren, um ihn auf dem Bildschirm zu zeichnen. Es gibt mehrere Möglichkeiten, dies zu erreichen, z. B. isometrische Projektion, orthographische Projektion oder schräge Projektion.
In der isometrischen Projektion sind die x-, y- und z-Achsen 120 Grad voneinander entfernt und erscheinen gleichermaßen verkürzt. Weitere Informationen zur isometrischen Projektion sowie die benötigten Formeln finden Sie auf der Wikipedia-Seite zum Thema.
Schritt 1: Vorräte sammeln
Arduino und Kabel
Der Arduino ist das Gehirn des Magnetometers. Diese Anleitung beschreibt die Verwendung eines Arduino Uno oder eines Arduino MKR1010. In beiden Fällen wird ein Kabel benötigt, um es mit dem Computer zu verbinden.
Option 1: Arduino Uno und USB AB-Kabel
www.digikey.com/product-detail/de/arduino/A000066/1050-1024-ND/2784006
www.digikey.com/product-detail/de/stewart-connector/SC-2ABE003F/380-1424-ND/8544570
Option 2: Arduino MKR1010 und microUSB-Kabel
www.digikey.com/product-detail/de/arduino/ABX00023/1050-1162-ND/9486713
www.digikey.com/product-detail/de/stewart-connector/SC-2AMK003F/380-1431-ND/8544577
TFT-Display
TFT steht für Thin Film Transistor. Dieses 1,44-Zoll-Display enthält 128 x 128 Pixel. Es ist klein, hell und farbenfroh. Es wird an einer Breakout-Platine befestigt. Die Header-Pins werden jedoch separat geliefert, sodass Sie sie anlöten müssen. (Lötmittel und ein Lötkolben sind erforderlich.)
www.digikey.com/product-detail/de/adafruit-industries-llc/2088/1528-1345-ND/5356830
- Analoge Hall-Effekt-Sensoren
Es werden drei Hall-Effekt-Sensoren benötigt. Der Link unten ist für die Allegro-Teilenummer A1324LUA-T. Bei diesem Sensor ist Pin 1 die Versorgungsspannung, Pin 2 ist Masse und Pin 3 ist der Ausgang. Andere Hall-Sensoren sollten auch funktionieren, aber stellen Sie sicher, dass sie analog und nicht digital sind. Wenn Sie einen anderen Sensor verwenden, überprüfen Sie die Pinbelegung und passen Sie die Verkabelung bei Bedarf an. (Ich habe zu Testzwecken tatsächlich einen anderen Sensor derselben Firma verwendet. Der von mir verwendete ist jedoch veraltet und dieser Sensor ist sein Ersatz.)
www.digikey.com/product-detail/de/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144
Kleines Steckbrett und Draht
www.digikey.com/product-detail/de/adafruit-industries-llc/239/1528-2143-ND/7244929
Permanentmagnete zum Testen
Kühlschrankmagnete funktionieren gut.
Schritt 2: Verkabelung
Löten Sie die Header auf dem Display.
Platzieren Sie die Sensoren an einem Ende des Steckbretts und platzieren Sie das Display und Arduino am gegenüberliegenden Ende. Der Strom in den Drähten im Arduino und im Display erzeugt Magnetfelder, die die Sensoren nicht lesen sollen. Darüber hinaus möchten wir die Sensoren möglicherweise in der Nähe von Permanentmagneten platzieren, die den Strom in den Drähten des Displays und des Sensors beeinträchtigen könnten. Aus diesen Gründen wollen wir die Sensoren weit weg vom Display und Arduino. Auch aus diesen Gründen sollte dieses Magnetometer von sehr starken Magnetfeldern ferngehalten werden.
Platzieren Sie die Sensoren senkrecht zueinander, aber so nah wie möglich beieinander. Biegen Sie die Sensoren vorsichtig, um sie senkrecht zu stellen. Jeder Pin jedes Sensors muss sich in einer separaten Reihe des Steckbretts befinden, damit er separat angeschlossen werden kann.
Die Verkabelung unterscheidet sich zwischen dem MKR1010 und dem Uno aus zwei Gründen leicht. Zuerst kommunizieren Arduino und Display per SPI. Verschiedene Arduino-Modelle haben unterschiedliche dedizierte Pins für bestimmte SPI-Leitungen. Zweitens können die Analogeingänge des Uno bis zu 5 V akzeptieren, während die Analogeingänge des MKR1010 nur bis zu 3,3 V akzeptieren. Die empfohlene Versorgungsspannung für die Hall-Effekt-Sensoren beträgt 5 V. Die Sensorausgänge sind mit Arduino-Analogeingängen verbunden, und diese können so groß wie die Versorgungsspannungen sein. Verwenden Sie für den Uno die empfohlene 5-V-Versorgung für die Sensoren. Verwenden Sie für den MKR1010 3,3 V, damit der analoge Eingang des Arduino nie eine Spannung sieht, die größer ist als er verarbeiten kann.
Befolgen Sie die folgenden Diagramme und Anweisungen für das von Ihnen verwendete Arduino.
Verkabelung mit dem Arduino Uno
Das Display hat 11 Pins. Verbinden Sie sie wie folgt mit dem Arduino Uno. (NC bedeutet nicht verbunden.)
- Vin →5V
- 3.3 →Öffner
- Masse → Masse
- SCK →13
- SO → NC
- SI →11
- TCS →10
- RST →9
- Gleichstrom →8
- CCS → NC
- Lite → NC
Verbinden Sie Vin der Sensoren mit 5V des Arduino. Verbinden Sie die Masse des Sensors mit der Masse des Arduino. Verbinden Sie den Ausgang der Sensoren mit den analogen Eingängen A1, A2 und A3 des Arduino.
Verkabelung mit dem Arduino MKR1010
Das Display hat 11 Pins. Verbinden Sie sie wie folgt mit dem Arduino. (NC bedeutet nicht verbunden.)
- Vin →5V
- 3.3 →Öffner
- Masse → Masse
- SCK → SCK 9
- SO → NC
- SI →MOSI 8
- TCS →5
- RST →4
- D/C →3
- CCS → NC
- Lite → NC
Verbinden Sie Vin der Sensoren mit Vcc des Arduino. Dieser Pin hat 3,3 V, nicht 5 V. Verbinden Sie die Masse des Sensors mit der Masse des Arduino. Verbinden Sie den Ausgang der Sensoren mit den analogen Eingängen A1, A2 und A3 des Arduino.
Schritt 3: Testen Sie das Display
Lassen Sie uns das TFT-Display zum Laufen bringen. Glücklicherweise hat Adafruit einige benutzerfreundliche Bibliotheken und ein ausgezeichnetes Tutorial, das sie begleitet. Diese Anweisungen folgen genau dem Tutorial, Öffnen Sie die Arduino-Entwicklungsumgebung. Gehen Sie zu Extras → Bibliotheken verwalten. Installieren Sie die Bibliotheken Adafruit_GFX, Adafruit_ZeroDMA und Adafruit_ST7735. Starten Sie die Android-Entwicklungsumgebung neu.
Das Graphicstest-Beispiel ist in den Bibliotheken enthalten. Öffne es. Datei → Beispiele → Adafruit ST7735 und ST7789 Bibliothek → Grafiktest. Um die 1,44 -Anzeige auszuwählen, kommentieren Sie Zeile 95 aus und entkommentieren Sie Zeile 98.
Originalfassung:
94 // Verwenden Sie diesen Initialisierer, wenn Sie einen 1,8-Zoll-TFT-Bildschirm verwenden:
95 tft.initR(INITR_BLACKTAB); // ST7735S-Chip initieren, schwarzer Tab
Richtige Version für 1,44 -Display:
94 // Verwenden Sie diesen Initialisierer, wenn Sie einen 1,8-Zoll-TFT-Bildschirm verwenden:
95 //tft.initR(INIT_BLACKTAB); // ST7735S-Chip initieren, schwarze Registerkarte 96 97 // ODER diesen Initialisierer (unkommentiert) verwenden, wenn ein 1,44-Zoll-TFT verwendet wird: 98 tft.initR (INITR_144GREENTAB); // SST35R-Chip initieren, grüne Registerkarte
Das Display kommuniziert über SPI, und verschiedene Arduino-Modelle verwenden unterschiedliche dedizierte Pins für einige Kommunikationsleitungen. Das Grafiktest-Beispiel ist so eingerichtet, dass es mit den Uno-Pins funktioniert. Wenn Sie den MKR1010 verwenden, fügen Sie die folgenden Zeilen zwischen den Zeilen 80 und 81 hinzu.
Korrekturen für den 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 Gleitkomma p=3,1415926;
Speichern Sie das geänderte Grafiktest-Beispiel. Stecken Sie den Arduino in den Computer, wenn Sie dies noch nicht getan haben. Gehen Sie zu Tools → Board und Tools → Port, um zu überprüfen, ob der Computer das Arduino finden kann. Gehen Sie zu Skizze → Hochladen. Wenn das Beispiel funktioniert, zeigt das Display Linien, Rechtecke, Text und die vollständige Demo an. Das Adafruit-Tutorial bietet weitere Details, wenn eine Fehlerbehebung erforderlich ist.
Schritt 4: Der Magnetometer-Code
Laden Sie den angehängten Code herunter und öffnen Sie ihn in der Arduino-Entwicklungsumgebung.
Dieses Programm verwendet sechs Funktionen:
Setup() initialisiert die Anzeige
Loop() enthält die Hauptschleife des Programms. Es verdunkelt den Bildschirm, zeichnet die Achsen, liest die Eingaben und zeichnet den Pfeil, der den Magnetfeldvektor darstellt. Es hat eine Bildwiederholfrequenz von einer Sekunde, die durch Ändern von Zeile 127 geändert werden kann
DrawAxes3d() zeichnet und beschriftet die x-, y- und z-Achsen
DrawArrow3d() nimmt eine x-, y- und z-Eingabe im Bereich von 0 bis 1023 an. Aus diesen Werten berechnet es die Endpunkte des Pfeils im Raum. Als nächstes verwendet es die Funktionen isometricxx() und isometricyy(), um die Endpunkte auf dem Bildschirm zu berechnen. Schließlich zeichnet es den Pfeil und druckt die Spannungen am unteren Rand des Bildschirms
Isometricxx() findet die x-Koordinate der isometrischen Projektion. Es nimmt die x-, y- und z-Koordinaten eines Punktes auf und gibt die entsprechende x-Pixelposition auf dem Bildschirm zurück
Isometricyy() findet die y-Koordinate der isometrischen Projektion. Es nimmt die x-, y- und z-Koordinaten eines Punktes auf und gibt die entsprechende y-Pixelposition auf dem Bildschirm zurück
Vor dem Ausführen des Codes müssen wir angeben, welche Pins für die SPI-Kommunikation mit dem Display verwendet werden sollen, und wir müssen die Quellspannung für die Sensoren angeben. Wenn Sie den MKR1010 verwenden, kommentieren Sie die Zeilen 92-96 sowie die Zeile 110 aus. Dann die Zeilen 85-89 sowie die Zeile 108 auskommentieren. Wenn Sie den Uno verwenden, kommentieren Sie die Zeilen 85-89 sowie die Zeile 108 aus Dann entkommentieren Sie die Zeilen 92-96 sowie die Zeile 110.
Laden Sie den Code hoch, Sketch → Upload.
Sie sollten die x-, y- und z-Achsen in Rot sehen. Ein grüner Pfeil mit blauem Kreis für die Spitze repräsentiert den Magnetfeldvektor an den Sensoren. Spannungswerte werden unten links angezeigt. Wenn Sie einen Magneten näher an die Sensoren bringen, sollten sich die Spannungswerte ändern und die Größe des Pfeils sollte größer werden.
Schritt 5: Zukünftige Arbeit
Der nächste Schritt wäre, das Gerät zu kalibrieren. Das Sensordatenblatt enthält Informationen zur Umrechnung von Sensorrohspannungswerten in magnetische Feldstärke. Die Kalibrierung könnte durch Vergleich mit einem genaueren Magnetometer verifiziert werden.
Permanentmagnete interagieren mit stromführenden Drähten. Drähte in der Nähe des Displays und im Arduino erzeugen Magnetfelder, die die Sensorwerte beeinflussen könnten. Wenn dieses Gerät zum Messen in der Nähe eines starken Permanentmagneten verwendet wird, interagiert das Magnetfeld des zu testenden Geräts mit dem Arduino und dem Display, verursacht Rauschen und beschädigt es möglicherweise. Eine Abschirmung könnte dieses Magnetometer robuster machen. Der Arduino kann größeren Magnetfeldern standhalten, wenn er in einer Metallbox abgeschirmt ist, und es wird weniger Rauschen eingeführt, wenn abgeschirmte Kabel die Sensoren anstelle von blanken Drähten verbinden.
Das Magnetfeld ist eine Funktion der Position, daher ist es an jedem Punkt im Raum unterschiedlich. Dieses Gerät verwendet drei Sensoren, einen zum Messen der x-, y- und z-Komponente des Magnetfelds an einem Punkt. Die Sensoren befinden sich nahe beieinander, aber nicht an einem einzigen Punkt, was die Auflösung des Magnetometers einschränkt. Es wäre cool, Magnetfeldmesswerte an verschiedenen Stellen zu speichern und sie dann als eine Reihe von Pfeilen an den entsprechenden Stellen anzuzeigen. Das ist jedoch ein Projekt für einen anderen Tag.
Verweise
Informationen zu Adafruit Arduino-Grafikbibliotheken
https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview
Magnetfeldvisualisierung
https://www.falstad.com/vector3dm/
Informationen zu Hall-Effekt- und Hall-Effekt-Sensoren
- https://sensing.honeywell.com/index.php?ci_id=47847
- https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx
Informationen zur isometrischen Projektion
- https://en.wikipedia.org/wiki/3D_projection
- https://en.wikipedia.org/wiki/Isometric_projection
Empfohlen:
Einen Arduino-Gitarren-Tuner herstellen – wikiHow
So bauen Sie einen Arduino-Gitarren-Tuner: Dies sind die Anweisungen, um einen Gitarren-Tuner aus einem Arduino und mehreren anderen Komponenten zu machen. Mit Grundkenntnissen in Elektronik und Codierung können Sie dieses Gitarrenstimmgerät herstellen. Zuerst müssen Sie wissen, was die Materialien sind. Ma
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: 9 Schritte
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: Este proyecto consiste en a alarma básica que Detecta presencia, activa una sirena de 108dB y visa al usuario mediante un SMS (opcional). Permite también el control remoto básico por parte del usuario a través de SMS (encendido, apagado, reinicio
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 2 - Temperatur- / Feuchtigkeitsmonitor - Rev 3: 7 Schritte
Easy Very Low Power BLE in Arduino Teil 2 – Temperatur-/Feuchtigkeitsmonitor – Rev 3: Update: 23. November 2020 – Erster Austausch von 2 x AAA-Batterien seit 15. Januar 2019 dh 22 Monate für 2x AAA AlkalineUpdate: 7. April 2019 – Rev 3 of lp_BLE_TempHumidity, fügt Datum/Uhrzeit-Plots hinzu, verwendet pfodApp V3.0.362+ und automatische Drosselung, wenn
Arduino-Programmierung über das Handy -- Arduinodroid -- Arduino-Ide für Android -- Blinzeln: 4 Schritte
Arduino-Programmierung über das Handy || Arduinodroid || Arduino-Ide für Android || Blink: Bitte abonnieren Sie meinen Youtube-Kanal für weitere Videos…… Arduino ist ein Board, das direkt über USB programmiert werden kann. Es ist sehr einfach und günstig für College- und Schulprojekte oder sogar für Produktprototypen. Viele Produkte bauen zunächst darauf für i