| Magnetischer LED-Schalter mit A3144
Dauermagnet Hallsensor A3144Der A3144 Sensor gehört zu der Gruppe der Hallsensoren. Hallsensoren nutzen den Hall-Effekt zur Messung von Magnetfeldern. Bei dem Hall-Effekt handelt
es sich um ein physikalisches Phänomen, bei dem in einem Leiter, der einen elektrischen Strom führt, eine Potenzialdifferenz auftritt, wenn sich der Leiter in einem
Magnetfeld befindet, das quer zum fließenden Strom verläuft. Das Phänomen wurde 1879 von dem amerikanischen Wissenschaftler Edwin Hall, der zu diesem Zeitpunkt noch
Doktorand war, entdeckt. Er beschrieb den später nach ihm benannten Effekt im Rahmen seiner Promotionsarbeit.
Technische Daten:
|
Der Schrittmotor wird in unserer Schaltung mit einem Motortreiber gesteuert. Er dient hier als eine Schnittstelle zwischen dem Motor, der viel mehr Strom verbraucht als der Mikrocontroller liefern kann, und dem Mikrocontroller. Der Treiber DM420 wird mit einer externen Spannung versorgt, verfügt über Anschlussklemmen für den Motor und stellt mit drei Anschlüssen eine Schnittstelle zu dem Mikrocontroller bereit. Man kann dank dessen via Software den Treiber freigeben, die Drehrichtung und Geschwindigkeit bestimmen.
Motortreiber DM420Schaltplan
int Treiber_PUL = 4; // Schrittmotor Pulse int Treiber_DIR = 3; // Schrittmotor Drehrichtung int Treiber_ENBL = 2; // Schrittmotor Freigabe int Hall_Sensor_Ein = 6; // Hallsensor für LED Ein int Hall_Sensor_Aus = 7; // Hallsensor für LED Aus int LED = 10; // Ausgang Leuchtdiode void setup() { pinMode (Treiber_PUL, OUTPUT); // Pin 4 Ausgang pinMode (Treiber_DIR, OUTPUT); // Pin 3 Ausgang pinMode (Treiber_ENBL, OUTPUT); // Pin 2 Ausgang pinMode (Hall_Sensor_Ein, INPUT_PULLUP); // Pin 6 Eingang pinMode (Hall_Sensor_Aus, INPUT_PULLUP); // Pin 7 Eingang digitalWrite (Treiber_ENBL, HIGH); // Freigabe OK digitalWrite(Treiber_DIR,LOW); // Drehrichtung } void loop() { int Pulslaenge = analogRead (A0); // Poti Einstellung abfragen if (Pulslaenge < 1000) { // Motor drehen lassen digitalWrite(Treiber_PUL,HIGH); // Signal HIGH delayMicroseconds(5); digitalWrite(Treiber_PUL,LOW); // Signal LOW delayMicroseconds(Pulslaenge); } if (digitalRead (Hall_Sensor_Ein) == LOW) { // Hallsensor EIN angefahren? digitalWrite (LED, HIGH); } // Dann LED ein if (digitalRead (Hall_Sensor_Aus) == LOW) { // Hallsensor AUS angefahren? digitalWrite (LED, LOW); } // Dann LED aus } // **********************************************************************************
Mit dem Potentiometer P1 wird der Motor zum Laufen gebracht. Vorgewählt ist, wenn man die Testschaltung von oben betrachtet, Rechtslauf. An der Achse des Motors
ist an einer Schraube ein Dauermagnet befestigt. Beim Drehen passiert der Magnet zuerst den Hallsensor „LED EIN“, anschließend den Hallsensor „LED AUS“. Jedes Mal
werden dabei digitale Signale zu Arduino gesendet. Die Ausgänge der beiden Sensoren stehen in Normalfall auf „HIGH“. Das ist deswegen so, weil die Arduino Eingänge
D6 und D7 als PULLUP Eingänge definiert wurden. Wenn ein der Hallsensoren von dem Dauermagnet angefahren wird, geht sein Ausgang auf „LOW“. Arduino erkennt den Vorfall
und kann entsprechend reagieren. Wird der erste Sensor angefahren, wird die Leuchtdiode eingeschaltet (Ausgang D10 geht auf HIGH), bei dem zweiten Sensor erfolgt die
Abschaltung der Leuchtdiode. In der Schaltung fungieren die beiden Hallsensoren als berührungslose Schalter. Mit dem Potentiometer P1 wird nach Belieben die Drehzahl
des Motors eingestellt. Das Schalten der Leuchtdiode kann auch bei hohen Drehzahlen beobachtet werden. Die hier eingesetzte Hallsensoren eignen sich somit auch zum
Überwachen und Steuern von Vorgängen, wo schnelle Bewegungen ins Spiel kommen.
Kurzvideo
Google-Suche auf MEINE-SCHALTUNG.de : |