Mục lục:
- Bước 1: ADC là gì?
- Bước 2: Cách hoạt động của ADC trong AVR- Vi điều khiển
- Bước 3: Công thức chuyển đổi ADC
- Bước 4: Làm thế nào để cấu hình ADC trong ATmega8?
- Bước 5: Lựa chọn ADLAR
- Bước 6: Lựa chọn ADCSRA
- Bước 7: Nếu bạn muốn lấy giá trị ADC, bạn cần phải hoàn thành một số công việc được liệt kê dưới đây
- Bước 8: Đặt giá trị ADC
- Bước 9: Định cấu hình Pin LED đầu ra
- Bước 10: Cấu hình phần cứng ADC
- Bước 11: Bật ADC
- Bước 12: Bắt đầu chuyển đổi từ tương tự sang kỹ thuật số
- Bước 13: WHILE Forever
- Bước 14: Cuối cùng, mã hoàn thành là
Video: Giới thiệu về ADC trong Vi điều khiển AVR - cho người mới bắt đầu: 14 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Trong hướng dẫn thid, bạn sẽ biết mọi thứ về ADC trong vi điều khiển avr
Bước 1: ADC là gì?
Bộ chuyển đổi ADC hay Analog to Digital cho phép một bộ chuyển đổi điện áp tương tự sang giá trị kỹ thuật số mà vi điều khiển có thể sử dụng. Có nhiều nguồn tín hiệu tương tự mà người ta có thể muốn đo. Có sẵn các cảm biến tương tự để đo nhiệt độ, cường độ ánh sáng, khoảng cách, vị trí và lực, chỉ là một số cảm biến.
Bước 2: Cách hoạt động của ADC trong AVR- Vi điều khiển
AVR ADC cho phép bộ vi điều khiển AVR chuyển đổi điện áp tương tự sang các giá trị kỹ thuật số với ít hoặc không có bộ phận bên ngoài. ATmega8 có ADC xấp xỉ liên tiếp 10 bit. ATmega8 có ADC 7 kênh tại PortC. ADC có một chân cấp điện áp tương tự riêng biệt, AVCC. AVCC không được chênh lệch quá ± 0,3V so với VCC. Tham chiếu điện áp có thể được tách ra bên ngoài tại chân AREF. AVCC được sử dụng làm tham chiếu điện áp. ADC cũng có thể được đặt để chạy liên tục (chế độ chạy tự do) hoặc chỉ thực hiện một chuyển đổi.
Bước 3: Công thức chuyển đổi ADC
Trong đó Vin là điện áp trên chân đầu vào đã chọn và Vref là tham chiếu điện áp đã chọn
Bước 4: Làm thế nào để cấu hình ADC trong ATmega8?
Các thanh ghi sau được sử dụng để triển khai ADC trong ATmega8
Lựa chọn bộ ghép kênh ADC
Bước 5: Lựa chọn ADLAR
Kết quả điều chỉnh trái của ADC Bit ADLAR ảnh hưởng đến việc trình bày kết quả chuyển đổi ADC trong thanh ghi dữ liệu ADC. Viết một vào ADLAR để điều chỉnh kết quả bên trái. Nếu không, kết quả được điều chỉnh đúng
Khi quá trình chuyển đổi ADC hoàn tất, kết quả được tìm thấy trong ADCH và ADCL Khi ADCL được đọc, Thanh ghi dữ liệu ADC không được cập nhật cho đến khi ADCH được đọc. Do đó, nếu kết quả được điều chỉnh và không yêu cầu độ chính xác quá 8 bit, thì chỉ cần đọc ADCH là đủ. Nếu không, ADCL phải được đọc trước, sau đó là ADCH. Bit chọn kênh tương tự Giá trị của các bit này chọn đầu vào tương tự nào được kết nối với ADC.
Bước 6: Lựa chọn ADCSRA
• Bit 7 - ADEN: ADC Enable Ghi bit này vào một sẽ kích hoạt ADC. Bằng cách ghi nó thành 0, ADC bị tắt
• Bit 6 - ADSC: ADC Bắt đầu Chuyển đổi Trong chế độ Chuyển đổi Đơn, ghi bit này vào một bit để bắt đầu mỗi chuyển đổi. Trong chế độ Chạy miễn phí, ghi bit này vào một bit để bắt đầu chuyển đổi đầu tiên.
• Bit 5 - ADFR: Chọn ADC Chạy Miễn phí Khi bit này được đặt (một), ADC sẽ hoạt động ở chế độ Chạy Tự do. Trong chế độ này, ADC lấy mẫu và cập nhật liên tục các Thanh ghi dữ liệu. Xóa bit này (không) sẽ chấm dứt chế độ Chạy Miễn phí.
• Bit 4 - ADIF: Cờ ngắt ADC Bit này được đặt khi quá trình chuyển đổi ADC hoàn tất và các thanh ghi dữ liệu được cập nhật. Ngắt hoàn thành chuyển đổi ADC được thực thi nếu bit ADIE và bit I trong SREG được đặt. ADIF bị xóa bởi phần cứng khi thực thi Véc tơ xử lý ngắt tương ứng. Ngoài ra, ADIF được xóa bằng cách ghi một logic vào cờ.
• Bit 3 - ADIE: Kích hoạt ngắt ADC Khi bit này được ghi vào một và bit I trong SREG được đặt, thì Ngắt hoàn thành chuyển đổi ADC sẽ được kích hoạt.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Chọn Bits Theo biểu dữ liệu, bảng định sẵn này cần được đặt sao cho tần số đầu vào ADC nằm trong khoảng từ 50 KHz đến 200 KHz. Đồng hồ ADC được lấy từ đồng hồ hệ thống với sự trợ giúp của ADPS2: 0 Các bit này xác định hệ số phân chia giữa tần số XTAL và đồng hồ đầu vào tới ADC.
Bước 7: Nếu bạn muốn lấy giá trị ADC, bạn cần phải hoàn thành một số công việc được liệt kê dưới đây
- Đặt giá trị ADC
- Định cấu hình chân đèn LED đầu ra
- Định cấu hình Phần cứng ADC
- Bật ADC
- Bắt đầu chuyển đổi từ tương tự sang kỹ thuật số
- WHILE Forever
NẾU Giá trị ADC Cao hơn thì Đặt giá trị, Bật LED ELSE Tắt LED
Bước 8: Đặt giá trị ADC
Mã: uint8_t ADCValue = 128;
Bước 9: Định cấu hình Pin LED đầu ra
Mã: DDRB | = (1 << PB1);
Bước 10: Cấu hình phần cứng ADC
Định cấu hình Phần cứng ADC
Điều này được thực hiện thông qua việc thiết lập các bit trong thanh ghi điều khiển cho ADC. Đầu tiên, hãy đặt prescalar cho ADC. Theo datasheet, prescalar này cần được thiết lập để tần số đầu vào ADC nằm trong khoảng từ 50 KHz đến 200 KHz. Đồng hồ ADC có nguồn gốc từ đồng hồ hệ thống. Với tần số hệ thống là 1MHz, bộ đếm trước là 8 sẽ dẫn đến tần số ADC là 125 Khz. Tỷ lệ đặt trước được đặt bởi các bit ADPS trong thanh ghi ADCSRA. Theo biểu dữ liệu, tất cả ba bit ADPS2: 0 phải được đặt thành 011 để có được 8 bộ đếm trước.
Mã: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Tiếp theo, hãy đặt điện áp tham chiếu ADC. Điều này được điều khiển bởi các bit REFS trong thanh ghi ADMUX. Sau đây đặt điện áp tham chiếu thành AVCC.
Mã: ADMUX | = (1 << REFS0);
Để đặt kênh được chuyển qua bộ ghép kênh thành ADC, các bit MUX trong thanh ghi ADMUX cần được đặt tương ứng. Vì chúng tôi đang sử dụng ADC5 ở đây
Mã: ADMUX & = 0xF0; ADMUX | = 5;
Để đưa ADC vào chế độ chạy tự do, hãy đặt bit ADFR được đặt tên phù hợp trong thanh ghi ADCSRA:
Mã: ADCSRA | = (1 << ADFR);
Một thay đổi cài đặt cuối cùng sẽ được thực hiện để giúp việc đọc giá trị ADC đơn giản hơn. Mặc dù ADC có độ phân giải 10 bit, nhưng nhiều thông tin này thường không cần thiết. Giá trị 10 bit này được chia thành hai thanh ghi 8 bit, ADCH và ADCL. Theo mặc định, 8 bit thấp nhất của giá trị ADC được tìm thấy trong ADCL, với hai bit trên là hai bit thấp nhất của ADCH. Bằng cách thiết lập bit ADLAR trong thanh ghi ADMUX, chúng ta có thể căn trái giá trị ADC. Điều này đặt 8 bit cao nhất của phép đo vào thanh ghi ADCH, với phần còn lại trong thanh ghi ADCL. Nếu sau đó chúng ta đọc thanh ghi ADCH, chúng ta nhận được giá trị 8 bit đại diện cho phép đo 0 đến 5 volt của chúng ta dưới dạng một số từ 0 đến 255. Về cơ bản, chúng ta đang chuyển phép đo ADC 10 bit thành 8 bit. Đây là mã để đặt bit ADLAR:
Mã số:
ADMUX | = (1 << ADLAR); Điều đó hoàn tất việc thiết lập phần cứng ADC cho ví dụ này. Cần đặt thêm hai bit trước khi ADC bắt đầu thực hiện các phép đo.
Bước 11: Bật ADC
Để bật ADC, hãy đặt bit ADEN trong ADCSRA:
Mã: ADCSRA | = (1 << ADEN);
Bước 12: Bắt đầu chuyển đổi từ tương tự sang kỹ thuật số
Để bắt đầu các phép đo ADC, bit ADSC trong ADCSRA cần được đặt:
Mã: ADCSRA | = (1 << ADSC);
Tại thời điểm này, ADC sẽ bắt đầu liên tục lấy mẫu điện áp được trình bày trên ADC5. Mã cho đến thời điểm này sẽ giống như sau:
Bước 13: WHILE Forever
Việc duy nhất cần làm là kiểm tra giá trị ADC và đặt các đèn LED để hiển thị chỉ báo cao / thấp. Vì số đọc ADC trong ADCH có giá trị lớn nhất là 255, nên giá trị thử nghiệm của th được chọn để xác định xem điện áp là cao hay thấp. Một câu lệnh IF / ELSE đơn giản trong vòng lặp FOR sẽ cho phép chúng tôi bật đúng đèn LED:
Mã số
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Bật đèn LED
}
khác
{
PORTB & = ~ (1 << PB0); // Tắt đèn LED
}
Bước 14: Cuối cùng, mã hoàn thành là
Mã số:
#bao gồm
int main (void)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Đặt LED1 làm đầu ra
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Đặt ADC prescalar thành 8 - // 125KHz tốc độ mẫu 1MHz
ADMUX | = (1 << REFS0); // Đặt tham chiếu ADC thành AVCC
ADMUX | = (1 << ADLAR); // Điều chỉnh bên trái kết quả ADC để cho phép dễ dàng đọc 8 bit
ADMUX & = 0xF0;
ADMUX | = 5; // Các giá trị MUX cần được thay đổi để sử dụng ADC0
ADCSRA | = (1 << ADFR); // Đặt ADC thành Chế độ chạy tự do
ADCSRA | = (1 << ADEN); // Bật ADC
ADCSRA | = (1 << ADSC); // Bắt đầu chuyển đổi A2D trong khi (1) // Vòng lặp mãi mãi
{
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Bật LED1
}
khác
{
PORTE & = ~ (1 << PB1); // Tắt LED1
}
}
trả về 0;
}
Lần đầu xuất bản hướng dẫn này Bấm vào đây
Đề xuất:
Cách cài đặt Linux (Người mới bắt đầu bắt đầu tại đây!): 6 bước
Cách cài đặt Linux (Người mới bắt đầu Bắt đầu tại đây!): Chính xác thì Linux là gì? Chà, bạn đọc thân mến, Linux là một cánh cổng dẫn đến một thế giới của những khả năng hoàn toàn mới. Đã qua rồi thời OSX tận dụng niềm vui khi sở hữu một chiếc máy tính. Đã qua đi những ký hiệu ngu ngốc về bảo mật thông qua Windows 10. Bây giờ, đến lượt bạn t
Giới thiệu 'Deodorino' - Arduino được điều khiển bằng tia hồng ngoại trong một thanh khử mùi rỗng. Nhấp vào ảnh đầu tiên: 7 bước
Giới thiệu 'Deodorino' - Arduino được điều khiển bằng tia hồng ngoại trong một thanh khử mùi rỗng. Nhấp vào Ảnh đầu tiên: Bây giờ xuống chi tiết
Cách chế tạo Robot điều khiển di động - Dựa trên DTMF - Không có Vi điều khiển & Lập trình - Kiểm soát từ mọi nơi trên thế giới - RoboGeeks: 15 bước
Cách chế tạo Robot điều khiển di động | Dựa trên DTMF | Không có Vi điều khiển & Lập trình | Kiểm soát từ mọi nơi trên thế giới | RoboGeeks: Muốn tạo ra một robot có thể được điều khiển từ mọi nơi trên thế giới, Hãy làm điều đó
Làm thế nào để tổ chức một buổi giới thiệu và giới thiệu các tài liệu hướng dẫn: 8 bước
Làm thế nào để tổ chức một buổi trình diễn và kể về những người có thể hướng dẫn: Đây là một hướng dẫn để chạy một Buổi trình diễn và Kể về những người có thể hướng dẫn. Nó chủ yếu dựa trên một sự kiện được tổ chức tại Guiductables vào thứ Sáu, ngày 9 tháng 3 năm 2007, nhưng cũng dựa trên hiện thân trước đó của sự kiện này, Squid Labs Light Salons
Chuyển đổi (chỉ Giới thiệu) Bất kỳ Tập tin Phương tiện nào sang (Chỉ Giới thiệu) Bất kỳ Tập tin Phương tiện nào Khác miễn phí !: 4 bước
Chuyển đổi (chỉ Giới thiệu) Bất kỳ tệp phương tiện nào thành (chỉ Giới thiệu) Bất kỳ tệp phương tiện nào khác miễn phí !: Lời hướng dẫn đầu tiên của tôi, xin chúc mừng! Dù sao, tôi đã lên Google để tìm kiếm một chương trình miễn phí có thể chuyển đổi tệp Youtube.flv của tôi sang định dạng phổ biến hơn, như.wmv hoặc.mov. Tôi đã tìm kiếm vô số diễn đàn và trang web và sau đó tìm thấy một chương trình có tên