Lựa chọn địa chỉ bus 4 bit qua chân đầu vào tương tự: Mô phỏng Monte Carlo hiển thị các giá trị địa chỉ chồng lấp


16

Tôi đã thiết kế một PCB cảm biến nhỏ cho luận án thạc sĩ của mình với một vi điều khiển ATtiny44 . Tôi cần khoảng 200 bảng này cho ứng dụng của mình và 16 bảng luôn được kết nối cục bộ với bảng điều khiển. Toàn bộ mạng trông như thế này:

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

Để giao tiếp giữa bộ điều khiển và bảng cảm biến, tôi đã viết bus 1 pin của riêng mình (dựa trên thời gian). Vấn đề duy nhất là bảng cảm biến phải có địa chỉ để biết vị trí của nó trong mạng, khi tôi gửi dữ liệu của nó đến bảng điều khiển.

Khi tôi chỉ còn 1 pin trên ATtiny, tôi đã nghĩ ra một mạch DAC dựa trên jumper để tạo ra một điện áp tương tự dựa trên cài đặt của bốn jumper. Vì mạch cảm biến sử dụng các giá trị (47, 470, 1k, 3k, 4k7, 10k, 100k và 220k) và tôi muốn tối ưu hóa cho sản xuất, tôi đã sử dụng các giá trị dưới đây cho DAC (về cơ bản là 100k, 50k, 20k và 10k ). Giá trị này sẽ cho tôi một giá trị tốt trong khoảng từ 0 V đến 760 mV dựa trên cài đặt jumper. Chính xác những gì tôi cần để đọc như một điện áp tương tự với tham chiếu 1.1 V bên trong của ATtiny. Khi khởi động, ATtiny đọc điện áp này và nên biết vị trí của nó.

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab

Về lý thuyết điều này hoạt động tốt. Tôi thậm chí đã làm một phân tích Monte Carlo trong LTspice để xác nhận rằng tôi không có vùng chồng lấn nào, khi xem xét dung sai của các điện trở (tất cả đều là 1% BTW). Dưới đây bạn có thể tìm thấy những hình ảnh của phân tích này.

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

Bây giờ tôi đã sản xuất một số (may mắn không phải 200) trong số các bảng này và một số bảng không đọc được địa chỉ chính xác của chúng (đặc biệt là ở các khu vực địa chỉ cao hơn, nơi tất cả các dung sai đến chơi cùng một lúc). Tôi đã đo tất cả các giải pháp có thể và cuối cùng đã tìm ra vấn đề của mình. Phân tích ban đầu của tôi không bao gồm dung sai của điện áp cung cấp 5 V, được tạo ra cục bộ từ 12 V với MC7805 trên mỗi bảng điều khiển. Trên mỗi biểu dữ liệu, MC7805 có điện áp đầu ra trong khoảng 4,8 đến 5,2 V.

Sau khi tôi nhận ra điều này, tôi đã sửa đổi phân tích Monte Carlo. Bây giờ nó trông như thế này:

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

Như bạn có thể thấy có những khu vực chồng chéo đẹp, nơi tôi chắc chắn không thể nói điện áp này chỉ có nghĩa là địa chỉ này. Về cơ bản tất cả các địa chỉ bắt đầu bằng không. 8 có thể nhận được đọc sai (với khả năng cao hơn cho đọc sai cho địa chỉ cao hơn).

Tôi không muốn thêm các giá trị điện trở khác với giá trị đã được sử dụng trên bảng (như đối với luận án tôi muốn tối ưu hóa cho sản xuất).

Tôi không muốn thêm một tham chiếu điện áp (ví dụ, diode Zener) để cung cấp cho mạng điện trở DAC.

Tôi không thể sửa đổi bảng điều khiển nữa (và sử dụng ở đó một bộ điều chỉnh điện áp chính xác hơn).

Tôi vẫn có thể sửa đổi thiết kế / sơ đồ PCB của bảng cảm biến!

Làm thế nào tôi có thể đảm bảo luôn luôn đọc chính xác địa chỉ (theo chương trình hoặc bằng cách thay đổi mạch)?


3
+1 Câu hỏi hay. Bạn có thể cung cấp tệp asc LTspice cuối cùng trong một pastebin ở đâu đó không? Vì vậy, chúng ta có thể kiểm tra các kết hợp khác?
mờ

