Viết tiếp đi Hải Bắc, bài viết của bạn rất có ích đấy.
Thông báo
Collapse
No announcement yet.
Mình muốn hỏi về việc dùng Matlab trong giao tiếp VDK với máy tính!
Collapse
X
-
Chương trình giao tiếp trên PC với RS232 dùng Matlab
.
Cảm ơn bạn đã động viên.
Bài viết sau mình viết tại picvietnam.com ở luồng sau:
http://picvietnam.com/forum/showthre...=6568#post6568
Chào tất cả mọi người,
Hôm qua vừa thi xong được một môn, làm bài cũng gọi là tạm tạm không biết được mấy điểm
. Sau nửa ngày hăng say lập trình
, mình xin gửi mọi người một chương trình giao tiếp RS232 bằng Matlab.
Giao diện của nó như sau:

Cách dùng:
1/ Chọn tham số cho Rs232 rùi ấn nút Connect để bắt đầu kết nối với RS232 nhé.
2/ Nhập dữ liệu vào ô TX rùi nhấn nút Send để gửi dữ liệu.
3/ Để thay đổi tham số (tốc độ, ..) cho RS232 thì phải nhấn Disconnect trước rùi chỉnh tham số nhé. Sau đó quay lại bước 1.
Các bạn chú ý, đây là chương trình mình viết dưới dạng mở, tức là các bạn có thể thêm code vào các hàm để phục vụ mục đích của mình. Đó chính là các hàm ngắt nhận, ngắt gửi,...
BytesAvailableFcnCount là số byte nhận được trong bộ đệm nhận trước khi xảy ra ngắt nhận.
Các hàm đó là:- function ByteAvailable_Callback(obj, event)
- function OutputEmpty_Callback(obj, event)
- function Error_Callback (obj, event)
- function PinStatus_Callback(obj, event)
- function Timer_Callback (obj,event)
- function BreakInterrupt_Callback(obj, event)
Chương trình này dùng GUI nên để biết thêm chi tiết về cách lập trình và chạy chuơng trình mời các bạn vào luồng Lập trình GUI trên Matlab ở www.dientuvietnam.net nhé:
http://dientuvietnam.net/forums/showthread.php?t=594
Trong chương trình, bạn có thể dùng chức năng About để xem hướng dẫn (User Manual), mình mới chỉ viết bằng tiếng Anh thôi.
Chương trình mình đã test khi nối tắt 2 chân 2 và 3 của RS232 lại với nhau. Còn với Vi điều khiển, .. mong các bạn test nhé.
Chúc các bạn thành công.Attached FilesLast edited by ngohaibac; 26-12-2006, 08:49.Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
haibac cho mình hỏi tí: trong quá trình truyền nhận bạn có gặp lỗi timeout hay không? Lỗi này mình thường gặp khi nhận dữ liệu, khi xảy ra lỗi thì sẽ không nhận được dữ liệu (dữ liệu = ''), mình vẫn chưa khắc phục được lỗi này.
Chào thân ái!Tư vấn, thiết kế hệ thống SCADA dùng WinCC, Citect...
Nhận giả lập khóa cứng (dongle), cung cấp license Citect, Rockwell, Siemens...
Liên hệ: servocontrol(at)gmail
Comment
-
Chào các bạn.
Tất nhiên là phải có Timeout rùi, trong ứng dụng của mình có tham số thiết lập timeout cho việc truyền và nhận dữ liệu đó. Theo mặc định nó = 10s.
Khi có Timeout nó sẽ gọi hàm ngắt sau:
Bạn thấy rằng hàm ngắt chỉ có tham số là obj (đối tượng Serial) và event (sự kiện) thì làm sao mà tương tác với GUI được??Code:function Timer_Callback (obj,event)
Để làm được điều này thì bạn phải thông qua một file mà mình đã thiết lập data.mat. Do đó trong hàm ngắt cần có 2 lệnh:
Các bạn chú ý nhé nếu không là không tương tác được với GUI đâu. Ngoài ra bạn có thể lập trình thêm cho nó có chức năng vẽ đồ thị thời gian thực chẳng hạn, dữ liệu nhận về sau khi tính toán thì hiển thị luôn lên đồ thị.Code:load data %Lấy các biến đã lưu trong data.mat % Làm gì thì làm ở đây, hiển thị thì hiển thị :D. save data % Ghi dữ liệu mới của các biến thay đổi vào data.mat
Máy mình chậm nên chắc chẳng có thời gian thực gì cả
.Các bạn có câu hỏi gì thì xin cứ trình bày mình sẽ trả lời. Còn giờ đi học thư viện đây
. Chăm không??
Chúc các bạn thành công.Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
Chào các bạn.
Đây là một các nữa để chia sẻ dữ liệu giữa các hàm Callback.
Để lưu dữ liệu nằm trong biến X chúng ta set một trường trong cấu trúc handles = X và sau đó lưu trữ cấu trúc đó bằng hàm guidata:
Từ đó bạn có thể lấy dữ liệu này từ trong các hàm Callback khác bằng lệnh:Code:handles.current_data = X; guidata(hObject,handles)
Chúc các bạn thành công.Code:X = handles.current_data;
Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
RS232 Communication V2.0
Chào các bạn.
Mình đã sửa lại một tí để fix một số lỗi trong quá trình trao đổi dữ liệu giữa các hàm Callback bằng cách sử dụng cấu trúc handles, trao đổi giữa hàm ngắt của Serial Object bằng biến toàn cục global hand.
Bây giờ các hàm sẽ không phải trao đổi dữ liệu qua data.mat nữa, tránh được lỗi khi save và load nhiều thì file này bị hỏng.
Mình không upload được file lên site này, các bạn sang PVN down nhé:
http://www.picvietnam.com/forum//showthread.php?t=752
Chúc các bạn thành công.Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
Nguyên văn bởi ngohaibac Xem bài viếtMình chưa làm giao tiếp giữa vi điều khiển với máy tính thông qua Matlab qua COM và LPT nhưng mình nghĩ rằng nếu mà giao tiếp ngon lành mà không cần card mở rộng thì thật là hay. Mình đã từng search về vấn đề này nhưng chưa tìm hiểu cụ thể và mình biết là Matlab có khả năng này.
Vấn đề này rất hay và thiết thực bởi vì dùng công cụ Matlab để xử lý số liệu thì còn gì bằng. Có thời gian mình sẽ nghiên cứu về vấn đề này và viết bài trao đổi cùng mọi người. Anh Dương Minh Tấn làm về giao tiếp này nhưng chỉ là mô phỏng thôi chứ chưa làm giao tiếp ra bên ngoài. Anh cũng vào trao đổi luôn nhé
.
Vấn đề này thật sự hay với dân điều khiển tự động của bọn mình. Chúng ta cùng trao đổi vấn đề này nhé. Bạn nào đã làm rùi, đã biết rùi thì hãy hướng dẫn cụ thể cho mọi người nhé.
Chúc các bạn thành công.
Well, từ ngày tốt nghiệp ĐH BK đến giờ mình mới quay lại Forum này. Mình trước có làm về giao tiếp giữa Matlab và VDK qua cổng COM. Mình khá vất vả cho đồ án đó nhưng về sau mình đã thành công. Đợt đó mình làm mmoo phỏng cái tay máy 3D = VRML sau đó ĐK = chip VDK bên ngoài. Đồ án vẫn còn lưu trên VP bộ môn ĐKTD ĐH Bách khoa HN.
Comment
-
handles.current_data = X;
guidata(hObject,handles)
Đây là cấu trúc cho phép chuyển quyền điều khiển lên thành phần của handles. Cấu trúc này cho phép tạo linh giữa các calback. Thực ra tạo giao tiếp trong Matlab còn đơn giản hơn cả trong VB có điều ít người dùng.http://techpal.vn
Chia sẻ công nghệ, cùng thành công
Comment
-
Matlab có nối thẳng tới VDK đâu mà bạn hỏi nó hỗ trợ VDK nào ? Matlab là phần mềm, còn VDK là phần cứng, vậy 2 thằng này nối với nhau kiểu gì ?Nguyên văn bởi qkhanh Xem bài viếtcác bác cho em hỏi hiện nay matlab đã hỗ trợ những loại VDk nào rồi .Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
tất nhiên là em hỏi vậy chắc bác phải hiểu chứ . matlab hỗ trợ rất mạnh các vdk thông qua các card . việc lập trình vdk trên matlab là một vấn đề rất hot hiện nay . vấn đề của em là chưa có cái nhìn tổng quan về vấn đề này rất mong các bác chỉ giáoNguyên văn bởi ngohaibac Xem bài viếtMatlab có nối thẳng tới VDK đâu mà bạn hỏi nó hỗ trợ VDK nào ? Matlab là phần mềm, còn VDK là phần cứng, vậy 2 thằng này nối với nhau kiểu gì ?
Comment
-
Hiện tại em đang làm đềi tài tốt nghiệp về hiện thị tín hiệu từ cảm biến lên textbox trong vi điều khiển. Sơ đồ phần cứng của em là :cảm biến nhiệt độ→adc0804→vdk 89s52→max232→PC.
Em muốn nhờ các anh có thể giúp em viết đoạn code hiển thỉ giá trị trên ô textbox thông qua sự kiện callback từ việc đưa con trỏ chuột vào ô textbox cần hiển thị. Em xin chân thành cảm ơn các anh (chị) rất nhiều!
Comment
Bài viết mới nhất
Collapse
-
bởi afrendlyCảm ơn bạn. Mình hỏi để thợ có thể tham khảo thôi chứ không đủ kiển thức để sửa, mà cũng không có đồ nghề, mua đồ nghề quá tiền máy. Gọi nhiều lần mà thợ hẹn mãi chưa có tới ấy bạn. Mình muốn sửa được chứ bỏ thì uống, nhưng sợ là được mỗi người thợ mà lại không sửa nổi....
-
Channel: Điện tử gia dụng
Hôm qua, 00:34 -
-
bởi mèomướpDạ nó bị tắc ẩm hoặc rò thiếu gas hoặc lốc yếu hoặc van tiết lưu có vấn đề hoặc tất cả những nguyên nhân trên ạ. Chú ko chuyên về mảng này thì bán đi, giành thời gian trồng rau sạch đem ra chợ bán lấy tiền mua tủ mới ạ. Còn...
-
Channel: Điện tử gia dụng
10-05-2026, 17:01 -
-
bởi afrendlyXin chào mọi người. Mình lại có vấn đề về đồ điện cần nhờ mọi người hỗ trợ giúp. Mình có tủ lạnh Sharp dùng cũng lâu rồi. Trước có bị kém lạnh, không đông đá thì có thợ họ mang về, sục đường ga gì đó hết 900k và đã dùng...
-
Channel: Điện tử gia dụng
10-05-2026, 16:53 -
-
bởi dinhthuong92Đấy, cái tôi thắc mắc là chỗ màu hồng ấy bạn, để áp vào cao chứ không bị sụt gần bằng áp pin thì rất cần cuộc cảm để làm điều đó. Tuy nhiên, trong công thức bác thớt dẫn không thấy mặt L, và một vài mạch MPPT tôi đã kiểm...
-
Channel: Nguồn!
09-05-2026, 10:01 -
-
bởi mèomướpDạ mạch sạc là 1 cục nguồn, nó sẽ điều chỉnh công suất đầu ra để có tổng trở bằng nội trở của pin ạ. Và cái cách nó chỉnh công suất đầu ra sẽ là dạng buck, boot. Đều cần đến cuộn cảm ạ. Tất nhiên chú thích thì có thể dùng dạng tuyến tính transistor để bù trừ nhưng mà nó đốt năng lượng vô ích ạ...
-
Channel: Nguồn!
08-05-2026, 16:26 -
-
bởi dinhthuong92Tng trở R của tải (gồm pin và mạch sạc) trong công thức đó rõ ràng khống có L xuất hiện. Nếu tính các dây dẫn thì rất nhỏ, bỏ qua. Vì nội trở pin là rất nhỏ, có thể nói luôn lớn hơn nội trở solar, nên mạch MPPT sẽ hầu như luôn tính...
-
Channel: Nguồn!
08-05-2026, 11:00 -
-
bởi dinhthuong92Chào bác. Đã là công thức phải tổng quát chứ, nó phải thể hiện cả quá trình, rối thì quá độ hay xác lập tính sau vì tùy điều kiện. Cũng như công thức tính diện tích chả hạn, phải là tích phân....
-
Channel: Nguồn!
08-05-2026, 10:49 -

Comment