PDA

View Full Version : RS232 dùng matlab và proteus!!


dvnccbmacbt
25-06-2008, 11:39 PM
Em đang gặp rắc rối khi truyền dữ liệu từ PIC đến PC dùng matlab.
Từ máy tính tới PIC dùng matlab thi đã mô phỏng thành công rồi.
Khi tạo cổng com ảo kiểu loopback thì matlab truyền và nhận dữ liệu đều tốt. Nhưng khi tạo 2 cổng ảo (COM1 nối với matlab và COM2 nối với proteus) thi không nhận dữ liệu từ PIC được. Chỉ có PIC nhận từ máy tính được thôi!
Có bác nào đã từng mô phỏng bằng Proteus việc truyền dữ liệu từ PIC6f877a đến máy tính dùng matlab chưa ạ?
Mong các bác giúp đỡ?
Em cảm ơn nhiều!

namqn
26-06-2008, 01:13 AM
Em đang gặp rắc rối khi truyền dữ liệu từ PIC đến PC dùng matlab.
Từ máy tính tới PIC dùng matlab thi đã mô phỏng thành công rồi.
Khi tạo cổng com ảo kiểu loopback thì matlab truyền và nhận dữ liệu đều tốt. Nhưng khi tạo 2 cổng ảo (COM1 nối với matlab và COM2 nối với proteus) thi không nhận dữ liệu từ PIC được. Chỉ có PIC nhận từ máy tính được thôi!
Có bác nào đã từng mô phỏng bằng Proteus việc truyền dữ liệu từ PIC6f877a đến máy tính dùng matlab chưa ạ?
Mong các bác giúp đỡ?
Em cảm ơn nhiều!
Tại sao lại có 2 cổng COM ảo? COM1 và COM2 ảo đó có nối với nhau không? Nếu có thì nối ra sao?

Truyền từ PIC đến 1 cổng COM ảo, rồi nhận dữ liệu vào MATLAB cũng qua cổng COM ảo đó thì mới hợp lý chứ.

Thân,

dvnccbmacbt
26-06-2008, 09:40 AM
Em xem luông này thì thấy như vậy:http://dientuvietnam.net/forums/showthread.php?t=13005

http://lh4.ggpht.com/phamminhtuan.04/SAwWSrPlp5I/AAAAAAAAAxw/LPiWg2HAywo/ScreenShot025.jpg?imgmax=512
http://lh3.ggpht.com/phamminhtuan.04/SAwWTbPlp6I/AAAAAAAAAx4/I7--tffYIVo/ScreenShot034.jpg?imgmax=640

Tức là cồng COM4 nối với Proteus, còn COM5 thì nối với Visual. Em hiểu như thế đúng không ạ ?

Ở matlab em viết là :

s=serial('com1')

hàm ngắt ở matlab thì em viết thế này

function ngat_Callback(obj,event)
data=fscanf(obj)


Còn ở Proteus thì em chọn thế này:
http://img410.imageshack.us/img410/8673/01jun260822dy6.gif

khi giao tiếp thì matlab phát kí tự thì PIC nhận được,nhưng ngược lại thì không được.
đây là sơ đồ mạch của em:
http://img158.imageshack.us/img158/2285/02jun260835ol0.gif

Mong mọi người giúp đỡ.
Bên luồng "Thiết kế bộ PID cho động cơ DC" em thấy có phần thiết kế và vẽ đồ thị dùng matlab. Các anh cho em xin chương trinh matlab đó đựoc không ạ?
Em cảm ơn nhiều.

phamminhtuan
04-07-2008, 01:41 AM
Theo mô tả của bạn thì bạn tạo ra 2 cổng ảo là COM1 và COM2, vậy là trên máy bạn không có cổng COM vật lý nào phải không ??

Khi bạn tạo cặp cổng COM ảo thì 2 cổng này được nối "ảo" với nhau, do đó bạn có thể gởi dữ liệu ra cổng COM này và nhần về từ cổng COM kia, thí nghiệm của bạn đã thành công khi gởi dữ liệu từ MATLAB xuống PIC, vậy vấn đề về baudrate.., cài đặt cho truyền nối tiếp chắc là không có vấn đề gì, vấn đề ở đây là chương trình trong MATLAB


s = serial('COM1','BaudRate',9600);
fopen(s)
s.BytesAvailableFcnMode = 'terminator';
s.BytesAvailableFcn = @mycallback;; %callback như thế này
fprintf(s,'*IDN?');
link tham khảo (http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/serial.html&http://www.google.com/search?q=matlab+serial+port&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a)

dvnccbmacbt
08-07-2008, 11:23 AM
Cảm ơn gợi ý của bạn, Chương trinh matlab thì chắc chắn là không sai vì mình có lam thử trên desktop. Thử đấu chéo chận 2 và chân 3 cong Com và chương trinh matlab đã truyền nhận dữ liệu rất tốt. Trên laptop cũng đã thử mô phỏng kiểu loopback và chương trình vẫn chạy tốt. Nhưng khi mình xài laptop, mo phỏng bằng proteus giao tiêp với PIC6f877a thì không được. Chỉ truyền dữ liệu từ matlab xuong được thôi. Còn nhận từ PIC thi chịu. Mong mọi người giúp đỡ.

andyhug
14-09-2008, 02:03 AM
Mình đã thử truyền từ Pic lên, mô phỏng = Proteus7.2SP2, mạch bỏ qua ComPim thấy truyền được! Xin hỏi làm thế nào để xuống dòng, về đầu dòng? Tất cả mạch và chương trình CCSC đây: Thanks!