Kết nối nút ấn với pin điều khiển


8

Vấn đề này đã nhiều thập kỷ nhưng tôi không thấy câu trả lời trực tiếp cho nó trên trang web này. Tôi muốn như sau:

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

Mạch này chỉ cho phép kiểm tra trạng thái của nút từ bên trong bộ điều khiển vi mô. Không có gì lạ mắt. Những câu hỏi của tôi:

  1. Có điều gì tốt hơn thiết kế đơn giản này?
  2. Giá trị của điện trở 100 kilo ohms có đủ cho các thiết bị CMOS ngày nay của chúng tôi, như DSPIC30FXXXX và không phải là một ứng dụng năng lượng cao không?

2
1) Không thực sự, trừ khi bạn đang tìm kiếm phần cứng. 2) Có.
NickHalden

Câu trả lời:


6

Đầu tiên, rất nhiều bộ vi điều khiển và bộ điều khiển tín hiệu số sẽ có điện trở kéo lên bên trong. Đây là một ví dụ, một ATMega164 của Atmel.Cổng GPIO ATMega164p

Thông thường sẽ có một thanh ghi cho phép bật và tắt các pull pull bên trong. Do sự thay đổi trong quy trình chế tạo, những chiếc xe nâng nội bộ này có phạm vi rất rộng và không phải là lựa chọn tốt nếu bạn cần kiểm soát chặt chẽ đối với khả năng hiện tại trong các ứng dụng năng lượng cực thấp. Nếu giữ số lượng thành phần thấp là quan trọng, đây là một cách dễ dàng để làm điều đó. Sử dụng pull up nội bộ để gỡ lỗi phần cứng sẽ không phải là một ý tưởng hay, vì không thể dự đoán giá trị chính xác của chúng.

Giá trị 100 có đầy đủ hay không phụ thuộc. Nếu đó chỉ là một công tắc sẽ được người dùng lật theo định kỳ, thì 100 sẽ là một lựa chọn tốt để giảm thiểu tiêu thụ năng lượng. Đối với những thứ sẽ chuyển đổi nhanh hơn, chẳng hạn như bộ mã hóa quay, quá trình tôi sẽ trải qua làkΩkΩ

  1. Tìm dòng chìm tối đa trong bảng dữ liệu
  2. Tính toán giá trị kéo lên bằng Luật Ohm
  3. Chọn một điện trở có kích thước tiêu chuẩn lớn hơn một vài kích thước, tùy thuộc vào tốc độ thực sự cần thiết
  4. Kiểm tra và xem kích thước điện trở được chọn có cho thời gian tăng và giảm yêu cầu không
  5. Điều chỉnh phù hợp

R= =VTôi= =5V10mMột= =500Ω


Có phải bạn đang nói rằng vì điện dung dây / vết sẽ có mạch RC sẽ gây ra sự chậm trễ truyền tín hiệu đến uC và với R lớn hơn, độ trễ lan truyền này thực sự có thể gây ra đọc sai bộ mã hóa quay?
angelatlarge

Vâng, phản ứng ký sinh chỉ là một thực tế của cuộc sống cần phải được xử lý ngày càng nhiều khi tần số tăng.
Matt Young

Hấp dẫn! Mặc dù vậy, tôi bối rối: giả sử rằng điện dung paracitic nhỏ hơn 1 uF, với điện trở 100k Ohms và giả sử 0,1uF ký sinh C, chúng ta có được hằng số thời gian khoảng 23mS (đầu vào = 5V, đầu ra = 4,5V). Nói cách khác, trong mạch 5V, uC sẽ thấy 4,5V trên đầu vào trong một xung đi lên trong vòng chưa đầy 25ms. Để uC bỏ lỡ điều đó (theo giả định rằng nó không bỏ phiếu), bộ mã hóa sẽ tạo ra các xung ở tần số 40Hz hoặc hơn. Đó có phải là điều chúng ta nên lo lắng?
angelatlarge

kΩ

Đúng và đúng. Tôi đã nghĩ về bộ mã hóa quay thủ công.
angelatlarge

4

Bạn có thể nhận được đơn giản hơn thế.

Chỉ cần sử dụng một điện trở kéo lên / kéo xuống bên trong trong vi điều khiển của bạn.

100k là đủ, nhưng một số pullups bên trong có thể thấp hơn một chút trong một số MCU, ví dụ như trong AVR atmega8, nó là 30-80kOhm để thiết lập lại pull-up và 20-50kOhm cho tất cả các chân I / O khác.


Bạn không thể nói rằng 100k là đủ. Không có biên nhận chung, bạn phải tính giá trị theo MCU và thiết bị điều khiển pin ở phía bên kia.
Blup1980

1
Người đặt câu hỏi chỉ định một nút ấn. Tôi không thấy vấn đề với câu trả lời này.
mjh2007

