Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
1,02 MB
Nội dung
Đolườngvàtựđộngđiềukhiển
1
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àiliệu tham khảo………………………………………………………
Đolườngvàtựđộngđiềukhiển
2
BÁO CÁO BÀI TẬP LỚN
Đo vàđiềukhiển tốc độđộng cơ dùng vi điềukhiể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ềukhiể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ườngvàđiều
khiển tự động” chúng em thực hiện đề tài: ĐovàĐiềukhiể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 : Đovàđiềukhiể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ể
Đolườngvàtựđộngđiềukhiển
3
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ềukhiể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ềukhiể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ềukhiển 8051 cùng với các họ vi điềukhiể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ềukhiể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.
Đolườngvàtựđộngđiềukhiển
4
+ Thứ ba là, vi điềukhiể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ềukhiể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ềukhiể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%.
Đolườngvàtựđộngđiềukhiển
5
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)
Đolườngvàtựđộngđiềukhiển
6
//}}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);
Đolườngvàtựđộngđiềukhiển
7
//{{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()
{
Đolườngvàtựđộngđiềukhiển
8
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;
Đolườngvàtựđộngđiềukhiển
9
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;
Đolườngvàtựđộngđiềukhiển
10
// 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;
[...]... lườngvàtựđộngđiềukhiển Khối nhập dữ liệu Khối nguồn Khối xử lý trung tâm Khối khuếch đại Khối hiển thị (LCD) Khối mạch động lực Khối thu phát Động cơ 17 Đolườngvàtựđộngđiềukhiển Sơ đồ nguyên lý 18 Đolườngvàtựđộngđiềukhiển III.Phân tích chức năng từng khối a Khối vi xử lý b Khối hiển thị c.Khối nhập giá trị tốc độ d.Khối đo tốc độđộng cơ e.Khối động lực g.Khối nguồn h.Khối động cơ IV.Giới... không thật sự đo tốc độđộng cơ Nếu có thì goi là điềukhiển tốc độ có phản hồi hoặc điềukhiển tốc độ vòng kín, nếu không thì gọi là điềukhiển tốc độ vòng mở Điềukhiể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ềukhiển tốc độ của động cơ với các dạng khác nhau là khác nhau 2 Lý thuyết điềukhiển tốc độđộng cơ một chiều: Tốc độ của động cơ một chiều... 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ềukhiển hoạt động của vi điềukhiển *Bộ nhớ số liệu: 23 Đolườngvàtựđộngđiềukhiển Bộ nhớ số liệu thường là bộ nhớ RAM (Ramdom Acces Memory), bộ nhớ số liệu dùng để cất giữ... 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: 22 Đo lườngvà tự độngđiềukhiển Khối xử lý trung tâm nhận trực tiếp xung nhịp từ bộ tạo dao động được lắp thêm vào, linh kiện phụ trợ có thể là một khung dao động làm bằng tụ gốm hoặc thạch anh Ngoài ra, còn có thể đưa một tín hiệu giữ nhịp từ bên ngoài vào *Khối điềukhiển ngắt:... 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ềukhiể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 19 Đo lườngvà tự độngđiềukhiểnđộng cơ thật nhanh Nếu động tác tắt này đủ nhanh thì động cơ không kịp nhận... chân P1.0 của vi điều khiển. LM 324 có nhiệm vụ khuyếch đại thuật toán 74HC14 trigosmith hoạt động theo sườn tránh các hoạt động dao động trên đường truyền JP1s 2 2 - U3 TLP621 74HC14 r3s 2 7 LM324 1 2 3 p33.4 4 1 Grd D3s CON3 LED 35 3 1 11 J2s U2AsA R4s 3 + Cs1 10k C U1AsA 1 Rs1 5V 14 4 R2s Đo lườngvà tự độngđiềukhiể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... đọc dữ liệ ệu R/W = 0 ghi 6 E I/O Cho phé O ép 7 DB0 I/O Bus dữ l 8 bits D O liệu 8 DB1 I/O Bus dữ l 8 bits D O liệu 9 DB2 I/O Bus dữ l 8 bits D O liệu 33 Đo lườngvà tự độngđiềukhiển 10 11 12 13 14 DB3 DB4 DB5 DB6 DB7 I/O I/O I/O I/O I/O Bus dữ liệu 8 bits Bus dữ liệu 8 bits Bus dữ liệu 8 bits Bus dữ liệu 8 bits Bus dữ liệu 8 bits 3 RS (Register Select) - chọn thanh ghi: Có hai thanh ghi rất quan... dữ liệu ngoài *PSEN: Tín hiệu đọc bộ nhớ chương trình ngoài, khi vi điềukhiể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 độ 25 Đolườngvàtựđộngđiềukhiển làm của bộ vi điềukhiển Thông thường các lệnh được thực hiện bằng 1/12 tần số dao động. .. CMoPhongDlg::OnTimer(UINT nIDEvent) 13 Đo lườngvà tự độngđiềukhiển { if(temp==TRUE) { m_degree++; if(m_degree>=120) m_degree=0; } else { m_degree ; if(m_degree . 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. hiển
thị (LCD)
Khối mạch
động lực
Đo lường và tự động điều khiển
18
Sơ đồ nguyên lý.
Đo lường và tự động điều khiển
19
III.Phân tích