1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo thực hành giao tiếp điều khiển thiết bị ngoại vi tên bài thực hành điều khiển đóngmở cổng

16 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Điều Khiển Đóng/Mở Cổng
Tác giả Phan Thế Hoàng, Đinh Đức Hùng, Nguyễn Văn Đức Tuân
Trường học Trường Đại Học Kỹ Thuật
Chuyên ngành Điều Khiển Thiết Bị Ngoại Vi
Thể loại báo cáo thực hành
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 16
Dung lượng 2,06 MB

Nội dung

Khả năng sử dụng phần mềm mô phỏng, vẽ mạch - Proteus Vẽ sơ đồ nguyên lý của mạch trong Proteus.. Khả năng sử dụng phần mềm lập trình cho PIC - MikroC Một hình ảnh chụp màn hình Full

Trang 1

BÁO CÁO THỰC HÀNH

GIAO TIẾP ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI

Tên bài thực hành: Điều khiển đóng/mở cổng

Tên thành viên nhóm:

• Phan Thế Hoàng 21093641

• Đinh Đức Hùng 21107541

• Nguyễn Văn Đức Tuân 21069361

Ngày thực hiện: 17/01/2024

PHẦN I: Chuẩn đầu ra môn học -1: Trình bày được cấu tạo, nguyên lý hoạt động và

biết sử dụng các thành phần trong hệ thống, thiết bị điện tử

1.1 Mô tả tóm tắt nội dung bài thực hành

- Mô tả tóm tắt nội dung, yêu cầu và mục đích của bài thực hành

Quá trình đóng cổng: Nhấn BT1 trên bo mạch hoặc trên VS-C# để bắt đầu đóng → L1

sáng để báo cổng đang được đóng → VS-C# hiển thị “Đang đóng cổng” →nhấn SW1 để báo đã đóng xong →L1 tắt →VS-C# hiển thị “Đã đóng”

Quá trình mở cổng: Nhấn BT2 trên bo mạch hoặc trên VS-C# để bắt đầu mở →L2 sáng

để báo cổng đang được mở →VS-C# hiển thị “Đang mở cổng” →nhấn SW1 để báo đã

mở xong →L2 tắt →VS-C# hiển thị “Đã mở”

- Xác định, liệt kê các linh kiện, thiết bị cần sử dụng

o 02 SWITCH: 01 Switch (SW1) báo hành trình đã đóng cổng xong; 01 Switch

-1-

Trang 2

(SW2) báo hành trình đã mở cổng xong; o 02 LED: 01 Led (L1) báo trạng thái

cổng đang trong quá trình đóng; 01 Led (L2) báo trạng thái cổng đang trong quá trình mở;

o 02 BUTTON: 01 Button (BT1) để đóng cổng, 01 Button (BT2) để mở cổng o

01 PIC18F4550 o Cổng USB

1.2 Sơ đồ khối của bài thực hành -

Vẽ sơ đồ khối

- Giải thích chức năng, nhiệm vụ từng khối

+ Khối Program (chương trình): điều khiển hoạt động của các thành phần linh kiện + Khối RS232 (cổng USB): Giúp thiết bị điều khiển (PIC18F4550) giao tiếp với các thiết

bị ngoại vi

+ Khối Switch: thông báo quá trình đóng/mở cổng đã hoàn thành

+ Khối LED: thông báo quá trình đóng/mở cổng đang được thực hiện

+ Khối Button: dùng để đóng/mở cổng

-2-

Trang 3

PHẦN II: Chuẩn đầu ra môn học 2: Có khả sử dụng các phần mềm lập trình, mô

phỏng

2.1 Khả năng sử dụng phần mềm mô phỏng, vẽ mạch -

Proteus Vẽ sơ đồ nguyên lý của mạch trong Proteus

2.2 Khả năng sử dụng phần mềm lập trình cho PIC -

MikroC

Một hình ảnh chụp màn hình Full – có code trong phần mềm MikroC

-3-

Trang 4

2.3 Khả năng sử dụng phần mềm viết giao diện Visual Studio C#

Hai hình ảnh chụp màn hình Full – code và giao diện VS C#

-4-

Trang 5

PHẦN III Chuẩn đầu ra môn học 3: Có khả năng phân tích, thiết kế giải thuật và

lập trình ứng dụng

3.1 Lưu đồ giải thuật cho Arduino hoặc PIC

Vẽ lưu đồ giải thuật cho Arduino hoặc PIC

-5-

Trang 6

3.2 Lập trình code cho Arduino hoặc PIC

Code đầy đủ, có giải thích từng câu lệnh của code // Khai bao bien va du lieu

#define led_on 1 // Muc logic dieu khien trang thai LED

#define led_off 0

#define in_size 64 // Mac dinh kich thuoc du lieu doc/ghi

#define out_size 64

char count = 0; // Chua so lan nhan SW bit

oldstate; // Co bao trang thai cho SW

-6-

