Cách xác định thứ tự các thẻ cắm vào bảng điều khiển


7

Sửa đổi: Tôi có một bộ điều khiển chính PCB với bốn thanh bus (+, - và hai đường tín hiệu), xem hình ảnh bên dưới. Tôi có mô-đun PCB AC (hoặc có thể là 10 hoặc 15 trong số chúng), mỗi MCU và mã định danh duy nhất, cắm vào ổ cắm theo thứ tự không xác định (và có thể có hoặc không có mặt tất cả). Làm thế nào các PCB mô-đun có thể giao tiếp với bộ điều khiển chính để bộ điều khiển chính có thể biết thứ tự của PCB mô-đun. (Trong digram, nó sẽ là [C, A, B].) Hai đường "tín hiệu" được vẽ có thể được cấu hình lại (hoặc thêm các thành phần / mạch bổ sung).

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

NGUỒN GỐC: Tôi có bộ điều khiển chính PCB có ổ cắm 0-5. Tôi có AF mô-đun PCB (đây cũng là các ID duy nhất, thông qua MCU hoặc các phương tiện khác) cắm vào ổ cắm theo thứ tự không xác định (và có thể có hoặc không có mặt tất cả). Tôi tự hỏi nếu có một cách đơn giản cho bộ điều khiển chính để biết thứ tự của PCB mô-đun. (Trong digram, nó sẽ là [C, E, A, B, F, D].) Có một dòng "tín hiệu" được rút ra nhưng có thể thêm các dòng bổ sung (hoặc các thành phần / mạch bổ sung).

Bus điều khiển với các mô-đun thẻ


Bạn cần một cái gì đó nhiều hơn là một chiếc xe buýt duy nhất trên ổ cắm.
DKNguyen

2
Nói chung, bạn làm điều này bằng cách có các đường chuyên dụng (có thể từ MUX) đến từng khe mà bạn có thể sử dụng để đọc điện trở nhận dạng, bộ sưu tập song song của bộ nhảy, hoặc chip số nhận dạng loại một dây hoặc I2C hoặc bạn có chuỗi daisy báo hiệu nơi bạn có thể giải quyết các mục theo vị trí của chúng trong chuỗi và đọc nhận dạng kỹ thuật số (nghĩa là tương tự như JTAG, mặc dù sử dụng JTAG thực tế cho các mục đích JTAG-ish giữa các thẻ là một ý tưởng tồi vì các chuỗi dài chậm và không đáng tin cậy cho cường độ cao hoạt động)
Chris Stratton

1
Thông tin thêm xin vui lòng. Có thẻ C "biết" đó là thẻ C không? Thẻ F có "biết" đó là thẻ F không? Hay là các thẻ giống hệt nhau? Chủ có thể đọc từng khe riêng lẻ không? Hay các khe chia sẻ đường tín hiệu chung?
scorpdaddy

6 thẻ, do đó, 3 bit nhận dạng dữ liệu trên mỗi thẻ sẽ hoạt động để chủ nhân ID mỗi thẻ. Giả sử nó có thể giải quyết từng ổ cắm một cách độc lập.
ndtsc

1
Bạn đã có bao nhiêu chân bảng nối đa năng và bạn có thể dành bao nhiêu cho chức năng nhận dạng?
TonyM

Câu trả lời:


1

Trong các ý kiến ​​bạn nói: -

Bộ điều khiển chính có thể sẽ không được cấp nguồn khi cắm thẻ

Nếu thẻ sẽ không được chèn hoặc gỡ bỏ khi bộ điều khiển được cấp nguồn thì chỉ cần kiểm tra thứ tự khi khởi động. Điều này có thể được thực hiện với một đường tín hiệu được phân chia ở mỗi khe, với mỗi thẻ chuyển tín hiệu sang khe tiếp theo sau khi được xác định. Các khe cắm không có thẻ trong đó cũng phải truyền tín hiệu.

Đây là cách nó có thể được thực hiện với các cổng logic.

sơ đồ

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

Mỗi khe có một cổng AND trên bảng nối đa năng, với điện trở pullup ở đầu vào 'Xong' để tín hiệu 'ID' sẽ được truyền qua khe tiếp theo ngay cả khi không có thẻ. Khi ban đầu cấp nguồn, tất cả các bo mạch sẽ kéo đầu ra 'Xong' của chúng xuống thấp, ngăn tín hiệu ID đến khe tiếp theo. Mỗi bảng sau đó chờ tín hiệu 'ID in' của nó lên cao, điều này cho biết rằng bộ điều khiển muốn xác định nó.

