Tải bản đầy đủ (.docx) (26 trang)

Thiết kế bộ điều khiển điện cảm ứng điện dung

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (859.16 KB, 26 trang )

LỜI NÓI ĐẦU
Cảm ứng điện dung ngày nay đã không còn xa lạ với chúng ta. Cảm ứng điện dung
được ứng dụng khá phổ biến. Từ bàn phím các thiết bị gia đình cho tới các sản phẩm cao
cấp như điện thoại thông minh. Công nghệ hiện đại này cũng cho phép tạo ra các thiết bị
ngày càng tiện dụng tránh việc sử dụng phím cơ cứng nhắc.
Công nghệ cảm ứng đã thực sự xuất hiện từ nhiều năm nay, tuy nhiên trong vòng
những năm gần đây công nghệ này mới được sử dụng phổ biến trong cuộc sống vì xu thế
hiện đại chạm sẽ thay thể ấn. Với phát triển của công nghệ, cảm ứng điện dung không chỉ
thây thế các phím bấm bình thường mà nó còn được sử dụng trong các màn hình cảm ứng
của những chiếc smart phone tiện ích ngày nay. Công nghệ cảm ứng điện dung đã được
rộng rãi trong các thiết bị dân dụng như bếp từ, bếp điện, các thiết bị điều khiển…
Từ những ứng dụng thực tế phổ biến như vậy. Chúng em đã tìm hiểu 1 đề tài nhỏ
liên quan tới cảm ứng điện dung. Nhờ có sự giúp đỡ của thầy : Nguyễn Hữu Trung
chúng em đã có thể hoàn thành đề tài: Thiết kế bộ điều khiển điện cảm ứng điện dung.
Chúng em mong có được những góp ý từ các thầy cô.


MỤC LỤC


CHƯƠNG 1:TÌM HIỂU VỀ CẢM ỨNG ĐIỆN DUNG TRÊN
DÒNG VI ĐIỀU KHIỂN MSP430
1.1 TÌM HIỀU MSP430
1.1.1 Tổng quan MSP430

MSP 430 là họ vi điều khiển cấu trúc RISC 16-bit được sản xuất bởi công ty Texas
Instruments. MSP là chữ viết tắt của “MIXED SIGNAL MICROCONTROLLER”. Là
dòng vi điều khiển siêu tiết kiệm năng lượng, sử dụng nguồn thấp, khoảng điện áp nguồn
cấp từ 1.8V – 3.6V. MSP 430 kết hợp các đặc tính của một CPU hiện đại và tích hợp sẵn
các module ngoại vi. Đặc biệt Chíp MSP 430 là giải pháp thích hợp cho những ứng dụng
yêu cầu trộn tín hiệu.



a. Thông tin tổng quát
- Ở chế độ rỗi, nó có thể tiêu thụ dòng bé hơn 1 uA.
- Tốc độ CPU tối đa của dòng MSP430 là 25Mhz (tùy chip)
- Có 6 chế độ lower-power khác nhau, thời gian wake-up có thể nhỏ hơn 1us.
- Tùy theo dòng chip mà nó có thể được tích hợp 1 hay nhiều chức năng sau: bộ dao
động nội, timer, PWM, Wacthdog, USART, SPI, I2C, 10/12/14/16-bit ADCs,


Comparators, on chip op-amps, 12-bit DAC, LCD driver, hardware multiplier, USB,
DMA
- Hạn chế: MSP430 không có bus bộ nhớ ngoài (external memory bus ), nên bị hạn chế
với bộ nhớ on-chip (tối đa 256KB Flash memory và 16KB RAM – tùy chip). Do đó
MSP430 có thể không phù hợp với các hệ thống nhúng phức tạp, đòi hỏi bộ nhớ đệm
hoặc bảng tra có kích thước lớn hơn.

b. Tên tuổi của dòng MSP430

Hình 1.0 Các dòng của MSP430
Những cái gì nhìn trên hình đã rõ ràng rồi thì không giải thích thêm ở dưới đây:
- Loại bộ nhớ ROM, F: Flash ROM (thông dụng nhất), C: masked ROM, P: One-Time
programmed, E: UV-eraseable EPROM, R: RAM-only.
- Generation ( Đời chip): Thường thì số càng lớn thì càng phức tạp, nhiều chức năng,
và giá cao hơn (tất nhiên có ngoại lệ)


