Nội dụng báo cáo bao gồm: Mạch nguồn 12V bảo vệ quá dòng 3A, quá áp.Sơ đồ nguyên lý, giải thích hoạt động của mạch cũng như chức năng, đo kiểm tra các linh kiện trong mạch và kiểm tra linh kiện trước khi lắp vào mạch, quá trình thi công mạch.
Trang 1Khoa điên tử viễn thông Đại học Bách Khoa Đà Nẵng
4-2016
Báo cáo cá nhân THỰC TẬP CÔNG NHÂN
Trang 2I Đề tài.
- Đề tài của nhóm: Lò vi sinh
- Nhiệm vụ cá nhân:
Làm mạch: mạch nguồn
Lập trình: giao tiếp máy tính
II Làm mạch.
1 Nhiệm vụ:
Mạch nguồn: yêu cầu điện áp cung cấp một chiều 12V, có bảo vệ quá áp 12.5V
và bảo vệ quá dòng 2A Nguồn cung cấp lấy từ nguồn điện xoay chiều 220V
2 Sơ đồ khối.
3 Nhiệm vụ từng khối và lựa chon linh kiện sử dụng.
a Khối tạo điện áp một chiều 24V
- Nhằm tạo điện áp một chiều để cung cấp cho các khối sau của mạch nguồn
- Khối này sử dụng một biến áp 220-18V chịu được dòng >2A để tạo ra điện áp 18V xoay chiều Sử dụng một cầu diode và tụ 10000u để lọc phẳng tín hiệu xoay chiều thành tín hiệu một chiều Chọn cầu diode chịu được 5A Tụ chịu được điện áp
>30V ( chọn tụ chịu được 63V)
b Khối tạo điện áp 12V cấp cho LM358.
Khối tạo điện áp một chiều 12V cấp cho LM358
Khối bảo vệ áp
Khối bảo vệ dòng
Khối tạo điện áp một chiều 12V cấp cho động cơ
Khối tạo điện áp một chiều 12V cấp cho IC
Khối tạo điện áp một chiều 24V từ nguồn 220V
Trang 3- Nhiệm vụ tạo điện áp cung cấp cho LM358 trong mạch bảo vệ dòng và bảo vệ áp
và cung cấp điện áp vào so sánh cho LM358
- Khối này sử dụng LM7812 và các tụ điện ngõ vào, ra Chọn 2 tụ ngõ vào và 2 tụ ngõ ra Một tụ phân cực 100u và một tụ gốm 100n
c Khối tạo điện áp 12V cấp cho IC.
-Nhiệm vụ khối này là tạo ra điện áp 12V để cung cấp cho các khối ổn áp của IC trong mạch
- Khối này sử dụng một LM317T để tạo điện áp ra và các điện trở, biến trở, tụ lọc
và một BJT để gánh dòng Chọn biến trở 5k, điện trở 220 ôm và tụ 0.1u 1u BJT chọn loại chịu được dòng lớn (chọn TIP41C chịu được 6A)
d Khối tạo điện áp 12V cung cấp cho động cơ
- Khối này có nhiệm vụ tạo ra điện áp ổn định 12V cung cấp cho động cơ ( quạt, đèn, phun sương) Khối này cần phải được bảo vệ quá dòng và quá áp để đảm bảo
an toàn cho tải
- Khối này sử dụng một LM317T để tạo điện áp ra và các điện trở, biến trở, tụ lọc
và một BJT để gánh dòng Chọn biến trở 5k, điện trở 220 ôm và tụ 0.1u 1u BJT chọn loại chịu được dòng lớn (chọn TIP41C chịu được 6A)
e Khối bảo vệ áp.
- Khối này có nhiệm vụ ngắt mạch khi điện áp ra vượt quá mức cho phép (13V) đảm bảo an toàn cho tải khi có sự cố xảy ra
- Khối này sử dụng 1 LM358 để so sánh điện áp ra với mức ngưỡng, các điện trở để phân cực, BJT C1815 để kích ngắt role và một role để ngắt mạch khi điện áp ra vượt quá 13V
f Khối bảo vệ dòng.
- Nhiệm vụ khối này là bảo vệ tải khi dòng điện qua tải vượt quá mức quy định ( 2A) đảm bảo an toàn cho tải
- Sử dụng 2 LM358 một để khuếch đại một để so sánh, một thyristor để kích dẫn role, một role để ngắt mạch khi dòng ra vượt quá ngưỡng (2A), và các trở để phân cực cho LM358
Trang 44 Nguyên lí hoạt động của mạch Sơ đồ mạch tổng thể.
- Điện áp xoay chiều qua khối chỉnh lưu gồm cầu diode với tụ lọc nguồn tạo ra điện áp một chiều cung cấp cho các IC ổn áp
- Sau khi qua các IC LM7812, LM3177 sẽ tạo ra các điện áp ổn đình là 12V ( điện áp ra ở khối LM317 có thể điều chỉnh được )
- Để nâng dòng ra, ta dung các BJT TIP41C để gánh dòng BJT này có thể chịu được dòng 6A
- Khối bảo vệ quá áp : Khi áp ra lớn 13V, điện áp đưa vào opamp :V(+) >V(-) ( điện áp chuẩn để so sánh) thì Vout của opamp ở mức 1 kích BJT ( được thiết kế hoạt đổng ở chế độ khóa ) dẫn, nên sẽ kích rơ le bảo vệ được mạch
- Khối bảo vệ quá dòng :Khi dòng lớn hơn 2A, điện áp visai đưa vào opamp sẽ tăng lên, qua mạch khếch đại sẽ khếch đại điện áp vi sai đưa vào opamp để so sánh : Điện áp vi sai được khếch đại là V+ lớn hơn điện áp so sánh là V-, do đó Vout của bộ so sánh sẽ ở mức 1 kích được SCR, nên sẽ kích được rơ le, bảo vệ được mạch
Trang 55 Điều kiện làm việc của các linh kiện trong mạch.
- LM7812 : điện áp cung cấp một chiều 15-27V, cho dòng ra 12V
- LM317: điện áp cung cấp 24-37V Cho điện áp ra có giá trị thay đổi được trong khoảng từ 2-30V
6 Đo kiểm tra linh kiện rời.
a Kiểm tra thyristor 2P4M:
Trang 6Đặt động hồ thang x1, đặt que đen vào Anot, que đỏ vào Katot ban đầu kim không lên , dùng Tovit chập chân A vào chân G => thấy đồng hồ lên kim , sau đó
bỏ Tovit ra => đồng hồ vẫn lên kim => như vậy là Thyristor tốt
b Kiểm tra TIP41C
Kiểm tra Transistor ngược NPN tương tự kiểm tra hai Diode đấu chung cực Anôt, đặt thang đo x1, nếu đo từ B sang C và B sang E ( que đen vào B ) thì tương đương như đo hai diode thuận chiều => kim lên , tất cả các trường hợp đo khác kim không lên
c Kiểm tra BJT C1815
- Đặt thang đo x1, nếu đo từ B sang C và B sang E ( que đen vào B ) thì tương đương như đo hai diode thuận chiều => kim lên , tất cả các trường hợp đo khác kim không lên
d Kiểm tra diode
Đặt thang đo ở vị trí x1 Đặt que đen vào cực âm, que đỏ vào cực âm thì kim lên, ngược lại kim không lên
e Kiểm tra tụ điện phân cực
Trang 7Đặt thang đo ở vị trí x1k, đặt que đen ở cực âm, que đỏ ở cực dương Ta thấy kim
lên sau đó xuống lại từ từ
7 Mạch in.
Phần mền thực hiện layout: proteus
III Lập trình.
1 Nhiệm vụ.
Lập trình giao tiếp máy tính qua cổng COM Một chương trình ở vi điều khiển
dùng để truyền dữ liệu lên máy tính và nhận dữ liệu gửi xuống từ máy tính sau đó điều khiển các thiết bị ( quạt, đèn, phun sương) Một chương trình ở máy tính
dùng để nhận tín hiệu từ vi điều khiển sau đó xử lí và truyền tín hiệu điều khiển
xuống vi điều khiển 8051
2 Sơ đồ khối
a Nhận – gửi dữ liệu trên máy tính.
Start
Mở cổng
Nhận dữ liệu từ VĐK
Trang 8b Khối giao tiếp nhận – gửi dữ liệu trên vi điều khiển.
Hiển thị dữ liệu
Gửi dữ liệu trở lại cho VĐK
End
Start
Khởi tạo
Gửi dữ liệu cho máy tính
Nhận dữ liệu từ máy tính, xử lí
End
Trang 93 Các chương trình con
a Chương trình khởi tạo
{
TMOD=0x20; //Chon timer che do 2
TH1=0xFD; //toc do baud la 9600
SCON=0x50; //0101 0000: chon che do 1
TR1=1;
}
Nhiệm vụ : khởi tạo các thông số cho vi điều khiển
b Chương trình gửi dữ liệu lên cho máy tính
void guidulieu(int n) // dinh nghia ham gui du lieu
{
unsigned char a[5]; //mang chua cac ki tu cua du lieu int i; //bien dem
for(i=0;i<5;i++) //vong lap tach cac ki tu trong du lieu {
a[i]=(n%10)+48; //tach chu so hang don vi (->ascii)
n=n/10; //loai bo chu so hang don vi
}
for(i=2;i>=0;i ) //vong lap gui cac ki tu len pc
{
SBUF=a[i]; //Ghi 1 byte du lieu vào thanh ghi SBUF
while(TI==0){} //doi du lieu duoc gui xong
Trang 10}
}
Kiểm tra chương trình : gán hai giá trị cố định cho nhiệt độ và độ ẩm một giá trị tùy ý để gửi lên máy tính
c Chương trình nhận và xử lí dữ liệu.
{
while(RI==0) ; //doi den khi co tin hieu gui xuong tu may tinh {
d=SBUF; //nhan ki tu vua gui xuong
}
switch(d) //xet ki tu vua nhan duoc {
P1_2=1;
P1_1=1;
case 'p':
P1_0=1;
case '1':
Trang 11P1_2=0;
case '2':
P1_1=0;
case '3':
P1_0=0;
default: // neu khac thi bat het P1=0xFF;
}
}
Kiểm tra chương trình : nạp chương trình vào vi điều khiển sau đó chạy mô phỏng Tiến hành bật và tắt các thiết bị bằng cách nhấn nút bật và tắt trong form điều khiển trên máy tính Quan sát tín hiệu ngõ ra ở các chân điều khiển của vi điều khiển trong proteus
Kết quả : tất các chân điều khiển đều hoạt động như ý đồ lập trình
4 Chương trình ở vi điều khiển
#include <at89x51.h> //Khai báo thu vien cho 89x51
#include <string.h> //Khai báo thu vien xu li chuoi
Trang 12TMOD=0x20; //Chon timer che do 2
TH1=0xFD; //toc do baud la 9600
SCON=0x50; //0101 0000: chon che do 1
TR1=1;
}
void nhanxuli(); //ham nhan du lieu va xu li
void main() //chuong trinh chinh
{
}
void guidulieu(int n) // dinh nghia ham gui du lieu
{
unsigned char a[5]; //mang chua cac ki tu cua du lieu int i; //bien dem
for(i=0;i<5;i++) //vong lap tach cac ki tu trong du lieu {
a[i]=(n%10)+48; //tach chu so hang don vi (->ascii) n=n/10; //loai bo chu so hang don vi
}
for(i=2;i>=0;i ) //vong lap gui cac ki tu len pc
{
Trang 13SBUF=a[i]; //Ghi 1 byte du lieu vào thanh ghi SBUF
while(TI==0){} //doi du lieu duoc gui xong
}
}
{
while(RI==0) ; //doi den khi co tin hieu gui xuong tu may tinh {
d=SBUF; //nhan ki tu vua gui xuong
}
switch(d) //xet ki tu vua nhan duoc {
P2_2=1;
P2_1=1;
case 'p':
P2_0=1;
case '1':
P2_2=0;
Trang 14break; //thoat khoi lenh switch
case '2':
P2_1=0;
case '3':
P2_0=0;
default: // neu khac thi bat het P2=0xFF;
}
}
5 Chương trình trên máy tính.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace choncongCOM
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Trang 15private void Form1_Load(object sender, EventArgs e)
{
string[] comlist = SerialPort.GetPortNames();
int[] comnumberlist = new int[comlist.Length];
for (int i = 0; i < comlist.Length; i++)
{
comnumberlist[i] = int.Parse(comlist[i].Substring(3));
}
Array.Sort(comnumberlist);
foreach (int comnumber in comnumberlist)
{
comboBox1.Items.Add("COM" + comnumber.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.Text == "")
{
MessageBox.Show("vui long chọn cổng COM", "thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (serialPort1.IsOpen)
{
serialPort1.Close();
button1.Text = "Kết Nối";
comboBox1.Enabled = true;
groupBox3.Enabled = false;
}
else
{
try
{
serialPort1.Open();
button1.Text = "Ngắt Kết Nối";
comboBox1.Enabled = false;
groupBox3.Enabled = true;
}
catch
{
MessageBox.Show("khong the mo cong " + comboBox1.Text, "loi", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
Trang 16private void groupBox2_Enter(object sender, EventArgs e)
{
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Write(textBox1.Text);
}
private void label1_Click(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
Action<string> serialPort1ReceiverAction;
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
serialPort1ReceiverAction = serialPortReceiver;
try
{
this.BeginInvoke(serialPort1ReceiverAction, serialPort1.ReadExisting()); }
catch { }
}
private void serialPortReceiver(string input)
{
if(input.Length==6)
Trang 17{
textBox2.Text += "\r\nNhiệt độ (độ C): ";
textBox2.Text += input.Substring(0,3);
textBox2.Text += "\r\nĐộ ẩm (%): ";
textBox2.Text += input.Substring(3);
}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void label5_Click(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
if (button3.Text == "Bật")
{
{
serialPort1.Write("q");
button3.Text = "Tắt";
}
}
else
{
try
{
serialPort1.Write("1");
button3.Text = "Bật";
}
catch
{
MessageBox.Show("không thể tắt quạt", "loi", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void button4_Click(object sender, EventArgs e)
{
if (button4.Text == "Bật")
{
Trang 18try
{
serialPort1.Write("d");
button4.Text = "Tắt";
}
catch
{
MessageBox.Show("không thể bật đèn", "loi", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
else
{
try
{
serialPort1.Write("2");
button4.Text = "Bật";
}
catch
{
MessageBox.Show("không thể tắt đèn", "loi", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
private void button5_Click(object sender, EventArgs e)
{
if (button5.Text == "Bật")
{
try
{
serialPort1.Write("p");
button5.Text = "Tắt";
}
catch
{
MessageBox.Show("không thể bật phun sương", "loi", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
try
{
serialPort1.Write("3");
button5.Text = "Bật";
}
catch
Trang 19{
MessageBox.Show("không thể tắt phun sương", "loi", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void groupBox3_Enter(object sender, EventArgs e)
{
}
private void groupBox2_Enter_1(object sender, EventArgs e)
{
}
}
}