Trang 7

unsigned char readbuff[in_size] absolute 0x500; // Bo dem chua du lieu doc va ghi unsigned char writebuff[out_size] absolute 0x540; // Nen de trong vung USB RAM, xem them trong datasheet

void interrupt ()

{

if(PIR2.USBIF == 1)

{

PIR2.USBIF = 0; // Clear interrupt bit

USB_Interrupt_Proc(); // ISR cho USB

}

if(INTCON.INT0IF == 1)

{

INTCON.INT0IF = 0; // Clear interrupt bit

count++;

writebuff[0] = count;

oldstate = 1;

}

}

void main(void)

{

ADCON1 |= 0x0F; // Tat ca chan Analog thanh chan Digital

CMCON |= 0x07; // Cam modul Comparators

-7-

Trang 8

// Cau hinh Port B

PORTB= 0x00; LATB = 0x00;

TRISE.TRISB0 = 1;

TRISE.TRISB1 = 1;

TRISE.TRISB2 = 1;

TRISE.TRISB3 = 1;

INTCON2 RBPU = 0;

// Cau hinh Port D

PORTE = 0x00; LATE = 0x00;

TRISE.TRISE0 = 0;

TRISE.TRISE1 = 0;

// Cau hinh modul USB

HID_Enable(&readbuff, &writebuff); // Cho phep USB o che do HID // Cau hinh ngat

INTCON.INT0IF = 0; // Clear interrupt bit

INTCON.INT0IE = 1; // Enable external interrupts

INTCON2.INTEDG0 = 1; // External interrupt on rising edge

PIR2.USBIF = 0; // Clear interrupt bit

PIE2.USBIE = 1; // Enable the USB interrupt

INTCON.GIE = 1; // Enable global interrupt

INTCON.PEIE = 1; // Enable periphiral interrupts while

(1)

{

if(Button(&PORTB, 0, 10, 0))

{

-8-

Trang 9

while(Button(&PORTB, 0, 10, 0));

RE0_bit = led_on; writebuff[0] =

'a';

//HID_Write(&writebuff, out_size); // Gui du lieu den HOST thong qua USB }

else if(Button(&PORTB, 1, 10, 0))

{

while(Button(&PORTB, 1, 10, 0));

RE1_bit = led_on; writebuff[0] =

'b';

HID_Write(&writebuff, out_size); // Gui du lieu den HOST thong qua USB }

else if(Button(&PORTB, 2, 10, 0))

{

while(Button(&PORTB, 2, 10, 1));

RE1_bit = led_off; writebuff[0] =

'c';

HID_Write(&writebuff, out_size); // Gui du lieu den HOST thong qua USB }

else if(Button(&PORTB, 3, 10, 0))

{

while(Button(&PORTB, 3, 10, 1));

RE0_bit = led_off;

writebuff[0] = 'd';

HID_Write(&writebuff, out_size); // Gui du lieu den HOST thong qua USB

-9-

Trang 10

}

//**********************************

if(HID_Read() != 0) // Doc du lieu tu HOST thong qua USB

{

if(readbuff[0] == 1)

{

RE0_bit = led_on; // Dieu khien LED sang writebuff[0] = 'a'; // Gui phan hoi ma bao LED sang

}

else if(readbuff[0] == 0)

{

RE1_bit = led_on; // Dieu khien LED tat

writebuff[0] = 'b'; // Gui phan hoi ma bao LED tat

}

HID_Write(&writebuff, out_size); // Gui du lieu den HOST thong qua USB

}

//**********************************

if (oldstate == 1)

{

oldstate = 0;

HID_Write(&writebuff, out_size); // Gui du lieu den HOST thong qua USB

}

}

}

-10-

Trang 11

3.3 Lập trình giao diện VS C#

Code đầy đủ, có giải thích cho VS C#

using System;

using

System.Collections.Generic;

using System.ComponentModel;

using System.Data; using

System.Drawing; using

System.Linq; using

System.Text; using

System.Threading.Tasks; using

System.Windows.Forms; using

UsbLibrary;

namespace USB

{

public partial class Form1 : Form

{

byte [] readbuff = new byte [65];

byte [] writebuff = new byte [65];

public Form1()

{

InitializeComponent();

}

private void Form1_Load( object sender, EventArgs e)

{

this usbHidPort.VendorId = 0x04d8;

this usbHidPort.ProductId = 0x0001;

this usbHidPort.CheckDevicePresent();

if ( this usbHidPort.SpecifiedDevice != null )

this usbHidPort.SpecifiedDevice.SendData( this writebuff);

textBox_VID.Text = usbHidPort.VendorId.ToString( "x4" );

textBox_PID.Text = usbHidPort.ProductId.ToString( "x4" ); }

private void button_Exit_Click( object sender, EventArgs e)

{

DialogResult answer = MessageBox Show( "Do you want to exit the program?" , "Question" ,

MessageBoxButtons YesNo,

MessageBoxIcon Question); if (answer == DialogResult Yes) {

this Close();

}

} private void button_ON_Click( object

sender, EventArgs e)

{

writebuff[1] = 1;

if ( this usbHidPort.SpecifiedDevice !=

null ) {

this usbHidPort.SpecifiedDevice.SendData(writebuff);

textBox_St.Text = "Opening" ;

-11-

Trang 12

}

else

{

MessageBox Show( "Device not found Please reconnect USB device to use." , "Information" ,

MessageBoxButtons OK, MessageBoxIcon Information);

}

}

private void button_OFF_Click( object sender, EventArgs e)

{

writebuff[1] = 0;

if ( this usbHidPort.SpecifiedDevice != null )

{

this usbHidPort.SpecifiedDevice.SendData(writebuff);

textBox_St.Text = "Closing" ;

}

else

{

MessageBox Show( "Device not found Please reconnect USB device to use." , "Information" ,

MessageBoxButtons OK, MessageBoxIcon Information);

}

}

private void usbHidPort_OnSpecifiedDeviceArrived( object sender, EventArgs

e)

{

toolStripStatusLabel.Text = "Device Detected" ;

textBox_Status.Text = "Connected!" ;

textBox_Status.BackColor = Color Lime;

}

private void usbHidPort_OnSpecifiedDeviceRemoved( object sender, EventArgs

e)

{

if (InvokeRequired)

{

Invoke( new

EventHandler ( this usbHidPort_OnSpecifiedDeviceRemoved), sender,

( object )e); } else {

toolStripStatusLabel.Text = "Device Disconnected" ;

textBox_Status.Text = "Disconnected!!" ;

textBox_Status.BackColor = Color Red;

}

}

private void usbHidPort_OnDeviceArrived( object sender, EventArgs e)

{

toolStripStatusLabel.Text = "USB

Connected" ; }

private void usbHidPort_OnDeviceRemoved( object sender, EventArgs e)

{

if (InvokeRequired)

Invoke( new EventHandler ( this usbHidPort_OnDeviceRemoved), sender, ( object )e);

else

toolStripStatusLabel.Text = "USB Removed" ;

}

private void usbHidPort_OnDataRecieved( object sender,

DataRecievedEventArgs args)

-12-

Trang 13

{

if (InvokeRequired) {

try {

Invoke( new DataRecievedEventHandler ( this usbHidPort_OnDataRecieved), sender, ( object )args); } catch {

} }

else

{ readbuff = args.data; toolStripStatusLabel.Text = "New Received Data" ; if (readbuff[1] == 'a' ) // Khi dữ liệu nhận là 1 {

textBox_St.Text = "Opening" ; }

else if (readbuff[1] == 'b' ) // Khi dữ liệu nhận là 2 {

textBox_St.Text = "Closing" ; }

else if (readbuff[1] == 'c' ) // Khi dữ liệu nhận là 3 {

textBox_St.Text = "Closed" ; }

else if (readbuff[1] == 'd' ) // Khi dữ liệu nhận là 4 {

textBox_St.Text = "Opened" ; }

}

} private void usbHidPort_OnDataSend( object sender, EventArgs e) {

toolStripStatusLabel.Text = "Data sent" ; }

protected override void OnHandleCreated( EventArgs e) {

base OnHandleCreated(e);

usbHidPort.RegisterHandle(Handle); }

protected override void WndProc( ref Message m) {

usbHidPort.ParseMessages( ref m);

base WndProc( ref m); }

}

}

