Đo nhiệt độ với cảm biến TMP36 và dùng đèn LED để báo hiện với Arduino

Đây là một dự án Arduino thực sự thú vị , nó dùng để đọc nhiệt độ, gửi thông tin về Arduino và dùng đèn LED để chỉ thị. Linh kiện để thực hiện dự án này:
• Arduino Uno
• ít breadboard
• Dây nối loại đực – đực
• Một LED màu xanh
• 8 LED màu xanh lá cây
• Hai đèn LED đỏ
• 11 Điện trở  560 Ohm
• Cảm biến nhiệt TMP36 (hoặc TMP35)

Bước 1: Gắn led theo sơ đồ bên dưới

Các LED sẽ mắc nối tiếp với điện trở 560 ôm và đấu xuống mass. Các chân dương của LED nối về board Arduino.
Bước 2: Kiểm tra các LED
Dùng chương trình Blink (trong phần mềm lập trình Arduino) , thay đổi biến led  để kiểm tra
int led = 2;// thay đổi số chân tương ứng để kiểm tra LED
void setup() {
 pinMode(led, OUTPUT);
}
void loop() {
 digitalWrite(led, HIGH);
}
Bước 3: kết nối với TMP36 (hoặc TMP35)
Cảm biến TMP36 có 3 chân. Kết nối theo sơ đồ chân của cảm biến vào  breadboard. Chân số 1 nối với nguồn, chân số 2 kết nối với 0 hoặc A0 trên Arduino, chân 3 nối với mass.
Code kiểm tra TMP36
int temperaturePin = 0;
void setup()
{
    Serial.begin(9600);
}
void loop()
{
    float temperature = getVoltage(temperaturePin);
    temperature = (temperature - .5) * 100;
    Serial.println(temperature);
    delay(1000);
}
float getVoltage(int pin)
{
    return (analogRead(pin) * .004882814);
}
 

Bước 4:

Viết code
/*
Setup your scale and start the sketch WITHOUT a weight on the scale
Once readings are displayed place the weight on the scale
Press +/- or a/z to adjust the calibration_factor until the output readings match the known weight
Arduino pin 6 -> HX711 CLK
Arduino pin 5 -> HX711 DOUT
Arduino pin 5V -> HX711 VCC
Arduino pin GND -> HX711 GND
*/
#include HX711.h
HX711 scale(5, 6);
float calibration_factor = 2230; // this calibration factor is adjusted according to my load cell
float units;
float ounces;
void setup()
{
    Serial.begin(9600);
    Serial.println(HX711 calibration sketch);
    Serial.println(Remove all weight from scale);
    Serial.println(After readings begin, place known weight on scale);
    Serial.println(Press + or a to increase calibration factor);
    Serial.println(Press - or z to decrease calibration factor);
    scale.set_scale();
    scale.tare();                            //Reset the scale to 0
    long zero_factor = scale.read_average(); //Get a baseline reading
    Serial.print(Zero factor:);              //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
    Serial.println(zero_factor);
}
void loop()
{
    scale.set_scale(calibration_factor); //Adjust to this calibration factor
    Serial.print(Reading:);
    units = scale.get_units(), 10;
    if (units & lt; 0)
    {
        units = 0.00;
    }
    ounces = units * 0.035274;
    Serial.print(units);
    Serial.print(grams);
    Serial.print(calibration_factor:);
    Serial.print(calibration_factor);
    Serial.println();
    if (Serial.available())
    {
        char temp = Serial.read();
        if (temp == + || temp == a)
            calibration_factor += 1;
        else if (temp == - || temp == z)
            calibration_factor -= 1;
    }
}
Theo instructables.com

Trả lời

Email của bạn sẽ không được hiển thị công khai.