Bộ điều khiển kéo tín hiệu 'ID' lên trên khe đầu tiên, sau đó nói chuyện với bất kỳ thẻ nào phản hồi. Khi thẻ đã được xác định, nó làm cho đầu ra 'Xong' của nó tăng cao và sau đó bỏ qua các yêu cầu ID tiếp theo, hãy để thẻ tiếp theo phản hồi. Điều này tiếp tục cho đến khi không có thẻ trả lời. Sau đó, bộ điều khiển biết rằng tất cả các thẻ được tính và thứ tự của các thẻ là thứ tự mà chúng được xác định.

Tín hiệu 'ID' cũng có thể là một trong những đường tín hiệu bình thường, do đó bạn có thể chỉ cần thêm một pin cho mỗi khe. Nếu bạn có hàng trăm thẻ thì độ trễ cổng có thể là một vấn đề, trong trường hợp đó bạn sẽ cần thêm 2 chân cho mỗi khe cắm (có thể nằm ở phía đối diện của bảng). Cổng AND có thể là 74LVC1G08 , có giá ~ US $ 0,1 với số lượng lên tới 100.


1

Nếu bạn có thể thêm một đường dây khác có điện trở cao theo chiều dài, bạn có thể kết nối một đầu với nguồn điện dương và đầu kia với nguồn điện âm trong trường hợp này, mỗi thẻ có thể đo vị trí của nó và báo cáo cho chủ.

Một khả năng khác là tại đường dây chính được kết nối với nguồn điện dương có điện trở đã biết và khi cắm thẻ, nó sẽ kết nối nguồn điện âm tại đường dây tại vị trí của nó, sau đó, chủ có thể tự đo vị trí và sau đó cho thẻ ngắt kết nối với nó hàng.


có vẻ như là một giải pháp thông minh Mức độ chính xác của một hệ thống như vậy (hoặc các yếu tố đóng vai trò của nó là gì)? Nếu đường kháng cự cao dài 100mm, hai thẻ cách nhau 10 mm có thể được đọc theo thứ tự đúng không? Là độ chính xác trong một hệ thống như vậy dọc theo chiều dài? Đây có phải là phép đo hiện tại? Xin lỗi nếu đây là những câu hỏi cơ bản và cảm ơn cho những suy nghĩ.
Zachary Russell Heineman

Ngoài ra, tôi đã cố gắng đọc lên về sức đề kháng trên mỗi chiều dài. Điều này có thể đạt được chỉ với những dấu vết hẹp trên PCB không?
Zachary Russell Heineman

@ZacharyRussellHeineman Tôi không thể trả lời hầu hết các câu hỏi của bạn vì tôi đã không cố gắng tự làm điều này. Tôi đoán hầu hết các vấn đề sẽ đến từ nhiễu điện. Bạn đo điện áp vì dòng này về cơ bản là biến trở trong bộ chia điện áp. Bạn không cần toàn bộ hệ thống là tuyến tính nếu bạn chỉ muốn vị trí tương đối của thẻ, nhưng cùng một vị trí có cùng lực cản theo thời gian. Tôi đoán rằng để có sức đề kháng đủ cao trên mỗi chiều dài, bạn sẽ cần vật liệu khác ngoài đồng như carbon.
Rokta

Cảm ơn @Rokta. Tôi tìm thấy một liên kết liên quan đến dấu vết điện trở: eevblog.com/forum/projects/how-to-get-resistive-traces-on-pcb . Tôi nghĩ rằng bậc thầy thực hiện phép đo có lẽ là con đường để đi, với mỗi thẻ có mạch để tắt pin sau khi thực hiện phép đo.
Zachary Russell Heineman

1

Mỗi ổ cắm có ID ổ cắm - đầu nối 0 có chân 1,2,3 nối đất, đầu nối 1 chỉ có 2 & 3 nối đất, v.v.

Mô-đun plug in có I2C và một địa chỉ I2C duy nhất và có thể cảm nhận được các chân ID. Có dòng kéo lên trên chân cảm giác ID.

