10-28-2014 06:00 AM
Chào mọi người! Em có thắc mắc mong mọi người giúp đỡ trong Labview.
1. Tình hình là em tạo máy phát xung khoảng 100us(micro giây), tạo code để đọc xung này trên myRIO nhưng khi cho xung vào thì có lúc nó đếm có lúc không đếm, em không biết myRIO xử lí chậm hay do code em sai. Nếu sai mong mọi người chỉ bảo cho em ạ !
2. Cách tạo xung chỉ đếm cạnh lên khi có xung vào cỡ 100us trên myRIO.
Em cảm ơn mọi người !
10-28-2014 10:52 AM
Chào mrteo167,
Mình xin phép được góp ý như sau.
1. Mình chưa thử code của bạn với NI myRIO nhưng logic của bạn cho thấy là bạn đang đếm cạnh xuống chứ không phải đếm cạnh lên. Nhưng mà không sao. Trong trường hợp này đếm cạnh lên cũng tương tự như đếm cạnh xuống.
Bạn có thể thử dùng hàm "Get Date/Time In Seconds" để tính xem thử tốc độ vòng lặp này chạy trên NI myRIO là bao nhiêu? (Bằng cách dùng hàm này ở trong 2 chu kỳ lặp liên tiếp n và n+1. Sau đó lấy T(n+1) - T(n) để tính tốc độ vòng lặp).
Bạn xem ví dụ đính kèm.
Bạn cần đếm xung 100 us (10kHz) thì tốc độ vòng lặp của bạn ít nhất phải là 20kHz.
Đối với những bài toán đếm xung tốc độ cao như thế này, thông thường mình sẽ lập trình trên FPGA vì FPGA sẽ cho mình tốc độ cao hơn và độ tin tưởng tốt hơn so với processor.
2. Bạn có thể diễn đạt ý của bạn rõ hơn không? Bạn muốn tạo xung hay bạn muốn đếm xung? Có phải là bạn muốn đếm xung theo yêu cầu: chỉ xung nào có độ rộng (khoảng cách từ cạnh lên đến cạnh xuống) lớn hơn 100us mới đếm. Còn xung nào hẹp hơn 100us thì không được đếm. Ý của bạn có đúng vậy không?
10-28-2014 08:27 PM
sao không dùng khối encoder
10-28-2014 08:48 PM
Chào bạn vinh155,
Đúng là khối encoder có thể đọc xung quadrature encoder lên đến 100kHz. Tuy nhiên, hôm trước mình có thử. Nó yêu cầu phải có cả 2 xung A và B mới đếm. Nếu chỉ đưa vào xung A hoặc xung B thì nó không đếm. Mình vẫn chưa tìm được cách nào khắc phục được việc này. Vì thế, mình lập trình lại trên FPGA.
10-28-2014 10:15 PM
hôm trước mình đã dùng được khối encoder để đếm xung. mình chỉ dùng 1 pha của encoder đưa vào chân C\DIO2 của khối enc trong myRIO. trong khối enc mình chọn vào mục step ở bên dưới là đếm ok lun
10-28-2014 11:44 PM
Chào bạn vinh155,
Cám ơn bạn rất nhiều. Đúng như bạn nói, khi dùng hàm encoder và đặt ở chế độ "Step and direction signals" thì mình có thể đọc được. Chú ý rằng, xung phải được nối vào chân dành cho Step signal.
Ví dụ, nếu dùng Encoder 0 trên connector C, thì tín hiệu Step nằm ở chân DIO2. Khi đó, xung của mình phải nối vào DIO2 mới đọc được.
Xem hình bên dưới để rõ hơn.
Cám ơn bạn vinh155 nhiều.
10-29-2014 05:01 AM
Tuyệt vời! Đây là thứ em cần.
Tiện đây cho em hỏi là còn tín hiệu kiểu analog thì sao ạ. Vì encoder chỉ đọc tín hiệu digital.
Cảm ơn 2 anh vinh155 và qpham nhiều.
10-29-2014 05:54 AM
mình đang tìm cách sử dụng khối ENC kết hợp với PID trong myRIO để điều khiển tốc độ động cơ DC 24v theo ý muốn, có thể đặt yêu cầu theo điện áp ra hoặc theo số vòng quay.Tốc độ của động cơ này thay đổi nhanh chậm tùy theo tín hiệu điện áp 0-5v xuất ra qua ngõ ra analog sau đó đưa qua 1 cái bo mạch công suất để điều khiển động cơ này. có bạn nào biết thì hỗ trợ với
11-06-2014 08:41 AM
em đang tìm hiểu pid ah anh ! hien tai em co the tìm được các thong số kp ki kp của 1 động cơ băng mô phỏng nhưng khi minh thay đổi điện áp áp đầu vào thì như vậy kp ki kd sẽ biến đổi ? em đang tìm hiểu đẻ có thể làm được việc đó? anh có tìm hiểu vấn đề này không ah? nếu có anh có thể cho em tham gia hô trợ anh được không ?" thank anh
11-06-2014 09:52 AM
Chào bạn Vinh155,
mình nghĩ là bạn có thể dùng khối ENC để đọc về giá trị vận tốc động cơ về, sau đó lấy giá trị vận tốc đọc được đem đi điều khiển với khối PID, kết quả sau khối PID thì bạn dùng khối analog output xuất điện áp từ 0-5V để điều khiển động cơ.