Robot được trang bị 3 chổi quét. Trong đó có 2 chổi quét phụ được đặt phía trước có chức năng quét bụi ở những góc tường.
Chổi chính có chức năng quét những mảnh vụn cũng như đảo bụi. Chổi lớn có kích thước chiều dài là 220 (mm). Được dẫn động bởi một động cơ 12V qua bánh răng nghiêng.
Hình 2.9 Chổi lớn 2.4.3 Chế tạo hệ thống hút bụi
Mỗi robot hút bụi trên thị trường đều được trang bị hệ thống hút bụi riêng. Một hệ thống hút bụi điển hình bao gồm phần hút, phần lọc. Trang bị động cơ và cánh quạt tạo lực hút cho hệ thống. Lực hút mạnh hay yếu tùy thuộc vào công suất của động cơ.
Nguyên lý hút bụi rất đơn giản, bên trong có một động cơ điện có tốc độ vòng quay rất cao, trên trục chuyển động của động cơ điện có lắp cánh quạt gió, khi động cơ điện hoạt động với tốc độ cao, cánh quạt gió sẽ quạt cùng với trục chuyển động với tốc độ cao, như vậy không khí bên trong sẽ nhanh chóng thổi ra như một chiếc hộp rỗng. Để bù lại phần không khí đã mất sẽ có một luồng không khí nhanh chóng đi vào theo sự chênh lệch về áp suất.
Phần lọc có chức năng lọc sạch không khí đưa vào, giữ lại bụi bẩn cũng như các thành phần không tốt cho sức khỏe của con người có trong không khí như vi
khuẩn chẳng hạn. Tùy thuộc vào như cầu lọc mà sử dụng nhiều vật liệu lọc khác nhau như giấy lọc, lưới lọc, vải lọc, …
Hình 2.10 Nguyên lý của máy hút bụi
Dựa trên nguyên lý chung của máy hút bụi, hệ thống hút bụi của robot được thiết kế bao gồm : thân, động cơ điện và cánh quạt.
Hình 2.12 Bản vẽ 2D của cánh quạt
Hình 2.14 Hệ thống hút bụi được chế tạo 2.4.4 Chế tạo hộp đựng bụi
Hộp đựng bụi có chức năng không những đựng bụi mà còn lọc sạch không khí. Vì vậy, hộp bụi được thiết kế có phần đảm nhiệm lọc bụi.
Hình 2.16 Hộp bụi được chế tạo 2.4.5 Động cơ
Robot được trang bị hai động cơ 12 VDC có momen lớn, kích thước nhỏ gọn, có hộp giảm tốc.
2.4.6 Chế tạo bánh tự lựa
Bánh tự lựa là loại bánh bị động, được phát động bởi hai bánh chủ động. Bánh này có chứ năng dẫn hướng cho robot.
Hiện nay có rất nhiều bánh tự lựa trên thị trường với nhiều kích thước,kiểu dáng, mẫu mã khác nhau như : omi, mắt trâu,…
Chế tạo bánh tự lựa phải đúng yêu cầu kỹ thuật như : • Đảm bảo độ cứng vững.
• Bánh xe di chuyển linh hoạt.
• Tránh hiện tượng bánh xe bị kẹt cứng.
• Tránh hiện tượng rung lắc của bánh xe khi di chuyển. • Bánh tự lựa đảm bảo 2 bậc tự do là : xoay theo trục z và x.
Hình 2.19 Bánh tự lựa sau khi chế tạo
2.4.7 Bố trí công tắc hành trình
Robot được bố trí các công tắc hành trình và nhiều loxo để tiếp xúc với vật cản. Ưu điểm dùng công tắc hành trình là dễ dàng nhận biết vật cản, dễ thi công sau này.
Nhược điểm qua nhiều lần tiếp xúc với vật cản, công tắc hành trình bị hỏng về mặt cơ khí, giảm độ chính xác về sau.
2.5 Thiết kế các board mạch điều khiển 2.5.1 Vi điều khiển AVR 2.5.1 Vi điều khiển AVR
AVR là họ vi điều khiển 8 bit theo công nghệ mới, với những tính năng rất mạnh được tích hợp trong chip của hãng Atmel theo công nghệ RISC, AVR mạnh ngang hàng với các họ vi điều khiển 8 bit khác như PIC, PISOC. Ngoài ra, do ra đời muộn hơn nên họ vi điều khiển AVR có nhiều tính năng mới đáp ứng tối đa nhu cầu của người sử dụng, so với họ 8051, 89xx thì nó độ ổn định, khả năng tích hợp, sự mềm dẻo trong việc lập trình và tiện lợi hơn.
a.Tính năng của họ AVR
- Giao diện SPI đồng bộ.
- Các đường dẫn vào/ra (I/O) lập trình được. - Giao tiếp I2C.
- Bộ biến đổi ADC 10 bit. - Các kênh băm xung PWM.
- Các chế độ tiết kiệm năng lượng như Sleep, Stand by..vv. - Bộ định thời Watchdog.
- 3 bộ Timer/Counter 8 bit. - 1 bộ Timer/Counter 16 bit. - 1 bộ so sánh Analog. - Bộ nhớ EEPROM. - Giao tiếp USART,...
b.Cấu trúc bộ nhớ AVR
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (Data memory bus) và đường truyền cho bộ nhớ chương trình (Program memory bus) được tách riêng. Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại vi, với tệp thanh ghi (Register file). Trong khi đó đường truyền cho bộ nhớ chương trình có độ rộng 16 bits và chỉ phục vụ cho thanh ghi lệnh (Instruction registers).
Hình 2.21 Cấu trúc bộ nhớ của AVR
Bộ nhớ chương trình (Program memory): Là bộ nhớ Flash lập trình được, hay còn gọi là Application section. Thực chất, Application section bao gồm 2 phần: phần chứa các mã lệnh cho hoạt động của Chip (Instruction) và phần chứa các Vector ngắt (Interrupt vectors). Các Vector ngắt nằm ở phần đầu của Application section (từ địa chỉ 0x0000) và dài đến bao nhiêu tùy thuộc vào loại chip. Phần chứa instruction nằm liền sau đó, chương trình viết cho chip phải được nạp vào phần này.
Bộ nhớ dữ liệu (Data memory): Chứa các thanh ghi quan trọng nhất của chip, việc lập trình cho Chip phần lớn là truy cập bộ nhớ này. Bộ nhớ dữ liệu trên các Chip AVR có độ lớn khác nhau tùy theo mỗi Chip, tuy nhiên về cơ bản phần bộ nhớ này được chia thành 5 phần:
Hình 2.22 Thanh ghi 8 bit
+ Phần 1: Là phần đầu tiên trong bộ nhớ dữ liệu, phần này bao gồm 32 thanh ghi có tên gọi là Register file, hay đơn giản là các thanh ghi. Tất cả các thanh ghi này đều là các thanh ghi 8 bits .
Hình 2.23 Register file
Tất cả các Chip trong họ AVR đều bao gồm 32 thanh ghi Register file có địa chỉ tuyệt đối từ 0x0000 đến 0x001F. Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó. Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31. Chúng được chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31.
Tất cả 32 thanh ghi Register file đều có đặc điểm chung sau: Được truy cập trực tiếp trong các lệnh. Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần 1 chu kỳ xung Clock. Register file được kết nối trực tiếp với bộ xử lí trung tâm (CPU) của chip. Và chúng là nguồn chứa các số hạng trong các phép toán và cũng là đích chứa kết quả trả lại của phép toán.
Tóm lại 32 thanh ghi Register file của AVR được xem là một phần của CPU, vì thế chúng được CPU sử dụng trực tiếp và nhanh chóng, để gọi các thanh ghi này, chúng ta không cần gọi địa chỉ mà chỉ cần gọi trực tiếp tên của chúng. Register file thường được sử dụng như các toán hạng của các phép toán trong lúc lập trình.
+ Phần 2: RAM tĩnh, nội (Internal SRAM), là vùng không gian cho chứa các biến (tạm thời hoặc toàn cục) trong lúc thực thi chương trình, vùng này tương tự các
thanh RAM trong máy tính nhưng có dung lượng khá nhỏ (khoảng vài Kb, tùy thuộc vào loại chip).
+ Phần 3: RAM ngoại (External SRAM), các Chip AVR cho phép người sử dụng gắn thêm các bộ nhớ ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip.
+ Phần 4: EEPROM (Electrically ereasable programmable ROM) là một phần quan trọng của các Chip AVR mới, vì là ROM nên bộ nhớ này không bị xóa ngay cả khi không cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu. Bộ nhớ EEPROM được tách riêng và có địa chỉ tính từ 0x0000.
c. Cách thức hoạt động của Vi điều khiển AVR
Cấu trúc bên trong của một AVR. Ta thấy rằng 32 thanh ghi Register file được nối trực tiếp với ALU bằng 2 line. Vì thế mà ALU có thể truy suất trực tiếp tới 2 thanh ghi Register file trong cùng một chu kỳ xung Clock.
Các lệnh được chứa trong bộ nhớ chương trình Flash memory dưới dạng các thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock và mỗi lệnh chứa trong bộ nhớ chương trình được đưa vào trong thanh ghi lệnh Instruction register.
Các thanh ghi lệnh tác động và lựa chọn Register file cũng như RAM cho ALU thực thi. Trong lúc thực thi chương trình, địa chỉ của dòng lệnh đang thực thi được quyết định bởi một bộ đếm chương trình PC (Program counter). Đó chính là cách thức hoạt động của AVR.
AVR có ưu điểm là hầu hết các lệnh đều được thực thi trong 1 chu kỳ xung Clock, vì vậy có thể nguồn Clock lớn nhất cho AVR có thể nhỏ hơn một số vi điều khiển khác như PIC nhưng thời gian thực thi vẫn nhanh hơn.
Hình 2.24 Cấu trúc bên trong của AVR
d.Cổng vào ra của Vi điều khiển AVR
Cổng vào ra là một trong số các phương tiện để Vi điều khiển giao tiếp với các thiết bị ngoại vi. Mỗi chip có số cổng vào ra khác nhau. Các cổng vào ra của vi điều khiển AVR đều là cổng vào ra hai chiều có thể định hướng được. Tất cả các chân của cổng đều được nối với điện trở kéo lên, ta có thể cho phép hay không cho phép điện trở này hoạt động.
Mỗi một cổng vào ra của vi điều khiển được liên kết với ba thanh ghi PORTx, DDRx, PINx. Ba thanh ghi này sẽ được phối hợp với nhau để điều khiển hoạt động của cổng.
Hình 2.25 Cấu trúc chân trong PORT của Vi điều khiển AVR
Thanh ghi DDRx: Đây là thanh ghi 8 bit có thể đọc ghi, có chức năng điều khiển hướng của cổng (là lối ra hay lối vào). Khi một bit của thanh ghi này được set
lên 1 thì có nghĩa một chân tương ứng với nó được thiết lập là ngõ ra. Ngược lại nếu 1 bit của thanh ghi DDRx là 0 thì chân tương ứng với nó được thiết lập là ngõ vào.
Hình 2.26 Thanh ghi DDRA
Thanh ghi PORTx: Đây là thanh ghi 8 bit có thể đọc ghi, đây là thanh ghi dữ liệu của PORTx. Nếu một bit của thanh ghi này được thiết lập là 1 thì điện trở treo ở chân tương ứng của nó được kích hoạt, ngược lại nếu nếu bit này được thiết lập là 0 thì điện trở treo ở chân tương ứng sẽ không được kích hoạt, cổng ở trạng thái cao trở.
Hình 2.27 Thanh ghi PORTA
Thanh ghi PINx: Đây là thanh ghi chỉ đọc chứ không ghi, đây là địa chỉ trong bộ nhớ I/O kết nối trực tiếp các chân của cổng. Khi ta đọc PORTx tức là ta đọc dữ liệu được chốt trong PORTx, còn khi ta đọc PINx thì giá trị logic hiện thời ở chân của cổng tương ứng được đọc.
Hình 2.28 Thanh ghi PINA
Bảng 2.1 Cấu hình các chân của cổng
PORTxn là bit thứ n của thanh ghi PORTx.
Dấu “x” ở cột thứ 3 là để chỉ giá trị logic là tùy ý.
e. Bộ định thời Timer/counter của AVR
Trong mỗi chip của họ AVR được tích hợp số bộ định thời khác nhau. Có hai loại bộ định thời là bộ định thời 8 bit và bộ định thời 16 bit.
Hình Sơ đồ khối bộ Timer/Counter 8bit
Các thanh ghi có trong một bộ Timer (ở đây ta chọn bộ Timer 0 làm ví dụ): Thanh ghi TCCR0: Là thanh ghi điều khiển bộ Timer/Counter0, thanh ghi điều khiển này gồm 8 bit: FOC0, WGM00, COM01, COM00, WGM01, CS02, CS01, CS00 như hình vẽ:
Hình 2.30 Thanh ghi TCCR0
+ Bit 3 (WGM01) và bit 6 (WGM00) là các bit chọn chế độ hoạt động của Timer.
Bảng 2.2: Bảng chọn chế độ hoạt động của Timer
+ Bit 4 (COM00) và bit 5 (COM01) là các bít lựa chọn chế độ so sánh kết hợp. Nó điều khiển các ngõ ra so sánh ở pin OC0. Nếu một hoặc cả hai bit COM00 và COM01 bằng 1 thì ngõ ra OC0 thực hiện chức năng nhập dữ liệu từ các pin I/O kết nối với nó.
Bảng 2.3: Chế độ so sánh không PWM
+ Bit 2 (CS02) bit 1 (CS01) và bit 0 (CS00) là các bit chọn nguồn xung để sử dụng cho bộ Timer hoạt động.
Thanh ghi TCNT0: Giá trị của thanh ghi này tăng giảm một đơn vị sau mỗi chu kỳ xung Clock. Thay đổi giá trị thanh TCNT0 khi đang hoạt động sẽ kéo theo những lỗi khi so sánh giữa hai thanh ghi TCNT0 và OCR0.
Hình 2.31 Thanh ghi TCNT0
Thanh ghi OCR0: Thanh ghi OCR0 chứa một giá trị 8 bit, giá trị này được so sánh liên tục với giá trị của thanh ghi Counter TCNT0. Phép so sánh này có thể được sử dụng để tạo ra hành động ngắt ở ngõ ra hay tạo xung ở ngõ ra tại chân OC0.
Hình 2.32 Thanh ghi 0CR0
Thanh ghi TIMSK (Timer/Counter Interrupt Mask Register): Là thanh ghi mặt nạ ngắt.
Hình 2.33 Thanh ghi mặt nạ ngắt
+ Bít 1 (OCIE0): Khi bít này được thiết lập lên bằng 1 thì cho phép một ngắt so sánh.
+ Bít 0 (TOIE0): Khi bít này được thiết lập lên bằng 1 thì cho phép một ngắt tràn. Thanh ghi cờ ngắt TIFR (Timer/Counter interrupt flag register):
+ Bit 1 (OCF0): Bit này được set lên mức 1 khi xảy ra sự so sánh khớp giữa thanh ghi TCCN0 và thanh ghi 0CR0. Cờ OCF0 sẽ được tự động xóa đi khi ngắt tương ứng được thực thi.
+ Bit 0 (TOV0): Được set lên mức 1 khi bộ định thời tràn và nó được xóa khi ngắt tương ứng được thực thi.
f. Các chế độ hoạt động của bộ Timer
Chế độ hoạt động thường: Đây là chế độ hoạt động đơn giản nhất của Timer. Bộ đếm sẽ liên tục đếm tăng lên cho đến khi vượt quá giá trị lớn nhất TOP và sau đó sẽ được khởi động lại tại giá trị BOTTOM. Trong các hoạt động thông thường thì cờ tràn sẽ được thiết lập khi giá trị trong Timer đạt giá trị không và không bị xoá đi. Tuy nhiên nếu mà ngắt tràn được chấp nhận thì cờ ngắt sẽ tự động bị xoá khi ngắt được thực hiện. Giá trị trong Timer có thể được viết vào bất cứ lúc nào.
Chế độ so sánh: Đây là chế độ mà giá trị trong Timer luôn được so sánh với giá trị trong thanh ghi ORC. Khi giá trị trong Timer bằng giá trị trong thanh ghi ORC thì giá trị trong Timer sẽ bị xoá đi. Giá trị trong ORC đóng vai trò là giá trị TOP cho bộ đếm. Chế độ này cũng cho phép tạo ra tần số so sánh ở đầu ra. Tuy nhiên trong chế độ này nếu giá trị mới ghi vào thanh ghi ORC mà nhỏ hơn giá trị tức thời của bộ đếm thì thì một so sánh sẽ bị lỡ, khi đó bộ đếm sẽ đếm đến giá trị lớn nhất sau đó rơi xuống giá trị 0 trước khi so sánh tiếp theo xuất hiện.
Robot được trang bị vi điều khiển ATmega16.
Hình 2.36 ATmega 16 2.5.2 Thiết kế board mạch điều khiển
2.5.2.1 Mạch vi điều khiển
Linh kiện :
1. Vi điều khiển AT16.
2. 2 tụ bi 18p. 3. Thạch anh 11,0592MHz. 4. Nút nhấn. 5. Pin cắm. 6. Tụ hóa 4,7uF. 7. Diode. 8. LM 7805. 9. Tụ hóa 2200uF/50V. 10.Tụ hóa 1100uF/50V.
Hình 2.38 Sơ đồ mạch in Vi điều khiển
2.5.2.2 Mạch công suất và đảo chiều động cơ
Theo mạch thì nguồn 12V từ acquy cấp cho động cơ. Phần công suất để điều khiển động cơ là linh kiện Mosfet IRF540. Theo thiết kế mạch có phần cách ly giữa