Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

ĐẶC TẢ CÁC MODULE PHẦN CỨNG - ĐẶC TẢ CÁC MODULE PHẦN CỨNG

E-mail Print PDF
Article Index
ĐẶC TẢ CÁC MODULE PHẦN CỨNG
trang
All Pages


4.3. Khối Loa Beep


Khối Loa beep tắt/mở bằng một khóa điện tử và được điều khiển bởi chân PE5
của ATmega64.
Khi PE5=1: ON, loa phát ra tiếng kêu.
Khi PE5=0: OFF, loa không phát ra tiếng kêu.

4.4.Khối DipSwitch



DipSW gồm nhiều công-tắc hoạt động độc lập nhưng được gắn chung với
nhau thành một thanh. Có nhiều loại DipSW, khác biệt lớn nhất giữa chúng
là số lượng công-tắc. Trong Mạch VĐK dùng DipSW-4, tức là DipSW có 4
công tắc.
Về nguyên lý thì rất đơn giản, khi gạt một công-tắc lên ON thì hai chân tương
ứng ở hai phía công-tắc đó sẽ nối nhau.
Trên Mạch VĐK, DipSW được ứng dụng trên mạch BKIT MCR để cài đặt mode
cho xe chạy. Với DipSW-4 ta chọn được 16 mode tứ mode 0 đến mode 15
(0b0000 -> 0b1111).


Khi lập trình các chân PC3:0 ta sẽ cài đặt ở chế độ input và được kéo lên. Khi
công-tắc hở (OFF) ta sẽ nhận được mức 1, và khi công-tắc đóng (ON) ta
nhận được mức 0. Khi một chân VĐK cài đặt ở chế độ kéo lên (pull-up), có
thể hình dung là bên trong VĐK có một điện trở nối chân đó của VĐK lên VCC.



4.5. Khối Nút nhấn
Mỗi nút nhấn có hai chân, nguyên lý hoạt động rất đơn giản, khi không nhấn
nút (OFF) thì hai chân của nút không nối nhau, và ngược lại khi nhấn nút
(ON), hai chân của nút sẽ nối nhau.
Trên Mạch VĐK có 4 nút nhấn được kết nối theo sơ đồ sau:



Tương tự như việc lập trình DipSW, các chân PC7:4 ta sẽ cài đặt ở chế độ input và được kéo lên. Khi nút không nhấn (OFF) ta sẽ nhận được mức 1, và khi nút được nhấn (ON) ta nhận được mức 0. 

  • Chống rung phím nhấn

+ Vấn đề rung, nhiễu khi nhấn nút.


Khi không nhấn nút tín hiệu ở mức cao, khi nhấn nút tín hiệu xuống mức thấp.
Trong khoảng thời gian tín hiệu chuyển từ mức cao xuống mức thấp sẽ xảy
ra tình trạng rung, nhiễu làm cho tín hiệu không rõ ràng. Mặc dù khoảng thời
gian rung, nhiễu là rất nhỏ, chưa tới 1ms (phụ thuộc vào cách nhấn nút và
chất lượng nút nhấn), nhưng với tốc độ xử lý rất cao của VĐK thì đây là một
vấn đề cần phải giải quyết.

+ Giải pháp chống rung
Có hai giải pháp thường được đưa ra để lựa chọn là giải pháp phần cứng (thực
hiện trong giai đoạn thiết kế mạch), và giải pháp phần mềm (lúc lập trình). Ở
đây hướng dẫn các bạn một giải thuật chống rung nút bằng phần mềm.
Nội dung: định kỳ cứ sau một khoảng thời gian cố định (1ms) bạn đọc giá trị
nút nhấn một lần, so sánh giá trị 3 lần đọc liên tiếp, nếu chúng bằng nhau thì
nhận giá trị đó coi như nút nhấn không ở trong trạng thái rung.

Ví dụ: hàm sau được thực hiện mỗi 1ms một lần để lấy giá trị nút nhấn từ
PORTC lưu vào biến key_input, các biến key0, key1, key2 để lưu 3 giá trị
nút nhấn ở 3 trạng thái liên tiếp nhau:

Code:
void update_key(){ 	key2 = key1; 	key1 = key0; 	key0 = PINC;   	if ((key0 == key1) && (key1 == key2)){ 		  key_input = key0; 	} }
  • Các hàm điều khiển DipSW và nút nhấn:

Các hàm được viết trong module input (tham khảo thư mục input gồm file
input.h và input.c).

void input_init();
Hàm khởi tạo các I/O cho việc nhận input. Hàm này được gọi một lần ở đầu
chương trình.

void update_input(); 
Hàm đọc giá trị các input, xử lý rung, nhiễu và đưa giá trị vào các biến
key_input, dipsw_input,… Hàm này được gọi định thời bởi ngắt timer.

unsigned char get_key(unsigned char _key_id); 
Hàm kiểm tra xem nút nhấn có thứ tự _key_id có được nhấn không. Nếu nút
được nhấn hàm trả về 1, ngược lại trả về 0. Tham số _key_id nhận một trong
các giá trị KEY0, KEY1, KEY2, KEY3 tương ứng với các nút 0,1,2,3 trên Mạch
VĐK.

