Nhiều hơn một nút trong cùng một pin


12

Tôi đang thực hiện một số dự án và tôi đang sử dụng Arduino để tạo nguyên mẫu, tôi phải sử dụng 10 nút bấm (cùng với nhiều thứ khác) và tôi không có đủ chân.

Một giải pháp tôi có thể nghĩ đến là sử dụng các chân tương tự và sử dụng mỗi chân cho hai nút ấn, đại loại như thế này:

sơ đồ

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

Bằng cách đó tôi có thể đọc chân A0 và biết cái nào trong số chúng đang được đẩy bằng cách xem nếu điện áp là 5V hoặc một nửa số đó.

Đây có phải là một ý tưởng tốt? Các nút ấn khác nhau KHÔNG BAO GIỜ được ấn vào cùng một lúc, đây là vấn đề duy nhất tôi có thể nghĩ ra.

Có cách nào tốt hơn không?


Có bao nhiêu chân bạn đang cố gắng sử dụng?
W5VO

@ W5VO Tôi sẽ cần 22, với 10 nút, bảng chỉ có 18 ... vì vậy hai nút cho mỗi chân tương tự Tôi chỉ cần 5 chân tương tự và bảng có 6.
MyUserIs This

1
Chỉ cần FYI, nhiều nhà sản xuất ô tô sử dụng cách tiếp cận tương tự cho các điều khiển gắn trên vô lăng cho hệ thống âm thanh. Chúng có 8 nút (cho hoặc nhận), mỗi nút có điện trở riêng. Điều này cho phép họ chạy một dây đơn (hoặc cặp dây để đảm bảo trở lại sạch) từ bánh xe đến đầu âm thanh. Đó là một cách tiếp cận hoàn toàn tốt.
DoxyLover

Tôi tin rằng bạn thực sự có thể sử dụng ba chân để nhập vào lý thuyết số lượng công tắc vô hạn bằng cách sử dụng một số thanh ghi thay đổi. Cũng có thể sử dụng 8 chân để nhập 256 công tắc bằng bộ ghép kênh.
Alvin Wong

Câu trả lời:


22

Tại sao phải lãng phí nhiều chân analog cho hai công tắc mỗi công tắc, khi bạn có thể thực hiện bất kỳ số lượng nút nào trên một chân tương tự?

Hai cách để làm điều đó. Một là trong loạt, cái khác là song song.

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

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

Đây là cách một số điều khiển âm thanh tay lái xe hơi. Và làm thế nào một số bộ điều khiển ipod nội tuyến cũ hoạt động.

Tùy thuộc vào các điện trở bạn sử dụng, nếu bạn cần nhấn nhiều nút cùng lúc và mức độ nhạy của tín hiệu tương tự, bạn có thể có tất cả 10 nút trên một pin.


Cảm ơn bạn, tôi cũng đã nghĩ về điều này, nhưng cũng nghĩ rằng có lẽ các số đọc điện áp không chính xác như tôi cần chúng để có thể dựa vào phương pháp này. Tôi cũng sẽ thử nó và xem nó hoạt động như thế nào.
MyUserIs This

Do các nguyên tắc phân tích mạng điện trở của tôi không hoàn toàn chắc chắn, tôi đã thử sử dụng CircuitLab để mô phỏng mạch nối tiếp và rút ra một bảng chân lý, để đo điện áp trên chân đầu vào tương tự. Tôi thấy rằng, kết hợp B2 + B3 cho kết quả 2.499V và kết hợp B1 + B4 kết quả là 2.498V. Với những số liệu gần gũi như vậy, tôi nghĩ rằng ADC 10 bit điển hình sẽ không thể phân biệt chính xác các kết hợp nhiều đầu vào. Bạn nói gì ? Tất nhiên, một chìa khóa tại một thời điểm, sẽ hoạt động hoàn hảo - không còn nghi ngờ gì nữa. Lưu ý B1 = Nút1.
icarus74

Trên thực tế, B2 + B4 cho 1.666V, trong khi B2 + B3 + B4 cũng cho 1.666V! Giải pháp có thể là sử dụng các giá trị khác nhau của điện trở cho R1, R2, R3, R4 và không giữ tất cả chúng là 1K. Nói gì ?
icarus74

7
Thang 2R / R cũ sẽ biến các nút thành D / A và mỗi lần nhấn nút sẽ có một giá trị duy nhất. Tôi tin tưởng nó hoạt động với các nút N-3, trong đó N là độ phân giải ADC
Scott Seidman

