Cách cấp nguồn cho một LED tương ứng với một phép đo Encoder với USB-6002

KS Quỳnh Anh
KS Quỳnh Anh

Tổng quan

Bạn thường dựa trên các phép đo để phát hiện và đưa ra các quyết định chính. NI cung cấp một số lượng lớn các sản phẩm thu thập dữ liệu, bao gồm dòng DAQ giá thành thấp cho các ứng dụng cơ bản như ghi dữ liệu đơn giản, các phép đo di dộng, và các phòng thí nghiệm ở các trường đại học. Lựa chọn đúng phần cứng theo yêu cầu cho các ứng dụng và ngân sách của bạn.

Ưu điểm của các nguồn tài nguyên miễn phí của NI giúp bạn phát triển các phép đo nhanh hơn. Trong phần hướng dẫn này, thay đổi một ví dụ trong hàng trăm các ví dụ đo lường được bao gồm với thiết bị của bạn để học cách xây dựng một ứng dụng cơ bản để thu thập một phép đo encoder và cấp nguồn cho một trong ba LED tương ứng với sự đếm. Đặc trưng của các sản phẩm NI DAQ giá thành thấp là sự đa dạng của các thiết bị cho các ứng dụng cơ bản loại này. Với hướng dẫn này, chúng ta làm việc với NI USB-6002, tuy nhiên, bạn có thể áp dụng code này với bất kỳ thiết bị NI DAQ có một bộ đếm cơ bản và ngõ ra digital.

Các thiết bị này hỗ trợ các phần mềm ANSI C, Visual C++, C#.NET, Visual Basic.NET, NI Labview, NI LabWindowsTM/CVI, và NI Measurement Studio cũng như các phần mềm cấu hình. Chúng tôi sử dụng C#.NET cho hướng dẫn này, nhưng bạn có thể thực hiện hướng dẫn này trong các môi trường phát triển ứng dụng hoặc các ngôn ngữ lập trình khác.

Bạn cần những gì

Phần cứng

  1. Thiết bị NI DAQ đa năng (hướng dẫn này sử dụng một USB-6002)
  2. Encoder
  3. 3 LEDs
  4. Dây dẫn

Phần mềm

  1. Trình biên dịch C#.NET (hướng dẫn này sử dụng Microsoft Visual Studio)
  2. Phiên bản driver NI-DAQmx hỗ trợ thiết bị của bạn (USB-6002 yêu cầu NI-DAQmx 9.9 hoặc sau đó)
  3. Hướng dẫn phần cứng

Thiết lập thiết bị

Trước tiên, đảm bảo rằng bạn đã cài đặt phiên bản driver NI-DAQmx. Nếu bạn đang sử dụng một thiết bị USB DAQ, một LED màu xanh lá hoặc xanh phải sáng khi thiết bị được xác nhận bởi host PC của bạn. Mở NI Measurement & Automation Explorer và xác nhận rằng thiết bị xuất hiện dưới Devices and Interfaces. Chọn nút nhấn Self-Test và xác nhận rằng thiết bị đạt.

Thiet-lap-he-thong-canh-bao-voi-USB-6001-1

Kết nối Encoder

Trong hướng dẫn này, chúng ta sử dụng encoder để đếm các cạnh. Kết nối các dây tín hiệu với các chân ngõ ra của encoder. Kết nối như sau:

  1. Nối đất với đất
  2. Nối kênh A với P2.0, để truy cập bộ đếm
  3. Nối 5VDC với nguồn cung cấp 5V trên thiết bị
  4. Không nối các chân index và kênh B. Chúng được sử dụng khi phát hiện vị trí của encoder, nằm ngoài chức năng của bộ đếm USB-6002.

 Kết nối các LED