2
Câu hỏi tuyệt vời, công việc tuyệt vời để tìm ra những gì thực sự gây ra nó trước khi yêu cầu hướng dẫn ở đây. Bây giờ câu hỏi và câu trả lời là một bài đọc tốt cho bất kỳ ai đi ngang qua thay vì chỉ bạn :-)
Mast

Câu trả lời:


19

Theo mô phỏng của bạn, sơ đồ địa chỉ của bạn hoạt động tốt miễn là chỉ có sự không chắc chắn trong các giá trị điện trở được xem xét. Đó là sự không chắc chắn về điện áp làm cho nó bị hỏng.

Lời khuyên của tôi là hủy bỏ các biến động trên VCC bằng cách sử dụng nó làm tài liệu tham khảo cho ADC. Bạn có thể làm như vậy bằng cách lập trình các REFSbit trong thanh ADMUXghi, như được giải thích trong biểu dữ liệu :

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

Khi bạn chuyển sang VCC làm điện áp tham chiếu cho ADC, bạn sẽ không đo điện áp nữa mà là tỷ lệ giữa các giá trị điện trở và các giá trị này chính xác đến 1%. Không có thay đổi nào được yêu cầu trong sơ đồ (mặc dù bạn có thể muốn tăng giá trị của R7 để lấy số đo của mình ở giữa phạm vi chuyển đổi của ADC), chỉ có phần sụn của Attiny phải được cập nhật.

Nếu bạn vẫn sẵn sàng làm lại bảng cảm biến, bạn có thể thay thế sơ đồ của mình bằng thang R-2R như Cano64 đề xuất:

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab

Điều này sẽ tối ưu hóa độ phân giải bằng cách làm cho tất cả các bước trong thang bằng nhau. Điện trở 1% đủ chính xác để xây dựng thang đơn điệu lên đến 5 bit.


Đừng! Tôi đã không nhìn thấy chỗ dựa cho cây. Tôi đã rất cố định trên 1.1V đó ... Cảm ơn rất nhiều! Tôi sẽ cố gắng làm điều đó.
KarlKarlsom

1
Đã thử nghiệm và nó hoạt động. Tuyệt quá!
KarlKarlsom

Tôi đã thử nghiệm nó với VCC là ISF và điện trở 220k cho R7. Sau này tôi có thể thử và mô phỏng thang 100k, 220k R-2R và xem liệu nó có cho tôi kết quả tốt hơn nữa không. Cảm ơn một lần nữa!
KarlKarlsom

3

Tôi đã phải giải quyết một vấn đề tương tự một lần. Tôi cần kết nối 4 nút với một chân analog trên arduino, tuy nhiên tôi cần nhận ra các lần nhấn đồng thời (tất cả các kết hợp). Tôi đã đưa ra cùng một mạch với bạn, sau đó tôi đã viết một chương trình để tìm kiếm tất cả các kết hợp giá trị điện trở có thể để các giá trị cuối cùng khi bạn nhấn các nút, cách nhau càng nhiều càng tốt. Đoán xem cái gì? Chúng tôi đang say sưa, nó không thể được thực hiện. Vậy đó, chúc một ngày tốt lành.

Tôi đã học được rằng các giá trị điện trở tối ưu cho các công tắc gần với R, 2R, 4R, 8R và phần dưới cùng của bộ chia có giá trị R. Mạch của bạn đã gần với tối ưu, bạn chỉ cần thay R7 bằng 10k điện trở.

Nhưng có một tin tốt cho bạn. Vì bạn chỉ cần đặt địa chỉ (bạn sẽ không vận hành công tắc trong khi thiết bị đang chạy), tôi khuyên bạn nên sử dụng công tắc SPDT và thang R2R thay thế.


Tại sao nó không thể được thực hiện? Điều gì đã xảy ra khi bạn kết nối các công tắc của mình với điện trở (R, 2R, 4R, 8R)? Những kết hợp nào không hoạt động?
Dmitry Grigoryev

Nhân tiện, thang R-2R là một gợi ý tuyệt vời!
Dmitry Grigoryev

+ Dmitry Tôi có nghĩa là cùng một điện áp đầu ra quá gần để phân biệt chúng một cách đáng tin cậy.
Cano64
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.