KY-024 Linear magnetic Hall Sensor: Unterschied zwischen den Versionen
Aus Linkerkit.de
Zeile 12: | Zeile 12: | ||
---- | ---- | ||
− | |||
'''LED1:''' Zeigt an, dass der Sensor mit Spannung versorgt ist | '''LED1:''' Zeigt an, dass der Sensor mit Spannung versorgt ist | ||
Zeile 20: | Zeile 19: | ||
==Pin-Belegung== | ==Pin-Belegung== | ||
[[Datei:4_dig_V_G_An.png|none|450x235px]] | [[Datei:4_dig_V_G_An.png|none|450x235px]] | ||
+ | |||
+ | ==Funktionsweise des Sensors== | ||
+ | Dieser Sensor besitzt auf seiner Platine drei funktionelle Bestandteile. Die ist die Sensoreinheit vorne am Modul, welche das aktuelle Umfeld physikalisch misst und als analoges Signal auf die zweite Einheit, dem Verstärker, ausgibt. Dieser verstärkt das Signal abhängig vom eingestellten Widerstand am Drehpotentiometer und leitet es auf den analogen Ausgang des Moduls. | ||
+ | '''Hierbei ist zu beachten:'''Das Signal ist invertiert; wird ein hoher Wert gemessen, so resultiert dies in einen niedrigeren Spannungswert am analogen Ausgang. | ||
+ | |||
+ | Die dritte Einheit stellt einen Komparator dar, welcher den digitalen Ausgang und die LED schaltet, wenn das Signal unter einen bestimmten Wert fällt. Mittels des Drehpotentiometers kann somit die Empfindlichkeit eingestellt werden, wie es im folgenden Bild aufgezeigt wird: | ||
+ | |||
+ | |||
+ | |||
+ | [[Datei:Empfindlichkeit_Potentiometer.jpg|455x542px|none]] | ||
==Codebeispiel Arduino== | ==Codebeispiel Arduino== | ||
− | <pre class="brush:cpp"> | + | Das Programm liest den aktuellen Spannungswert aus, der am analogen Ausgang gemessen werden kann, und gibt diesen auf der seriellen Schnittstelle aus. |
− | // Deklaration und Initialisierung der Eingang-Pins | + | |
+ | Zudem wird ebenfalls der Zustand des digitalen Pins in der Konsole angegeben, was bedeutet ob der Grenzwert unterschritten wurde oder nicht. | ||
+ | |||
+ | <pre class="brush:cpp">// Deklaration und Initialisierung der Eingang-Pins | ||
int Analog_Eingang = A0; // X-Achse-Signal | int Analog_Eingang = A0; // X-Achse-Signal | ||
int Digital_Eingang = 3; // Knopf | int Digital_Eingang = 3; // Knopf |
Version vom 6. April 2016, 15:23 Uhr
Inhaltsverzeichnis
Bild
Technische Daten / Kurzbeschreibung
Chipsatz: A3141 | OP-Verstärker: LM393
Das Magnetfeld wird vom Sensor gemessen und als analoger Spannungswert ausgegeben. Die Empfindlichkeit des Sensors kann mittels des Potentiometers geregelt werden.
Digitaler Ausgang: Wird ein Magnetfeld erkannt, so wird hier ein Signal ausgegeben
Analoger Ausgang: Direkter Messwert der Sensoreinheit
LED1: Zeigt an, dass der Sensor mit Spannung versorgt ist
LED2: Zeigt an, dass ein Magnetfeld detektiert wurde
Pin-Belegung
Funktionsweise des Sensors
Dieser Sensor besitzt auf seiner Platine drei funktionelle Bestandteile. Die ist die Sensoreinheit vorne am Modul, welche das aktuelle Umfeld physikalisch misst und als analoges Signal auf die zweite Einheit, dem Verstärker, ausgibt. Dieser verstärkt das Signal abhängig vom eingestellten Widerstand am Drehpotentiometer und leitet es auf den analogen Ausgang des Moduls. Hierbei ist zu beachten:Das Signal ist invertiert; wird ein hoher Wert gemessen, so resultiert dies in einen niedrigeren Spannungswert am analogen Ausgang.
Die dritte Einheit stellt einen Komparator dar, welcher den digitalen Ausgang und die LED schaltet, wenn das Signal unter einen bestimmten Wert fällt. Mittels des Drehpotentiometers kann somit die Empfindlichkeit eingestellt werden, wie es im folgenden Bild aufgezeigt wird:
Codebeispiel Arduino
Das Programm liest den aktuellen Spannungswert aus, der am analogen Ausgang gemessen werden kann, und gibt diesen auf der seriellen Schnittstelle aus.
Zudem wird ebenfalls der Zustand des digitalen Pins in der Konsole angegeben, was bedeutet ob der Grenzwert unterschritten wurde oder nicht.
// Deklaration und Initialisierung der Eingang-Pins int Analog_Eingang = A0; // X-Achse-Signal int Digital_Eingang = 3; // Knopf void setup () { pinMode (Analog_Eingang, INPUT); pinMode (Digital_Eingang, INPUT); Serial.begin (9600); // Serielle Ausgabe mit 9600 bps } // Das Programm liest die aktuellen Werte der Eingang-Pins // und gibt diese auf der seriellen Ausgabe aus void loop () { float Analog; int Digital; //Aktuelle Werte werden ausgelesen, auf den Spannungswert konvertiert... Analog = analogRead (Analog_Eingang) * (5.0 / 1023.0); Digital = digitalRead (Digital_Eingang); //... und an dieser Stelle ausgegeben Serial.print ("Analoger Spannungswert:"); Serial.print (Analog, 4); Serial.print ("V, "); Serial.print ("Grenzwert:"); if(Digital==1) { Serial.println (" erreicht"); } else { Serial.println (" noch nicht erreicht"); } Serial.println ("----------------------------------------------------------------"); delay (200); }