1
@ icarus74 có, sử dụng các giá trị khác nhau thay vì tất cả 1k, sẽ cung cấp các kết hợp duy nhất. Hãy thử 1k, 2k, 4k, 8k, 16k, v.v (Hoặc 1k, 4k, 16k, v.v., để có phạm vi rộng hơn)
Passerby

10

Điều đó sẽ làm việc, nhưng một cách tốt hơn là với một ma trận . Đây là khái niệm tương tự như đèn LED ghép kênh với ma trận, nhưng có công tắc.

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

Đây là một ma trận 2x2. Một ma trận hữu ích lớn hơn, bởi vì ở kích thước này, bạn không lưu bất kỳ chân nào qua việc kết nối các công tắc riêng lẻ.

Với ma trận 3x3, bạn có thể nhận được 9 công tắc. Bạn cần 10, vì vậy bạn có thể thêm một hàng hoặc một cột nữa và hỗ trợ 12 công tắc, hoặc chỉ cần đặt công tắc thứ 10 trên chân của chính nó.

Ưu điểm ở đây là bạn có thể sử dụng IO kỹ thuật số, rẻ hơn và thường phong phú hơn so với IO tương tự. Một thanh ghi thay đổi là một cách rẻ tiền để thêm IO kỹ thuật số, nếu bạn hết.

Nếu bạn muốn thậm chí ít chân hơn, bạn có thể, để tăng độ phức tạp, hãy sử dụng charlieplexing . Bạn sẽ phải thêm các điốt ngoài các công tắc của mình và các điốt này có thể có giá bằng một thanh ghi thay đổi. Tuy nhiên, nếu chi phí không phải là mối quan tâm chính của bạn thì nó có thể có một số lợi thế. Với phương pháp này, bạn có thể đọc tất cả các công tắc của mình (tối đa 12, thực tế) với bốn chân.


Chỉ là một câu hỏi. Tại sao điều này tốt hơn nếu tôi sẽ cần nhiều chân hơn? Bằng cách này, tôi sẽ cần 6 chân cho ma trận 9x9 cộng thêm một chân cho lần thứ mười, trong khi trong những gì tôi tạo ra, tôi sẽ chỉ cần 5 chân.
MyUserIs This

@MyUserIsĐiều này có tỷ lệ tốt hơn khi tổng số công tắc tăng lên. ma trận 5x5 cho phép bạn kết nối 25 công tắc với 10 chân. Như một nhận xét tổng quát hơn, làm mọi thứ theo cách thông thường cả hai giúp mọi người dễ hiểu hơn những gì bạn đã làm; và để bạn nhận ra những gì các mạch người khác làm (vì bạn đã tự đào tạo về cách thực hiện tiêu chuẩn).
Dan đang loay hoay bởi Firelight

@MyUserIs này xem các chỉnh sửa. Người qua đường cũng có một câu trả lời hay.
Phil Frost

2

Đầu vào tương tự là một cách tiếp cận hợp lệ, bạn sẽ có thể có một số nút trên đó. Tôi cũng muốn đề xuất sử dụng chip IO Expander như MCP23017 . Nó có 16 chân có thể là đầu vào là đầu ra và được điều khiển bằng I2C bằng hai chân. Adaf Berry có một thư viện Arduino cho nó.


2

Vâng, đó có vẻ là một ý tưởng tốt, nhưng dù sao tôi sẽ đề xuất một giải pháp thay thế xuất hiện trong đầu tôi.

Nếu bạn có quyền truy cập vào các cổng logic, bạn có thể ánh xạ nhiều nnút tới ceil(log2(n + 1))các chân thông qua logic boolean. Ví dụ: nếu bạn có 4 nút, nhưng chỉ có 2 chân bạn có thể tạo cấu hình như thế này:

Buttons | Pins
----    | --
0123    | 01
----    | --
0001    | 00
0010    | 01
0100    | 10
1000    | 11

Đó là, button0ép nên có pin0pin1thấp; button1, pin0thấp và pin1cao; button2, pin0cao pin1thấp; và button3, pin0pin1cao.

Từ đây các biểu thức boolean sau sẽ phát sinh

pin0 = button2 OR button3
pin1 = button1 OR button3

