Tài liệu Báo cáo bài tập lớn - Đo lường và tự động điều khiển pdf

45 589 1
  • Loading ...
1/45 trang

Thông tin tài liệu

Ngày đăng: 12/12/2013, 17:15

Đo lường tự động điều khiển 1 BÁO CÁO BÀI TẬP LỚN Đo điều khiển tốc độ động cơ dùng vi điều khiển 8051 I.Giới thiệu chung : 1.Mở đầu: Ngày nay trong mọi lĩnh vực khoa học kỹ thuật luôn xuất hiện khái niệm Kỹ thuật số vi xử lý điều khiển, với sự trợ giúp của máy tính kỹ thuật vi xử lý điều khiển đã có sự phát triển ạnh mẽ đặc biệt là sự phát triển nhanh chóng của các họ vi xử lý điều khiển với những tính năng mới. Để ph ục vụ tốt cho môn học “Đo lường điều khiển tự động” chúng em thực hiện đề tài: Đo Điều khiển Tốc Độ Động Cơ với mục đích tích luỹ kiến thức đặc biệt là những kinh nghiệm trong quá trình lắp mạch thực tế song do thời gian kiến thức có hạn, nên mạch thiết kế còn nhiều thiếu sót. Chúng em rất mong nhận được s ự góp ý của các thầy cô để có thể nâng cao chất lượng của bài thiết kế, chúng em xin chân thành cảm ơn ! 2. Đề tài : Đo điều khiển tốc độ động cơ một chiều loại nhỏ 3. Nhóm sinh viên thực hiện : Nhóm thực hiện: Gồm 3 thành viên chính được phân công công việc cụ thể Đo lường tự động điều khiển 2 4.Định hướng thiết kế: Thiết kế một hệ vi xử lý bao gồm cả việc thiết kế tổ chức phần cứng viết phần mềm cho nền phần cứng mà ta thiết kế. Việc xem xét giữa tổ chức phần cứng chương trình phần mềm cho một thiết kế là một vấn đề cần phải cân nhắc. Vì khi tổ chức phần cứ ng càng phức tạp, càng có nhiều chức năng hỗ trợ cho yêu cầu thiết kế thì phần mềm càng được giảm bớt dễ dàng thực hiện nhưng lại đẩy cao giá thành chi phí cho phần cứng, cũng như chi phí bảo trì. Ngược lại với một phần cứng tối thiểu lại yêu cầu một chương trình phần mềm phức tạp hơn, hoàn thiện hơn; nhưng lại cho phép bảo trì h ệ thống dễ dàng hơn cũng như việc phát triển tính năng của hệ thống từ đó có thể đưa ra giá cạnh tranh được. Từ yêu cầu nhận định trên ta có những định hướng sơ bộ cho thiết kế như sau: 1. Chọn bộ vi xử lý. Từ yêu cầu dùng VXL 8 bit ta dự kiến dùng các chip vi điều khiển thuộc họ MCS-51 của Intel, mà cụ thể ở đây là dùng chip 8051 vì những lý do sau: + Thứ nhất 8051 thuộc họ MCS-51, là chip vi điều khiển. Đặc điểm của các chip vi điều khiển nói chung là nó được tích hợp với đầy đủ chức năng của một hệ VXL nhỏ, rất thích hợp với những thiết kế hướng điều khiển. Tức là trong nó bao gồm: mạch VXL, bộ nhớ chương trình dữ liệu, bộ đếm, bộ tạo xung, các cổng vào/ra nối tiếp song song, mạch điều khiển ngắt… + Thứ hai là, vi điều khiển 8051 cùng với các họ vi điều khiển khác nói chung trong những năm gần đây được phát triển theo các hướng sau:  Giảm nhỏ dòng tiêu thụ.  Tăng tốc độ làm việc hay tần số xung nhịp của CPU .  Giảm điệp áp nguồn nuôi.  Có thể m ở rộng nhiều chức năng trên chip, mở rộng cho các thiết kế lớn. Những đặc điểm đó dẫn đến đạt được hai tính năng quan trọng là: giảm công suất tiêu thụ cho phép điều khiển thời gian thực nên về mặt ứng dụng nó rất thích hợp với các thiết kế hướng điều khiển. Đo lường tự động điều khiển 3 + Thứ ba là, vi điều khiển thuộc họ MCS-51 được hỗ trợ một tập lệnh phong phú nên cho phép nhiều khả năng mềm dẻo trong vấn đề viết chương trình phần mềm điều khiển. + Cuối cùng là, các chip thuộc họ MCS-51 hiện được sử dụng phổ biến được coi là chuẩn công nghiệp cho các thiết kế khả dụng. Mặt khác, qua việc khảo sát thị trường linh kiện vi ệc có được chip 8051 là dễ dàng nên mở ra khả năng thiết kế thực tế. Vì những lý do trên mà việc lựa chọn vi điều khiển 8051 là một giải pháp hoàn toàn phù hợp cho thiết kế. 4 .Phương án thực hiện : 4.1. Dùng cặp cảm biến thu phát đặt đối diện để xác định số vòng quay trong một khoảng thời gian nhất định . Động cơ có gắn một đĩa quay có một khe thủ ng trên đĩa ,mỗI khi khe này quay qua cặp cảm biến hồng ngoạt thu phát sẽ tạo ra một đột biến xung trong một vòng quay. 4.2. Sử dụng cảm biến phát đồng thời thu tín hiệu phản xạ ngược trở bằng cách vạch một số điểm trên trục của động cơ . 4.3. Họ vi điều khiển AT89C51 có 32 đường xuất nhập dữ liệu : P0 ,P1 , P2, P3 mỗI Port 8 bit vì vậy phương án đặt ra sử dụng toàn bộ 8 bit P*.0 - P*.7 để xuất ra LED 7 thanh CA hoặc chỉ sử dụng mỗI Port 4bit sau đó giảI mã bằng 74LS47.Như vậy sẽ phảI sử dụng LCD để hiển thị tốc độ động cơ . 4.4. Sử dụng màn hình LCD để hiển thị . 5. Các bước thực hiện : Sau khi nhận đồ án nhóm em đã đưa ra một số bước sau để thực hiện công việc: 1.Nhậ p số vào LCD theo đúng trình tự hàng trăm hàng chục hàng đơn vị .Đo tốc độ của các động cơ loại nhỏ (loại một chiều hoặc xoay chiều),có gắn cánh quạt (số lượng cánh là xác định ). 2. Thực hiện việc đo tốc độ thông qua số vòng quay của cánh quạt bằng cách sử dụng mạch sensor thu phát hồng ngoại. 3.Việc hiển thị thực hiện thông qua LCD (đo tốc độ trong một khoảng thời gian phù hợp).Có một khoảng thời gian để quan sát giá trị của tốc độ. 4.Việc đo động cơ ta điều chỉnh sao cho tốc độ của động cơ luôn ổn định ở một ngưỡng nhất định .Nghĩa là tốc độ của động cơ luôn có một sai số trong giới hạn .trong bài này chúng em điều chỉnh cho sai số của động cơ trong khoảng 2%. Đo lường tự động điều khiển 4 6.Mô phỏng a.Phần code // Mo PhongDlg.cpp : implementation file // #include "stdafx.h" #include "Mo Phong.h" #include "Mo PhongDlg.h" #include"math.h" #include "stdlib.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) Đo lường tự động điều khiển 5 //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMoPhongDlg dialog CMoPhongDlg::CMoPhongDlg(CWnd* pParent /*=NULL*/) : CDialog(CMoPhongDlg::IDD, pParent) { //{{AFX_DATA_INIT(CMoPhongDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMoPhongDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); Đo lường tự động điều khiển 6 //{{AFX_DATA_MAP(CMoPhongDlg) DDX_Control(pDX, IDC_LED1, m_led1); DDX_Control(pDX, IDC_LED10, m_led10); DDX_Control(pDX, IDC_LED2, m_led2); DDX_Control(pDX, IDC_LED3, m_led3); DDX_Control(pDX, IDC_LED4, m_led4); DDX_Control(pDX, IDC_LED5, m_led5); DDX_Control(pDX, IDC_LED6, m_led6); DDX_Control(pDX, IDC_LED7, m_led7); DDX_Control(pDX, IDC_LED8, m_led8); DDX_Control(pDX, IDC_LED9, m_led9); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CMoPhongDlg, CDialog) //{{AFX_MSG_MAP(CMoPhongDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_HANGCHUC, OnHangchuc) ON_BN_CLICKED(IDC_HANGDONVI, OnHangdonvi) ON_BN_CLICKED(IDC_HANGNGHIN, OnHangnghin) ON_BN_CLICKED(IDC_HANGTRAM, OnHangtram) ON_BN_CLICKED(IDC_HANGVAN, OnHangvan) ON_BN_CLICKED(IDC_PAUSE, OnPause) ON_BN_CLICKED(IDC_RESET, OnReset) ON_BN_CLICKED(IDC_REVERSE, OnReverse) ON_WM_TIMER() ON_BN_CLICKED(IDC_START, OnStart) ON_WM_DESTROY() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMoPhongDlg message handlers BOOL CMoPhongDlg::OnInitDialog() { Đo lường tự động điều khiển 7 CDialog::OnInitDialog(); // Add "About ." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here m_1=0; m_2=m_3=m_4=m_5=m_6=m_7=m_8=m_9=m_10=0; m_led1.SetWindowText("0"); m_led2.SetWindowText("0"); m_led3.SetWindowText("0"); m_led4.SetWindowText("0"); m_led5.SetWindowText("0"); m_led6.SetWindowText("0"); m_led7.SetWindowText("0"); m_led8.SetWindowText("0"); m_led9.SetWindowText("0"); m_led10.SetWindowText("0"); m_degree=0; Đo lường tự động điều khiển 8 temp=TRUE; t=0; // m_vong=0; return TRUE; // return TRUE unless you set the focus to a control } void CMoPhongDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CMoPhongDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; Đo lường tự động điều khiển 9 // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CClientDC pDC(this); OnDraw(&pDC); CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CMoPhongDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CMoPhongDlg::OnHangchuc() { if(m_4==9) m_4=0; else m_4++; CString s; s.Format("%d",m_4); m_led4.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnHangdonvi() { if(m_5==9) m_5=0; else m_5++; CString s; s.Format("%d",m_5); m_led5.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; Đo lường tự động điều khiển 10 } void CMoPhongDlg::OnHangnghin() { if(m_2==9) m_2=0; else m_2++; CString s; s.Format("%d",m_2); m_led2.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnHangtram() { if(m_3==9) m_3=0; else m_3++; CString s; s.Format("%d",m_3); m_led3.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnHangvan() { if(m_1==9) m_1=0; else m_1++; CString s; s.Format("%d",m_1); m_led1.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnPause() [...]... lường tự động điều khiển Khối nhập dữ liệu Khối nguồn Khối xử lý trung tâm Khối khuếch đại Khối hiển thị (LCD) Khối mạch động lực Khối thu phát Động cơ 16 Đo lường tự động điều khiểnđồ nguyên lý 17 Đo lường tự động điều khiển III.Phân tích chức năng từng khối a Khối vi xử lý b Khối hiển thị c.Khối nhập giá trị tốc độ d.Khối đo tốc độ động cơ e.Khối động lực g.Khối nguồn h.Khối động cơ IV.Giới... độ đấy Bộ điều khiển có thể có hoặc không thật sự đo tốc độ động cơ Nếu có thì goi là điều khiển tốc độ có phản hồi hoặc điều khiển tốc độ vòng kín, nếu không thì gọi là điều khiển tốc độ vòng mở Điều khiển tốc độ có phản hồi tốt hơn nhưng phức tạp hơn Động cơ có rất nhiều kiểu, đầu ra của bộ điều khiển tốc độ của động cơ với các dạng khác nhau là khác nhau 2 Lý thuyết điều khiển tốc độ động cơ một... tiếp RS-232 đơn giản Tốc độ truyền qua cổng nối tiếp có thể đặt được trong một vùng rộng phụ thuộc vào một bộ định thời tần số dao động riêng của thạch anh *Bộ nhớ chương trình: Bộ nhớ chương trình thường là bộ nhớ ROM (Read Only Memory), bộ nhớ chương trình được sử dụng để cất giữ chương trình điều khiển hoạt động của vi điều khiển *Bộ nhớ số liệu: 22 Đo lường tự động điều khiển Bộ nhớ số liệu. .. chân P1.0 của vi điều khiển. LM 324 có nhiệm vụ khuyếch đại thuật toán 74HC14 trigosmith hoạt động theo sườn tránh các hoạt động dao động trên đường truyền JP1s 2 2 - U3 TLP621 74HC14 r3s 2 7 LM324 1 2 3 p33.4 4 1 Grd D3s CON3 LED 34 3 1 11 J2s U2AsA R4s 3 + Cs1 10k C U1AsA 1 Rs1 5V 14 4 R2s Đo lường tự động điều khiển Nguyên lý hoạt động của mạch: Việc đo tốc độ của động cơ dựa vào quá trình đếm... = 0 ghi 6 E I/O Cho phé O ép 7 DB0 I/O Bus dữ l 8 bits D O liệu 8 DB1 I/O Bus dữ l 8 bits D O liệu 9 DB2 I/O Bus dữ l 8 bits D O liệu 32 Đo lường tự động điều khiển 10 11 12 13 14 DB3 DB4 DB5 DB6 DB7 I/O I/O I/O I/O I/O Bus dữ liệu 8 bits Bus dữ liệu 8 bits Bus dữ liệu 8 bits Bus dữ liệu 8 bits Bus dữ liệu 8 bits 3 RS (Register Select) - chọn thanh ghi: Có hai thanh ghi rất quan trọng bên trong... trong mạch: 1 - IC khuếch đại LM324 2 - Vi điều khiển 80c52 3 – LCD ,74HC14,điện trở quang… 4 - Một số linh kiện phụ khc: thạch anh 12 Mhz, sensor thu phát hồng ngoại, tụ 33p, tụ 10 uF, trở 5 - Môtơ điện một chiều DC 12V V Mô tả các modul 1.Khối vi xử lý Điều khiển tốc độ động cơ: 1 Giới thiệu: Mục đích của điều khiển tốc độ động cơ là đưa ra tín hiệu biểu diễn tốc độ yêu cầu, điều khiển động cơ theo... CWnd*pWnd=GetDlgItem(IDC_DISPLAY); CRect rectD; pWnd->GetWindowRect(rectD); int cx,cy; 11 Đo lường tự động điều khiển cx=rectD.CenterPoint().x; cy=rectD.CenterPoint().y; cx-=rectWin.left; cy-=rectWin.top; CBrush brush(RGB(0,255,0)); CBrush * oldBrush=pDC->SelectObject(&brush); CPen *pen=new CPen(PS_SOLID,1,RGB(0,0,255)); CPen*oldPen =pDC->SelectObject(pen); pDC->Ellipse(cx-50,cy-50,cx+50,cy+50); CPen*pen1=new CPen(PS_SOLID,3,RGB(255,0,0));... có nhiệm vụ điều khiển tốc độ động cơ, thay đổi điện áp đầu vào dẫn đến thay đổi thay đổi tốc độ của động cơ Nguyên lý hoạt động của mạch cầu H: 0V R_IRF4 Rh4 1 3 tD3 3 10K tD4 R_IRF2 10K IRF540 1 Rh3 2 2 IRF540 M+ MRh2 2 2 tD2 IRF9540 IRF9540 R_IRF3 1 1 R_IRF1 3 10K 3 10K Rh1 24V 35 Đo lường tự động điều khiển Mạch cầu H được mô tả trong hình dưới đây Động cơ được nối với các cực âm dương của... vị chỉ đến các lệnh tiếp theo của chương trình *Bộ tạo dao động: 21 Đo lường tự động điều khiển Khối xử lý trung tâm nhận trực tiếp xung nhịp từ bộ tạo dao động được lắp thêm vào, linh kiện phụ trợ có thể là một khung dao động làm bằng tụ gốm hoặc thạch anh Ngoài ra, còn có thể đưa một tín hiệu giữ nhịp từ bên ngoài vào *Khối điều khiển ngắt: Chương trình đang chạy có thể cho dừng lại nhờ một... CMoPhongDlg::OnTimer(UINT nIDEvent) 12 Đo lường tự động điều khiển { if(temp==TRUE) { m_degree++; if(m_degree>=120) m_degree=0; } else { m_degree ; if(m_degree . Đo lường và tự động điều khiển 1 BÁO CÁO BÀI TẬP LỚN Đo và điều khiển tốc độ động cơ dùng vi điều khiển 8051 I.Giới thiệu chung. xử lý và điều khiển với những tính năng mới. Để ph ục vụ tốt cho môn học Đo lường và điều khiển tự động chúng em thực hiện đề tài: Đo và Điều khiển Tốc
- Xem thêm -

Xem thêm: Tài liệu Báo cáo bài tập lớn - Đo lường và tự động điều khiển pdf, Tài liệu Báo cáo bài tập lớn - Đo lường và tự động điều khiển pdf, Tài liệu Báo cáo bài tập lớn - Đo lường và tự động điều khiển pdf

Từ khóa liên quan

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay