Thermometer Perduaan Berkuasa Arduino: 4 Langkah

Thermometer Perduaan Berkuasa Arduino: 4 Langkah

Isi kandungan:

Anonim

Baru-baru ini saya memperoleh Arduino Uno dan sedang mencari projek "memulakan" yang sejuk. Saya memutuskan untuk membuat termometer, kerana kit saya mempunyai semua bahagian yang diperlukan (thermistor, wayar, perintang, LED). Melalui beberapa lelaran, saya akhirnya tiba di projek ini: membina Thermometer Perduaan Berkembar Arduino yang memaparkan suhu (dalam C) dalam binari pada enam LED. Inilah yang anda perlukan untuk membina ini:

Arduino x1

Breadboard x1

1000 ohm resistor x1

Thermistor x1

330 ohm perintang x 6

LED x 6

Wayar pelbagai x? (bergantung pada litar anda)

Bekalan:

Langkah 1: Tentukur Thermistor

Thermistors adalah sejenis perintang yang berubah-ubah yang mengubah rintangan dengan perubahan suhu. Untuk mendapatkan bacaan yang tepat dari termistor anda, pertama anda perlu menentukurnya. Anda boleh menggunakan Persamaan Steinhart-Hart untuk memahami data input voltan daripada termistor anda. Menggunakan persamaan ini, suhu = 1 / (A + B * ln (R) + C * (ln (R)) ^ 3), di mana A, B, dan C adalah pekali yang mesti anda selesaikan dan R adalah rintangan. Cara paling mudah untuk mendapatkan nilai koefisien untuk termistor tertentu ialah mencari datasheetnya. Pada datasheet, perlu ada plot Rintangan Suhu Rintangan. Anda boleh memilih mata dari plot ini dan memasukkannya ke dalam kalkulator (seperti ini) untuk mendapatkan nilai pekali untuk A, B, dan C. Titik yang saya gunakan ditandai oleh lingkaran merah pada plot. Idealnya, anda ingin memilih nilai-nilai di atas, tengah, dan bawah julat yang anda harapkan untuk menggunakan termistor dalam untuk mendapatkan lengkung yang paling tepat. Sebaik sahaja anda mempunyai nilai ini, anda boleh memasukkannya ke fungsi "Thermistor" dalam kod.

Langkah 2: Tetapkan Litar

Bahagian ini cukup jelas. Anda akan ingin memasang 6 LED secara berasingan untuk memisahkan pin dan anda mahu wayar input dari termistor berada di antara termistor dan perintang. Ini lebih mudah untuk dilihat dalam gambarajah litar.

Langkah 3: Kod

Bahagian ini juga cukup jelas. Kebanyakan kod termistor datang dari sini. Saya telah mengulas kod untuk cuba menjadikannya lebih mudah difahami. Baris berani menunjukkan tempat memasuki nilai A, B, dan C untuk termistor:

#include

int led1 = 7; / / Tetapkan nombor pin input

int led2 = 8;

int led3 = 9;

int led4 = 10;

int led5 = 11;

int led6 = 12;

dua Thermistor (int RawADC) {

double Temp;

Temp = log (((10240000 / RawADC) - 10000));

Temp = 1 / (0.000760464581576 + (0.000231192417594 + (0.000000072965780 * Temp * Temp)) * Temp);// Ini akan menghasilkan suhu di Kelvin

Temp = Temp - 273.15; // Menukar Kelvin ke Celcius

kembali temp;

} // Fungsi untuk menukar data voltan termistor ke suhu dalam penggunaan Celcius

// Persamaan Steinhart-Hart

void setup () {

Serial.begin (115200);

pinMode (led1, OUTPUT); // Tentukan pin sebagai output

pinMode (led2, OUTPUT);

pinMode (led3, OUTPUT);

pinMode (led4, OUTPUT);

pinMode (led5, OUTPUT);

pinMode (led6, OUTPUT);

}

kekosongan gelung () {

int Temp = Thermistor (analogRead (0)); / / Set pembolehubah Temp sama dengan bacaan dari pin analog 0

int tempdata 6; / Buat pelbagai kosong

untuk (int i = 0; i <6; i ++) {

tempdata i = (temp >> i) & 1;

} // Kitaran melalui nombor perduaan, menyimpan setiap tempat sebagai kemasukan dalam array

Serial.println (int (Temp)); // Paparkan suhu dalam monitor siri

jika (tempdata 0 == 1) {

digitalWrite (led1, HIGH);

} // Jika / Lain-lain kenyataan pergi melalui array dengan digit binari dan menyalakan LED jika entri = 1 dan redup LED jika entri = 0

lain {

digitalWrite (led1, LOW);

}

jika (tempdata 1 == 1) {

digitalWrite (led2, HIGH);

}

lain {

digitalWrite (led2, LOW);

}

jika (tempdata 2 == 1) {

digitalWrite (led3, HIGH);

}

lain {

digitalWrite (led3, LOW);

}

jika (tempdata 3 == 1) {

digitalWrite (led4, HIGH);

}

lain {

digitalWrite (led4, LOW);

}

jika (tempdata 4 == 1) {

digitalWrite (led5, HIGH);

}

lain {

digitalWrite (led5, LOW);

}

jika (tempdata 5 == 1) {

digitalWrite (led6, HIGH);

}

lain {

digitalWrite (led6, LOW);

}

kelewatan (100); / Tunggu 100 milisaat

}

Langkah 4: Mulakan Mengukur Suhu

Sekarang anda boleh mula mengukur suhu! Itu sudah tentu jika anda boleh membaca binari …