Do đó, ánh xạ 4 nút đến 2 chân có thể được thực hiện chỉ với 2 cổng OR. Tuy nhiên, bạn sẽ cần một pin bổ sung và một số logic bổ sung để cho biết liệu có bất kỳ nút nào được nhấn hay không.

Tất nhiên, vẫn sẽ có vấn đề nếu một số nút được nhấn đồng thời.

Ngoài ra, nếu bạn vẫn tiếp tục sử dụng phương pháp điện trở, hãy cân nhắc sử dụng các giá trị lớn hơn trên các điện trở khác 100 ohms kể từ 5 V thông qua các điện trở theo thứ tự 100 giây sẽ mang lại dòng điện theo thứ tự 10s mA là loại cao không cần thiết. Tôi đoán giá trị hợp lý hơn sẽ là 10k Ohm hoặc 47k Ohm.


Cảm ơn cách tiếp cận của bạn. Tôi cũng đã nghĩ về một cái gì đó như thế, nhưng tôi không có cổng logic và tôi có vô số điện trở. Và vâng, tôi thường sử dụng điện trở 10k cho việc này, 100 ohms chỉ là giá trị mặc định của trình chỉnh sửa mạch. Cảm ơn lần nữa vì sự giúp đỡ của bạn.
MyUserIs This

Tôi nghĩ rằng cuối cùng tôi sẽ sử dụng phương pháp điện trở, vì tôi sẽ không phải mua cổng logic, cộng với cách tiếp cận logic của bạn chỉ tiết kiệm cho tôi 1 pin và tôi không cần điều đó. Tôi sẽ có điều này trong tâm trí cho các dự án lớn hơn. Cảm ơn rât nhiều.
MyUserIs This

Được chứ! Chúc may mắn với dự án của bạn!
nijoakim

0

Trang sau có thể hữu ích:

http://txapuzas.blogspot.co.uk/2010/07/papertecladoanalogico-vario-pulsadores.html

Nó được viết bằng tiếng Tây Ban Nha, nhưng các tiềm năng được lập sơ đồ, tôi nghĩ rằng đó là một ý tưởng rất tốt cho bạn.

Trên video này, bạn có thể thấy kết quả cuối cùng, bản phác thảo cũng có trên trang, chức năng được đóng gói để dễ dàng thực hiện trên các dự án của bạn

Video Youtube: Bàn phím 10 phím trên một pin

Đây là một sơ đồ từ trang web trên:

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

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


2
Vui lòng thêm một bản tóm tắt về những gì liên kết chứa trong trường hợp nó bị chết, đặc biệt là khi nó bằng tiếng Tây Ban Nha và đây là một trang web tiếng Anh.
PeterJ

Xin lỗi, có thể là tình huống thông thường ở Tây Ban Nha, việc giới thiệu một ấn phẩm tiếng Anh là bình thường ... Nhưng liên kết này rất thú vị, cho biết cách tạo bàn phím 10 phím chỉ sử dụng một pin với mô tả ảnh từng bước, sơ đồ để làm một bảng và một hình ảnh để làm cho các nút. Cũng là mã để quản lý bàn phím, dễ hiểu. Tôi nghĩ rằng phát triển tốt đẹp.
JohnnyDeauville

Đó không chỉ là khía cạnh của Tây Ban Nha, tôi đồng ý rằng sơ đồ rất rõ ràng, có vẻ tốt và tôi có thể tìm ra những gì nó chỉ dựa trên đó. Nhưng Stack Exchange không khuyến khích liên kết chỉ các câu trả lời vì chúng không hữu ích nếu liên kết chết, hãy tưởng tượng nếu blog đó bị đóng / xóa vào ngày mai thì câu trả lời sẽ hữu ích như thế nào. Có lẽ bạn có thể bao gồm sơ đồ và một hoặc hai câu về nó và chỉ để lại liên kết như một tài liệu tham khảo để biết thêm thông tin.
PeterJ

Tôi là một tân binh trong diễn đàn này, làm thế nào tôi có thể làm cho bạn nói với tôi? Một số phần đặc biệt ...? Cảm ơn thời gian của bạn
JohnnyDeauville

Tôi vừa mới đưa vào sơ đồ và tài liệu tham khảo đến từ đâu nhưng cũng có thể đáng để dịch thêm một chút trang để đưa ra một số bối cảnh về cách thức hoạt động và cách đọc của ADC.
PeterJ
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.