1
  1. Có điều gì tốt hơn thiết kế đơn giản này?


    Tốt hơn không thể được trả lời mà không có tiêu chí cụ thể để đo lường, mà bạn chưa cung cấp. Trong hầu hết các trường hợp, cấu trúc liên kết bạn hiển thị là tốt. Hai biến thể có thể "tốt hơn" tùy theo tình huống:

    Nhiều bộ vi điều khiển có pullups nội bộ trên một số chân của chúng. Đây là có nghĩa cho chính xác loại tình huống này. Các điện trở sau đó là bên trong micro và bạn đặt một chút ở đâu đó để kích hoạt nó. Phần bên ngoài duy nhất cần thiết chỉ là nút nhấn.

    Một biến thể hữu ích khác cần ghi nhớ là dành cho các thiết kế công suất thấp trong đó nút có thể là một công tắc có thể đóng trong thời gian dài. Trong trường hợp đó, bạn muốn giảm thiểu dòng trung bình dài hạn thông qua điện trở pullup. Bạn làm cho nó lớn nhất có thể, nhưng có những giới hạn cho điều đó và những hạn chế cho việc làm cho nó quá lớn. Thay vào đó, bạn bật pullup chỉ một vài lần một lúc để đọc nút. Nếu bạn kiểm tra nút cứ sau 1 ms và pullup được bật trong 10 lần, thì dòng pullup trung bình sẽ giảm 100 lần. Với một điện trở bên ngoài, bạn sử dụng một pin khác để lái phía trên của pullup. Với một pullup nội bộ, bạn kích hoạt / vô hiệu hóa nó trong firmware khi cần thiết.

  2. Giá trị của điện trở 100 kilo ohms có đủ cho các thiết bị CMOS ngày nay của chúng tôi, như DSPIC30FXXXX và không phải là một ứng dụng năng lượng cao không?


    Tôi đã trả lời điều này ở độ dài ở đây .


0

Tốt hơn thiết kế đơn giản đó? Đúng. Ném một cái nắp vào nó và bạn có một công tắc gỡ lỗi phần cứng đơn giản.

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

Các tụ điện sẽ là một nắp gốm 0,1uf phổ biến. Điện trở sẽ là 10k. Trang web này có đầy đủ chi tiết về lý do tại sao. Nói tóm lại, một mạch gỡ lỗi ngăn vi điều khiển đăng ký sai nhiều lần nhấn khi bạn nhấn nút. Thiết lập Điện trở / Tụ làm mịn cơ chế nảy của nút để nó chuyển tiếp ổn định.


Mũ điện phân không thích bị rút ngắn. Tôi thường xuyên sử dụng 100nF hoạt động tốt cho các ứng dụng của mình.
jippie

1
@jippie biểu tượng là những gì hình ảnh đã có, nhưng gốm 100nf hoặc 0.1uf là những gì cần thiết.
Người qua đường

3
Đây không phải là một mạch thảo luận tốt. Đầu tiên, điều này chỉ công bố một phá vỡ, không phải là một thực hiện. Khi nhấn nút, nắp bị rút ngắn ngay lập tức. Thứ hai, hằng số thời gian 1 ms là quá ngắn để được sử dụng nhiều. Thứ ba, điều này chỉ nên được đưa vào một đầu vào kích hoạt Schmidt. Đầu vào bình thường không thích tín hiệu tăng chậm. Chỉ cần bỏ nắp và thực hiện gỡ lỗi trong phần sụn, điều mà bạn cần phải làm ngay cả với nắp.
Olin Lathrop

Có, về việc làm cho nắp bị rút ngắn ngay lập tức, nhưng bất kỳ lần sạc nào vì độ nảy đều được lọc thấp, loại bỏ mọi ảnh hưởng của độ nảy. Có lẽ chính xác hơn, ra mắt trên make là một cơ chế rất khác so với gỡ lỗi khi nghỉ. Một ms là quá nhanh mặc dù. Tôi không thích sử dụng mạch này vì bất kỳ lý do nào. Tuy nhiên, nếu bạn đang lái xe bị gián đoạn với mã pin đang được đề cập, việc gỡ lỗi trong phần sụn thường không phải là giải pháp tốt nhất. Chuyển sang DPST và thảo luận với flipflop SR là một phương pháp khá tốt cho trường hợp đó.
Scott Seidman

0

EDIT - bình luận tôi đưa ra dưới đây có nghĩa là để theo dõi những gì Olin đã nói sau đó về mạch điện với một tụ điện được cho là thêm gỡ lỗi. Tôi xin lỗi vì nó dường như xuất hiện sai chỗ - có lẽ ai đó có thể sửa lỗi này vì rõ ràng tôi quá mù quáng hoặc ngu ngốc khi thấy tôi nên làm thế nào !!

Tôi đồng ý với Olin - nó không cung cấp khả năng gỡ lỗi tốt. Tôi cũng sẽ nói thêm rằng việc rút ngắn tụ điện có thể gây ra dòng điện lớn có thể thiết lập lại bộ vi xử lý nếu bố trí PCB không thực sự tốt. Một số công tắc cần dòng điện ướt để hoạt động chính xác và đáng tin cậy và 100k có thể quá cao đối với một số công tắc (đặc biệt là công tắc màng).

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.