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 độ.
44 trang |
Chia sẻ: banmai | Lượt xem: 2765 | Lượt tải: 1
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 nhng 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; nhng 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 trng 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 ®Ó lu 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 lu 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 lu 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 lu 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 nhng 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 chong 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 nhng 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 nhng 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á. Nhng do thêi gian cã h¹n vµ kiÕn thøc thùc tÕ cha 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:
- do luong va tu dong dieu khien.doc