Đề tài Thiết kế bộ điều khiển điện cảm ứng điện dung
2.1.3 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.
27 trang |
Chia sẻ: hachi492 | Ngày: 07/01/2022 | Lượt xem: 363 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế bộ điều khiển điện cảm ứng điện dung, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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
TÌM HIỀU MSP430
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.
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.
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
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.
CẢM ỨNG ĐIỆN DUNG TRÊN MSP430
Cảm ứng điện dung
Đị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 đó.
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.
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
SƠ ĐỒ KHỐI THIẾT KẾ
LCD
Phím cảm ứng điện dung
MCU
MSP430g2553
MODUL RF
PHÁT
Nguồn
MODUL RF
THU
REPLAY
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
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
- 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
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
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.
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
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.
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
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.
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.
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
/* 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 // Defines number of sensors
#define KEY_LVL 220 // Defines threshold for a key press
/*Set to ~ half the max delta expected*/
/* Definitions for use with the WDT settings*/
#define DIV_ACLK_32768 (WDT_ADLY_1000) // ACLK/32768
#define DIV_ACLK_8192 (WDT_ADLY_250) // ACLK/8192
#define DIV_ACLK_512 (WDT_ADLY_16) // ACLK/512
#define DIV_ACLK_64 (WDT_ADLY_1_9) // ACLK/64
#define DIV_SMCLK_32768 (WDT_MDLY_32) // SMCLK/32768
#define DIV_SMCLK_8192 (WDT_MDLY_8) // SMCLK/8192
#define DIV_SMCLK_512 (WDT_MDLY_0_5) // SMCLK/512
#define DIV_SMCLK_64 (WDT_MDLY_0_064) // SMCLK/64
#define LED_1 (0x01) // P1.0 LED output
#define LED_2 (0x40) // 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; // Stop watchdog timer
if (CALBC1_1MHZ==0xFF) // If calibration constant erased
{
while(1); // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_1MHZ; // Set DCO to 1MHz
DCOCTL = CALDCO_1MHZ;
BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO
IE1 |= WDTIE; // enable WDT interrupt
P2SEL = 0x00; // No XTAL
P1DIR = LED_1 + LED_2; // P1.0 & P1.6 = LEDs
P1OUT = 0x00;
__bis_SR_register(GIE); // Enable interrupts
measure_count(); // Establish baseline capacitance
for (i = 0; i<NUM_SEN; i++)
base_cnt[i] = meas_cnt[i];
for(i=15; i>0; i--) // Repeat and avg base measurement
{
measure_count();
for (j = 0; j<NUM_SEN; j++)
base_cnt[j] = (meas_cnt[j]+base_cnt[j])/2;
}
/* Main loop starts here*/
while (1)
{
j = KEY_LVL;
key_pressed = 0; // Assume no keys are pressed
measure_count(); // Measure all sensors
for (i = 0; i<NUM_SEN; 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; // key pressed
}
else
key_press[i] = 0;
}
/* Delay to next sample, sample more slowly if no keys are pressed*/
if (key_pressed)
{
BCSCTL1 = (BCSCTL1 & 0x0CF) + DIVA_0; // ACLK/(0:1,1:2,2:4,3:8)
cycles = 20;
}
else
{
cycles--;
if (cycles > 0)
BCSCTL1 = (BCSCTL1 & 0x0CF) + DIVA_0; // ACLK/(0:1,1:2,2:4,3:8)
else
{
BCSCTL1 = (BCSCTL1 & 0x0CF) + DIVA_3; // ACLK/(0:1,1:2,2:4,3:8)
cycles = 0;
}
}
WDTCTL = WDT_delay_setting; // 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; i<NUM_SEN; i++)
base_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; // TACLK, cont mode
TA0CCTL1 = CM_3+CCIS_2+CAP; // Pos&Neg,GND,Cap
for (i = 0; i<NUM_SEN; 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; // WDT, ACLK, interval timer
TA0CTL |= TACLR; // Clear Timer_A TAR
__bis_SR_register(LPM0_bits+GIE); // Wait for WDT interrupt
TA0CCTL1 ^= CCIS0; // Create SW capture of CCR1
meas_cnt[i] = TACCR1; // Save result
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1SEL2 &= ~electrode_bit[i];
}
}
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!
TÀI LIỆU THAM KHẢO
Các file đính kèm theo tài liệu này:
- de_tai_thiet_ke_bo_dieu_khien_dien_cam_ung_dien_dung.docx