Bậc thầy gửi tin nhắn đến tất cả các địa chỉ I2C có thể. Nếu nó không có phản hồi, mô-đun đó không được cắm. Nếu có phản hồi, mô-đun có thể trả lời với ID ổ cắm. Bây giờ bạn biết mô-đun trong ổ cắm nào.

Một thiết bị có thể, không có bộ điều khiển vi mô trên mỗi mô-đun, là sử dụng một thiết bị như PCF8574 và một số bộ nhảy để xác định mô-đun.

Bạn sẽ cần 2 chân cho chân I2C và log2 (Số bảng) cho ID ổ cắm.

(Một tùy chọn khác là có một bộ chia điện trở để xác định ổ cắm - dưới dạng điện áp - và có ADC I2C trên mỗi mô-đun để xác định vị trí) - cần tổng cộng 3 chân.


Điều này tất nhiên cần nhiều chân bảng nối đa năng hơn nhưng chắc chắn là hoàn toàn khả thi. Để cung cấp các chân ID (3) và đồng hồ / dữ liệu I2C (2) sẽ có nghĩa là tổng cộng 5 chân.
Jack Creasey

@JackCreasey nhiều chân hơn là một khả năng
Zachary Russell Heineman

Cảm ơn câu trả lời, @D Duck.
Zachary Russell Heineman

Giải pháp chia điện trở có giống với câu trả lời của @ Rokta ở trên không?
Zachary Russell Heineman

Điều quan trọng là mã hóa vị trí bằng điện áp và yêu cầu mô-đun sử dụng phần I2C ADC có sẵn và cách ack nếu có thiết bị.
D Vịt

0

Loại vấn đề này (nhận dạng bảng và thứ tự vị trí) là một vấn đề rất phổ biến phải giải quyết.

Bạn cần cung cấp thêm thông tin để được tư vấn tốt nhất:

  1. Có phải tất cả các thẻ LUÔN LUÔN cắm?
  2. TẤT CẢ các thẻ có ID / Chức năng duy nhất?
  3. Bạn sẽ có các bảng có cùng chức năng nhưng các ID # khác nhau

Tuy nhiên, bạn có thể xem câu trả lời này đề xuất sử dụng MCU nhỏ để cung cấp thông tin một cách an toàn.

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

Lưu ý ở đây rằng nếu bạn để lại một thẻ, thì chuỗi bị hỏng (nhưng bạn không biết ở đâu).
Tôi đã sửa lỗi này trong một số dự án (ngày siêu sao) bằng cách thêm một rơle sậy trên mỗi vị trí bảng và một nam châm nhỏ trên mỗi bảng. Nếu thẻ được cắm vào nam châm giữ tiếp điểm sậy mở, Nếu thẻ bị tháo thì tiếp xúc được đóng lại và rút ngắn tín hiệu ra vào vị trí đó.


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện . Bất kỳ kết luận nào đạt được nên được chỉnh sửa lại thành câu hỏi và / hoặc bất kỳ câu trả lời nào.
Dave Tweed

0

Một cách là để mỗi thẻ có một cổng đầy các chân nhảy chạy đến một ổ cắm cắm vào bo mạch chủ. Các chân nhảy này được kết nối với nhau bằng các kết nối cứng trên bo mạch chủ, là duy nhất cho từng vị trí ổ cắm. Bằng cách đó, mỗi bảng sẽ tự động biết ổ cắm nào được cắm vào và bạn có thể tìm ra cách nào đó để chủ nhân thu thập thông tin đó từ thẻ. Nếu bạn chỉ có một vài vị trí thì đây có lẽ là đơn giản và đáng tin cậy nhất.

-

Một cách khác là có các dòng CHỈ chạy giữa các thẻ liền kề để các thẻ có thể phát điện thoại và tự đếm, nhưng điều đó sẽ không hoạt động với các khe bị bỏ qua. Phương pháp này yêu cầu một cái gì đó để bắt đầu quá trình đếm ngược, chẳng hạn như thẻ chính hoặc thẻ "biết" đó là thẻ đầu tiên (có thể là một nút nhảy được kết nối khi cắm vào khe đầu tiên của bo mạch chủ hoặc chỉ là một nút nhảy bạn thủ công tự kết nối trên thẻ nếu không có bo mạch chủ).

