Cảm biến độ nghiêng được gọi là máy đo độ nghiêng, công tắc nghiêng hoặc cảm biến bóng lăn. Sử dụng cảm biến độ nghiêng là cách đơn giản để phát hiện hướng hoặc độ nghiêng.
Cảm biến độ nghiêng cho phép phát hiện hướng hoặc độ nghiêng. Nó phát hiện nếu cảm biến là hoàn toàn thẳng đứng hoặc nếu nó nghiêng. Điều này làm cho nó rất hữu ích khi được sử dụng, ví dụ, trong đồ chơi, robot và các thứ khác các thiết bị có nguyên lý làm việc phụ thuộc vào độ nghiêng.
Cảm biến độ nghiêng có dạng hình trụ và chứa một quả bóng lăn dẫn điện chuyển động tự do bên trong với hai
điện cực dẫn điện.
Nguyên lý làm việc:
Khi cảm biến hoàn toàn thẳng đứng, quả bóng rơi xuống đáy của cảm biến và kết nối các cực, cho phép dòng điện chạy qua.
Khi cảm biến bị nghiêng, bóng không chạm vào các cực, mạch được mở, và không thể dẫn điện.
Bằng cách này, cảm biến độ nghiêng hoạt động giống như một công tắc được bật hoặc tắt tùy thuộc vào độ nghiêng. Vì vậy, nó sẽ cung cấp thông tin kỹ thuật số cho Arduino ở mức CAO hoặc THẤP.
Cách nối chân
Đấu nối cảm biến độ nghiêng cho bạn Arduino rất đơn giản. Bạn chỉ cần kết nối một chân vào chân kỹ thuật số Arduino và GND với GND. Nếu bạn kết nối cảm biến như vậy, bạn cần kích hoạt tính năng PullUp bên trong Arduino điện trở cho pin kỹ thuật số mà cảm biến của bạn được kết nối với. Nếu không, bạn
nên sử dụng điện trở kéo lên 10kOhm trong mạch của bạn.
/*
* Rui Santos
* Complete Project Details http://randomnerdtutorials.com
*/
int ledPin = 12;
int sensorPin = 4;
int sensorValue;
int lastTiltState = HIGH; // giá trị trước khi đọc cảm biến.
long lastDebounceTime = 0; // thời gian đo lần trước
long debounceDelay = 50; // thơi gian trễ chờ cảm biến
void setup(){
pinMode(sensorPin, INPUT);
digitalWrite(sensorPin, HIGH);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
sensorValue = digitalRead(sensorPin);
// nếu có phát hiện nghiêng chờ 1 tí là đo lại để hạn chế nhiễu
if (sensorValue == lastTiltState) {
// lấy lại thời gian đo
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// Nếu sau thời gian chờ mà giá trị vẫn không đổi thì đúng là cảm biến đã phát hiện đúng trạng thái
lastTiltState = sensorValue;
}
digitalWrite(ledPin, lastTiltState);
Serial.println(sensorValue);
delay(500);
}