Trên một LED chuẩn, có hai dây dẫn với chiều dài khác nhau. Dây dài hơn là cực dương và ngắn hơn là cực âm. Chúng ta cấu hình ngõ ra digital như một ngõ ra digital điều khiển tích cực để điều khiển một LED. Kết nối các tín hiệu theo sơ đồ bên dưới. Chúng ta không sử dụng một điện trở trong hướng dẫn này, tuy nhiên, nhiều LED có thể bị hư hỏng nếu một điện trở không được sử dụng để hạn dòng cho LED. Sử dụng thông số kỹ thuật của LED để tính toán giá trị điện trở.

  1. Kết nối dây dương của mỗi LED với DO0, DO1 và DO2.
  2. Kết nối dây âm với GND.

Thiet-lap-he-thong-canh-bao-voi-USB-6001-3

Hướng dẫn phần mềm

Sơ đồ dòng chảy chương trình của bạn và bắt đầu với một ví dụ

Đối với ứng dụng của chúng ta, chúng ta cần cấp nguồn một LED tùy thuộc vào số lượng cạnh đếm được. Để làm điều này, chúng ta cần thiết lập một chương trình để tạo và cấu hình một ngõ vào counter và kênh ngõ ra digital, thu thập số lượng cạnh đếm được và cấp nguồn LED tương ứng với khoảng đếm. Sau khi chúng ta đã thu thập tất cả những gì chúng ta cần, chúng ta có thể xóa các tác vụ và rời khỏi.

Thiet-lap-he-thong-canh-bao-voi-USB-6001-4

Thay vì xây dựng hoàn toàn ứng dụng này, chúng ta sẽ sử dụng một trong các chương trình ví dụ được bao gồm với thiết bị DAQ. Bạn có thể tìm vị trí của các chương trình ví dụ này cho OS cụ thể của bạn bằng cách vào ni.com/info và nhập vào daqmxexp. Chúng ta làm việc với một ví dụ C#.NET. Cụ thể, chúng ta sẽ điều chỉnh một ví dụ đo điện áp được gọi Count Digital Events.

Copy chương trình ví dụ vào thư mục riêng của bạn

Copy chương trình ví dụ từ vị trí ban đầu của nó vào một thư mục riêng để điều chỉnh với chương trình của bạn, không ghi đè lên ví dụ ban đầu.

Mở chương trình

Điều đầu tiên bạn nên ghi chú trong chương trình của bạn các hướng dẫn mở rộng trong code, cung cấp các hướng dẫn để chạy chương trình, các kết nối I/O của bạn, và nơi các chức năng hiện có đang được thực thi trong code của bạn. Ví dụ đếm các sự kiện digital và hiển thị sự đếm này trong giao diện người dùng.

Thêm ngõ ra digital vào code của bạn và điều chỉnh tác vụ counter

  1. Khai báo một tác vụ ngõ ra digital và sửa tên tác vụ counter của bạn

Một tác vụ là một sự thu thập của các kênh ảo, thông tin định thời và trigger, và các đặc tính khác liên quan đến sự thu thập hoặc tạo. Trong NI-DAQmx, bạn phải có một tác vụ duy nhất chuyên biệt với các chức năng khác như một ngõ vào analog và ngõ ra digital. Trong code, bạn cần khai báo các tác vụ này với tên duy nhất để chúng ta có thể tham chiếu chúng thông qua code. Để đặt lại tên tác vụ ngõ vào analog của bạn, chúng ta có thể sử dụng Find and Replace để tìm tất cả các tham chiếu đến tác vụ của bạn và thay thế tham chiếu với đinh danh duy nhất.

private Task digitalTask; private CICountEdgesActiveEdge edgeType; private System.Windows.Forms.GroupBox edgeGroupBox; private CICountEdgesCountDirection countDirection; private CounterReader myCounterReader; private DigitalSingleChannelWriter digitalWriter; private System.Windows.Forms.ComboBox counterComboBox; private uint reading; private bool[] lessThan300Data = {false, false, true}; private bool[] between300And600Data = {false, true, false}; private bool[] moreThan600Data = {true, false, false}

  1. Cấu hình ngõ vào counter và các tác vụ ngõ ra digital

