Lập trình cho vi điều khiển sẽ ngày càng ứở nên phổ biến hơn và ứng dụng rộng rãi hơn Hiện nay việc ứng dụng vi điều khiển để thiết kế các mô hình giảng dạy tại các bộ môn điện tử, tự độ
Trang 1TÁC GIẢ: Nguyễn Thái Hà
dễ cập nhật và tạo ra nhanh hơn so với phần cứng Các chương trình và các thuât toán có thể điều chỉnh và cải tiến Chỉ cần nắm vững cơ sở Ịý thuyết và kĩ thuật lập trình là chúng ta có thể làm chủ vi điều khiển Trong tương lai, vi điều khiển sẽ càng ngày càng phát triển và sẽ có rất nhiều ứng dụng mang tmh đột phá Lập trình cho vi điều khiển sẽ ngày càng ứở nên phổ biến hơn và ứng dụng rộng rãi hơn
Hiện nay việc ứng dụng vi điều khiển để thiết kế các mô hình giảng dạy tại các bộ môn điện
tử, tự động hóa chưa nhiều, chưa trực quan Hệ thống các bài thực tập cơ bản, đơn giản chưa kích thích tính sáng tạo và khả năng thiết kế thực tế của các bạn sinh viên Việc thiết kế mô hình xe robot tự hành làm công cụ hỗ trợ học tập môn học vi xử lý, vi điều khiển sẽ giúp cho các bạn sinh viên tiếp cận nhanh với Bhh vự thiết kế robot và điều khiển tự động giúp cho môn học thêm trực quan, sinh động
và thực tế hơn
Trang 22 Mục tiêu và phương pháp thực hiện
2.1 Mục tiêu
Chúng tôi sử dụng vi điều khiển AVR để thiết kế mô hình xe robot tự hành đa tính năng như : thực hiện một hành trình tự động theo mô hình đường đi đã được thiết kế, thực hiện các động tác được lập trình trước thông qua bộ truyền nhận dữ liệu không dây thu phát FM (HM-TR), thu thập các
dữ liệu về nhiêt độ, quãng đường, thời gian và vận tốc Chúng tôi sẽ xây dựng chương trình điều khiển trên máy tính nhờ khả năng truyền thông của Vi điều khiển thông qua công cụ lập trình c#
2.2 Phưomg pháp thực hiện
Tìm hiểu về vi điều khiển AVR Atmegalố ( các thảnh phần như I/O, ADC đo nhiệt độ, timer điều khiển độ rộng xung PWM, uart giao tiếp truyền nhận dữ Kêu với máy tính, Interupt điều khiển lệnh bằng tay, ) và phần mềm viết chương trình và nạp code cho vi điều khiển ICC AVR
Tìm hiểu phần mềm Orcad để thiết kế và layout mạch
lìm hiểu phần mềm c# để viết giao diện chương trình điều khiển và thực hiện chức năng truyền thông không dây qua bộ thu phát FM (HM-TR)
Dùng dynamic rrriero để thu tín hiệu âm thanh làm tín hiệu điều khiển cho vi điều khiển xử
3.1.1 Đặc điểm nỗi bật của vi điều khiển ATmegal 6:
So với các chị) vi điều khiển khác, AVR có nhiều đặc tính hơn hẳn, hơn cả trong tính ứng dụng (dễ sử dụng) và đặc biệt là về chức năng Tất cả các module đều tích hợp trên một con chị), như ADC, UART, PWM, SPI, , số lệnh thực thi cũng nhiều hơn: 16 triệu lệnh trong lgiây
Gần như chúng ta không cần lắp thêm bất kỳ linh kiện phụ nào khi sử dụng AVR, thậm chí không cần nguồn tạo xung cbck cho chị) (thường là các khối thạch anh)
Trang 3Hỉnh L 1 Sơ đồ khối cụ thể của Atmegaỉó Hầu hết các chị) AVR đều có
cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ Bệu (data memory bus) và đường truyền cho bộ nhớ chương trinh (program memory bus) được tách riêng
VệyAVR hoạt động cạ thể ra sao?
Hình L 2 Kiến trúc bộ xử ìỷ trong chip A VR
Trang 432 thanh ghi trong tệp thanh ghi được kết nối trực tiếp với ALU (Arithmetic Logic Unit) - đon vị luận lý số học và nó cũng được xem như là CPU(Central Processing Ưnit - đon vị xử lý trung tâm) của AVR bằng hai đường (vùng được khoanh tròn màu đỗ trong hình )
Vỉ thế ALU có thể truy xuất cùng lúc hai thanh ghi trong tệp thanh ghi chỉ trong một chu kỳ xung clock.Còn các lệnh được chứa trong bộ nhó chương trình dưói dạng các thanh ghi 16 bit và được truy cập trong mỗi chu kỳ xung cbck Một lệnh sẽ được nạp vào thanh ghi lệnh, thanh ghi lệnh sẽ tác động và lựa chọn các thanh ghi trong tệp thanh ghi cũng như lựa chọn 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 bộ đếm chương trình- PC (program counter) Đó chính E cách thức hoạt động cơ bản của các chị)
AVR
Các chị) AVR có ưu điểm là hầu hết các lệnh đều được thực thi trong một chu kỳ xung dock Như vậy nguồn cbck lớn nhất cho AYR có thể nhỏ hơn một sổ vỉ điều khiển khác nhưng thòi gian thực thi dù lại nhanh hon
Hình 1 3 So sảnh tốc độ thực thi ỉệnh của A VR với các vi dim khiển khác
3.1.2 Thiết kế các module phần cứng cho xe robot tự hành :
Qua quá trình tìm hiểu và nghiên cúu về vi điều khiển AVR, tham khảo cụ thể datasheet cùa Atmegạló, cùng với những kiến thác cơ bản về điện tử có được, chúng tôi tiến hành thiết kế ứng dụng trên vi điều khiển AVR mà cụ thể đó là thiết kế xe robot tụ hành vói những mođub như sau: module driver board điều khản 2 động cơ sau; module sensor dò đường; module mạch nạp vỉ điều khản; module động cơ servo điều khản 2 bánh trước; module đo vận tốc, quãng đường, thời gian xe chạy, nhiệt độ mồ trường module truyền nhận dữ Bệu không dây thông qua bộ thu phát FM ( HM- TR)
Trang 53,1,2,1 Mođule Đriver board điều khiển 2 động cơ sau ỉ
Hình 1.4 Mạch driver board
Hai động cơ sau là hai động cơ DC được điều khiển đồng bộ bằng mạch driver board
ft*
Hình 1.5 Sơ đồ thiết kế và kết nổi driver board với động cơ sau Trong quá trình thực
hiện đề tài khi điều khiển động cơ bằng mạch cầu H dùng transistor HP 122 ,TTP127 độ tải dòng lớn, nhiệt độ phải chịu rất cao nên thường xảy
Trang 6ra hiện tượng không ổn định, Sau thời gian nghiên cứu nhóm đã tự thiết kế mạch driver board điều khiển 2 động cơ DC cho Motor DC quay thuận và nghịch bằng IC chuyên dụng điều khiển công suất
và dòng cấp là L298 chịu dòng 2A Đây là IC được tích hợp 2 mạch cầu H và bộ fogic bên trong
Hình 1.6 Kết nổi động cơ DC với driver board qua IC L298 Trong mạch trên động cơ
trái được kết nối với chân sổ 2 và chân số 3 của L298 còn động cơ phải được kết nối vói chân số 13
và số 14 của L298 Board driver được kết nối vói Vi điều khiển thông qua 4 dây tm hiệu là : left PWM ( Port B3 của vi điều khiển) và left DIM ( Port B4 của vỉ điều khiển) để điều khiển motor trái, tương
tự right PWM ( Port D7 của vi điều khiển ) và right DIM( port D6 của vi điều khiển) điều khiển motor phải Motor trái được điều khiển bằng độ rộng xung của Timer 0 và được kết nốivà motor phải được điều khiển bằng độ rộng xung của Timer 2
Hình 1.7 Nguyên ỉỷ hoạt động của IC L298
Trang 7(In 1 = 5V + Khi tín hiệu : ^„2 = 0Ị,
Khi đó motor quay thuận
Và ngươc lai khi : = ov
Un2 = 5V thì tín hiệu rouíl = 01' Iủc đó lout2 =
9V
f Ễf/í PWM TMS
\ieft mot»rẩẼB =
5r Khi đó motor quay nghịch
Bên canh đó bộ IC 7408 ( 4 cổng AND ) và IC LM324 ( 4 Opamp ) có khả năng thích ứng tốt với các
bộ timer, không làm mất xung PWM từ Timer do ngay bên trong mạch đã tích họp khối logic làm nhiệm vụ đệm tín hiệu PWM trước khi đưa vào IC điều khiển L298 Phải cấp nguồn 9V cho Motor,
và cấp nguồn 5V cho khối logic bên trong
3.1.2.2 Module sensor dò đường :
Hình 1.9 Nguyên lý mạch sensor dò đường
Trang 8Mạch gồm có 1 led thu và led phát hồng ngoại đặt gần nhau Led phát hồng ngoại chiếu hồng ngoại xuống đường và thông qua IC LM324 dửng 4 Opamp để so sánh tín hiệu :
+ Khi gặp vạch trắng thì hồng ngoại bị phản xạ về led thu, làm giảm nội trở của led thu và truyền bgic 1 về cho Vỉ điều khiển
+ Khi hồng ngoại gặp nền đen thì không bị phản xạ và led thu không nhận được hồng ngoại nên không làm giảm nội trở và truyền logie 0 về cho Vi điều khiển Trong mạch trên dùng 8 cặp led thu phát hồng ngoại do đố truyền song song 8 bit về Vi điều khiển thông qua Port c
Hình ỉ 10 Kết nối sensor dò đường với vi điều khiển
3.1.2.3 Module mạch nạp Vi điều khiển:
Hình 1.1 ỉ Board nạp vi điầi khiển và vỉ điầi khiển
Trang 9Trong đề tài này sử dụng mạch nạp đơn giản nhất đó là nạp qua cổng LPT Rất dễ thiết kế với các chân tác dụng trên vi điều khiển; MO SI, MISO, SCK, RESET và GND
3.1.2.4 Module ghép nối motor Servo điều khiển bảnh trước:
Hình 1.13 Ghép nối động cơ servo với VĐK Động cơ DC và động cơ bước
vốn là những hệ hồi tiếp vòng hở - ta cấp điện để động cơ quay nhưng chúng quay bao nhiêu thi ta không biết, kể cả đối vói động cơ bước là
Trang 10động cơ quay một gốc xác định tùy vào số xung nhận được Trong mô hình xe nếu sử dụng động cơ
DC hay động cơ bước ta vẫn đỉèu khiển được bánh trước nhờ sử dụng hệ thống bánh răng nhưng việc điều khiển chính xác vẫn chưa tốt và việc thực hiện các động tác qua cua ở các gốc độ lớn vẫn chưa thực hiện được Trong đề tài này sử dụng động cơ servo R/C thông dụng ( các động cơ servo điều khiển bằng Bên lạc vô tuyến được gọi là động cơ servo R/C (radio- controlled) ) được thiết kế cho những hệ thống hồi tiếp vòng kín TÚI hiệu ra của động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác
Động cơ và vôn kế nổi với mạch điều khiển tạo thành mạch hồi tiếp vòng kín Cả mạch điều khiển và động cơ đều được cấp nguồn DC (thường từ 4.8 - 7.2 V) Để quay động cơ, tín hiệu số được gối tới mạch điều khiển Tín hiệu này khởi động động cơ, thông qua chuỗi bánh răng, nối với vôn kế
Vị trí của trục vôn kế cho biết vị trí trục ra của servo KM vôn kế đạt được vị trí mong muốn, mạch điều khiển sẽ tắt động cơ
Hình ỉ ỉ4 Kết nối động cơ servo
Servo bao gồm một động cơ, một chuỗi các bánh răng giảm tốc, một mạch điều khiển, một vôn kế Động cơ servo R/C sử dụng có 3 dây:
+ Dây đỏ : dùng để cấp nguồn Vcc=6V cho servo
+ Dây đen: dùng để nổi đất
+ Dây cam: cấp tín hiệu điều khiển cho servo
Trục của động cơ servo R/C được định vị nhờ vào kĩ thuật gọi là điều biển độ rộng xung (PWM) Trong hệ thống này, servo là đáp ứng của một dãy các xung số ổn định Cụ thể hơn, mạch điều khiển là đáp ứng của một tín hiệu số có các xung biến đổi từ 1 - 2 ms Các xung này được gởi đi
50 lần/giây Chú ý rằng không phải sổ xung
Trang 11trong một giây điều khiển servo mà là chiều dài của các xung Servo đòi hỏi khoảng
30 - 60 xưng/giây Nếu số này qua Mp, độ chính xác vầ công suất để duy trì servo sẽ
giảm
Vói độ dài xung 1 ms, servo được điều khiển quay theo một chiều ( giả sử lầ
chiều kim đồng hồ như hình )
L*C“jll« O # pul**
Hình 1.15 Điều khiển vị trí của trục ra động cơ bằng điều chế độ rộng xung
Với độ dài xung xung 2 ms, servo quay theo chiều ngược lại Kĩ thuật này còn được gọi là tì
lệ số - chuyển động của servo tì lệ với tín hiệu sổ đểu khiển Công suất cung cấp cho động cơ bên trong servo cũng tì lệ với độ lệch giữa vị trí hiện tại của trục ra vói vị trí nó cần đến Neu servo ở gần vị trí đích, động cơ được truyền động vói tốc độ Mp Điều này đảm bảo rằng động cơ không vượt quá điểm đỉnh đến Nhưng nếu servo ở xa vị trí dich nó sẽ được truyền động vói vận tốc tối đa để đến đích càng nhanh càng tốt Khi trục ra đến vị trí mong muốn, động cơ giảm tốc Quá trình tưởng chừng nhu phức tạp này diễn ra trong khoảng thời gian rất ngạn - một servo trung bình cố thể quay 60° trong
vòng V A - Vi giây Chu kì xung điều khiển Servo: 16ms
Bảng 1.1 Liền hệ giữa độ rộng xung và góc quay
Trang 123.1.2.5 Module lấy tín hiệu giọng nói đưa ra làm tín hiệu điều khiển xe :
M MODUL rpu KĨHEN XE BANG
Ta sử dụng IC chuyên dụng LM324 và dynamic microphone cố dây
Nguyên lý hoạt động : Khỉ ta nối microphone sẽ tạo ra tín hiệu xoay chiều dạng điện thế Tụ C5
trong mạch có tác dụng ngăn điện thế DC chỉ cho điện thế AC đi vào mạch khuyếch đại không đảo Ngõ ra của Opamp LM324 được kích vào chân Bazo của 2 transistor C1815(npn), A1015(pnp), tói hiệu chân emitter giữa 2 transistor được hồi tiếp vào ngõ vào của Opamp Phân thế của cặp điện trở RIO, R9 đề chia đôi điện thế trước khi vào bộ ADC của Vi điều khiển ATmegalổ ( port A) Việc chia đôi để chỉ cho phép ngố vào ADC có điện thế 0-5 V, Vref = 5V
Trang 13Hình 1.21 Dạng sóng của từ “phải”
Trang 14Từ các dạng sóng ra ta sẽ phân tích các đặc đỉểm khác nhau và sử dụng để làm tín hiệu điều khiển đưa vào vỉ đỉều khiển:
Khi có khẩu lệnh : “ tới ” ữù xe sẽ chạy tới và tương tự với các khẩu lệnh “Bí9 xe sẽ chạy lùi, “trái99
thì xe sẽ rẽ trái, “phải” thì xe sẽ rẽ phải Ở đây chúng tôi chỉ dừng lại ở mức độ xử lý thô để minh họa cho khả năng xử lý tín hiệu của bộ ADC 10 bit cố trong VĐK chứ chưa sử dụng kĩ thuật xử lý âm thanh để VĐK thực hiện chức năng điều khiển tốt hơn
3.1.2.6 Mođule đo nhiệt độ môi trường xung quanh :
Hĩnh 1.22 Ngưyên ỉỷ mduỉe đo nhiệt độ môi trường Mạch đo
nhiệt độ môi trường tại một điểm thông qua sensor nhiệt LM35
o
LU 31P1
Hình 1.23 LM35
Trang 15LM35 là sensor đo nhiệt, đầu ra là 10mV/°C Ta dùng ADC của AVR là 10 bit để xử
lý-
Ta có giá tậ lớn nhất của thanh ghi dữ liệu ADC là 1023, vref =Vcc , giả thiết là Vcc =5V nên tại
0 độ c thì đầu ra của LM35 có giá trị là 0 V
Lấy ví dự nhiệt độ là 30 độ c => out = 30 X 10mV/C =0.3 V
Ta tính toán giá trị đọc được từ ADC
- ADC 10 bit (Vin là điện áp đưa vào chân ADC của AVR):
0.01*t*10(V) => 0.1*t*1023/5= t*205/10 Đe hiện thị giá trị nhiêt độ ta
có nhiêu phương án như LED 7, LCD, máy tính(qua RS232) Trong đề tài này ta dùng modul UART cho việc hiển thị trên máy tính Mạch có sử dụng thêm biến trở 10K để điều chỉnh độ khuếch đại phù họp
3.1.2.7 Module đo thời gian xe chạy :
Bên trong VDK dùng thêm 1 bộ đếm thời gian Timer2 và bộ ngắt tràn Timer 2 Ban đầu khi
xe đứng yên thì Timer2 không hoạt động và khời tạo thanh ghi TCNT2=0 Khi xe chạy thì bộ Timer2 hoạt động, thanh ghi TCNT2 có giá trị tăng từ 0-255 rồi trở về 0, tác động lên hàm ngạt tràn Timer2 Hàm này có nhiệm vụ tăng biến
256*1024 1 count 1 đơn vị vì người lập trình thiết kế sau mỗi « £ 1 -Ễ s thì tác động ngắt tràn Timer2 Từ đó ta có thể suy ra thời gian xe chạy theo công thức :
Timer = 64 * (256 * count + TCTN2) / 106 (s)
3.1.2.8 Module đo vận tốc của xe :
MODUL DO VAN
RJ
C
RĨ
ggtji ơ«
todkul*
Hình 1.24 Nguyên lỷ module đo vận tốc
Trang 16Dùng băng keo trắng, dán lên bánh xe Ban đầu, không có vạch trắng trước cặp led phát và thu thì điện thế trên ngõ ra led thu IR là 1.5V làm transistor C1815 dẫn, khi đó ngộ vào chân INTO của VĐK là ov Khi có vạch trắng thì led thu nhận được hồng ngoại bị phản xạ từ vạch trắng và led thu dẫn, kết quả là transistor có V BE =0.4V và ngưng dẫn, ngõ vào INTO là 5V Khi vạch trắng rời khỏi cặp led IR, ngõ vào INT trờ về 0 V làm tác động cạnh xuống và biến round tăng 1 đom vị đồng thời bên trong VDK còn dùng thêm 1 bộ đếm thời gian Timer2 và bộ ngắt tràn Timer 2 Khi xe chạy, thì VDK vừa đo số vòng quay bánh xe vừa đo bôn thời gian xe chạy
Khi xe dừng lại thì việc đo thời gian hoàn thành, bộ đếm dừng lạiVĐK tính ra quãng đường và vận tốc trung bình
Trên bánh xe có dán n vạch trắng
Quãng đường =(round/n)* chu vi bánh xe Vận tốc trung bình =quãng đường /thòi gian
3.1.2.9 Module truyền nhận dữ liệu không dây:
Đây là sản phẩm của công ty Microelectric, được thiết kế cho những ứng dụng cần truyền nhận
dữ kêu không dây Tốc độ cao, cự ty truyền nhận xa hon, có khả năng thay đổi tần số, hình thức truyền theo chuẩn USART có khả năng thay đổi các thông số phù họp với ứng dụng và thời nghỉ thấp là các tính năng tuyệt vời của bộ thu phát FM Giao thức giao tiếp theo chuẩn USART khung dữ kệu thì hoàn toàn phụ thuôc vào việc điều khiển, hoàn toàn phụ thuôc vào người dùng Đây là modun có thể được nhúng vào trong những thiết kế đã có sẵn với giá thành rẻ và khả năng giao tiếp không dây mạnh
mẽ
Các đặc tính :
-Có khả năng thay đổi tần số, chống giao thoa tốt
-Truyền nhận 2 chiều theo phưong thức haft-duplex
-Thay đổi được tần số, cho phép sử dụng trong các ứng dụng FDMA
-Chuyển đổi từ RF (tín hiệu sóng FM) thảnh giao thức theo chuẩn USART một cách tự động, tín cậy và dễ dàng sử dụng
-Cho phép cấu hình định dạng UART, với tốc độ từ 300 bit/giây đến 19200 bit/giây
-Sử dụng chân ENABLE để điều khiển chu trinh thực thi làm thỏa mãn các yêu cầu ứng dụng khác nhau
-Khả năng hoạt động cao, cự ty truyền nhận xa đến hơn 300m khi không có vật che chắn