Bạn cũng cần thẻ cuối cùng để biết đó là thẻ cuối cùng. Bạn có thể sử dụng một trong hai phương pháp nhảy vừa được đề cập, nhưng bạn cũng có thể chỉ sử dụng thời gian chờ để xác định thẻ cuối cùng (nghĩa là nếu bảng hiện tại cố gắng giao tiếp với bảng tiếp theo và không nhận được phản hồi và hết thời gian, nó sẽ hết có thể cho rằng đó là thẻ cuối cùng).

Phương pháp này hoạt động tốt nhất khi bạn có một chuỗi thẻ liên tục với số lượng rất lớn hoặc tùy ý. Tôi đã sử dụng phương pháp này trong một dự án để tôi có thể xếp chồng nhiều PCB giống nhau (không có bo mạch chủ, chỉ có các đầu nối trên bo mạch để tôi có thể liên tục xếp PCB lên nhau) như tôi muốn và tất cả đều tự đếm và biết chính xác nơi họ đang ở trong ngăn xếp.

Phương pháp này cũng không có trí tuệ nếu bạn đã có một kết nối nối tiếp chuyên dụng chạy riêng giữa các thẻ liền kề vì nó không yêu cầu phần cứng bổ sung.

-

Và một cách khác (về mặt lý thuyết) là sử dụng hai đường tín hiệu từ tổng thể rơi vào từng ổ cắm khi nó đi ngang qua. Một dòng không bị xóa trong khi dòng thứ hai có một dòng trễ giữa thả vào mỗi ổ cắm. Bậc thầy gửi một xung xuống cả hai dòng cùng một lúc và mỗi thẻ đo chênh lệch thời gian giữa dòng bị trễ và dòng không bị xóa. Điều này cho phép nó biết nó ở xa đến mức nào và do đó cho nó biết nó được đặt ở vị trí nào. Từ đó, thẻ có thể sử dụng thông tin thời gian được xác định trước để biết vị trí của chúng trên đường hoặc chúng có thể thốt ra từ xa họ là chủ và chủ có thể sắp xếp trình tự thực tế của họ (nếu khoảng cách hoặc độ trễ không chắc chắn vì bất kỳ lý do gì). Phương pháp này có thể mất ít chân nhất trên ổ cắm (chỉ hai). Vấn đề chính tôi nghĩ là thực sự tìm thấy một thành phần dòng trễ phù hợp. Bạn có thể muốn một cái ít nhất là hàng chục micro giây.

Ưu điểm chính của phương pháp này là bạn có thể bỏ qua các ổ cắm và vẫn chỉ cần thêm 2 chân cắm thêm cho số lượng thẻ rất lớn (bị giới hạn bởi lỗi thời gian tích lũy do các biến thể trong các khối trễ khi bạn đi xa hơn và đi xuống chuỗi .

sơ đồ

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


1
Thế còn việc sử dụng đèn LED và máy dò để chủ nhân bảo một bảng sẽ nhấp nháy và sau đó xem bảng nào nhận được đèn flash thì bảng đó sẽ nhấp nháy và cứ thế?
Zachary Russell Heineman

@ZacharyRussellHeineman Bạn cũng có thể làm điều đó, nhưng nếu bạn có kết nối điện thì bạn cũng có thể chạy một dòng thu thập HOẶC phổ biến cho tất cả các thẻ trở lại bản gốc để chúng có thể phản hồi, cộng với tín hiệu duy nhất từ ​​chủ đến từng ổ cắm để chủ có thể gọi từng thẻ riêng để chú ý.
DKNguyen

Tương tự, bạn cũng có thể chơi một trò chơi điện thoại quang thay vì trò chơi điện trong đó mỗi thẻ nhấp nháy một thẻ liền kề, nhưng bạn sẽ chỉ sử dụng đèn LED và máy dò nếu đây là một ứng dụng trong đó các bảng được tách rời hoặc tách rời các mô-đun (như pucks tại một nhà hàng để cho bạn biết khi nào bàn của bạn có sẵn)
DKNguyen

@ZacharyRussellHeineman Tôi đã suy nghĩ tương tự khi bạn đề cập đến đèn LED + phototransistors. Cũng có thể đáng để xem xét các cảm biến chuyển đổi hiệu ứng hội trường, nếu bạn có thể tìm cách gắn nam châm trên PCB của mình.
Caleb Reister
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.