semaver
New member
Bu bölüm sensör dünyasını başlatmaya yardımcı olmalıdır. Bilindiği gibi, sensörler kızılötesi sinyaller, ultrason sinyalleri, sıcaklık, basınç ve nem gibi çevresel boyutları ölçer. Sensör aralığını tanıdığı gösterilen devrelerde iki farklı sensör kullanılır.
Sensörler genellikle ölçülen değerleri analog boyutlar olarak sağlar. Ölçülen bu değerleri okumak için, Arduino gibi mikro denetçiler sonuç olarak analog girişler sunar. Ölçülen analog değeri dijital bir boyuta doğrusal olarak aktaran bir analog dijital dönüştürücü (ADC) vardır. Arduino Uno'da, analog dijital dönüşüm 10 bit çözünürlük veya 0'dan 1023'e kadar değerler sunar. 5 V girişte ADC, 1023, 0 V'de dönüşür 0'da dönüşür
Bu çok sıcak
Bu bölümdeki devreler sadece ölçüm sıcaklıklarına adanmıştır. Bir yandan, sıcaklık sensörlerinin nasıl yüzleşeceğini ve diğer yandan, birkaç yolun Roma'ya veya birkaç kontrollü sensöre sıcaklıktan farklı şekilde getirdiği gerçeğini biliyoruz.
Bir yandan ilgili devreleri için TMP36 sıcaklık sensörünü, diğer yandan 18B20 sıcaklık sensörü kullanın. Her ikisi de yaygındır, ancak daha büyük farklılıkları vardır.
TMP36 sıcaklık sensörü
Sensör Derr TMP36 tam ihtişam
(Resim: Ladyada.com)
TMP36 için teknik veri sayfasını okursanız, inşaat bloğunun -40 ° C ila 125 ° C arasında ölçülebilen 2.7 V'dan 5.5 V'a bir giriş voltajına dayanabileceği, yüzde +-2 ölçüm hassasiyetini garanti edebileceği ve 1 ° C için 10 mV'lik bir indirgeme faktörü olduğunu garanti edebileceği açıklanmaktadır.
Sonra sıcaklık sensörünü doğrudan Arduino'nun analog girişine bağlarız.
Sensörü kullanmanız ve doğrudan başın düz kısmına bakmanız gerektiğini varsayalım. Daha sonra 5 V TMP36 TMP36 güç kaynağı voltajının sol bacağını, GND ile sağ bacak ve A0 analog girişi ile merkezi olanı bağlarız.
Arduino uno sensörü ve TMP36 ile devre
Heyecan verici olacak
Bir Arduino uno'nun analog piminde ölçülen gerilim, dijital değer 5/1023 * (yani analog dijital dönüştürücü tarafından kaydedilen değer) ile hesaplanır. Tabii ki, giriş voltajını belirlemek için analog dijital dönüşümü çeviriyoruz.
Sıcaklık formüle göre hesaplanır (Ölçülen voltaj – 0.5) * 100. 100 faktör, indirgeme faktörünün ° C başına 10 mV olması gerçeğinden kaynaklanır ve santigrat sıcaklığın hesaplandığı MV'deki voltajı korumak için 100 ile çarpmamız gerekir. 0.5 çıkarılan kalibrasyon için kullanılır. 0.5 V denilen ofset voltajıdır.
Teknik veri sayfasına göre, TMP36'nın enerji tüketimi yaklaşık 250 mikro Ambes'tir. Arduino kartı için sorun yok.
Program
Şimdi Kod'da bilgi uygulayabiliriz:
const int tmp36_pin = 0; // tmp36 verbunden mit Analogeingang A0
void setup(void) {
// Wir senden die Daten zum seriellen Monitor der Arduino IDE
Serial.begin(9600);
}
void loop() {
float measureV, temperatureC;
// // Spannung = Wert von A0 * 5/1023
measureV = analogRead(tmp36_pin) * 0.004882814;
temperatureC = (measureV – 0.5) * 100;// Errechnen der Temperatur
Serial.print(“Temperature in °C = “); // Messwert an IDE senden
Serial.println(temperatureC);
delay(2000); // 2 Sekunden pausieren
}
Eskiz'in Arduino kartında çalışmasına izin verin. Seri monitör çıkışını görmek için, eskiz penceresinin sağındaki büyütülmüş cam sembolünü tıklayın.
Sıcaklık sensörünü iki parmağınızla çevreliyorsanız, ölçülen değerlerde bir artış bulun. Bıraktıktan sonra değerler tekrar düşer. Ayrıca, ölçülen değerlerin sensör teknik veri sayfasında ne kadar hızlı (veya daha yavaş) değiştiğini de bulabilirsiniz.
DS18B20 sıcaklık sensörü
DS18B20 Sıcaklık Sensörü (Dallas)
DS18B20 olarak kabul edilen ikinci sıcaklık sensörü (burada teknik veri sayfasını bulacaksınız), mikrodenetleyici ile SO -Called 1 tel protokolü aracılığıyla iletişim kurduğu için özeldir. Başka bir deyişle, mikrodenetleyici, analog değerler sağlayan TMP36'nın aksine, sensörden bir dijital veri hattı aracılığıyla sıcaklık değerlerini alır. Parazitik modda, sensör bu veri hattı aracılığıyla bile enerji sağlar.
Arduino uno sensörü ve (ds18b20) ile devre
1 Weire protokolü, gelecekte de karşılaştığımız I2C protokolüne benzer. Arduino bir usta, sensör bir köle gibi davranır. Her DS18B20 sensörü net bir 64 -BIT tanımlamasına sahiptir. Bu nedenle birkaç sensörü Arduino'nun aynı girişine bağlayabiliriz.
Sıfırlama, Gönder ve Yasalar için 1. Tel Protokolündeki İşlemler
(Resim: wikipedia.org)
Sensör ölçüm aralığı -55 ° C ile 125 ° C arasındadır. A +-0.5 %, doğruluk TMP36'dan daha iyidir. Aktif işlemde, DS18H20 yaklaşık 1,5 mA gerektirir.
Bu ikinci devrede, sensörün sağ bacağını Arduino Uno'nun besleme voltajına (5 V) bağlarız. Sol bacağını Arduino GND'ye bağlarız. Merkezi sıcaklık sensörü Arduino dijital pim 2'ye bağlanır. 4.7 kohm, bu merkezi bacak ile sağ bacaktaki besleme voltajı arasında bir bağlantı görevi görür. Bu, istenmeyen sinyalleri önlemek için kullanılır. Stokta 4.7 kohm yoksa, seri devrede iki COH 2,2 dirençini kullanabilirsiniz.
Çok programlı
Arduino eskiz için iki kitapçıya ihtiyacımız var: biri 1 tel ve diğeri sıcaklık sensörüne erişmek için iletişim kurmak için. Yeni bir taslak oluşturun ve iki kitapçıyı Arduino fikrinin eskiz menüsüne ekleyin. Orada seçin Kütüphaneyi dahil ediyorum Drop -Downdown menüsünde, ikinci menü öğesi .Zip kütüphanesini ekleyin … İzin verilen velayet kitaplıklarının entegrasyonu.
İşte eskiz:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // Data wire => Digitaler Pin 2 des Arduino
OneWire oneWire(ONE_WIRE_BUS); // Initialisieren des 1-Wire Bus
DallasTemperature sensors(&oneWire); // Übergabe der 1-Wire Info
void setup(void) {
// Wie üblich nutzen wir den seriellen Monitor
Serial.begin(9600);
// Arduino als Master startet die Übertragung
sensors.begin();
}
void loop(void) {
// Nun starten die eigentlichen Abfragen
Serial.println("Arduino als Master ersucht um Messwerte");
sensors.requestTemperatures();
Serial.print(”Augenblickliche Temperatur: ");
// Wir nehmen einfach den ersten Sensor, den wir finden:
Serial.println(sensors.getTempCByIndex(0));
// …ByIndex(0) => :Gib mir den ersten Sensor
}
Dallas adının nereden geldiğini merak ediyorsanız. Üreticiye Dallas deniyordu.
Bu arada, sıcaklık sensörü, çözünürlüğün programlı konfigürasyonu 9 ila 12 bit gibi birçok seçeneğe sahiptir. İlgileniyorsanız, veri sayfasını inceleyin.
Strateji Modelleri
TMP36 sensörünü bir devrede kullanırsak, ancak sonra DS18B20'ye geçmek istiyorsak, eskizlerimizi ayarlamalıyız. Ne yazık ki, bu, aralarında değiştirdiğimiz farklı varyantların olduğu tüm sensörler/aktüatörler için gereklidir. Çaba potansiyel olarak geliştirildi. (Ayrıca) Küçük bir değişiklik için çok fazla çalışma!
Sistemle ilgili kod, gerçek uygulamadan ayrılabilir, böylece uygulama kodu için büyük ölçüde şeffaf kalır, hangi sıcaklık sensörünün varyantını kullanırız? Voila, burada strateji modeli devreye giriyor. İki kuşu flep ile yenmek için JavaScript IoT/Robotic Johnny-Five Kütüphanesi'ni tekrar Node.js altında kullanıyoruz. Orada, bileşenlere erişim istediğimiz gibi yapılır.
JavaScript'teki TMP36
Yukarıdaki devre için bir JavaScript programı aşağıdakiler olacaktır. Lütfen standart şirketi Arduino'dan Tavsiye Arduino'ya önceden yüklemeyi unutmayın. Aksi takdirde ana bilgisayar ve mikrodenetleyici arasındaki iletişim çalışmaz.
// Programm j5-temperature-TMP36.js:
var five = require("johnny-five");
five.Board().on("ready", function() {
var temperature = new five.Thermometer({
controller: "TMP36",
pin: "A0"
});
temperature.on("change", function() {
console.log(this.celsius + "°C");
});
});
İşlev Sıcaklık. Sıcaklık değiştiğinde (“Değişik”) yürütme her zaman gerçekleştirilen bir talimat bloğunu geçiyoruz. Bu kod kodunda, ölçülen sıcaklık konsolunun çıkışı gerçekleşir.
Programı ile başlayın
node j5-temperature-TMP36.js
JavaScript'te DS18B20
Şimdi aynı komut dosyası DS18B20 için uyarlanmıştır. Bu durumda, standart şirket yeterli değildir. Bunun yerine, önce yapılandırmayı bir kütüphane olarak yüklüyoruz ve ayrıca istenen özellikleri 1 tel olarak yapılandırdığımız şirketin karanlığına da ihtiyacımız var. Araç bir Arduino çevrimiçi taslağı oluşturur (son .), indirdiğimiz ve Arduino kartına yüklediğimiz. Bundan sonra, JavaScript programını Node.js.'deki sunucu tarafında başlatabiliriz. Kodun önceki komut dosyasından yalnızca termometre nesnesinin uygulanması ile ilgili olarak farklılaştığını çok kolay fark ederler.
// Programm j5-temperature-DS18B20.js
var five = require("johnny-five");
five.Board().on("ready", function() {
var temperature = new five.Thermometer({
controller: "DS18B20",
pin: 2
});
temperature.on("change", function() {
console.log(this.celsius + "°C");
});
});
Senaryo ile başlıyor
node j5-temperature-DS18B20.js
Bu arada, her iki sıcaklık sensörünün ölçülen değerlerini karşılaştırmak da ilginçtir, her iki türe de sahip olmak gerekir.
Nasıl Çalışır
Bir sıcaklık sensörü gerçekten nasıl çalışır? Bu sayfa intrAptables.com'da iyi bir açıklama sunmaktadır. Kısacası, sıcaklık sensörleri diyotlardan oluşur. Voltaj düşüşleri sıcaklıkla doğru orantılıdır. Ortaya çıkan bir sinyal yoğunlaştırması, daha hassas ölçülen değerleri garanti eder.
Özet
Bu bölümde tamamen farklı kontrol edilen TMP36 ve DS18B20 sıcaklık sensörleriyle karşılaştık. Ancak Johnny-Five, strateji modeli kullanılarak farklılıkların akıllıca gizlenebileceğini gösteriyor.
Bir sonraki bölümde sıcaklık sensörümüzü, sıcaklığı uygun bir 16×2 veya 20×4 LCD ekranda bırakarak genişletiyoruz. Bu bize ilkel ama genişletilebilir bir hava istasyonu verir. Bu arada, IIC veri yolu da tartışılmaktadır.
()
Sensörler genellikle ölçülen değerleri analog boyutlar olarak sağlar. Ölçülen bu değerleri okumak için, Arduino gibi mikro denetçiler sonuç olarak analog girişler sunar. Ölçülen analog değeri dijital bir boyuta doğrusal olarak aktaran bir analog dijital dönüştürücü (ADC) vardır. Arduino Uno'da, analog dijital dönüşüm 10 bit çözünürlük veya 0'dan 1023'e kadar değerler sunar. 5 V girişte ADC, 1023, 0 V'de dönüşür 0'da dönüşür
Bu çok sıcak
Bu bölümdeki devreler sadece ölçüm sıcaklıklarına adanmıştır. Bir yandan, sıcaklık sensörlerinin nasıl yüzleşeceğini ve diğer yandan, birkaç yolun Roma'ya veya birkaç kontrollü sensöre sıcaklıktan farklı şekilde getirdiği gerçeğini biliyoruz.
Bir yandan ilgili devreleri için TMP36 sıcaklık sensörünü, diğer yandan 18B20 sıcaklık sensörü kullanın. Her ikisi de yaygındır, ancak daha büyük farklılıkları vardır.
TMP36 sıcaklık sensörü

Sensör Derr TMP36 tam ihtişam
(Resim: Ladyada.com)
TMP36 için teknik veri sayfasını okursanız, inşaat bloğunun -40 ° C ila 125 ° C arasında ölçülebilen 2.7 V'dan 5.5 V'a bir giriş voltajına dayanabileceği, yüzde +-2 ölçüm hassasiyetini garanti edebileceği ve 1 ° C için 10 mV'lik bir indirgeme faktörü olduğunu garanti edebileceği açıklanmaktadır.
Sonra sıcaklık sensörünü doğrudan Arduino'nun analog girişine bağlarız.
Sensörü kullanmanız ve doğrudan başın düz kısmına bakmanız gerektiğini varsayalım. Daha sonra 5 V TMP36 TMP36 güç kaynağı voltajının sol bacağını, GND ile sağ bacak ve A0 analog girişi ile merkezi olanı bağlarız.

Arduino uno sensörü ve TMP36 ile devre
Heyecan verici olacak
Bir Arduino uno'nun analog piminde ölçülen gerilim, dijital değer 5/1023 * (yani analog dijital dönüştürücü tarafından kaydedilen değer) ile hesaplanır. Tabii ki, giriş voltajını belirlemek için analog dijital dönüşümü çeviriyoruz.
Sıcaklık formüle göre hesaplanır (Ölçülen voltaj – 0.5) * 100. 100 faktör, indirgeme faktörünün ° C başına 10 mV olması gerçeğinden kaynaklanır ve santigrat sıcaklığın hesaplandığı MV'deki voltajı korumak için 100 ile çarpmamız gerekir. 0.5 çıkarılan kalibrasyon için kullanılır. 0.5 V denilen ofset voltajıdır.
Teknik veri sayfasına göre, TMP36'nın enerji tüketimi yaklaşık 250 mikro Ambes'tir. Arduino kartı için sorun yok.
Program
Şimdi Kod'da bilgi uygulayabiliriz:
const int tmp36_pin = 0; // tmp36 verbunden mit Analogeingang A0
void setup(void) {
// Wir senden die Daten zum seriellen Monitor der Arduino IDE
Serial.begin(9600);
}
void loop() {
float measureV, temperatureC;
// // Spannung = Wert von A0 * 5/1023
measureV = analogRead(tmp36_pin) * 0.004882814;
temperatureC = (measureV – 0.5) * 100;// Errechnen der Temperatur
Serial.print(“Temperature in °C = “); // Messwert an IDE senden
Serial.println(temperatureC);
delay(2000); // 2 Sekunden pausieren
}
Eskiz'in Arduino kartında çalışmasına izin verin. Seri monitör çıkışını görmek için, eskiz penceresinin sağındaki büyütülmüş cam sembolünü tıklayın.
Sıcaklık sensörünü iki parmağınızla çevreliyorsanız, ölçülen değerlerde bir artış bulun. Bıraktıktan sonra değerler tekrar düşer. Ayrıca, ölçülen değerlerin sensör teknik veri sayfasında ne kadar hızlı (veya daha yavaş) değiştiğini de bulabilirsiniz.
DS18B20 sıcaklık sensörü

DS18B20 Sıcaklık Sensörü (Dallas)
DS18B20 olarak kabul edilen ikinci sıcaklık sensörü (burada teknik veri sayfasını bulacaksınız), mikrodenetleyici ile SO -Called 1 tel protokolü aracılığıyla iletişim kurduğu için özeldir. Başka bir deyişle, mikrodenetleyici, analog değerler sağlayan TMP36'nın aksine, sensörden bir dijital veri hattı aracılığıyla sıcaklık değerlerini alır. Parazitik modda, sensör bu veri hattı aracılığıyla bile enerji sağlar.

Arduino uno sensörü ve (ds18b20) ile devre
1 Weire protokolü, gelecekte de karşılaştığımız I2C protokolüne benzer. Arduino bir usta, sensör bir köle gibi davranır. Her DS18B20 sensörü net bir 64 -BIT tanımlamasına sahiptir. Bu nedenle birkaç sensörü Arduino'nun aynı girişine bağlayabiliriz.

Sıfırlama, Gönder ve Yasalar için 1. Tel Protokolündeki İşlemler
(Resim: wikipedia.org)
Sensör ölçüm aralığı -55 ° C ile 125 ° C arasındadır. A +-0.5 %, doğruluk TMP36'dan daha iyidir. Aktif işlemde, DS18H20 yaklaşık 1,5 mA gerektirir.
Bu ikinci devrede, sensörün sağ bacağını Arduino Uno'nun besleme voltajına (5 V) bağlarız. Sol bacağını Arduino GND'ye bağlarız. Merkezi sıcaklık sensörü Arduino dijital pim 2'ye bağlanır. 4.7 kohm, bu merkezi bacak ile sağ bacaktaki besleme voltajı arasında bir bağlantı görevi görür. Bu, istenmeyen sinyalleri önlemek için kullanılır. Stokta 4.7 kohm yoksa, seri devrede iki COH 2,2 dirençini kullanabilirsiniz.
Çok programlı
Arduino eskiz için iki kitapçıya ihtiyacımız var: biri 1 tel ve diğeri sıcaklık sensörüne erişmek için iletişim kurmak için. Yeni bir taslak oluşturun ve iki kitapçıyı Arduino fikrinin eskiz menüsüne ekleyin. Orada seçin Kütüphaneyi dahil ediyorum Drop -Downdown menüsünde, ikinci menü öğesi .Zip kütüphanesini ekleyin … İzin verilen velayet kitaplıklarının entegrasyonu.
İşte eskiz:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // Data wire => Digitaler Pin 2 des Arduino
OneWire oneWire(ONE_WIRE_BUS); // Initialisieren des 1-Wire Bus
DallasTemperature sensors(&oneWire); // Übergabe der 1-Wire Info
void setup(void) {
// Wie üblich nutzen wir den seriellen Monitor
Serial.begin(9600);
// Arduino als Master startet die Übertragung
sensors.begin();
}
void loop(void) {
// Nun starten die eigentlichen Abfragen
Serial.println("Arduino als Master ersucht um Messwerte");
sensors.requestTemperatures();
Serial.print(”Augenblickliche Temperatur: ");
// Wir nehmen einfach den ersten Sensor, den wir finden:
Serial.println(sensors.getTempCByIndex(0));
// …ByIndex(0) => :Gib mir den ersten Sensor
}
Dallas adının nereden geldiğini merak ediyorsanız. Üreticiye Dallas deniyordu.
Bu arada, sıcaklık sensörü, çözünürlüğün programlı konfigürasyonu 9 ila 12 bit gibi birçok seçeneğe sahiptir. İlgileniyorsanız, veri sayfasını inceleyin.
Strateji Modelleri
TMP36 sensörünü bir devrede kullanırsak, ancak sonra DS18B20'ye geçmek istiyorsak, eskizlerimizi ayarlamalıyız. Ne yazık ki, bu, aralarında değiştirdiğimiz farklı varyantların olduğu tüm sensörler/aktüatörler için gereklidir. Çaba potansiyel olarak geliştirildi. (Ayrıca) Küçük bir değişiklik için çok fazla çalışma!
Sistemle ilgili kod, gerçek uygulamadan ayrılabilir, böylece uygulama kodu için büyük ölçüde şeffaf kalır, hangi sıcaklık sensörünün varyantını kullanırız? Voila, burada strateji modeli devreye giriyor. İki kuşu flep ile yenmek için JavaScript IoT/Robotic Johnny-Five Kütüphanesi'ni tekrar Node.js altında kullanıyoruz. Orada, bileşenlere erişim istediğimiz gibi yapılır.
JavaScript'teki TMP36
Yukarıdaki devre için bir JavaScript programı aşağıdakiler olacaktır. Lütfen standart şirketi Arduino'dan Tavsiye Arduino'ya önceden yüklemeyi unutmayın. Aksi takdirde ana bilgisayar ve mikrodenetleyici arasındaki iletişim çalışmaz.
// Programm j5-temperature-TMP36.js:
var five = require("johnny-five");
five.Board().on("ready", function() {
var temperature = new five.Thermometer({
controller: "TMP36",
pin: "A0"
});
temperature.on("change", function() {
console.log(this.celsius + "°C");
});
});
İşlev Sıcaklık. Sıcaklık değiştiğinde (“Değişik”) yürütme her zaman gerçekleştirilen bir talimat bloğunu geçiyoruz. Bu kod kodunda, ölçülen sıcaklık konsolunun çıkışı gerçekleşir.
Programı ile başlayın
node j5-temperature-TMP36.js
JavaScript'te DS18B20
Şimdi aynı komut dosyası DS18B20 için uyarlanmıştır. Bu durumda, standart şirket yeterli değildir. Bunun yerine, önce yapılandırmayı bir kütüphane olarak yüklüyoruz ve ayrıca istenen özellikleri 1 tel olarak yapılandırdığımız şirketin karanlığına da ihtiyacımız var. Araç bir Arduino çevrimiçi taslağı oluşturur (son .), indirdiğimiz ve Arduino kartına yüklediğimiz. Bundan sonra, JavaScript programını Node.js.'deki sunucu tarafında başlatabiliriz. Kodun önceki komut dosyasından yalnızca termometre nesnesinin uygulanması ile ilgili olarak farklılaştığını çok kolay fark ederler.
// Programm j5-temperature-DS18B20.js
var five = require("johnny-five");
five.Board().on("ready", function() {
var temperature = new five.Thermometer({
controller: "DS18B20",
pin: 2
});
temperature.on("change", function() {
console.log(this.celsius + "°C");
});
});
Senaryo ile başlıyor
node j5-temperature-DS18B20.js
Bu arada, her iki sıcaklık sensörünün ölçülen değerlerini karşılaştırmak da ilginçtir, her iki türe de sahip olmak gerekir.
Nasıl Çalışır
Bir sıcaklık sensörü gerçekten nasıl çalışır? Bu sayfa intrAptables.com'da iyi bir açıklama sunmaktadır. Kısacası, sıcaklık sensörleri diyotlardan oluşur. Voltaj düşüşleri sıcaklıkla doğru orantılıdır. Ortaya çıkan bir sinyal yoğunlaştırması, daha hassas ölçülen değerleri garanti eder.
Özet
Bu bölümde tamamen farklı kontrol edilen TMP36 ve DS18B20 sıcaklık sensörleriyle karşılaştık. Ancak Johnny-Five, strateji modeli kullanılarak farklılıkların akıllıca gizlenebileceğini gösteriyor.
Bir sonraki bölümde sıcaklık sensörümüzü, sıcaklığı uygun bir 16×2 veya 20×4 LCD ekranda bırakarak genişletiyoruz. Bu bize ilkel ama genişletilebilir bir hava istasyonu verir. Bu arada, IIC veri yolu da tartışılmaktadır.
()