- Trong từng đời chip sẽ có nhiều model. Cái số nằm ở đây là tên của model trong đời
chip ghi ở [5].
- Họ (phân loại theo kích thước bộ nhớ và cấu hình ngoại vi) theo bảng sau:


Bảng 1.0 Phân loại kích thước bộ nhớ và kích thước ngoại ngoại vi

c. Những đặc tính của dòng MSP 430 bao gồm:
- Điện áp nguồn: 1.8V – 3.6V.
- Mức tiêu thụ năng lượng thấp.
- Chế độ hoạt động: 270 µA tại 1MHz, 2.2V.
- Chế độ chờ : 0.7 µA.
- Chế độ tắt (RAM vẫn được duy trì): 0.1 µA.
- Thời gian đánh thức từ chế độ Standby nhỏ hơn 1µs.
- Cấu trúc RISC-16 bit, thời gian một chu kỳ lệnh là 62.5ns.
- Cấu hình các module Clock cơ bản:
- Tần số nội lên tới 16 MHz với 4 hiệu chỉnh tần số ± 1%.


- Thạch anh 32 KHz.
- Tần số làm việc lên tới 16 MHz.
- Bộ cộng hưởng.
- Nguồn tạo xung nhịp bên ngoài.
- Điện trở bên ngoài.
- Timer_A 16 bit với 3 thanh ghi hình, 3 thanh ghi so sánh độ rộng 16 bit.
- Timer_B 16 bit với 3 thanh ghi hình, 3 thanh ghi so sánh độ rộng 16 bit.
- Giao diện truyền thống nối tiếp.
- Hỗ trợ truyền thống nối tiếp nâng cao UART, tư động dò tìm tốc độ Baund.
- Bộ mã hóa và giải mã IrDA (infrared Data Associatio)
- Chuẩn giao tiếp đồng bộ SPI.
- Chuẩn giao tiếp I2C
- Bộ chuyển đổi ADC 10 bit, 200 ksps với điện áp tham chiết nội, lấy mẫu và chốt. Tự
đông quét kênh, điều khiển chuyển đổi dữ liệu.
- Hai bộ khuyếch đại thuật toán (hoạt động) có thể định cấu hình ( đối với
MSP430x22x4).

- Bảo vệ sụt áp.
- Bộ nạp chương trình.
- Module mô phỏng trên chip.
MSP430 được sử dụng và biết đến đặc biệt trong những ứng dụng về thiết bị đo
có sử dụng hoặc không sử dụng LCD với chế độ nguồn nuôi rất thấp. Với chế độ
nguồn nuôi từ khoảng 1,8 đến 3,6v và 5 chế độ bảo vệ nguồn.
Với sự tiêu thụ dòng rất thấp trong chế độ tích cực thì dòng tiêu thụ là 200uA,
1Mhz, 2.2v; với chế độ standby thì dòng tiêu thụ là 0.7uA. Và chế độ tắt chỉ duy trì bộ
nhớ Ram thì dòng tiêu thụ rất nhỏ 0.1uA. MSP430 có ưu thế về chế độ nguồn nuôi.
Thời gian chuyển chế độ từ chế độ standby sang chế độ tích cực rất nhỏ (< 6us). Và có
tích hợp 96 kiểu hình cho hiển thị LCD. 16 bit thanh ghi, 16 bit RISC CPU.


Có một đặc điểm của họ nhà MSP là khi MCU không có tín hiệu dao động ngoại,
thì MSP sẽ tự động chuyển sang hoạt động ở chế độ dao động nội.

1.2 CẢM ỨNG ĐIỆN DUNG TRÊN MSP430
1.2.1 Cảm ứng điện dung
a. Định nghĩa:
Cảm ứng điện dung là sự thay đổi về mặt điện tích của tụ điện khi có sự chạm vào
của bất kỳ một vật nào đó.

b. Cảm ứng điện dung trong vi đều khiển MSP430
Có nhiều cách để xác định sự thay đổi, phương pháp kinh điển nhất được đưa ra từ
năm 1976 là nạp tích điện cho tụ, sau đó cho tụ xả dần điện tích qua một điện trở và đo
thời gian xả của tụ, so sánh thời gian giữa các lần xả để xác nhận là một nút bấm.
Ở MSP430 xác định bằng cách đếm số xung do bộ dao động được tạo bởi phần
cứng bên trong VĐK và tụ điện nối vào chân VĐK. Khi tụ điện ở chân nối vào VĐK thay
đổi thì số xung do bộ dao động tạo ra cũng thay đổi và VĐK sẽ đo sự thay đổi đó.
Có 2 cách đo điện dung ở MSP430:

