Dùng cảm biến siêu âm SRF05 và vi điều khiển MSP430 đo khoảng cách.Hiển thị lên LCD 16x2Dùng Buzzer và LED để cảnh báo khi khoảng cách quá gầnĐồ án có hướng dẫn nối dây và viết code đầy đủGiao tiếp với máy tính thông qua UART để dễ dàng quản lý số liệuI.Nhiệm vụ thiết kếThiết kế mạch đo khoảng cách dùng cảm biến siêu âm Hiển thị khoảng cách đo được lên LCD và máy tínhCho phép cài đặt khoảng cách cảnh báo vào âm báo khi khoảng cách quá gầnII. Hướng giải quyết các yêu cầu chức năngĐiều khiển bằng MSP430 (1)Nguồn cấp 3.3 VKhoảng cách đến vật cần (2) đo được thu thập thông qua cảm biến siêu âm SFR05 (3)Dùng LCD 16x2 để hiện thị (4)Dùng buzzer (5) và LED để âm báo và quang báo khi khoảng cách quá gầnXây dựng chức năng hiện thị và cài đặt trên LCDTạo nút nhấn để có thể hiệu chỉnh khoảng cách nguy hiểm (6)
Trang 1MỤC LỤC
Mục lục……….1
Lời nói đầu……….… 2
I.Nhiệm vụ thiết kế……….…….3
II Hướng giải quyết các yêu cầu chức năng……….… 3
III Yêu cầu phần cứng, phần mềm……….….4
1 Phần cứng……… 4
a Vi điều khiển MSP430G2553………4
Giới thiệu tổng quát……….4
Sơ đồ chân ……… 5
Giải thích sơ lược các chân……… 7
b Mạch nạp cho MCU………7
c Module cảm biến siêu âm SRF05……….9
d Màn hình LCD HD44780-1602a……….12
e Thiết kế mạch……… 14
Nguyên lý đo……… 14
2 Yêu cầu phần mềm……… ….15
IV.Thực hiện……….…… 15
Mạch thiết kế……….……… 15
Code hoàn chỉnh……….…………15
V.Kết quả……….21
Khoảng cách được hiển thị lên LCD………21
Khi khoảng cách quá gần thì báo DANGEROUS……… 21
Giao tiếp với máy vi tính……….………21
Trang 2LỜI NÓI ĐẦU
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn vào việc phát triển thông tin Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành kỹ thuật điện- điện tử phải hết sức quan tâm Đó chính là một nhu cầu cần thiết và cấp bách đối với mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu cầu đó
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng được lại là một điều rất phức tạp Phần công việc xử lý chính vẫn phụ thuộc vào con người, đó chính là chương trình hay phần mềm Nếu không có sự tham gia của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri Do vậy khi nói đến vi điều khiển cũng giống như máy tính bao gồm 2 phần là phần cứng và phần mềm
Dưới đây em xin trình bày toàn bộ nội dung đồ án: “Thiết kế mạch đo khoảng cách dùng cảm biến siêu âm - kết hợp KIT MSP430 Launchpad” do thầy Lê Quang
Thuần- giảng viên Trường Đại Học Bách Khoa TPHCM hướng dẫn
Trong quá trình thực hiện đề tài vẫn còn nhiều sai sót, mong nhận được nhiều ý kiến đóng góp từ thầy và các bạn
Trang 3I.Nhiệm vụ thiết kế
-Thiết kế mạch đo khoảng cách dùng cảm biến siêu âm
-Hiển thị khoảng cách đo được lên LCD và máy tính
-Cho phép cài đặt khoảng cách cảnh báo vào âm báo khi khoảng cách quá gần
II Hướng giải quyết các yêu cầu chức năng
-Dùng buzzer (5) và LED để âm báo và quang báo khi khoảng cách quá gần
-Xây dựng chức năng hiện thị và cài đặt trên LCD
-Tạo nút nhấn để có thể hiệu chỉnh khoảng cách nguy hiểm (6)
Trang 4III Yêu cầu phần cứng, phần mềm
1 Phần cứng
a Vi điều khiển MSP430G2553
Giới thiệu tổng quát :
Vi điều khiển msp430 này do hãng TI ( Texas Instruments) sản xuất
Vi điều khiển( Micro controller unit – MCU ) là đơn vị xử lý nhỏ, nó được tích hợp toàn bộ các bộ nhớ như ROM , RAM , các port truy xuất , giao tiếp ngoại vi trực tiếp trên 1 con chip hết sức nhỏ gọn Được thiết kế dựa trên cấu trúc VON-NEUMAN , đặc điểm của cấu trúc này là chỉ có duy nhất 1 bus giữa CPU và bộ nhớ (data và chương trình) , do đó mà chúng phải có độ rộng bit tương tự nhau
MSP430 có một số phiênbản như: MSP430x1xx, MSP430x2xx, MSP430x3xx,
MSP430x4xx, MSP430x5xx Dưới đây là những đặc điểm tổng quát của họ vi điều khiển MSP430:
+ Cấu trúc sử dụng nguồn thấp giúp kéo dài tuổi thọ của Pin
-Duy trì 0.1µA dòng nuôi RAM
-Chỉ 0.8µA real-time clock
-250 µA/ MIPS
+ Bộ tương tự hiệu suất cao cho các phép đo chính xác
-12 bit hoặc 10 bit ADC-200 kskp, cảm biến nhiệt độ, Vref ,
-12 bit DAC
-Bộ giám sát điện áp nguồn
+ 16 bit RISC CPU cho phép được nhiều ứng dụng, thể hiện một phần ở kích thước Code lập trình
-Thanh ghi lớn nên loại trừ được trường hợp tắt nghẽn tập tin khi đang làm việc -Thiết kế nhỏ gọn làm giảm lượng tiêu thụ điện và giảm giá thành
-Tối ưu hóa cho những chương trình ngôn ngữ bậc cao như C, C++
-Có 7 chế độ định địa chỉ
-Khả năng ngắt theo véc tơ lớn
+ Trong lập trình cho bộ nhớ Flash cho phép thay đổi Code một cách linh hoạt, phạm vi rộng, bộ nhớ Flash còn có thể lưu lại như nhật ký của dữ liệu
Sơ đồ chân :
Chip MSP430 có kích thước nhỏ gọn , chỉ với 20 chân đối với kiểu chân DIP
Bao gồm 2 port I/O (hay GPIO general purprose input/ output : cổng nhập xuất
chung)
Trang 5Sơ đồ chân
Port 1 : có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15
Port 2 : cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19
Ngoài chức năng I/O thì trên mỗi pin của các port đều là những chân đa chức năng,
ta thể thấy rõ trong bảng sau :
Trang 6Trên bảng là chức năng của từng chân
Trang 7Giải thích sơ lược các chân :
- Chân số 1 là chân cấp nguồn Vcc( ký hiệu trên chip là DVcc ) , ở đây nguồn cho chip chỉ được cấp ở mức 3,3V , nếu cấp nguốn cao quá mức này thì chip có thể hoạt động sai hay cháy chip
-Chân 20 là chân nối cực âm (0V) , chân này thì không có gì đặc biệt
-Chân reset : Chính là chân số 16 RST , nếu các bạn đã từng học về PIC thì sẽ thấy chân reset có ký hiệu là MCLR , các bạn để ý thấy dấu gạch ngang trên có nghĩa là chân này tích cực ở mức thấp Mục đích của việc reset là nhằm cho chương trình chạy lại từ đầu
-Mạch dao động : Cũng giống như những dòng vi điều khiển khác thì Msp430 cũng
hỗ trợ người dùng thạch anh ngoài ( external crystal ), nhưng thạch anh ngoại vi cho phép chỉ có thể lên tới 32,768 kHz mà thôi, và tín hiệu này được mắc trên 2 chân 18
và 19 Nhưng msp430 lại hỗ trợ thạch anh nội có thể lên đến 16Mhz, tùy vào cách khai báo trong lập trình Và mặc định của chip là thạch anh nội Như vậy thì chúng ta không cần thiết phải sử dụng mạch dao động ngoại cho chip giống như những dòng khác
- Port I/O :
Port 1 : có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15
Port 2 : cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19
Trong chế độ nhập (input) thì cả 2 port đều có 1 mạch điều khiển điện trở kéo dương – gọi là PULL UP nhưng giá trị của điện trở này rất lớn khoảng 47K nên gọi là WEAK PULL UP RESISTAN Việc điều khiển PULL UP sẽ được tiến hành thông qua lập trình tác động lên thanh ghi PxREN
Điều này cũng giống như việc thiết lập input ở port B của vi điều khiển PIC, ở port B cũng có điện trở kéo lên , và người lập trình phải thao tác qua thanh ghi
Trang 8Hình ảnh của Kit launchpad
Kit có thể nạp được code cho dòng Msp430G : như msp430g2231, 2553, 2452,… Kit kết nối với máy tính thông qua cổng USB
Một kit LaunchPad gồm hai thành phần, với GND được phủ chung:
- Nửa trên: Là phần mạch nạp theo chuẩn spy-bi-wire Jtag (2 dây), kết hợp với
chuyển đổi giao tiếp UART với máy tính Trên cùng là đầu USBmini để nối với máy tính, phía dưới là hàng Header để nối ra đối tượng cần giao tiếp, bao gồm các chân:
· TXD, RXD: phục vụ giao tiếp UART với máy tính
· RST, TEST: phục vụ nạp và debug (sửa lỗi) theo chuẩn spy-bi-wire Jtag
· VCC: cấp nguồn 3V3 cho đối tượng (thường là nửa dưới LaunchPad)
- Nửa dưới: là một mạch phát triển MSP430 đơn giản, bao gồm:
· Socket cắm MSP430 (thường gắn sẵn chip MSP430G2553), Pad hàn thạch anh, Nút nhấn Reset chip
· Nút nhấn gắn vào P1.3, hai Led hiển thị có jumper để gắn vào P1.0 và P1.6 Hai hàng header để kết nối hai hàng chân của chip ra ngoài, một hàng header nguồn GND-GND-VCC để lấy nguồn 3V3 trên LaunchPad
Trang 9c Module cảm biến siêu âm SRF05
SRF05 là một bước phát triển từ SRF04, được thiết kế để làm tăng tính linh hoạt, tăng pham vi, ngoài ra còn giảm bớt chi phí SRF05 là hoàn toàn tương thích với SRF04 Khoảng cách là tăng từ 3 mét đến 4 mét Một chế độ hoạt động mới, SRF05 cho phép sử dụng một chân duy nhất cho cả kích hoạt và phản hồi, do đó tiết kiệm
có giá trị trên chân điều khiển của bạn Khi chân chế độ không kết nối, SRF05 các hoạt động riêng biệt chân kích hoạt và và chân hồi tiếp, như SRF04 SRF05 bao gồm một thời gian trễ trước khi xung phản hồi để mang lại điều khiển chậm hơn chẳng hạn như bộ điều khiển thời gian cơ bản Stamps và Picaxe để thực hiện các xung lệnh
Cảm biến gồm một bộ phát và một bộ thu sóng siêu âm
Khoảng cách đo: 3cm - 4m
SRF05 sử dụng nguyên lý phản xạ của sóng để đo khoảng cách Khi muốn đo khoảng cách SRF05 sẽ phát ra một 8 xung với tốc độ 40Khz Sau đó nó sẽ chờ đợi xung phản xạ về Từ thời gian giữa xung đi và xung về ta có thể dễ dàng tính được khoảng cách từ SRF05 tới vật cản
Trang 101) Chế độ 1: Tương ứng SRF04 – tách biệt kích hoạt và phản hồi
Khi phát ra xung, và chờ xung phản xạ về, chân ECHO của SRF05 sẽ được kéo lên cao Khi có xung phản xạ về chân ECHO sẽ được kéo xuống thấp, hoặc sau 30ms nếu không có xung phản xạ về
2) Chế độ 2: Dùng một chân cho cả kích hoạt và phản hồi
Trang 11
3) Một số đặc điểm khác của cảm biến siêu âm SRF05
Mức độ của sóng âm hồi tiếp phụ thuộc vào cấu tạo của đối tượng và góc phản xạ của nó
Một đối tượng mềm có thể cho ra tín hiệu phản hồi yếu hoặc không có phản hồi Một đối tượng ở một góc cân đối thì mới có thể chuyển thành tín hiệu phản chiếu một chiều cho cảm biến nhận
4) Vùng phát hiện của SRF05
Nếu ngưỡng để phát hiện đối tượng được đặt quá gần với cảm biến, các đối tượng trên một đường có thể bị va chạm tại một điểm mù Nếu ngưỡng này được đặt ở một khoảng cách quá lớn từ các cảm biến thì đối tượng sẽ được phát hiện mà
không phải là trên một đường va chạm
Trang 12Một kỹ thuật phổ biến để làm giảm các điểm mù và đạt được phát hiện chiều rộng lớn hơn cự ly gần là thêm một cải tiến bằng cách thêm một đơn vị SRF05 bổ sung
và gắn kết của hai đơn vị hướng về phía trước Thiết lập như vậy thì có một khu vực
mà hai khu vực phát hiện chồng chéo lên nhau
5) Thông số một số loại cảm biến siêu âm SRF
*: Ước tính góc của hình nón cảm biến ở ½ cảm biến
**: Số vọng ghi lại bởi cảm biến Đây là những tiếng vọng ghi từ đọc gần đây nhất,
và được ghi đè mới bằng mỗi lần khác nhau
A: Những cảm biến nhỏ hơn điển hình ( SRF05/04) kích thước
B: Phạm vi thời gian có thể được điều chỉnh xuống bằng cách điều chỉnh được C: Cảm biến này cũng bao gồm một photocell ở mặt trước để phát hiện ánh sáng D: Hoạt động ở một tần số 235kHz cao hơn
d Màn hình LCD HD44780-1602a
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết Các chân này được đánh số thứ tự và đặt tên như hình
Trang 13Sơ đồ chân của LCD
Chức năng các chân:
Chân Ký
hiệu Mô tả
1 VSS Chân nối đất cho LCD, khi thiết kế mạch ta nối chân
này với GND của mạch điều khiển
2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối
chân này với VCC=5V của mạch điều khiển
3 VEE Điều chỉnh độ tương phản của LCD
Chân chọn thanh ghi (Register select) Nối chân RS với logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh
IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc
Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E + Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
7 -
14
DB0 - DB7
Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU Có 2 chế độ sử dụng 8 đường bus này: + Chế độ 8 bit : Dữ liệu được truyền trên cả 8
đường, với bit MSB là bit DB7
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7
15 - Nguồn dương cho đèn nền
16 - GND cho đèn nền
Trang 14P2.0 Chân ECHO của SFR05
P2.1 Chân TRIGGER của SFR05
P2.2 Chân dữ liệu D4 của LCD
P2.3 Chân dữ liệu D5 của LCD
P2.4 Chân dữ liệu D6 của LCD
P2.5 Chân dữ liệu D7 của LCD
Nguyên lý đo : Sử dụng nguyên lý phản xạ của sóng để đo khoảng cách Khi muốn đo khoảng cách vi xử lí sẽ truyền một xung tối thiểu 10 micro giây vào chân Trigger của SRF05 khi đó SRF05 sẽ phát ra một 8 xung với tốc độ 40Khz Sau đó nó sẽ chờ đợi xung phản xạ về Từ thời gian giữa xung đi và xung về ta
có thể dễ dàng tính được khoảng cách từ SRF05 tới vật cản
Trang 152 Yêu cầu phần mềm :
- Lập trình cho MSP430 dùng phần mềm CCS của TI
- Datasheet:MSP430G2553,MSP43x2xx,SRF05,Buzzer,Led,LCD
- Thư viện MSP430 :LCD,UART,Flash,Clock,Switch,Math
- C# lập trình giao diện hiển thị khoảng cách lên máy tính
#define trigger BIT1;
#define echo BIT0;
#define up (P1IN & BIT6)
#define down (P1IN & BIT7)
#define mode (P1IN & BIT3)
void timer_init( void); // khai bao chuong trinh con timer
Trang 16void do_khoang_cach( void); // khai bao chuong trinh con do khoang cach
void hienthi( void);
void caidat( void);
void alarm( void);
unsigned char is_push( unsigned char but);
unsigned int t1=0, t2=0, delta=0, flag=0, a=20,b=0;// first_pulse=0;
b.Cài đặt chế độ hoạt động của các thanh ghi, chân,tần số hoạt động của vi xử lý
void main( void)
P2SEL2 &= ~echo; // chi thay doi 1 bit 2.0
P2DIR &= ~echo;
P1DIR |= BIT0;
P1OUT &= ~BIT0;
P1SEL &=~ BIT3;
P1SEL2 &=~ BIT3;
case 1:
caidat();
break;
case 0:
Trang 17hienthi();
alarm();
break; }
}
}
d.Thiết lập chế độ hoạt động của timer
void timer_init( void)
{
TA1CTL = TASSEL_2 + MC_2 ; // continuos mode, 0 > FFFF
TA1CCTL0 = CM_3 + CAP + CCIS_0 + SCS+ CCIE; // falling edge & raising edge, capture mode, capture/compare interrupt enable
TA1CCTL0 &= ~ CCIFG;
}
e.Kích chân trigger
void do_khoang_cach( void)
f.Cài đặt khoảng cách cần báo động
void caidat( void)
lcd_gotoxy(1,1);
lcd_puts(" ");
lcd_gotoxy(0,1);
Trang 18lcd_put_num (a,0,0);
}
} lcd_gotoxy(4,1);
lcd_puts("cm");
if (is_push(up)==1) a++;
if (is_push(down)==1) a=a-1;
}
g.Hiển thị khoảng cách đo được lên LCD
void hienthi( void)
lcd_gotoxy(1,1);
lcd_puts(" ");
lcd_gotoxy(0,1);
lcd_put_num (delta,0,0);
Trang 19}
} lcd_gotoxy(4,1);
lcd_puts("cm");
delay_cycles(150000);
}
h.Báo động khi khoảng cách quá gần
void alarm( void)
{
if (delta<=a/4) {
}
else P1OUT &= ~BIT0;
} }
#pragma vector = TIMER1_A0_VECTOR
interrupt void timer0( void){
Trang 20if (P2IN & BIT0 ==1 )// neu co xung canh len tai chan echo (P2.0)
t1 = TA1CCR0;
t2 = TA1CCR0;
if (t2 > t1) {
TA1CCTL0 &= ~ CCIFG;
}
Trang 21V.Kết quả
Khoảng cách được hiển thị lên LCD
Khi khoảng cách quá gần thì báo DANGEROUS
Giao tiếp với máy vi tính