unsigned char get_dipsw(); 
Hàm lấy giá trị DipSW, kết quả trả về từ 0 đến 15 tương ứng với giá trị cài đặt
trên DipSW.

5. Điều khiển RC Servo
RC Servo là hệ thống gồm động cơ DC, hộp số, và vi mạch điều khiển. Tùy theo
tín hiệu điều khiển mà nó nhận được, RC Servo sẽ quay trục đến một góc xác
định trong khoảng từ 00 đến 1800. 


Điều khiển RC Servo chính là đưa tín hiện vào dây PWM để RC Servo quay theo
góc mà mình mong muốn. Tín hiệu PWM cho RC Servo có chu kỳ 16ms, độ rộng
xung từ 0.7ms đến 2.3ms, mô tả theo hình bên dưới:

 

  • Các hàm điều khiển RC Servo:

Các hàm viết trong module handle (tham khảo thư mục handle gồm file
handle.h và file handle.c).

void handle_init();
Hàm khởi tạo chế độ điều khiển RC Servo, được gọi một lần ở đầu chương trình.

void handle(int _angle); 
Hàm cài đặt góc quay cho RC Servo.Tham số _angle là góc quay cần cài đặt
cho RC Servo, tham số này có giá trị từ -90 đến 90, tương ứng với góc quay
từ -900 đến 900 của đầu xe. Khi gọi handle(0) thì đầu xe ở vị trí giữa.

6. Mạch Công Suất và nguyên lý điều khiển động cơ điện một chiều
6.1. Nguyên lý điều khiển động cơ một chiều

Động cơ điện một chiều (hay động cơ DC) là động cơ hoạt động với dòng điện
một chiều.

  • Điều khiển chiều của động cơ điện một chiều

Khi ta cấp điện thế dương (+) vào một cực của động cơ và cấp điện thế âm
(-) vào cực còn lại thì động cơ sẽ quay theo một chiều cố định. Và khi ta
cấp điện thế ngược lại, đảo chiều dương âm thì động cơ sẽ quay theo chiều
ngược lai.

  • Điều khiển tốc độ động cơ điện một chiều

Để điều khiển tốc độ động cơ điện một chiều ta dùng phương pháp điều xung
(PWM). Như trên ta đã biết, khi được cấp điện thì động cơ quay, và khi
không cấp điện nữa thì động cơ ngừng hoạt động. Trong một khoảng thời
gian rất ngắn 128us (gọi là chu kỳ điều xung T), và chia khoảng thời gian này
thành 2 phần, ta sẽ cấp điện cho động cơ một phần thời gian đầu, và ngừng
cấp điện ở phần thời gian sau. Lặp lại chu kỳ đó liên tục, như thế động cơ sẽ
liên tục ở trạng thái quay-ngừng-quay-ngừng-quay… Vì chu kỳ điều xung là
rất nhỏ nên ta sẽ thấy động cơ quay liên tục. Tốc độ của động cơ phụ thuộc
và tỷ lệ thời gian động cơ được cấp điện trong một chu kỳ.


Trong một chu kỳ, tỷ lệ thời gian động cơ được cấp điện càng nhiều thì động cơ quay càng nhanh.

  • Các hàm điều khiển động cơ

Các hàm cài đặt và điều khiển động cơ viết trong module speed (tham khảo
thư mục speed gồm file speed.h và speed.c).

void speed_init(); 
Hàm khởi tạo chức năng PWM của ATmega64 để điều khiển động cơ, hàm được gọi một lần ở đầu chương trình.

void speed(int _left_speed, int _right_speed); 
Hàm cài đặt tốc độ và chiều cho hai động cơ bánh xe. Các tham số:
_left_speed: có độ lớn từ 0 đến 255 tương ứng với tốc tộ từ 0% đến 100% của động cơ trái. Có dấu dương (+) nếu chạy TIẾN và âm (-) nếu chạy LÙI.
_right_speed: tương tự, đây là tham số điều khiển tốc độ và chiều cho động cơ phải.

6.2. Mạch Công Suất

Như đã nói ở trên, Mạch Công Suất có nhiệm vụ khuếch đại tín hiệu đầu vào
điện với điện thế thấp từ VĐK thành tín hiệu điều khiển đầu ra với điện thế
cao để điều khiển động cơ.
Các thành phần trên mạch được mô tả trong hình sau:


Jack kết nối Mạch Công Suất với Mạch VĐK gồm 10 chân, mô tả chi tiết trong
bảng sau:


*** Ghi chú:
+ Kí hiệu “Mạch -> PE2” nghĩa là đọc tín hiệu từ Mạch Công Suất đến VĐK.
+ Kí hiệu “Mạch <- PB7” nghĩa là xuất tín hiệu từ VĐK đến Mạch Công Suất

Nguồn: bkit4u.com

 

 Theo http://thegioiic.com/

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên

 



Last Updated ( Tuesday, 24 November 2015 17:43 )  

Related Articles

Chat Zalo