+ Cách đo RO (Relaxation Oscillator):

Hình 1.1 Cách đo RO


Đây là sơ đồ bên trong chân dao động của MSP430 hỗ trợ cảm ứng điện dung.
Trong một khoảng thời gian Gate Time cố định, MSP430 sẽ đếm số dao động, khi điện
dung thay đổi thì số xung đếm được sẽ thay đổi. Từ đó đưa ra được giá trị điện dung.
+ Cách đo RC (Resistor-Capacitor Timer Constant Measurement):

Hình 1.2 Cách đo RC

Ở cách đo này, MSP430 sẽ đếm số xung nhất định. Với mỗi giá trị của tụ điện thì
thời gian để đếm hết một số xung xác định sẽ là khác nhau. Dựa vào điểm này mà ta
tính toán ra được giá trị của tụ điện tương ứng. Từ đây ta xác định được là phím cảm
ứng có được nhấn hay không hoặc đưa ra thông số độ điện dung của tụ đo.

c. Bàn phím cảm ứng
Ở TI trên KIT Launchpad, mặt cảm ứng hỗ trợ nhà sản xuất theo sơ đồ hình vẽ
sau:


Hình 1.3 Bàn phím cảm ứng điện dung của hãng
Vậy các chân cần đặt output đề xuất xung dao động nhằm đếm xung ví dụ là P2.0,
P2.1, P2.2, P2.3, P2.4, P2.5.
Mỗi pad ở trên chiếm 1 diện tích nào đó, là 1 bản của tụ điện, mặt trên của tấm cảm
ứng là bản tụ thứ 2. Khi chạm vào mặt trên gần với pad nào nhất thì hiệu ứng thay đổi
điện dung ở pad đó là rõ ràng nhất, sẽ làm thay đổi thông số đo được tương ứng với chân
VĐK đó.



Hình 1.4 Sự thay đổi điện dung khi tác động
Tương ứng với các trạng thái bị chạm ít hay nhiều, hoặc nhiễu, cần đặt ra hai thông số:
- threshold: điện dung tối thiểu phải trên mức này mới nhận là một lần nhấn vào pad.
- maxResponse: điện dung tối đa đếm được, nếu cao hơn thì sẽ đặt bằng mức này.
Khi chạm tay vào mặt cảm ứng, các pad đều thay đổi điện dung, nhưng pad nào bị chạm
diện tích lớn nhất sẽ thay đổi điện dung nhiều nhất, và dựa vào threshold và
maxResponse xem nút nào có diện tích chạm lớn nhất và xử lí.


CHƯƠNG 2:THIẾT KẾ PHẦN CỨNG
2.1SƠ ĐỒ KHỐI THIẾT KẾ

LCD

Phím cảm
ứng điện
dung

MCU

MODUL RF

MSP430g2553

PHÁT

Nguồn

REPLAY


MODUL RF
THU

Hình 2.0 Sơ đồ khối

Sơ đồ khối toàn mạch


Hình 2.1 Sơ đồ toàn mạch điều khiển và phát RF


J41

V out

1
2

R 49
100k
Q 3

J45

V out
D A1

5
C O N 2


4

R ELAY SPD T

G N

D 51
D IO D E

R 50
100k

LS 3
5
3

4

R 46

Q 5

R 51
100k

R ELAY SPD T

2
1


3

4

J47

V out
D A3

5
C O N 2

1
2

Q 6

G N

R ELAY SPD T

D 54
D IO D E

R 52
100k

~220V - 2
1


LS5
5

3

Q 7

C O N 2

4

1
2

R E LA Y S PD T

M O SF ET_EN _G D S

D 53
G N

R 48

D A2

330

LE D


~220V -

LS 4

M O S F E T_EN _G D S
R 47

D A1

J46

V out

D 52
D IO D E

D 44

G N

330

C O N 2

1
2

M O S F ET_EN _G D S
D 43


D A2

G N

M O S FET_EN _G D S

D A0

~220V - 2
1

~220V +

3

2
1

~220V +

G N

~220VLS2

~220V +

D 45
D IO D E

~220V+


D A0

D 55

G N

D A3

330

LED

R 53

G N

330

LED
LE D
J48
Vout
G
D
D
D
D

N

A
A
A
A

0
1
2
3

