Đo và điều khiển tốc độ động cơ dùng vi điều khiển 8051

Mục Lục I. Giới thiệu chung 1. Mở Đầu 2 . Giớithiệu đề tài ,môc dÝch . 3. Giới thiệu thành viên trong nhóm . 4. Định hướng thiết kế . 5. Các bước thực hiện 6. M« pháng II . Lý thuyết thực hiện 1. Cơ sơ lý thuyết . 2. Sơđồ nguyên lý . 3. Phân tích chức năng từng khối . 4. Giới thiệu linh kiện chính Vi điều kiển AT89C51 III. Phần mềm thực hiện hệ thống IV. Thiết kế mạch V.Đánh giá sai số VI.Xu hướng phát triển VII. Kết Luận . VIII. Tài liệu tham khảo 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ý và điều khiển, với sự trợ giúp của máy tính kỹ thuật vi xử lý và đ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ý 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 Độ Độ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 và 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 và đ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ể 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 và 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 và 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 và 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 và 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 và dữ liệu, bộ đếm, bộ tạo xung, các cổng vào/ra nối tiếp và 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ụ và 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. + 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 và đượ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 và đồ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 độ.

doc44 trang | Chia sẻ: banmai | Lượt xem: 2771 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đo và điều khiển tốc độ động cơ dùng vi điều khiển 8051, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Mục Lục I. Giới thiệu chung 1. Mở Đầu ………………………………………………………………….. 2 . Giớithiệu đề tài ,môc dÝch……………………………………………... 3. Giới thiệu thành viên trong nhóm ………………………………………. 4. §Þnh h­íng thiÕt kÕ …………………………………………….…………… 5. Các bước thực hiện ……………………………………………………… 6. M« pháng ………………………………………………………… II . Lý thuyết thực hiện Cơ sơ lý thuyết ……………………………………………………………. Sơđồ nguyên lý ……………………………………………………………. Phân tích chức năng từng khối ……………………………………………. Giới thiệu linh kiện chính ………………………………………………… Vi điều kiển AT89C51 ………………………………………………….. III. Phần mềm thực hiện hệ thống……………………………………………… IV. Thiết kế mạch……………………………………………………………… V.§¸nh gi¸ sai sè ………………………………………………………… VI.Xu h­íng ph¸t triÓn ………………………………………………………… VII. Kết Luận…………………………………………………………………. VIII. Tài liệu tham khảo……………………………………………………….. 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: 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ý và điều khiển, với sự trợ giúp của máy tính kỹ thuật vi xử lý và đ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ý 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 Độ Độ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 và 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 vµ ®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Ó 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 vµ 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 vµ 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 vµ 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 vµ nhËn ®Þnh trªn ta cã nh÷ng ®Þnh h­íng s¬ bé cho thiÕt kÕ nh­ sau: 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 vµ d÷ liÖu, bé ®Õm, bé t¹o xung, c¸c cæng vµo/ra nèi tiÕp vµ 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ô vµ 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. + 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 vµ ®­î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 và đồ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%. 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) //}}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); //{{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() { 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; 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; // 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; } 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() { KillTimer(1); } void CMoPhongDlg::OnReset() { m_1=m_2=m_3=m_4=m_5=m_6=m_7=m_8=m_9=m_10=0; // thiet lap ve khong 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"); KillTimer(1); } void CMoPhongDlg::OnReverse() { if(temp==TRUE) temp=FALSE; else { temp=TRUE; } } void CMoPhongDlg::OnDraw(CDC *pDC) { CRect rectWin; GetWindowRect(rectWin); rectWin.top+=32; CWnd*pWnd=GetDlgItem(IDC_DISPLAY); CRect rectD; pWnd->GetWindowRect(rectD); int cx,cy; 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)); CPen*oldPen1 =pDC->SelectObject(pen1); double angle; angle =m_degree*3*3.14/180; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); pDC->SelectObject(oldBrush); pDC->SelectObject(oldPen); pDC->SelectObject(oldPen1); } void CMoPhongDlg::OnTimer(UINT nIDEvent) { if(temp==TRUE) { m_degree++; if(m_degree>=120) m_degree=0; } else { m_degree--; if(m_degree<=0) m_degree=120; } if(m_10<9) m_10++; else { m_10=0; if(m_9<9) m_9++; else { m_9=0; if(m_8<9) m_8++; else { m_8=0; if(m_7<9) m_7++; else { m_7=0; if(m_6<9) m_6++; else MessageBox("Tran So","Warning",MB_OK); } } } } t++; if(t==100) { t=0; CString s6,s7,s8,s9,s10; s6.Format("%d",m_1); s7.Format("%d",m_2); s8.Format("%d",m_3); s9.Format("%d",m_4); if(m_5<=2) s10.Format("%d",m_5+1); else if((m_5>2)&&(m_5<5)) s10.Format("%d",m_5-1); else if(m_5==5||m_5==7) s10.Format("%d",m_5); else if((m_5>5)&&m_5<7) s10.Format("%d",m_5+1); else s10.Format("%d",m_5-1); m_led6.SetWindowText(s6); m_led7.SetWindowText(s7); m_led8.SetWindowText(s8); m_led9.SetWindowText(s9); m_led10.SetWindowText(s10); } CClientDC pDC(this); OnDraw(&pDC); CDialog::OnTimer(nIDEvent); } void CMoPhongDlg::OnStart() { UpdateData(TRUE); SetTimer(1,(int)(1000/m_vong),NULL); } CScrollBar* CMoPhongDlg::GetScrollBarCtrl(int nBar) const { // TODO: Add your specialized code here and/or call the base class return CDialog::GetScrollBarCtrl(nBar); } void CMoPhongDlg::OnDestroy() { CDialog::OnDestroy(); KillTimer(1); } void CMoPhongDlg::OnButton1() { OnOK(); } b. PhÇn giao diÖn II. Lý Thuyết thực hiện. Cơ sở lý thuyết. Sơ đồ khối Khối nhập dữ liệu Khối nguồn Khối khuếch đại Khối xử lý trung tâm Khối thu phát Động cơ Khối hiển thị (LCD) Khối mạch động lực Sơ đồ nguyên lý. 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 thiệu linh kiện sử dụng 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ơ: 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, và điều khiển động cơ theo tốc độ đấ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, và đầ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. Lý thuyết điều khiển tốc độ động cơ một chiều: Tốc độ của động cơ một chiều tỉ lệ trực tiếp với nguồn cấp, vì vậy nếu ta giảm điện áp cung cấp từ 12V xuống 6V, động cơ sẽ chạy với tốc độ bằng một nửa trước đó. Bộ điều khiển tốc độ động cơ làm việc trên nguyên lý biến đổi điện áp trung bình cấp cho động cơ. Có thể đơn giản chỉ bằng cách điều chỉnh điện áp cung cấp, nhưng như thế sẽ không hiệu quả. Cách tốt hơn là tắt nguồn cấp cho động cơ thật nhanh. Nếu động tác tắt này đủ nhanh thì động cơ không kịp nhận ra sự thay đổi đó mà chỉ nhận ra được hiệu ứng trung bình thôi. Khi bật, nguồn có giá trị 12V; khi tắt, nguồn có giá trị 0V. Nếu ta tắt nguồn với một lượng thời gian bằng với khi nó được bật thì động cơ sẽ nhận được giá trị trung bình là 6V, và sẽ chạy chậm đi theo tỉ lệ đó. Chuyển mạch để bật tắt nguồn này gọi là on-off switching, được chế tạo bằng MOSFET. Ta dùng vi xử lý 8051. Nh÷ng tÝnh chÊt ®Æc tr­ng cña hä vi ®iÒu khiÓn MCS-51: * §¬n vÞ xö lý trung t©m (CPU) 8 bit ®· ®­îc tèi ­u ho¸ ®Ó ®¸p øng c¸c chøc n¨ng ®iÒu khiÓn . * Khèi l«gic (ALU) xö lý theo bit nªn thuËn tiÖn cho c¸c phÐp to¸n logic Boolean. * Bé t¹o dao ®éng gi÷ nhÞp ®­îc tÝch hîp bªn trong víi tÇn sè 12MHz. * Giao diÖn nèi tiÕp cã kh¶ n¨ng ho¹t ®éng song song, ®ång bé. * C¸c cæng vµo/ra hai h­íng vµ tõng ®­êng dÉn cã thÓ ®­îc ®Þnh ®Þa chØ mét c¸ch t¸ch biÖt. * Cã n¨m hay s¸u nguån ng¾t víi hai møc ­u tiªn . * Hai hoÆc ba bé ®Õm ®Þnh thêi 16 bit. * Bus vµ khèi ®Þnh thêi t­¬ng thÝch víi c¸c khèi ngo¹i vi cña bé vi xö lý 8085/8088. * Dung l­îng cña bé nhí ch­¬ng tr×nh (ROM) bªn ngoµi cã thÓ lªn tíi 64 kbyte. * Dung l­îng cña bé nhí d÷ liÖu (RAM) bªn ngoµi cã thÓ lªn tíi 64 kbyte. * Dung l­îng cña bé nhí ROM bªn trong cã thÓ lªn ®Õn 8 kbyte. * Dung l­îng bé nhí RAM bªn trong cã thÓ ®¹t ®Õn 256 byte. * TËp lÖnh phong phó. 2.1. CÊu tróc chung : 2.1.1. S¬ ®å khèi : S¬ ®å khèi tæng qu¸t cña mét vi ®iÒu khiÓn 8051 cã thÓ ®­îc m« t¶ nh­ sau: CÊu tróc cña vi ®iÒu khiÓn 8051. Bé t¹o dao ®éng CPU §iÒu khiÓn ng¾t. Nguån ng¾t trong. 4Kbyte Bé nhí ch­¬ng tr×nh trong. 128byte Bé nhí RAM trong 2bé ®Õm / ®Þnh thêi Khèi ®.khiÓn qu¶n lý Bus. Port 0 Port 1 Port 2 Port 3 Giao diÖn nèi tiÐp. XTAL 1.2 |PSEN/ALE Cæng I/O 8 bit Cæng I/O §chØ cao D÷ liÖu 8 bit Cæng I/O §chØ thÊp D÷ liÖu 8 bit Cæng I/O C¸c chøc n¨ng ®¾c biÖt D÷ liÖu 8 bit Nguån ng¾t ngoµi §Õm sù kiÖn. Chøc n¨ng cña tõng khèi : * Khèi xö lý trung t©m CPU: PhÇn chÝnh cña bé vi xö lý lµ khèi xö lý trung t©m (CPU=Central Processing Unit ), khèi nµy cã chøa c¸c thµnh phÇn chÝnh : +Thanh ghi tÝch luü (ký hiÖu lµ A ); +Thanh ghi tÝch luü phô (ký hiÖu lµ B ) th­êng ®­îc dïng cho phÐp nh©n vµ phÐp chia ; +Khèi logic sè häc (ALU=Arithmetic Logical Unit) ; +Tõ tr¹ng th¸i ch­¬ng tr×nh (PSW= Program Status Word ); +Bèn b¨ng thanh ghi . +Con trá ng¨n xÕp (SP=Stack Point) còng nh­ con trá d÷ liÖu ®Ó ®Þnh ®Þa chØ cho bé nhí d÷ liÖu ë bªn ngoµi; Ngoµi ra, khèi xö lý trung t©m cßn chøa: -Thanh ghi ®Õm ch­¬ng tr×nh (PC= Progam Counter ); -Bé gi¶i m· lÖnh; -Bé ®iÒu khiÓn thêi gian vµ logic; Sau khi ®­îc Reset, CPU b¾t ®Çu lµm viÖc t¹i ®Þa chØ 0000h, lµ ®Þa chØ ®Çu ®­îc ghi trong thanh ghi chøa ch­¬ng tr×nh (PC) vµ sau ®ã, thanh ghi nµy sÏ t¨ng lªn 1 ®¬n vÞ vµ chØ ®Õn c¸c lÖnh tiÕp theo cña ch­¬ng tr×nh. *Bé t¹o dao ®éng: 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 khèi logic ng¾t ë bªn trong. C¸c nguån ng¾t cã thÓ lµ: c¸c biÕn cè ë bªn ngoµi, sù trµn bé ®Õm/bé ®Þnh thêi hay cã thÓ lµ giao diÖn nèi tiÕp. TÊt c¶ c¸c ng¾t ®Òu cã thÓ ®­îc thiÕt lËp chÕ ®é lµm viÖc th«ng qua hai thanh ghi IE (Interrupt Enable) vµ IP (Interrupt Priority). *Khèi ®iÒu khiÓn vµ qu¶n lý Bus : C¸c khèi trong vi ®iÒu khiÓn liªn l¹c víi nhau th«ng qua hÖ thèng Bus néi bé ®­îc ®iÒu khiÓn bëi khèi ®iÒu khiÓn qu¶n lý Bus. *C¸c bé ®Õm/®Þnh thêi: Vi ®iÒu khiÓn 8051 cã chøa hai bé ®Õm tiÕn 16 bit cã thÓ ho¹t ®éng nh­ lµ bé ®Þnh thêi hay bé ®Õm sù kiÖn bªn ngoµi hoÆc nh­ bé ph¸t tèc ®é Baud dïng cho giao diÖn nèi tiÕp. Tr¹ng th¸i trµn bé ®Õm cã thÓ ®­îc kiÓm tra trùc tiÕp hoÆc ®­îc xo¸ ®i b»ng mét ng¾t. *C¸c cæng vµo/ra: Vi ®iÒu khiÓn 8051 cã bèn cæng vµo/ra (P0 .. P3), mçi cæng chøa 8 bit, ®éc lËp víi nhau. C¸c cæng nµy cã thÓ ®­îc sö dông cho nh÷ng môc ®Ých ®iÒu khiÓn rÊt ®a d¹ng. Ngoµi chøc n¨ng chung, mét sè cæng cßn ®¶m nhËn thªm mét sè chøc n¨ng ®Æc biÖt kh¸c. *Giao diÖn nèi tiÕp: Giao diÖn nèi tiÕp cã chøa mét bé truyÒn vµ mét bé nhËn kh«ng ®ång bé lµm viÖc ®éc lËp víi nhau. B»ng c¸ch ®Êu nèi c¸c bé ®Öm thÝch hîp, ta cã thÓ h×nh thµnh mét cæng nèi 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 vµ 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: Bé nhí sè liÖu th­êng lµ bé nhí RAM (Ramdom Acces Memory), bé nhí sè liÖu dïng ®Ó cÊt gi÷ c¸c th«ng tin t¹m thêi trong qu¸ tr×nh vi ®iÒu khiÓn lµm viÖc. 2.1.2. Sù s¾p xÕp ch©n ra cña vi ®iÒu khiÓn 8051: PhÇn lín c¸c bé vi ®iÒu khiÓn 8051 ®­îc ®ãng vµo vá theo kiÓu hai hµng DIL(Dual In Line) víi tæng sè lµ 40 ch©n ra, mét sè Ýt cßn l¹i ®­îc ®ãng vá theo kiÓu h×nh vu«ng PLCC (Plastic Leaded Chip Carrier) víi 44 ch©n vµ lo¹i nµy th­êng ®­îc dïng cho nh÷ng hÖ thèng cÇn thiÕt ph¶i tiÕt kiÖm diÖn tÝch. 8051 P1.0 P1.1 P1.2 P1.4 P1.5 P1.3 P1.6 P1.7 RST (TxD) P3.1 ( |INT0) P3.2 (RxD) P3.0 ( |INT1) P3.3 (T0) P3.4 (T1) P3.5 ( |RD) P3.7 XTAL2 ( |WR) P3.6 XTAL2 GND VCC + 5V P0.0 (A/D 0) P0.1 (A/D 1) P0.3 (A/D 3) P0.4 (/D 4) P0.2 (A/D 2) P0.5 (A/D 5) P0.6 (A/D 6) P0.7 (A/D 7) ALE |PSEN |EA P2.7 (A15) P2.6 (A14) P2.5 (A13) P2.3 (A11) P2.2 (A10) P2.4 (A12) P2.1 (A9) P2.0 (A8) H×nh 2.2: S¬ ®å ch©n cña vi m¹ch 8051 DIL. B¶ng 2.1: Chøc n¨ng c¸c ch©n cña vi ®iÒu khiÓn 8051. Ch©n Ký hiÖu Chøc n¨ng 1-->8 P1.0-->P1.7 Cæng gi¶ hai h­íng P1, cã thÓ tù do sö dông 9 Reset Lèi vµo Reset, khi ho¹t ®éng ë møc High(1) 10-->17 P3.0-->P3.7 Cæng gi¶ hai h­íng P3, s¾p xÕp tÊt c¶ c¸c ®­êng dÉn víi chøc n¨ng ®Æc biÖt 18 XTAL2 Lèi ra cña bé dao ®éng th¹ch anh bªn trong 19 XTAL1 Lèi vµo cña bé dao ®éng th¹ch anh bªn trong 20 Vss Nèi m¸t ( 0V ) 21-->28 P2.0-->P2.7 Cæng gi¶ hai h­íng P2, chøc n¨ng ®Æc biÖt lµ c¸c ®­êng dÉn ®Þa chØ A8..A15 29 |PSEN Progam Strobe Enable, xuÊt ra c¸c xung ®äc dïng cho bé nhí ch­¬ng tr×nh bªn ngoµi 30 ALE Address Latch Enable, xuÊt ra c¸c xung ®iÒu khiÓn ®Ó l­u tr÷ trung gian c¸c ®Þa chØ 31 |EA External Access, khi ®­îc nèi víi m¸t lµ ®Ó lµm viÖc víi ROM ngo¹i vi 32-->39 P1.0-->P1.7 Cæng hai h­íng cùc m¸ng hë P0 hay Bus d÷ liÖu hai h­íng dïng cho ROM, RAM vµ thiÕt bÞ ngo¹i vi ®ång thêi còng chuyÓn giao 8 bit ®Þa chØ thÊp 40 Vdd Nguån nu«i d­¬ng ( +5V ) C¸c ch©n ra cña bé vi ®iÒu khiÓn 8051 gåm cã: *EA: §ãng vai trß quyÕt ®Þnh xem vi ®iÒu khiÓn lµm viÖc víi ch­¬ng tr×nh bªn trong hay bªn ngoµi. Víi lo¹i 8051 kh«ng cã ROM trong th× ch©n nµy ph¶i ®­îc nèi víi m¸t. Lo¹i th«ng th­êng cã thÓ lµm viÖc tuú theo c¸ch lùa chän gi÷a ROM trong hay ROM ngoµi, khi ®ang ë chÕ ®é lµm viÖc víi bé nhí ROM trong, lo¹i cã chøa bé nhí ROM cã thÓ truy nhËp tù ®éng lªn bé nhí ch­¬ng tr×nh bªn ngoµi. *Reset: Tr¹ng th¸i Reset ®­îc thiÕt lËp b»ng c¸ch gi÷ tÝn hiÖu Reset ë møc cao trong thêi gian Ýt nhÊt lµ 2 chu kú m¸y. *ALE: TÝn hiÖu chèt 8 bit ®Þa chØ thÊp trong suèt qu¸ tr×ng truy nhËp bé nhí më réng. Th«ng th­êng tÝn hiÖu ALE ®­îc ph¸t ra víi tÇn sè b»ng 1/6 tÇn sè dao ®éng th¹ch anh vµ cã thÓ sö dông víi môc ®Ých ®Þnh thêi gian hoÆc xung nhÞp ®ång hå ngoµi. Tuy nhiªn, tÝn hiÖu ALE sÏ bÞ bá qua trong mçi qu¸ tr×nh truy nhËp bé nhí d÷ liÖu ngoµi. *PSEN: TÝn hiÖu ®äc bé nhí ch­¬ng tr×nh ngoµi, khi vi ®iÒu khiÓn truy nhËp bé nhí ch­¬ng tr×nh néi th× PSEN ®­îc ®Æt ë møc cao. *XTAL1, XTAL2: Mét bé t¹o tÝn hiÖu gi÷ nhÞp víi tÇn sè ®­îc x¸c ®Þnh bëi bé céng h­ëng th¹ch anh ®­îc l¾p thªm vµo, tÇn sè nµy x¸c ®Þnh tèc ®é lµm cña bé vi ®iÒu khiÓn. Th«ng th­êng c¸c lÖnh ®­îc thùc hiÖn b»ng 1/12 tÇn sè dao ®éng cña th¹ch anh. C¸c bé ®Õm cè thÓ lµm viÖc trong nhiÒu chÕ ®é kh¸c nhau. Khi ho¹t ®éng nh­ lµ bé ®Þnh thêi, c¸c bé ®Õm nhËn ®­îc c¸c xung tõ mét bé chia tr­íc ë bªn trong, bé nµy chia tÇn sè riªng cña bé céng h­ëng th¹ch anh cho 12 . Thay cho mét bé ®Þnh thêi 16 bit, mét bé ®inh thêi 8 bit cã thÓ ®­îc t¹o ra b»ng viÖc n¹p tù ®éng sau khi cÊp nguån, c¸c xung dÉn tõ bªn ngoµi vµo qua T0 vµ T1 còng cã thÓ ®­îc ®Õm, c¸c xung nµy cã tÇn sè cùc ®¹i b»ng 1/24 gi¸ trÞ tÇn sè cña bé céng h­ëng th¹ch anh. *P0..P3: C¸c c«ng vµo/ra. Cæng P3 còng ®¶m nhËn mét sè chøc n¨ng ®Æc biÖt cña bé vi ®iÒu khiÓn : Ch©n Ký hiÖu Chøc n¨ng P3.0 RxD NhËn d÷ liÖu vµo bé nhí qua cæng nèi tiÕp P3.1 TxD TruyÒn d÷ liÖu vµo bé nhí qua cæng nèi tiÕp P3.2 |INT0 Ng¾t ngoµi 0 P3.3 |INT1 Ng¾t ngoµi 1 P3.4 T0 Lèi vµo cña Timer 0 P3.5 T1 Lèi vµo cña Timer 1 P3.6 |WR ViÕt vµo bé nhí P3.7 |RD §äc bé nhí 2.2 Tæ chøc bé nhí: CÊu tróc chung cña bé nhí: TÊt c¶ c¸c vi ®iÒu khiÓn thuéc hä MCS-51 ®Òu ph©n chia bé nhí thµnh hai vïng ®Þa chØ cho bé nhí d÷ liÖu vµ bé nhí ch­¬ng tr×nh. Sù ph©n chia logic gi÷a bé nhí d÷ liÖu vµ bé nhí ch­¬ng tr×nh cho phÐp truy nhËp bé nhí d÷ liÖu b»ng 8 bit ®Þa chØ gióp cho viÖc l­u tr÷ vµ thao t¸c d÷ liÖu nhanh h¬n.Tuy nhiªn, chóng ta cã thÓ sö dông ®Þa chØ bé nhí d÷ liÖu 16 bit th«ng qua thanh ghi DPTR. Bé nhí ch­¬ng tr×nh lµ lo¹i bé nhí chØ cho phÐp ®äc, kh«ng cho phÐp ghi. Mét sè vi ®iÒu khiÓn ®­îc tÝch hîp s½n bé nhí ch­¬ng tr×nh bªn trong víi dung l­îng kho¶ng 4kbyte hay 8 kbyte, sè cßn l¹i ph¶i sö dông bé ch­¬ng tr×nh më réng mµ qu¸ tr×nh truy nhËp ®­îc thùc hiÖn th«ng qua sù ®iÒu khiÓn b»ng tÝn hiÖu PSEN (Progam Strobe Enable). Tuy nhiªn, vi ®iÒu khiÓn 8051 cho phÐp ta sö dông ®Õn 64kbyte bé nhí ch­¬ng tr×nh b»ng c¸ch sö dông c¶ bé nhí ch­¬ng tr×nh bªn trong vµ bªn ngoµi. Bé nhí sè liÖu chiÕm gi÷ vïng ®Þa chØ ph©n chia cña bé nhí ch­¬ng tr×nh. Dung l­îng cña bé nhí d÷ liÖu cã thÓ më réng lªn tíi 64 kbyte. Trong qu¸ tr×nh truy nhËp bé nhí sè liÖu, CPU ph¸t ra c¸c tÝn hiÖu ®äc vµ tÝn hiÖu viÕt sè liÖu th«ng qua c¸c ch©n RD vµ WR. 00H 0000H Bé nhí Ch­¬ng tr×nh Bé nhí Sè liÖu Bé nhí më réng Bé nhí më réng |PSEN |WR |RD FFH |EA=1 Bé nhí trong |EA=0 Bé nhí ngoµi FFFFH H×nh 2.3: CÊu tróc bé nhí cña hä MCS-51. Chóng ta cã thÓ kÕt hîp bé nhí ch­¬ng tr×nh më réng víi bé nhí sè liÖu më réng b»ng c¸ch cho hai tÝn hiÖu RD vµ PSEN qua mét cæng logic AND, lèi ra cña cæng AND nµy sÏ t¹o tÝn hiÖu ®äc cho bé nhí më réng. Bé nhí ch­¬ng tr×nh: Sau khi Reset, CPU b¾t ®Çu thùc hiÖn ch­¬ng tr×nh tõ ®Þa chØ 0000H. Vïng ®Çu cña bé nhí ch­¬ng tr×nh lµ vïng chøa c¸c vector ng¾t, mçi ng¾t ®­îc ph©n chia mét vïng ®Þa chØ cè ®Þnh trong trong bé nhí ch­¬ng tr×nh. Khi xuÊt hiÖn ng¾t, CPU sÏ nh¶y tíi ®Þa chØ nµy, ®©y còng lµ ®Þa chØ ®Çu cña ch­¬ng tr×nh con phôc vô ng¾t. C¸c vector ng¾t c¸ch nhau 8 byte, v× vËy nÕu ch­¬ng tr×nh con phôc vô ng¾t qu¸ dµi (>8 byte) th× t¹i vector ng¾t ta ph¶i ®Æt mét lÖnh nh¶y kh«ng ®iÒu kiÖn tíi vïng ®Þa chØ kh¸c chøa ch­¬ng tr×nh con phôc vô ng¾t. Bé nhí sè liÖu: PhÝa bªn ph¶i cña H×nh 2.3 biÓu diÔn kh«ng gian bé nhí d÷ liÖu cña MCS-51. Chóng ta cã thÓ sö dông tíi 64 Kbyte bé nhí sè liÖu ngo¹i vi. §é réng bus ®Þa chØ cña bé nhí sè liÖu ngoµi cã thÓ lµ 8 bit hoÆc 16 bit. Bus ®Þa chØ réng 8 bit th­êng ®­îc sö dông ®Ó liªn kÕt víi mét hoÆc nhiÒu ®­êng vµo ra kh¸c ®Ó ®Þnh ®Þa chØ cho RAM theo trang. Trong tr­êng hîp bus ®Þa chØ réng 16 bit, cæng P2 sÏ ph¸t ra 8 bit ®Þa chØ cao cßn cæng P1 sÏ ph¸t ra 8 bit ®Þa chØ thÊp. B»ng c¸ch nµy, ta cã thÓ truy nhËp trùc tiÕp lªn bé nhí d÷ liÖu ngoµi víi ®é lín tèi ®a lµ 64 Kbyte. Bé nhí sè liÖu trong ®­îc chia ra lµm 3 vïng: +128 byte cao. +128 byte thÊp. +Vïng dµnh cho c¸c thanh ghi chøc n¨ng ®Æc biÖt (SFR). §Þa chØ cña bé nhí sè liÖu trong lu«n lµ 8 bit, vµ cã thÓ qu¶n lý ®­îc 256 byte bé nhí. Tuy nhiªn, trªn thùc tÕ c¸ch ®Þnh ®Þa chØ cña bé nhí RAM trong cã thÓ qu¶n lý tíi 384 byte. B¶n ®å bé nhí trªn chÝp: 7F FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B RAM ®a dông E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW 30 B8 - - - BC BB BA B9 B8 IP 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P.3 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 A8 AF AC AB AA A9 A8 IE 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 99 Kh«ng ®­îc ®Þa chØ ho¸ bit SBUF 27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 8D Kh«ng ®­îc ®Þa chØ ho¸ bit TH1 22 17 16 15 14 13 12 11 10 8C Kh«ng ®­îc ®Þa chØ ho¸ bit TH0 21 0F 0E 0D 0C 0B 0A 09 08 8B Kh«ng ®­îc ®Þa chØ ho¸ bit TL1 20 07 06 05 04 03 02 01 00 8A Kh«ng ®­îc ®Þa chØ ho¸ bit TL0 1F Bank 3 89 Kh«ng ®­îc ®Þa chØ ho¸ bit TMOD 18 88 8F 8E 8D 8C 8B 8A 89 88 TCON 17 Bank 2 87 Kh«ng ®­îc ®Þa chØ ho¸ bit PCON 10 0F Bank 1 83 Kh«ng ®­îc ®Þa chØ ho¸ bit DPH 08 82 Kh«ng ®­îc ®Þa chØ ho¸ bit DPL 07 Bank thanh ghi 0 81 Kh«ng ®­îc ®Þa chØ ho¸ bit SP 00 (MÆc ®Þnh cho R0 -R7) 88 87 86 85 84 83 82 81 80 P0 Thanh ghi ghi chøc n¨ng ®Æc biÖt (SFR= Special Function Registers): Vi ®iÒu khiÓn 8051 lµ mét bé vi ®iÒu khiÓn ®a n¨ng víi nhiÒu chÕ ®é ho¹t ®éng kh¸c nhau ®­îc thiÕt lËp th«ng qua c¸c thanh ghi chøc n¨ng ®Æc biÖt SFRs. C¸c thanh ghi chøc n¨ng ®Æc biÖt cña vi ®iÒu khiÓn 8051 gåm cã: +P0, P1, P2, P3: C¸c cæng vµo ra, mçi bÝt øng víi 1 ch©n cña vi ®iÒu khiÓn. C¸c ch©n nµy ho¹t ®éng ë møc logic ©m. +SP (Stack Pointer): §©y lµ con trá ng¨n xÕp cña vi ®iÒu khiÓn. Thanh ghi nµy cho biÕt ®Þa chØ truy nhËp tiÕp theo trong bé nhí RAM. +DPH, DPL (Data Pointer High, Data Pointer Low): T¹o thµnh 1 cÆp thanh ghi con trá d÷ liÖu DPTR 16 bit. +PCON (Power Control): Thanh ghi nµy ®­îc sö dông ®Ó ®iÒu khiÓn c«ng suÊt cña vi ®iÒu khiÓn. Ngoµi ra bit PCON.7 con cho phÐp sñ dông ®Ó t¨ng gÊp ®«i tèc ®é baud khi truyÒn qua cæng nèi tiÕp. +TCON (Timer Control): ThiÕt lËp cÊu h×nh lµm viÖc cho bé Timer/Counter. +TMOD (Timer Mode): X¸c ®Þnh chÕ ®é lµm viÖc cho tõng bé Timer/Counter. +TL0/TH0 (Timer 0 Low/High): CÆp thanh ghi t­¬ng øng víi Timer0. +TL1/TH1 (Timer 1 Low/High): CÆp thanh ghi t­¬ng øng víi Timer1. +SCON (Serial Control): ThiÕt lËp cÊu h×nh cho cæng nèi tiÕp. +SBUF (Serial Buffer): Bé ®Öm khi truyÒn hoÆc nhËn d÷ liÖu qua cæng nèi tiÕp. +IE (Interrupt Enable): Cho phÐp ng¾t hoÆc cÊm ng¾t. +IP (Interrupt Priority): ThiÕt lËp møc ­u tiªn cho c¸c ng¾t. +PSW (Program Status Word ): Thanh ghi tõ tr¹ng th¸i ch­¬ng tr×nh l­u tr÷ mét sè bit quan träng ®­îc ®Æt hoÆc xo¸ bëi c¸c lÖnh cña 8051: cê nhí, cê nhí phô, cê trµn vµ cê ch½n lÎ. Ngoµi ra, 2 bit RS0 vµ RS1 trong PSW cßn cho phÐp chän b¨ng thanh ghi ®Ó lµm viÖc trong bé nhí RAM trong. +ACC (Accumulator): Thanh ghi tÝch luü, ®©y lµ mét trong nh÷ng thanh ghi ®­îc sö dông nhiÒu nhÊt trong vi ®iÒu khiÓn 8051. Thanh ghi nµy cã ký hiÖu lµ A. +B (B Register): Thanh ghi B ®­îc sö dông khi thùc hiÖn c¸c phÐp to¸n nh©n, chia vµ còng cã thÓ ®­îc dïng nh­ thanh ghi phô hay thanh ghi l­u tr÷ sè liÖu t¹m thêi. C¸c thanh ghi chøc n¨ng ®Æc biÖt sÏ cã thÓ ®­îc nhËn mét tr¹ng th¸i nµo ®ã cè ®Þnh mçi khi vi ®iÒu khiÓn Reset (tuú thuéc vµo mçi thanh ghi). Sau ®©y lµ b¶ng tr¹ng th¸i cña c¸c thanh ghi ngay sau khi Reset: B¶ng 2.2: Tr¹ng th¸i khi reset cña c¸c thanh ghi. Register Reset to Register Reset to Register Reset to A 00H P2 FFH SCON 00H B 00H P3 FFH TCON 00H DPTR 00H PCON 0.......B TMOD 00H IE 0..00000B 0...0000B TH0 00H IP ...00000B PSW 00H TH1 00H P0 FFH SP 07H TL0 00H P1 FFH SBUF ..H TH1 00H 2.Khối hiÓn thÞ Nối ghép LCD với vi xử lý 8051: LCD gồm có hai hàng hàng đơn vị, hàng chục, hàng trăm. Hàng đầu là giá trị nhập vào ®Ó động cơ chạy, hàng thứ hai là giá trị mà thực chất động cơ chạy và được hiển thị trên LCD. Hoạt động của LCD: Trong những năm gần đây, màn hình tinh thể lỏng LCD (Liquid Crystal Display) ngày càng được sử dụng rộng rãi và đang dần thay thế các đèn LED (7 thanh và nhiều thanh). Đó là do các nguyên nhân sau: -Màn hình LCD có giá thành hạ -Khả năng hiển thị số, ký tự và đồ hoạ tốt hơn nhiều so với đèn LED (đèn LED chỉ hiển thị được số và một số ký tự). -Sử dụng thêm một bộ điều khiển làm tươi LCD và như vậy giải phóng CPU khỏi công việc này. Còn đối với đèn LED luôn cần CPU (hoặc bằng cách nào đó) để duy trì vieec hiển thị dữ liệu. -Dễ dàng lập trình các ký tự và đồ hoạ. Mô tả chân của LCD: LCD giới thiệu ở đây có 14 chân. Chức năng của các chân được trình bày trong bảng như sau: Chân Ký hiệu I/O Mô tả 1 VSS - Đất 2 VCC - Dương nguồn +5V 3 VEE - Nguồn điều khiển tương phản 4 RS I RS = 0 chọn thanh ghi lệnh RS = 1 chọn thanh ghi dữ liệu 5 R/W I R/W = 1 đọc dữ liệu R/W = 0 ghi 6 E I/O Cho phép 7 DB0 I/O Bus dữ liệu 8 bits 8 DB1 I/O Bus dữ liệu 8 bits 9 DB2 I/O Bus dữ liệu 8 bits 10 DB3 I/O Bus dữ liệu 8 bits 11 DB4 I/O Bus dữ liệu 8 bits 12 DB5 I/O Bus dữ liệu 8 bits 13 DB6 I/O Bus dữ liệu 8 bits 14 DB7 I/O Bus dữ liệu 8 bits RS (Register Select) - chọn thanh ghi: Có hai thanh ghi rất quan trọng bên trong LCD. Chân RS được dùng để chọn các thanh ghi này. Nếu RS = 0 thì thanh ghi mã lệnh được chọn, cho phép người dùng gửi một lệnh chẳng hạn như xoá màn hình, đưa con trỏ về đầu dòng v.v…Nếu RS = 1 thì thanh ghi dữ liệu được chọn và cho phép người dùng gửi dữ liệu cần hiển thị lên LCD. R/W (Read/Write) – chân đọc/ghi: Chân vào đọc/ghi cho phép người dùng đọc/ghi thông tin từ/lên LCD. R/W = 0 thì đọc, R/W = 1 thì ghi. E (Enable) – chân cho phép: Chân E được LCD sử dụng để chốt thông tin hiện có trên chân dữ liệu. Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức Cao-xuống-thấp được áp đến chân E để LCD chốt dữ liệu trên chân dữ liệu. Xung này phải rộng tối thiểu 450ns. 6.D0 – D7: Đây la 8 chân dữ liệu 8 bits, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong LCD. Để hiển thị chữ cái và con số, mã ASCII của các chữ cái từ A đến Z, a đến z, và các con số tự 0 – 9 được gửi đến các chân này khi RS = 1. Cũng có các mã lệnh được gửi đến LCD để xoá màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ. Cũng có thể sử dụng RS = 0 để kiểm tra bit cờ bận xem LCD đã sẵn sàng nhận thông tin chưa. Khi R/W = 1 và RS = 0 thì cờ bận D7 thực hiện các chức năng như sau: Nếu D7 = 1 (cờ bận bằng 1) có nghĩa LCD đang bận các công việc bên trong và sẽ không nhận bất kỳ thông tin mới nào, còn nếu D7 = 0 thì LCD sẵn sàng nhận thông tin mới. Trong mọi trường hợp cần kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu nào lên LCD. -LCD ghÐp nèi víi c¸c cæng p1.0…..p1.7 cæng p1 lµ cæng d÷ liÖu dïng ®Ó chuyÔnd÷ liÖuvµ chªnh lÖch gi¸ trÞ , 3ch©n EN ,RW,RS ®­îc nèi víi c¸c ch©n cña vi xö lý cã nhiÖm vô nh­ ®· nãi ë trªn ,ch©n thø 15,16 l¾p cho ®Ìn LCD (ë ®©y ta kh«ng dïng ) 3 .Phần đo động cơ (khèi sensor) Về phần này thì gồm có những bộ phận sau: + Bộ thu phát hồng ngoại làm nhiệm vụ thu nhận tốc độ động cơ bằng Diode thu phát quang đÓ đếm số vòng quay của động cơ qua một đĩa chắn quang gắn vào trục của motơ + Bộ so sánh ngưỡng LM324 làm nhiệm vụ chuyển tín hiệu từ bộ thu phát hồng ngoại thành tín hiệu TTL tương ứng đưa vào 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 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 xung của vi xử lí thông qua các xung của bộ sensor thu phát ( ứng với mỗi vòng quay của động cơ sensor sẽ phát 1 xung đưa về bộ đếm của vi xử lí) . Thông qua chương trình được lập trình sẵn trong vi xử lí ,mạch đếm sẽ tính toán số liệu đo được và cho hiển thị kết quả. Với khả năng lập trình được vi xử lí cho phép tự động chọn thang đo ( có thể thay đổi khoảng thời gian trong phép đo từ đó thay đổi thang đo theo giây hay phút ...) . Ngoài ra , vi xử lí còn cho phép phát triển thêm các tính năng của mạch như điều khiển tốc độ của động cơ khi cần thiết , lưu giữ các kết quả của các phép đo trước đó mở rộng khả năng ứng dụng trong nhiều lĩnh vực của mạch ( đo tần số , đo chu kì...) . Nhờ sử dụng xung động bộ của thạch anh có độ chính xác và ổn định cao nên vi xử lí cho phép loại bỏ sai số của hệ thống do sự “ chậm ” của thời điểm “mở” và “đóng” các xung của tín hiệu đi vào mạch tính toán. 4.Phần động lực mạch cầu H 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: 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 và dương của nguồn. Chú ý là chỉ một MOSFET ở mỗi bên của động cơ được bật lên tại một thời điểm nếu không nó sẽ ngắn mạch và cháy. Để động cơ chạy theo chiều thuận, Q4 được bật, Q1 có tín hiệu điều chế độ rộng xung PWM. Dòng điện được chỉ ra trong hình dưới đây. Q4 được giữ sao cho khi tín hiệu PWM mất đi, dòng điện tiếp tục chảy quanh vòng cuối quan đi ốt bên trong của Q3. Để động cơ chạy theo chiều ngược, Q3 được bật lên, Q2 có tín hiệu PWM: Q3 được giữ sao cho khi tín hiệu PWM mất đi, dòng điện tiếp tục chảy trong vòng cuối của điốt trong Q4: Để phục hồi, ví dụ như khi động cơ đang quay theo chiều nghịch, động cơ (bây giờ đang hoạt động như một máy phát) cho dòng điện chảy qua phần ứng, qua điốt của Q2, qua nguồn (và do đó nạp cho nó) và quay lại qua điốt của Q3: 5.PhÇn nhËp gi¸ trÞ tèc ®é ban ®Çu : Khèi nµy t­¬ng ®èi ®¬n gi¶n nã chØ gåm cã c¸c nót bÊm hµng ®¬n vÞ hµng chôc hµng tr¨m hµng ngh×n vµ hµng v¹n ,nót reset ,pause , ®¶o chiÒu vµ nót start.nã ®­îc nèi th«ng qua c¸c ®iÖn trë R1 vµo cac ch©n p0.0 ®Õn p0.7 ta nhËp c¸c sè vµo nót bÊm d÷ liÖu. 6.Khèi ®éng c¬ : H Hoạt động của động cơ được xác định mỗi khi có sự thay đổI tín hiệu xung nhận được khi có chùm sáng từ cảm biến phát quang chiếu qua khe đạt trên cánh động cơ xuống cảm biến thu quang .Tín hiệu thu được từ bộ cảm biến hồng ngoạI có tính chất tuần hoàn do động cơ hoạt động theo chu kì .Chính vì vậy , ta có thể xác định số vòng quay trong 1s. Tín hiệu thu đựơc từ bộ cảm biến chưa ổn định do nhiều nguyên nhân khác nhau. Tín hiệu này được đưa vào IC khuếch đạI thuật toán để xử lý .Giá trị điện áp tín hiệu được khuếch đạI lên khoảng 12V tạI đây tín hiệu được đưa vào chân p3.0 chờ xử lý. Vi xử lý AT89c51 được lập trình vớI đầu vào p3.0 .Port vào ra + Port 0 : hàng đơn vị + Port 1: hàng chục + Port 2: hàng trăm Đặc điểm nổi bật của họ vi xử lý 8051 là khả năng xử lý dữ liệu theo từng bít .Vì vậy các bít được lập trình sau đó được xuất trực tiếp ra các chân cua LCD mà không cần thông phải qua bộ giải mã 74ls47 . Chu kỳ lấy mẫu 1 s như vậy tốc độ động cơ được xác định bằng : Tốc độ động cơ =( tæng sè xung /1 s)/6 7.Khèi nguån Nguồn điện được thiết kế riêng sử dụng IC 7805 cho phép cung cấp điện áp ổn định 5 V với điện áp vào thay đổi từ 9 –12 V. Mạch nguồn được thiết kế nhằm giảm thiểu sai số do sự không ổn định của điện áp cung cấp cho mạch đếm và hạn chế sự ra tăng điện áp đột ngột gây hỏng linh kiện, cô thÓ lµ 2 tô C3 vµ C38 cã nhiÖm vô æn ¸p tr¸nh dao ®éng do dßng ®iÖn, hoÆc c¸c hiÖn t­îng sôt ¸p, ngoµi ra con diÖn trë R6 vµ con led cã nhiÖm vô lµ b¶o vÖ nguån III, Phần mềm thực hiện thuật toán: 1. Lưu đồ thuật toán. Begin NhËp tèc ®é, ®­a ra LCD T¨ng ®é réng xung Gi¶m ®é réng xung LÊy tÝn hiÖu tõ sensor, ®­a ra LCD §­a ra ®éng c¬ TÝnh ®é réng xung Thay ®æi gi¸ trÞ hay kh«ng Nhá h¬n sai sè cho phÐp Lín h¬n sai sè cho phÐp p Mã nguồn chương trình: IV .Thiết kế mạch Sơ đồ mạch in V. Đánh giá sai số của mạch điện: a)Sai số hệ thống: a1. Sai số do linh kiện. Mạch điện có sử dụng một số linh kiện điện tử , các linh kiện này trong điều kiện thường đều có các sai số. VD : trong vi xử lí 89c51 mỗi câu lệnh đều yêu cầu một thời gian trễ nhất định để thực hiện thời gian này lại phụ thuộc vào xung của bộ dao động thạch anh ( có sai số trong quá trình sản xuất ) điều này gây ảnh hưởng đến thời gian đếm các xung không còn chính xác như với hàm Delay : bộ định thời làm việc với tần số bằng 1/12 tần số thạch anh tức là bằng 12/12= 0.1 Mhz . Kết quả là mỗi nhịp xung đồng hồ có chu kỳ T = 1/f = 1 Ms như vậy bộ đếm sẽ tiến hành đếm tăng sau mỗi chu kỳ T với dộ trễ được tính = số đếm * 1 Ms. Ngoài ra khi tín hiệu qua bộ khuếch đại và qua cổng NOT có sự trễ do thời gian đóng mở của linh kiện dẫn đến sự mất đồng bộ về thời gian gây sự chuyển trạng thái của tín hiệu một cách ngẫu nhiên gây sai lệch trong phép đếm xung (còn gọi là sai số +1). a2. Sai số của nguồn tín hiệu Nguồn tín hiệu được tạo ra từ mạch sensor thu phát hồng ngoại . Mức điện áp khi có tín hiệu ( đã qua khuếch đại) là 3,5 - 4 V còn khi không có tín hiệu là 0- 2,5 V .Tuy nhiên trong quá trình thu phát tín hiệu do động cơ quay với tốc độ khá cao dẫn đến sự chuyển mức không kịp đáp ứng tạo nên một dãy các xung ứng với mức “1” hoặc “0” mặc dù mức điện áp không nằm trong các mức này. Đây chính là nguyên nhân chính gây ra sai số của mạch điện. a3. Sai số do cách xử lí kết quả đo Trong quá trình đo chưa tính được các thông số kí sinh của mạch. Trong chương trình chưa xem xét đến độ trễ của các câu lệnh, chưa tìm được cách xử lí độ nhiễu của tín hiệu. Mạch tạo nguồn tín hiệu bằng sensor , mức tín hiệu chuẩn trong khoảng cách 5cm ,độ ổn định chưa cao còn chịu ảnh hưởng của nguồn sáng bên ngoài ( ánh sáng tự nhiên , ánh sáng đèn...). Trong bài tập này ánh sáng phòng có ảnh hưởng lớn đến sai số trong phép đo vì nó can nhiễu đến sự thu nhận của sensor . Tuy nhiên điều này được hạn chế bằng mạch khống chế độ nhạy sensor . b. Sai số ngẫu nhiên. Trong qua trình đo động cơ có độ rung nhất định ( tuỳ thuộc vào mức điện áp cung cấp) dẫn đến sự sai khác trong việc thu và xử lí tín hiệu của sensor. Điều kiện bên ngoài cũng có ảnh hưởng đến mạch : độ sáng , độ ẩm... Nguồn điện cung cấp cho mạch không ổn định dẫn đến điều kiện làm việc của các thiết bị không còn chính xác. Bên cạnh đó trong quá trình đo còn có sai số do chủ quan của người đo : không giữ đúng khoảng cách sensor thu phát , không cẩn thận trong qua trình đo . 5. Một số kết quả đo được Với nguồn cung cấp cho động cơ : 12V lần 1 : nhËp gi¸ trÞ ®Çu vµo : 5999 vòng /1ph gi¸ trÞ ®o ®­îc : 5975vßng /1 ph lần 2 : : 3500 vòng / 1ph 3494vßng /1ph lần 3 : 2000 vòng / 1ph 1980 vßng/1ph Sai số tương đối : 0.5% VI. Kết Luận Nhận xét về mạch: a. Ưu điểm: Mạch đơn giản, dễ lắp đặt sửa chữa,chi phí thấp. - Mạch cho phép đo được tốc độ của nhiều loại động cơ,với khoảng giới hạn lớn - Mạch có độ chính xác tương đối, có khả năng phát triển thêm các chức năng ( kết nối máy tính,...). Có khả năng ứng dụng trong thực tế: Như trong việc hiển thị tốc độ của một số loại máy ,điều khiển được tốc độ của máy móc theo ý muốn của người sử dụng. M¹ch ch¹y t­¬ng ®èi æn ®Þnh ,dïngphèi hîp trë kh¸ng vµ m¹ch cÇu H Mạch sử dụng các đot phát quang dựa trên sự tái hợp của điện tử và lỗ trống của lớp tiếp xúc PN. b. Khuyết điểm: - Mạch còn sai số do linh kiện: - Chịu ảnh hưởng của nhiễu do ánh sáng đến khối thu phát của sensor. - Sensor chỉ cho phép đo trong khoảng cách tương đối ngắn. 2. Phương án cải tiến. - Cải thiện khả năng của khối thu phát: nâng cao khả năng chống nhiễu cũng như khả năng thu phát của sensor (tăng khuyếch đại, sử dụng sensor thu phát trực tiếp). - Thêm một số tính năng : + Sử dụng phương pháp điều khiển tốc độ bằng phương pháp thay đổi độ rộng xung PWM. + Thêm khả năng lưu giữ các giá trị đa đo khi cần có thể xuất ra hiển thị bằng các nút bấm. VII.Xu h­íng ph¸t triÓn cña ®Ò tµi -S¶n phÈm cã thÓ ®­îc ph¸t triÓn thªm c¸c chøc n¨ng ®o kh¸c nh­ ®o nhiÖt ®é, ®é Èm ,¸p suÊt vµ ®iÒu khiÓn, khèng chÕ ®­îc .H¬n n÷a c¸c chøc n¨ng cã thÓ liªn quan ®Õn nhau bæ trî vµ kiÓm so¸t lÉn nhau theo yªu cÇu cña ng­êi sö dông -S¶n phÈm sÏ ph¸t triÓn thµnh mét m¸y cã thÓ ®o c¸c lo¹i ®éng c¬ lín h¬n ,®ång thêi nh­ng cã h­ãng xö lý kh¸c nhau cho tõng lo¹i tèc ®é ,tõng thêi gian kh¸c nhau ta cã thÓ ph¸t triÓn thµnh mét m¸y ®o ®­îc cµi vµ thùc hiÖn mäi ch­ong tr×nh ®­îc nhËp vµo m¸y, trong mét quy tr×nh c«ng nghiÖp Lêi kÕt Qua thêi gian 10 tuÇn lµm bµi tËp lín lµ m«t kho¶ng th¬ig gian ng¾n nh­ng còng ®· gióp chóng em hiÓu thªm vÒ viÖc thiÕt kÕ mét hÖ thèng trong c«ng nghiÖp cã sö dông vi ®iÒu khiÓn ®Æc biÖt lµ vi ®iÒu khiÓn 8051. Trong c«ng nghiÖp hiÖn nay viÖc ®­a c¸c vi ®iÒu khiÓn vµo ®Ó t¹o ra c¸c thiÕt bÞ th«ng minh lµ cÇn thiÕt. Tõ ®ã c¸c hÖ thèng ®­îc tao ra sÏ gon nhÑ h¬n vµ gi¶i quyÕt nhiÖm vô nhanh h¬n, dÔ dµng h¬n. Trong thiÕt kÕ hÖ thèng nµy ®· ®¸p øng ®­îc yªu cÇu cña bµi to¸n ®Æt ra, vËn dông tèt nh÷ng tÝnh n¨ng ­u viÖt cña vi ®iÒu khiÓn 8051 còng nh­ kÕt nèi c¸c thiÕt bÞ ®­îc sö dông mét c¸ch hîp lý. Nhê viÖc lµm bµi tËp lín nay ma chung em cã hiÓu ®­îc nh­ng phÇn lý thuyªt ®· ®­îc häc. Chóng em ®· hoµn thµnh viÖc thiÕt kÕ ®o vµ ®iÒu khiÓn ®éng c¬ mét chiÒu lo¹i nhá. Nh­ng do thêi gian cã h¹n vµ kiÕn thøc thùc tÕ ch­a cã nªn viÖc t×m hiÓu còng nh­ vËn dông cßn nhiÒu h¹n chÕ, chóng em rÊt mong ®­îc sù gãp ý cña c¸c thÇy ®Ó m¹ch thiÕt kÕ ®­îc hoµn thiÖn h¬n. Chung em rÊt c¸m ¬n sù gióp ®ì nhiÖt t×nh cña c¸c b¹n cïng líp dÆc biÖt lµ thÇy Tu©n –thÇy gi¸o d¹y m«n §o l­êng ®iÒu khiÓn tù ®éng -®· truyÒn ®¹t nh÷ng kiÕn thøc g»n gòi vµ t¹o ®iÒu kiÑn hÕt søc cho chung em hoµn thµnh ®ùoc bµi tËp nµy. VIII. Tài liệu tham khảo 1 - Kỹ thuật mạch điện tử .......................................... Phạm Minh Hà. 2 - Kỹ thuật số ............................................................ Nguyễn Thúy Vân. 3 - Kỹ thuật đo lường điện tử ......................................Vũ Quý Điềm. 4- Cấu trúc và lập trình vi điều khiển 8051…………Nguyễn Tăng Cường Phan Quốc Thắng. 5- Lập trình họ vi điều khiển 8051…………………..Tống Văn On.

Các file đính kèm theo tài liệu này:

  • docdo luong va tu dong dieu khien.doc