Để tương tác với thiết bị, trước tiên bạn phải tạo các tác vụ và dự trữ các kênh bạn cần để đo dữ liệu hoặc ghi dữ liệu. Cho phép các giá trị mặc định cho tác vụ ngõ vào counter bằng việc loại bỏ dòng myTask.CIChannels.All.CountEdgesTerminal = “/Dev2/PFI0“;. Đối với tác vụ ngõ ra digital, thêm code sau để tạo tác vụ và tham chiếu thiết bị vật lý và kênh:

try { counterTask = new Task(); digitalTask = new Task(); switch (countDirectionComboBox.SelectedItem.ToString()) { case “Count Up”: countDirection = CICountEdgesCountDirection.Up; break; case “Count Down”: countDirection = CICountEdgesCountDirection.Down; break; case “Externally Controlled”: countDirection = CICountEdgesCountDirection.ExternallyControlled; break; } counterTask.CIChannels.CreateCountEdgesChannel (counterComboBox.Text, “”, edgeType, Convert.ToInt64(initialCountTextBox.Text), countDirection); string deviceName = counterComboBox.Text.Split(‘/’)[0]; digitalTask.DOChannels.CreateChannel(deviceName + “/line0:2”, “”, ChannelLineGrouping.OneChannelForAllLines); myCounterReader = new CounterReader(counterTask.Stream); digitalWriter = new DigitalSingleChannelWriter(digitalTask.Stream); counterTask.Start(); digitalTask.Start(); loopTimer.Interval = 100; loopTimer.Enabled = true; } catch(DaqException exception) { loopTimer.Enabled = false; MessageBox.Show(exception.Message); counterTask.Dispose(); return; } startButton.Enabled=false; stopButton.Enabled=true; } private void stopButton_Click(object sender, System.EventArgs e) { loopTimer.Enabled = false; startButton.Enabled = true; stopButton.Enabled = false; counterTask.Stop(); counterTask.Dispose(); digitalTask.Stop(); digitalTask.Dispose(); }

  1. Cấu hình một cấu trúc Case để đọc và kiểm tra số lượng cạnh đếm được với mỗi lần đọc.

Trong logic sau, chúng ra cấp nguồn một LED màu vàng khi giá trị đọc vượt quá 300 và một LED màu đỏ khi giá trị đọc vượt quá 600. Ngoài ra, LED màu xanh lá được cấp nguồn.

private void loopTimer_Tick(object sender, System.EventArgs e) { try { reading = myCounterReader.ReadSingleSampleUInt32(); if(reading < 300) { digitalWriter.WriteSingleSampleMultiLine(true, lessThan300Data); } else if (reading < 600) 5/6 www.ni.com 3. else if (reading < 600) { digitalWriter.WriteSingleSampleMultiLine(true, between300And600Data); } else { digitalWriter.WriteSingleSampleMultiLine(true, moreThan600Data); } countTextBox.Text = Convert.ToString(reading); } catch (DaqException exception) { MessageBox.Show(exception.Message); counterTask.Dispose(); digitalTask.Dispose(); loopTimer.Enabled = false; startButton.Enabled = true; stopButton.Enabled = false; return; } }

Chạy chương trình của bạn

Để chạy chương trình, chọn mũi tên chạy màu xanh được dán nhãn Start. Cấu hình bộ đếm bạn đang sử dụng trong giao diện người dùng và chọn Start. Chú ý LED màu xanh lá sáng lên khi chương trình được bắt đầu. Quay encoder và điều chỉnh sự đếm. Chú ý rằng khi sự đếm vượt quá 300 LED màu vàng sáng. Khi nó vượt quá 600 LED màu đỏ sáng. Bởi vì 600x chỉ có khả năng đếm cạnh, không thực hiện phép đo encoder, sự đếm tăng khi quay encoder.

Dịch từ NI Tutorial “How to Power an LED That Corresponds to an Encoder Measurement” – ni.com