1
2
3
4
5
6
7
C O N 7
J7
1

J8
1

C O N 1

J10
1

C O N 1


C O N 1

Hình 2.2 Sơ đồ toàn mạch khối thu vào điều khiển replay

Khối nguồn

Hình 2.3 Sơ đồ khối nguồn
- J6 Giắc cắm nguồn DC : Để lấy nguồn điện từ adapter nuôi thiết bị hoạt động
- J49 Công tắc bật tắt nguồn
- D1 Diode bảo vệ ngược nguồn DC
- U4 IC nguồn lm7805cho ra điện áp 5V ổn định nuôi LCD và các thiết bị khác.
- U3 IC nguồn Lm1117 cho ra điện áp 3.3V ổn định nuôi vi điều khiển

J9
1
C O N 1


- R là các điện trở hạn dòng cho LED
- D2 và D3 là các LED báo nguồn 5V và 3.3V

2.1.1 Chân nạp

Hình 2.4 Chân nạp
J5: Chân nạp có chức năng nạp chương trình từ máy tính cho MSP430

2.1.3 Khối bàn phím

Hình 2.5 Khối phím bấm cứng và phím cảm ứng

SW4 : nút reset dùng để reset mạch.
SW5,6,7,8 : là các phím cảm ứng.
C4, R4 : tụ điện và điện trở để chống nhiễu cho phím reset.


2.1.4 Khối hiển thị

Hình 2.6 LCD

Chân 1: VSS nguồn GND
Chân 2: VCC Nguồn +5V
Chân 3: Vee Chỉnh độ tương phản
Chân 4: RS mức logic 0/1. 0->nhập lệnh, 1-> nhập dữ liệu
Chân 5: R/W mức logic 0/1. 0-> ghi dữ liệu, 1-> đọc dữ liệu
Chân 6: E mức logic 1,1/0 tín hiệu cho phép
Chân 7: DB0 bus dữ liệu 0
Chân 8 : DB1 bus dữ liệu 1
Chân 9: DB2 bus dữ liệu 2
Chân 10: DB3 bus dữ liệu 3
Chân 11: DB4 bus dữ liệu 4
Chân 12: DB5 bus dữ liệu 5


Chân 13: DB6 bus dữ liệu 6
Chân 14: DB7 bus dữ liệu 7
Chân 15: Lamp- Điện LCD

2.1.5 Khối điều khiển thiết bị điện

Hình 2.7 Sơ đồ 1 khối điều khiển

Đây là khối điều khiển 1 thiết bị điện trong mạch điều khiển.
Đèn led D55 để báo hiệu là thiết bị đang được bật hay tắt.
R53 : điện trở hạn dòng cho led D55
LS5: rơ le để đóng ngắt thiết bị điện.
J47: nối ra thiết bị điện cần điều khiển.
D54: diode chống dòng ngược từ rơ le
Q7: Mosfet để điều kiển rơ le.


2.2 CÁC LINH KIỆN SỬ DỤNG
2.2.1 Chip MSP430G2553

Hình 2.7MSP430G2553
Chip MSP430G2553: chip vi điều khiển 16 bit của TI, được hỗ trợ khá nhiều cả phần
cứng và phần mềm nên chúng em lựa chọn.
MSP430G2553 thuộc dòng G và mang gần như đầy đủ tính năng của dòng MSP430 như
giới thiệu ở trên.
2.2.2 LCD1602

Hình 2.8 LCD1602


2.2.3 Rơ le 5V

Hình 2.9 Rơ le
Điều khiển với điện áp 5V DC có thể đóng ngắt được các thiết bị điện tối đa lên tới
250VAC – 10A hoặc 30VDC – 10A.

2.2.4 IC7805
Sơ đồ phía dưới IC 7805 có 3 chân:

- Chân số 1 là chân IN
- Chân số 2 là chân GND
- Chân số 3 là chân OUT

Hình 2.10 IC7805
Ngõ ra OUT luôn ổn định ở 5V dù điện áp từ nguồn cung cấp thay đổi.Mạch này
dùng để bảo vệ những mạch điện chỉ hoạt động ở điện áp 5V (các loại IC thường
hoạt động ở điện áp này). Nếu nguồn điện có sự cố đột ngột: điện áp tăng cao thì
mạch điện vẫn hoạt động ổn định nhờ có IC 7805 vẫn giữ được điện áp ở ngõ ra
OUT 5V không đổi.
2.3 LAYOUT


