Tại sao chân tương tự ảnh hưởng lẫn nhau?


8

Tôi có một cảm biến và nó tạo ra tín hiệu tương tự.

Tôi đang đọc tất cả dữ liệu tương tự và gửi nó vào máy tính của tôi.

nhập mô tả hình ảnh ở đây

uint8_t sensors[] = { A0,A1,A2,A3,A4,A5,A6 };
const int len = sizeof(sensors) / sizeof(sensors[0]);
void loop(void)
{
    for (size_t i = 0; i < len; i++)
    {
        auto sensor = sensors[i];
        int sensorValue = analogRead(sensor);
        // Convert the analogue reading (which goes from 0 - 1023) to a voltage (0 - 5V):
        float voltage = sensorValue * (5.0 / 1023.0);
        char t[100];
        sprintf(t, "%d:%d$\n", sensor, sensorValue);
        uint8_t t1[100];
        //PrintSerial.println(t);
        memcpy(t1, t, 100);
        wifi.send(t1, strlen(t));
    }
    delay(300);
}

Tôi âm mưu đọc tương tự. Tại sao đồ thị trông như thế này?

nhập mô tả hình ảnh ở đây


Breadboard có một vài chỗ điện dung giữa các hàng
dandavis

Câu trả lời:


11

Điều này là để được mong đợi.

Các chân khác không có gì kết nối với nó, vì vậy điện áp của chúng là nổi.

Arduino MCU chỉ có một ADC duy nhất. Để đọc các chân tương tự khác nhau, nó sử dụng bộ ghép kênh để kết nối chân bạn muốn đọc với một ADC. ADC bên trong MCU có tụ điện "mẫu và giữ" bên trong nó.

Để đọc điện áp ở chân, nó sẽ kết nối chân, để sạc mẫu và giữ tụ. Sau đó, nó sẽ ngắt kết nối và đo điện áp của mẫu và giữ tụ điện, mỗi lần một bit.

Vì vậy, trong trường hợp của bạn, bằng cách đọc điện áp ở chân được kết nối, nó sẽ sạc tụ điện. Sau đó nó sẽ đọc các chân không được kết nối. Nhưng bởi vì không có gì được kết nối, mẫu và tụ giữ sẽ ở cùng một điện áp, bởi vì chân không được kết nối sẽ không sạc, cũng không xả nó.

Đo điện áp trên mẫu và giữ tụ sẽ làm giảm điện áp này một chút, vì vậy đó là lý do tại sao trong biểu đồ, các đường sẽ thấp hơn so với phép đo trước đó.

PS Ngoài ra, vì tất cả các chân được đặt trong bảng, nên bạn sẽ có một số khớp nối điện dung giữa các chân liền kề.


Vì vậy, không có vấn đề gì? Nó sẽ không làm giảm độ chính xác nếu có một pin khác?
xóa

6
Không hẳn vậy. Trừ khi tín hiệu bạn đang cố đọc có trở kháng đầu ra rất cao. Bạn có thể kết nối các chân không sử dụng với mặt đất, nếu bạn muốn có được một biểu đồ sạch hơn.
Gerben

0

Các acc thực sự là một tụ điện nhỏ. Khi bạn chuyển kênh, các điện tích trong tụ acc được chuyển từ kênh đầu tiên sang kênh tiếp theo. Nếu kênh đầu vào tiếp theo có trở kháng rất cao hoặc điện dung rất thấp, các điện tích trên tụ acc chiếm ưu thế và điện áp của nó thay đổi rất ít.

Ngoài ra, mã kém cũng có thể gây ra nó - thường là do thiếu thời gian đủ để bổ sung hoàn tất.


Bạn có nghĩa là tôi cần thêm một độ trễ trong vòng lặp?
xóa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.