So messen Sie den Neigungswinkel mit einem SCA60C-Neigungssensor und ergreifen Maßnahmen basierend auf dem Winkel
Dieses Tutorial untersucht den SCA60C-Neigungssensor, eine kostengünstige Möglichkeit, Neigung und Ausrichtung in deinen Robotik- und Elektronikprojekten zu messen. Der Sensor liefert eine analoge Spannungsausgabe, die seinem Winkel entspricht, die ein Arduino lesen und in eine präzise Gradmessung zwischen 0 und 180 Grad umwandeln kann. Dieses Projekt ist perfekt, um einer Vielzahl von Anwendungen Positionsbewusstsein hinzuzufügen.
Hier sind einige praktische Möglichkeiten, wie du diesen Sensor in deinen eigenen Konstruktionen verwenden kannst:
- Roboterarmsteuerung: Überwache die Position jedes Gelenks, um präzise und sichere Bewegungen zu gewährleisten.
- Nivelliersysteme: Erstelle eine selbstnivellierende Plattform für Kameras, Solarpaneele oder andere empfindliche Geräte.
- Bewegungsaktivierte Alarme: Erkenne, wenn ein Gerät oder Objekt von seiner ursprünglichen, kalibrierten Position bewegt wird.
- Interaktive Kunst: Baue ein Werk, das sein Verhalten oder seine Anzeige basierend auf seiner Neigung ändert.
- Orientierungsrückmeldung: Biete Echtzeit-Visualisierung auf einem Bildschirm für die Neigung oder Rollbewegung eines Geräts.
Diese Anleitung führt dich durch die Funktionsweise des Sensors, wie du ihn mit deinem Arduino verbindest und wie du den bereitgestellten Code verwendest, um die Winkeldaten zu lesen und darauf zu reagieren.
Hardware und Komponenten
Um diesem Projekt zu folgen, benötigst du die folgenden Komponenten:
- Arduino-Board (Uno, Nano, Mega usw.)
- SCA60C-Winkelsensor-Modul
- Breadboard und Jumper-Kabel
- Zwei LEDs (optional, für die Alarm-Demonstration)
- Zwei 220-Ohm-Widerstände (optional, für die LEDs)
Der SCA60C-Sensor ist ein kompaktes Modul, das eine Spannung proportional zu seinem Neigungswinkel ausgibt. Wie im Video gezeigt, enthält das Modul auch einen Onboard-Operationsverstärker (LM393) und zwei Potentiometer, die zum Einstellen von Alarmschwellen verwendet werden können und die digitalen Ausgänge D1 und D2 ansteuern. (im Video bei 03:20)
Verdrahtungsanleitung
Die Verdrahtung des SCA60C-Sensors ist unkompliziert. Bitte beziehe dich für eine visuelle Anleitung auf das folgende Diagramm.
Hier ist der Schritt-für-Schritt-Verbindungsprozess:
- Stromversorgung: Verbinde den VCC-Pin am Sensor mit dem 5V-Pin an deinem Arduino. Verbinde den GND-Pin mit dem GND des Arduinos.
- Signal: Verbinde den Vout-Pin (den mittleren Pin) mit dem analogen Eingangspin A0 des Arduinos. Dies ist der primäre Pin zum Lesen des Winkels. (im Video bei 05:25)
- Alarmausgänge (optional): Das Modul hat zwei zusätzliche digitale Ausgänge, D1 und D2. Wenn du die Alarmfunktionen nutzen möchtest, verbinde diese mit den Pins A1 bzw. A2 des Arduinos. (im Video bei 05:30)
Wenn du die Alarmfunktionen nicht benötigst, kannst du die Pins D1 und D2 unverbunden lassen und so die analogen Pins A1 und A2 für andere Sensoren freigeben. (im Video bei 12:00)
Code-Erklärung
Der bereitgestellte Code ist darauf ausgelegt, die analoge Spannung vom Sensor zu lesen und in einen Winkel in Grad umzuwandeln. Die wichtigsten Teile des Codes, die du ändern kannst, sind die Konfigurationsvariablen am Anfang des Sketches.
const int anglePin =A0;
int angle =0;
const int angleCompensate =0;
const int d1Pin =A1;
int d1State =LOW;
int d1Delay =0;//watch
const int d2Pin =A2;
int d2State =LOW;
int d2Delay =0;
Hier ist eine Aufschlüsselung jeder konfigurierbaren Variable:
anglePin: Dies definiert den analogen Pin am Arduino, der mit demVout-Pin des Sensors verbunden ist. Du kannst dies ändern, wenn du einen anderen analogen Pin verwenden musst.angleCompensate: Dies ist eine entscheidende Variable für die Kalibrierung. Der Sensor gibt 0 Grad aus, wenn er perfekt flach ist. Wenn deine Anwendung erfordert, dass der Sensor in einem Winkel montiert ist, kannst du hier einen Grad-Offset hinzufügen. Zum Beispiel bewirkt das Setzen auf20, dass der Sensor 0 Grad anzeigt, wenn er physisch um 20 Grad geneigt ist. (im Video bei 06:24)d1Pinundd2Pin: Diese definieren die analogen Pins, die zum Lesen des Zustands der Alarmausgänge des Sensors verwendet werden. Wenn du die Alarmfunktion nicht verwendest, kannst du diese ignorieren.d1Delayundd2Delay: Diese Variablen führen eine Verzögerung in Millisekunden ein, nachdem ein Alarm ausgelöst wurde. Dies kann zum Entprellen nützlich sein oder um sicherzustellen, dass ein Alarmzustand für eine Mindestdauer anhält. (im Video bei 06:48)
Sie können auch das lables[]-Array ändern, um den Text anzupassen, der auf dem seriellen Monitor ausgegeben wird. Zum Beispiel könnten Sie "Angle" in "Robot Arm Position" ändern, um es besser an Ihr Projekt anzupassen. (im Video bei 07:08)
Live-Projektdemonstration
Im Video wird der Sensor demonstriert, indem er durch seinen Bewegungsbereich bewegt wird, während der serielle Monitor den entsprechenden Winkel anzeigt. Der Moderator zeigt, wie der Sensor null Grad misst, wenn er flach liegt, und wie er bis zu 90 Grad in eine Richtung und -90 Grad in die andere messen kann. (im Video bei 08:05)
Die Demonstration hebt auch die Alarmfunktion hervor. Durch Einstellen der integrierten Potentiometer können die D1- und D2-Ausgänge so konfiguriert werden, dass sie auslösen, wenn der Sensor von seiner Null-Grad-Position geneigt wird. Der Code liest diese digitalen Ausgänge und zeigt ihren Zustand (HIGH oder LOW) auf dem seriellen Monitor an, was verwendet werden kann, um andere Aktionen in Ihrem Projekt auszulösen. (im Video bei 10:29)
Kapitel
- [00:00] Einführung in den SCA60C-Winkelsensor
- [00:52] Anwendungen und Einsatzmöglichkeiten für Winkelmessung
- [02:19] Verständnis des SCA60C-Moduls und seiner Komponenten
- [04:56] Verdrahtungsanleitung für den SCA60C-Sensor
- [06:09] Code-Erklärung und Konfigurationsvariablen
- [08:05] Live-Demonstration der Winkelmessung und Kalibrierung
- [10:29] Demonstration der D1- und D2-Alarmfunktionen
- [13:17] Fazit
/*
* Robojax Arduino Step By Step Course
* Tilt Angle Sensor SCA60C1 SCA60C N1000060
* It displays the angle from 0 to 180 degrees.
*
Please watch video instruction here https://youtu.be/hkhepVzWyWE
Download and resource page https://robojax.com/RJT874
Download and resource page https://robojax.com/RJT18
*
Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20
* in Ajax, Ontario, Canada. www.robojax.com
If you found this tutorial helpful, please support me so I can continue creating
content like this.
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int anglePin =A0;
int angle =0;
const int angleCompensate =0;
const int d1Pin =A1;
int d1State =LOW;
int d1Delay =0;//watch
const int d2Pin =A2;
int d2State =LOW;
int d2Delay =0;
char *lables[]={"Angle","Alarm D1","Alarm D2"};
void setup()
{
Serial.begin(9600); // setup serial
Serial.println("Robojax SCA60C Angle Sensor");
}
void loop(){
//Robojax Tilt Angle Sensor
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
getAngle();
d1Alarm();
d2Alarm();
// print out the value you read:
Serial.print(lables[0]);//
Serial.print(":");
Serial.print(angle);
Serial.println("\xC2\xB0");//degree symbol
// Serial.print("\t");
// Serial.print(lables[1]);
// Serial.print(":");
// Serial.print(d1State);
// Serial.print("\t");
// Serial.print(lables[2]);
// Serial.print(":");
// Serial.println(d2State);
// Serial.println("======");
delay(100);
//Robojax Tilt Angle Sensor
}
void getAngle()
{
angle =map(analogRead(A0), 96, 927, -90, 90) + angleCompensate;
}
/**************************************/
/*!
@brief Get the state of the D1 alarm. HIGH if triggered.
@param no parameter
@returns returns nothing
Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20 in Ajax, Ontario, Canada.
*/
/**************************************/
void d1Alarm()
{
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
//
float vo = analogRead(d1Pin) * (5.0 / 1023.0);
if(vo < 3.5)
{
d1State =HIGH;
delay(d1Delay);
}else{
d1State =LOW;
}
}//d1Alarm() end
/**************************************/
/*!
@brief Get the state of the D1 alarm. HIGH if triggered.
@param no parameter
@returns returns nothing
Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20 in Ajax, Ontario, Canada.
*/
/**************************************/
void d2Alarm()
{
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
//
float vo = analogRead(d2Pin) * (5.0 / 1023.0);
if(vo < 3.5)
{
d2State =HIGH;
delay(d2Delay);
}else{
d2State =LOW;
}
}//d1Alarm() end
Dinge, die Sie vielleicht brauchen
-
AmazonSCA60C tilt sensor on Amazonamzn.to
-
eBaySCA60C tilt sensor on eBayebay.us
-
AliExpressSCA60C tilt sensor on AliExpresss.click.aliexpress.com
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Datenblatt (pdf)
-
robojax_tilt_angle_sensor_SCA60C_datenblatt
robojax_tilt_angle_sensor_SCA60C_datasheet.pdf0.18 MB