-13-

Trang 14

3.4 Biên dịch code và sửa lỗi

- Hai hình ảnh chụp màn hình khi biên dịch code thành công cho Arduino (hoặc PIC) và VS C#

- Một vài hình ảnh bị lỗi (nếu có) và trình bày cách khắc phục lỗi đó

Link video minh chứng:

https://youtu.be/8L7Xw0AGqfc?

si=QzCJj2bTxza48NfG

-14-

Trang 15

PHẦN IV: Chuẩn đầu ra môn học 4: Có khả năng lắp ráp, cân chỉnh các board

mạch điện tử theo qui trình

4.1 Quy trình Lắp ráp và Test thực nghiệm

Viết quy trình Test theo từng bước: bước 1, bước 2, bước 3 …

4.2 Lắp ráp mạch thực tế

Một hình ảnh chụp bo mạch sau khi đã lắp ráp xong hoàn thiện

Một hoặc hai hình ảnh có các thành viên đang thao tác trên Testboard

Một hình ảnh chụp kết quả khi bo giao tiếp được với VS C#

4.3 Khả năng cân chỉnh bo mạch

Trình bày + hình ảnh lỗi khi thao tác lắp ráp và Test

Trình bày cách khắc phục, xử lý lỗi đó

-15-

Trang 16

PHẦN V: Kết luận bài thực hành

cho bài thực hành

-16-

Ngày đăng: 01/04/2024, 14:49

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w