1 eenvoudig rietcontact:
De module bestaat uit een reed-schakelaar en een pullupweerstand. De reed-schakelaar is een glazen buis met magnetische lipjes erin. Als de glazen buis in een extern magnetisch veld wordt gebracht, bewegen de contacttongen naar elkaar toe en sluiten het contact. Deze sensor is zeer geschikt om de aanwezigheid van een object waar zich een magneet in bevindt te detecteren of om de snelheid te meten wanneer de magneet tijdens een omwenteling voorbij de reed-schakelaar beweegt.
2 Rietcontact met comparator:
Hier wordt hetzelfde rietcontact gebruikt. In tegenstelling tot de eenvoudige module wordt hier een comparator LM393 gebruikt. Voordeel van exact schakelen en groene status-LED, die oplicht wanneer het contact is gesloten.
Toepassingsgebied is hetzelfde als voor de eenvoudige rietmodule. De analoge uitgang is praktisch nutteloos. De digitale uitgang is op 0V wanneer de schakelaar is gesloten.
3 eenvoudige lineaire Hall-sensor:
Deze sensor maakt gebruik van het zogenaamde Hall-effect. Als een eenvoudige stroomvoerende Hall-sensor in een loodrecht daarop liggend magnetisch veld wordt geplaatst, is de uitgangsspanning evenredig met het product van de magnetische fluxdichtheid en stroom.
Bij de gebruikte sensor type 48E stroomt de stroom parallel aan de printplaat, wat betekent dat de magneet van boven of van onder moet worden benaderd.
De uitgangsspanning van de sensor is ca. 2,5 V. Als u een magneet in de richting van de afbeelding nadert, neemt de uitgangsspanning toe of af, afhankelijk van of de noord- of zuidpool van de magneet naar de Hall-sensor wijst. Hoe dichter de magneet zich bij de Hall-sensor bevindt, hoe groter de verandering in de uitgangsspanning.Naast de aanwezigheid van een magnetisch veld kan de lineaire Hall-sensor ook de richting en sterkte van het magnetische veld detecteren. Als een magneet parallel aan de Hall-sensor beweegt, bijvoorbeeld door het maximum te vinden, kan de magneet precies tegenover de Hall-sensor worden geplaatst.
4 Lineaire Hall-sensor met comparator:
Deze module gebruikt ook een type 48E-sensor en grotendeels hetzelfde signaal als de eenvoudige module is beschikbaar op analoge uitgang A0. Bovendien heeft deze module een comparator LM393 die de digitale uitgang vanaf een bepaalde drempel overschakelt naar LAAG. Er is ook een groene LED die oplicht wanneer de drempel wordt overschreden. De gevoeligheid kan worden aangepast met de potentiometer. De comparator werkt echter slechts met één richting van het magnetische veld. Als u de magneet omdraait, schakelt de comparator niet en blijft de digitale uitgang HOOG.
5 digitale Hall-sensor:
Deze module maakt gebruik van een Hall-sensor met een ingebouwde drempelschakelaar van het type 3141. Een rode LED is bevestigd aan de module, die oplicht wanneer de uitgang S LAAG wordt. Deze sensor werkt ook slechts in één richting van het magnetische veld. De gevoeligheid is aanzienlijk lager dan bij de lineaire Hall-sensor 48E.
Als de lineaire Hall-sensor met een bepaalde magneet op een afstand van 50 mm schakelt, schakelt de sensor 3141 alleen met dezelfde magneet op een afstand van ca. 10 mm.
Testcircuit en programma:
Het eerste testprogramma is voor sensoren met digitale uitgang. Voor sensoren 1 en 5 verbinden we de middelste pin met + 5V, de - pin met GND en de S-pin met D2 op de Arduino. Voor de modules met comparator (2 en 4) is de + pin aangesloten op + 5V, de GND-pin op GND en de D0-pin op D2 op de Arduino.
We gebruiken de interne LED voor het display.
const byte led = 13;
void setup () {
// pinnen activeren
pinMode (sensor, INPUT_PULLUP);
pinMode (led, UITGANG);
}
void loop () {
// we lezen de sensorstatus en
//switch geleid als de sensor op laag is
digitalWrite (geleid. digitalRead (sensor));
}
Voor de modules met uitgang analoog (3 en 4) we gebruiken de volgende gesaboteerd.
De foto toont de Verdrahrung voor de module met Komparator 4. Voor een eenvoudige lineaire geluidssensor module 3 midden we verbinden de Pin met de rode draad -, speld met de zwarte draad S. en speld met de gele draad. Het programma leest in de waarde van de sensor en vergelijkt hem naar twee Schwellwerten voor de Noordpool en de Zuidpool. Als één van de beide over Schwellwerte is tekort geschoten of lichten leidde op twee kleuren rood of groen. Bovendien is de waarde van analge de sensor wordt gegeven op de seriële poort en het kan zichtbaar worden gemaakt volgens de seriële plotter van de Arduino IDE.
byte = const nord 8; //Display op de Noordpool
byte zuiden Const van = 9; //Display van Zuidpool
const int = sw 50; //relative Schwellwert
valstrik leegte () {
Serial.begin (115200); //Start seriële interface
pinMode (nord, producten);
pinMode (het zuiden, producten);
}
Lus leegte () {
Val = int analogRead (ingang); //worth van de sensor ongeveer zonder magnetisch veld 512
digitalWrite (nord, (val > (512 sw))); //> We moeten vaststellen aan 562 het noorden
digitalWrite (het zuiden, (val < (SW 512))); //< We moeten vaststellen aan 462 het zuiden
Serial.print (val); //Issue van de waarden boven seriële interface voor de plotter
("Serial.print");
Serial.print (SW 512);
("Serial.print");
Serial.println (sw 512);
delay (100);
}
Weergave van de seriële plotter. Men hoeft maar te kijken naar het vallen, of de stijgende spanning nader tot elkaar brengen van bron terwijl de magneet afhankelijk van de richting van het magnetisch veld. De rode en groene lijn geeft de Schwellwerte tegen.
2 Reacties
Gerald Lechner
@Tom: Am einfachsten geht das, durch Nutzung eines Interrupts. Fast jeder der Eingänge des ESP32 ist interruptfähig. Der Interrupt kann beim Übergang von 0 nach 1 oder von 1 nach 0 ausgelöst werden. Dem Interrupt wird eine Funktion zugeordnet, die immer dann aufgerufen wird, wenn das Ereignis eintritt. In dieser Funktion kann dann z.B. ein globales Flag gesetzt werden, das im Hauptprogramm ausgelesen werden kann. Wie man einen Interrupt mit dem ESP32 einrichtet und verwendet wird in zahlreichen Beiträgen im Internet beschrieben.
Tom
Ich habe eine Frage zur Nutzung des einfachen Reed-Kontaktes mit einem ESP32. Der Kontakt soll die Magnet-Wippe eines Regenmengen-Sensors auslesen. Beim Umschalten der Wippe liegt das Signal also nur sehr kurzzeitig an. Wenn der ESP gerade andere Werte wie den Luftfeuchtigkeitsmesser oder Drucksensor ausliest oder in einem Delay hängt wird das Signal nicht ausgewertet. Wie kann ich das zuverlässig auslesen? Schöne Grüße Tom