Trong hướng dẫn này, chúng ta sẽ giao diện mô-đun cần điều khiển với vi điều khiển atmega8. Một JOY STICK là một mô-đun đầu vào được sử dụng để giao tiếp. Về cơ bản, nó giúp người dùng giao tiếp với máy dễ dàng. Một cần điều khiển được hiển thị trong hình dưới đây.
Mô-đun cần điều khiển có hai trục - một trục nằm ngang và trục kia nằm dọc. Mỗi trục của cần điều khiển được gắn với một chiết áp hoặc nồi hoặc biến trở. Điểm giữa được đưa xuống là Rx và Ry. Các chân này làm chân tín hiệu đầu ra cho JOYSTICK. Khi thanh chuyển động dọc theo trục nằm ngang, với điện áp nguồn thì điện áp tại chân Rx thay đổi.
Điện áp Rx tăng khi dịch chuyển về phía trước, điện áp tại chân Rx giảm khi dịch chuyển về phía sau. Tương tự, điện áp tại chốt Ry tăng khi di chuyển lên trên, điện áp tại chốt Ry giảm khi di chuyển xuống.
Vì vậy, chúng tôi có bốn hướng của JOYSTICK trên hai kênh ADC. Trong trường hợp bình thường, chúng tôi có 1Volt trên mỗi pin trong trường hợp bình thường. Khi thanh được di chuyển, điện áp trên mỗi chân sẽ cao hoặc thấp tùy thuộc vào hướng. Vì vậy, bốn hướng như (0V, 5V trên kênh 0) cho trục x; (0V, 5V trên kênh 1) cho trục y.
Chúng tôi sẽ sử dụng hai kênh ADC của ATMEGA8 để thực hiện công việc. Chúng tôi sẽ sử dụng kênh 0 và kênh 1.
Thành phần bắt buộc
Phần cứng: ATMEGA8, nguồn điện (5v), BỘ LẬP TRÌNH AVR-ISP, LED (4 miếng), tụ 1000uF, tụ 100nF (5 miếng), điện trở 1KΩ (6 miếng).
Phần mềm: Atmel studio 6.1, progisp hoặc flash magic.
Sơ đồ mạch và giải thích hoạt động
Điện áp trên JOYSTICK không hoàn toàn tuyến tính; nó sẽ là một ồn ào. Để lọc tạp âm, người ta đặt tụ điện trên mỗi điện trở trong mạch như hình vẽ bên.
Như trong hình có bốn đèn LED trong mạch. Mỗi đèn LED đại diện cho mỗi hướng của JOYSTICK. Khi thanh được di chuyển theo một hướng, thì đèn LED tương ứng sẽ phát sáng.
Trước khi đi sâu hơn, chúng ta cần nói về ADC của ATMEGA8, Trong ATMEGA8, chúng tôi có thể cung cấp đầu vào Analog cho bất kỳ kênh nào trong số BỐN kênh của PORTC, không quan trọng chúng tôi chọn kênh nào vì tất cả đều giống nhau, chúng tôi sẽ chọn kênh 0 hoặc PIN0 của PORTC.
Trong ATMEGA8, ADC có độ phân giải 10 bit, vì vậy bộ điều khiển có thể phát hiện ra sự thay đổi tối thiểu của Vref / 2 ^ 10, vì vậy nếu điện áp tham chiếu là 5V, chúng tôi nhận được mức tăng đầu ra kỹ thuật số cho mỗi 5/2 ^ 10 = 5mV. Vì vậy, với mỗi mức tăng 5mV ở đầu vào, chúng ta sẽ có mức tăng là một ở đầu ra kỹ thuật số.
Bây giờ chúng ta cần thiết lập sổ đăng ký ADC dựa trên các điều khoản sau, 1. Trước hết chúng ta cần kích hoạt tính năng ADC trong ADC.
2. Ở đây sẽ nhận được điện áp đầu vào tối đa để chuyển đổi ADC là + 5V. Vì vậy, chúng tôi có thể thiết lập giá trị lớn nhất hoặc tham chiếu của ADC đến 5V.
3. Bộ điều khiển có tính năng chuyển đổi kích hoạt có nghĩa là chuyển đổi ADC chỉ diễn ra sau một trình kích hoạt bên ngoài, vì chúng tôi không muốn rằng chúng tôi cần đặt các thanh ghi để ADC chạy ở chế độ chạy tự do liên tục.
4. Đối với bất kỳ ADC nào, tần số chuyển đổi (giá trị Tương tự sang giá trị Kỹ thuật số) và độ chính xác của đầu ra kỹ thuật số tỷ lệ nghịch. Vì vậy, để có độ chính xác tốt hơn của đầu ra kỹ thuật số, chúng ta phải chọn tần số thấp hơn. Đối với đồng hồ ADC bình thường, chúng tôi đang đặt giá trị trước của ADC thành giá trị lớn nhất (2). Vì chúng tôi đang sử dụng đồng hồ bên trong 1MHZ, đồng hồ của ADC sẽ là (1000000/2).
Đây là bốn điều duy nhất chúng ta cần biết để bắt đầu với ADC.
Tất cả bốn tính năng trên được thiết lập bởi hai thanh ghi:
ĐỎ (ADEN): Bit này phải được đặt để kích hoạt tính năng ADC của ATMEGA.
BLUE (REFS1, REFS0): Hai bit này được sử dụng để đặt điện áp tham chiếu (hoặc điện áp đầu vào tối đa mà chúng ta sẽ cung cấp). Vì chúng ta muốn có điện áp tham chiếu 5V, REFS0 nên được thiết lập.
VÀNG (ADFR): Bit này phải được thiết lập để ADC chạy liên tục (chế độ chạy tự do).
PINK (MUX0-MUX3): Bốn bit này dùng để báo kênh đầu vào. Vì chúng ta sẽ sử dụng ADC0 hoặc PIN0, chúng ta không cần đặt bất kỳ bit nào như trên bảng.
BROWN (ADPS0-ADPS2): ba bit này dùng để thiết lập vị trí đặt trước cho ADC. Vì chúng tôi đang sử dụng một điểm đặt trước là 2, chúng tôi phải đặt một bit.
DARK GREEN (ADSC): bit này được thiết lập để ADC bắt đầu chuyển đổi. Bit này có thể bị vô hiệu hóa trong chương trình khi chúng ta cần dừng chuyển đổi.