Arduino Kalibrasyon Uygulaması
Arduino Kalibrasyon Uygulaması. Bu örnek, sensör girişini kalibre etmek için bir teknik test göstermektedir. Kart, başlatma sırasında sensör okumalarını beş saniye sürer ve aldığı en yüksek ve en düşük değerleri izler. Çizim sensörünün ilk beş saniyesindeki bu sensör okumaları, döngü sırasında alınan okumalar için minimum ve maksimum beklenen değerleri tanımlar.
Donanım Gerekli
- Arduino veya Genuino
- LED
- analog sensör (bir fotodirenç yapacak)
- 10k ohm direnç
- 220 ohm direnç
- Bağlantı Kabloları
- breadboard
“Arduino Uno, ATmega328P tabanlı bir mikro denetleyici karttır. 14 adet dijital giriş / çıkış pini (6’sı PWM çıkışı olarak kullanılabilir), 6 analog giriş, 16 MHz kristali, bir USB bağlantısı, bir güç girişi, bir ICSP başlığı ve bir sıfırlama düğmesi vardır. Mikrodenetleyiciyi desteklemek için gereken her şeyi içerir; Başlamak için bir USB kablosuyla bir bilgisayara bağlayın ya da AC-DC adaptörü ya da pille çalıştırın. UNO’yu, yanlış bir şey yapmadan çok fazla endişe etmeden tamir edebilir, en kötü durum senaryosunu değiştirebilirsiniz. Birkaç dolara çip alır ve tekrar kullanabilirsiniz.”
Devre
Analog giriş üzerindeki analog sensör (örn. Potansiyometre, ışık sensörü) 2. Dijital pim 9’daki LED. Serideki 220 Ohm dirençle akım sınırlaması ile dijital pin 9’a bir LED bağlayın. Bir fotoresistörü 5V’a ve sonra toprağa 10K ohm dirençli analog pin 0’a bağlayın.
Kod
Kurulumdan önce, minimum ve maksimum için başlangıç değerlerini şöyle belirlersiniz:
int sensorMin = 1023; // minimum sensör değeri int sensorMax = 0; // maksimum sensör değeri
Bunlar geriye doğru görünebilir. İlk olarak, en yüksek değeri en yüksek değere ayarlayın ve bundan daha düşük bir şey için okuyun ve yeni minimum olarak kaydedin. Aynı şekilde, maksimum azami değeri ayarlarsınız ve yeni maksimum gibi daha yüksek bir şey için okursunuz.
// ilk beş saniye boyunca kalibre while (millis() < 5000) { sensorValue = analogRead(sensorPin); // maksimum sensör değerini kaydetmek if (sensorValue > sensorMax) { sensorMax = sensorValue; } // minimum sensör değerini kaydetmek if (sensorValue < sensorMin) { sensorMin = sensorValue; } }
Bu şekilde, aldığınız diğer okumalar, bu minimum ile maksimum arasındaki aralığa eşlenebilir:
// kalibrasyonun sensör okumasına uygulanması sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
İşte bütün program:
/* Kalibrasyon Sensör girişini kalibre etmek için bir teknik gösterir. Sensör okumaları Çizim uygulamasının ilk beş saniyesinde minimum ve sensör pinine bağlı maksimum değer. Sensör minimum ve maksimum başlangıç değerleri geriye doğru görünebilir. Başlangıçta, En düşük seviyeyi ayarlar ve daha düşük bir şey dinlersiniz. Asgari. Aynı şekilde, en düşük seviyeyi ayarlarsınız ve daha yüksek bir şey dinlersiniz. yeni maksimum. Devre: - Analog girişe bağlı analog sensör (potansiyometre yapacaktır) 0 - Dijital pim 9'dan zemine bağlı LED oluşturuldu 29 Eki 2008 David A Mellis tarafından değiştirildi 30 Ağu 2011 Tom Igoe tarafından Bu örnek kod kamu malıdır. http://www.arduino.cc/en/Tutorial/Calibration */ // Bu sabitler değişmeyecek: const int sensorPin = A0; // sensörün bağlı olduğu pin const int ledPin = 9; // LED'in bağlı olduğu pin // variables: int sensorValue = 0; // sensör değeri int sensorMin = 1023; // minimum sensör değeri int sensorMax = 0; // maximum sensör değeri void setup() { // Kalibrasyon süresinin başlangıcını bildirmek için LED'i açın: pinMode(13, OUTPUT); digitalWrite(13, HIGH); // ilk beş saniye boyunca kalibre while (millis() < 5000) { sensorValue = analogRead(sensorPin); // maksimum sensör değerini kaydetmek if (sensorValue > sensorMax) { sensorMax = sensorValue; } // minimum sensör değerini kaydetmek if (sensorValue < sensorMin) { sensorMin = sensorValue; } } // kalibrasyon periyodunun sonunu bildirme digitalWrite(13, LOW); } void loop() { // sensörü oku: sensorValue = analogRead(sensorPin); // kalibrasyonun sensör okumasına uygulanması sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); // sensör değeri kalibrasyon sırasında görülen aralığın dışındaysa sensorValue = constrain(sensorValue, 0, 255); // kalibre edilmiş değeri kullanarak LED'i söner: analogWrite(ledPin, sensorValue); }
Kaynak:arduino.cc