Hình 2.11 Mach layout điêu khiển trung tâm

Hình 2.12 Layout khoi thu và điều khiển replay


CHƯƠNG 3: THIẾT KẾ PHẦN MỀM
3.1 YÊU CẦU

- Hiển thị lên màn hình LCD
- Điều khiển các thiết bị điện
3.2 CODE
#include <msp430.h>
/* Define User Configuration values */
/*----------------------------------*/
/* Defines WDT SMCLK interval for sensor measurements*/
#define WDT_meas_setting (DIV_SMCLK_512)
/* Defines WDT ACLK interval for delay between measurement cycles*/

#define WDT_delay_setting (DIV_ACLK_512)
/* Sensor settings*/
#define NUM_SEN
4
#define KEY_LVL
220
press
/*Set to ~ half the max delta expected*/

// Defines number of sensors
// Defines threshold for a key

/* Definitions for use with the WDT settings*/
#define DIV_ACLK_32768 (WDT_ADLY_1000)
//
#define DIV_ACLK_8192
(WDT_ADLY_250)
//
#define DIV_ACLK_512
(WDT_ADLY_16)
//
#define DIV_ACLK_64
(WDT_ADLY_1_9)
//
#define DIV_SMCLK_32768 (WDT_MDLY_32)
//
#define DIV_SMCLK_8192 (WDT_MDLY_8)
//
#define DIV_SMCLK_512
(WDT_MDLY_0_5)

//
#define DIV_SMCLK_64
(WDT_MDLY_0_064)
//
#define LED_1
#define LED_2

(0x01)
(0x40)

ACLK/32768
ACLK/8192
ACLK/512
ACLK/64
SMCLK/32768
SMCLK/8192
SMCLK/512
SMCLK/64

// P1.0 LED output
// P1.6 LED output

// Global variables for sensing
unsigned int base_cnt[NUM_SEN];
unsigned int meas_cnt[NUM_SEN];
int delta_cnt[NUM_SEN];
unsigned char key_press[NUM_SEN];
char key_pressed;
int cycles;
const unsigned char electrode_bit[NUM_SEN]={BIT1, BIT2, BIT4, BIT5};

/* System Routines*/
void measure_count(void);
// Measures each capacitive sensor
void pulse_LED(void);
// LED gradient routine
/* Main Function*/


int main(void)
{
unsigned int i,j;
WDTCTL = WDTPW + WDTHOLD;
if (CALBC1_1MHZ==0xFF)
constant erased
{
while(1);
}
DCOCTL = 0;
settings
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
BCSCTL3 |= LFXT1S_2;
IE1 |= WDTIE;
P2SEL = 0x00;
P1DIR = LED_1 + LED_2;
P1OUT = 0x00;
__bis_SR_register(GIE);
measure_count();
for (i = 0; ibase_cnt[i] = meas_cnt[i];


// Stop watchdog timer
// If calibration
// do not load, trap CPU!!
// Select lowest DCOx and MODx
// Set DCO to 1MHz
//
//
//
//

LFXT1 = VLO
enable WDT interrupt
No XTAL
P1.0 & P1.6 = LEDs

// Enable interrupts
// Establish baseline capacitance

for(i=15; i>0; i--)
// Repeat and avg base measurement
{
measure_count();
for (j = 0; jbase_cnt[j] = (meas_cnt[j]+base_cnt[j])/2;
}

/* Main loop starts here*/
while (1)
{

j = KEY_LVL;
key_pressed = 0;
measure_count();

// Assume no keys are pressed
// Measure all sensors

for (i = 0; i{
delta_cnt[i] = base_cnt[i] - meas_cnt[i];

// Calculate delta: c_change

/* Handle baseline measurment for a base C decrease*/
if (delta_cnt[i] < 0)
// If negative: result increased
{
// beyond baseline, i.e. cap dec
base_cnt[i] = (base_cnt[i]+meas_cnt[i]) >> 1; // Re-average quickly
delta_cnt[i] = 0;
// Zero out for pos determination
}
if (delta_cnt[i] > j)
// Determine if each key is
pressed
{
// per a preset threshold
key_press[i] = 1;
// Specific key pressed
j = delta_cnt[i];



key_pressed = i+1;
}
else
key_press[i] = 0;

// key pressed

}
/* Delay to next sample, sample
if (key_pressed)
{
BCSCTL1 = (BCSCTL1 & 0x0CF) +
cycles = 20;
}
else
{
cycles--;
if (cycles > 0)
BCSCTL1 = (BCSCTL1 & 0x0CF)
else
{
BCSCTL1 = (BCSCTL1 & 0x0CF)
cycles = 0;
}
}
WDTCTL = WDT_delay_setting;

more slowly if no keys are pressed*/

DIVA_0; // ACLK/(0:1,1:2,2:4,3:8)

+ DIVA_0; // ACLK/(0:1,1:2,2:4,3:8)
+ DIVA_3; // ACLK/(0:1,1:2,2:4,3:8)

// WDT, ACLK, interval timer

/* Handle baseline measurment for a base C increase*/
if (!key_pressed)
// Only adjust baseline down
{
// if no keys are touched
for (i = 0; ibase_cnt[i] = base_cnt[i] - 1;
// Adjust baseline down, should be
}
// slow to accomodate for genuine
pulse_LED();
// changes in sensor C

}

__bis_SR_register(LPM3_bits);

}

// End Main

/* Measure count result (capacitance) of each sensor*/
/* Routine setup for four sensors, not dependent on NUM_SEN value!*/

void measure_count(void)
{
char i;
TA0CTL = TASSEL_3+MC_2;
TA0CCTL1 = CM_3+CCIS_2+CAP;

// TACLK, cont mode
// Pos&Neg,GND,Cap

for (i = 0; i{
/*Configure Ports for relaxation oscillator*/
/*The P2SEL2 register allows Timer_A to receive it's clock from a GPIO*/
/*See the Application Information section of the device datasheet for
info*/
P1DIR &= ~ electrode_bit[i];
P1SEL &= ~ electrode_bit[i];
P1SEL2 |= electrode_bit[i];


/*Setup Gate Timer*/
WDTCTL = WDT_meas_setting;
TA0CTL |= TACLR;
__bis_SR_register(LPM0_bits+GIE);
TA0CCTL1 ^= CCIS0;
meas_cnt[i] = TACCR1;
WDTCTL = WDTPW + WDTHOLD;
P1SEL2 &= ~electrode_bit[i];

//

//
//
//
//
//

WDT, ACLK, interval timer
Clear Timer_A TAR
Wait for WDT interrupt
Create SW capture of CCR1
Save result
Stop watchdog timer

}
}
void pulse_LED(void)
{
switch (key_pressed){
case 0: P1OUT &= ~(LED_1 + LED_2);
break;
case 1: P1OUT = LED_1;
break;
case 2: P1OUT = LED_2;
break;
case 3: P1OUT = LED_1 + LED_2;
break;
case 4: P1OUT ^= LED_1 + LED_2;
break;
}
}

/* Watchdog Timer interrupt service routine*/
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
TA0CCTL1 ^= CCIS0;
// Create SW capture of CCR1
__bic_SR_register_on_exit(LPM3_bits);
// Exit LPM3 on reti
}


CHƯƠNG 4: PHỤ LỤC

Hình 2.13


KẾT LUẬN
Qua thời gian thực hiện đồ án II và qua đề tài được giao giúp chúng em có nhiều
kinh nghiệm và quy trình làm lên một sản phẩm phần cứng. Điều này giúp chúng em có
thêm kinh nghiệm thực tiễn mà trên lớp chưa được thực hành.
Qua đồ án II này, nhóm em được tìm hiểu vi điều khiển MSP430, điều khiển thiết
bị điện và khối nguồn. Đây là cơ hội rất quý giá để nhóm em có thêm kinh nghiệm làm
việc nhóm, tích lũy kiến thức cơ bản về phần cứng, vi điều khiển, các phương pháp giao
tiếp và lập trình cho vi điều khiển với thiết bị ngoại vi. Tuy nhiên, trong quá trình triển
khai còn gặp rất nhiều khó khăn do đây là dòng vi điều khiển mới nghiên cứu nên chưa
có nhiều tài liệu tham khảo. Nhưng nhờ có sự giúp đỡ của thầy nhóm em đã có thể giải
quyết được một số yêu cầu. Vì kiến thức còn non nớt nên kết quả triển khai chưa thực sự
tốt, mong thầy xem xét, góp ý và giúp đỡ chúng em!
Nhóm em xin chân thành cảm ơn thầy và anh đã hướng dẫn tận tình và quan tâm
đến đồ án của nhóm em.

Kính chúc thầy và anh mạnh khỏe, công tác tốt và gặp nhiều may mắn!


×