Bộ chuyển đổi ADC:
ADC (Analog Digital Converter) là bộ chuyển đổi tín hiệu tƣơng tự sang số dùng để chuyển đổi các tín hiệu tƣơng tự từ bên ngoài (nhiệt độ, độ ẩm, …) về dạng số để vi điều khiển có thể xử lý đƣợc. Không phải tất cả các chân của Arduino đều có khả năng ADC. Trên board Arduino, các chân đƣợc ký hiệu Ax (A0 đến A5 trên UNO) để cho biết các chân này có thể đọc đƣợc điện áp tƣơng tự.
Bộ chuyển đổi ADC trên mỗi vi điều khiển là khác nhau. Trên Arduino là 10-bit,
có nghĩa là nó có khả năng phát hiện 1024 (2^10) mức tín hiệu số rời rạc.
Điện áp tham chiếu Vref:
Điện áp tham chiếu là giá trị điện áp lớn nhất mà ADC có thể chuyển đổi đƣợc. Mặc định khi đƣợc cấp nguồn điện áp tham chiếu của Arduino là 5V (có nghĩa là 5V ứng với giá trị ADC max là 1023, với board Arduino 3.3V thì 3.3V ứng với giá trị lớn nhất là 1023). Ngoài ra Arduino còn đƣợc tích hợp các bộ tham chiếu nội, và bộ tham chiếu ngoại tại chân AREF.
Mối quan hệ giữa giá trị ADC và điện áp:
Với giá trị ADC lớn nhất là 2^n - 1 ↔ giá trị điện áp lớn nhất Vref .Với giá trị ADC bất kỳ (Gia_tri_ADC) ↔ giá trị điện áp Vđo bất kỳ → Giá trị điện áp ra Vđo tại một giá trị ADC đo đƣợc là (n là độ phân giải của bộ ADC):
101
Tính toán giá trị điện áp:
Với điện áp tham chiếu mặc định của Arduino là và độ phân giải là 10-bit, ta
có điện áp đo đƣợc tại chân A0 của triết áp là:
2. Phần cứng Chuẩn bị: Arduino UNO R3 Cảm biến nhiệt độ LM35 Lắp mạch : Hình 9.1.sơ đò kết nối UNO với LM35 3. Lập trình và giải thích
Tính toán giá trị nhiệt độ:
Với cảm biến nhiệt độ LM35, chúng ta có cứ 10mV sự thay đổi của điện áp ứng
với 1°C. Với điện áp đọc đƣợc, giá trị của nhiệt độ là: Chƣơng trình:
void setup() {
// Khởi tạo Serial tốc độ 9600bps
102 }
void loop() {
// Đọc giá trị ADC tại chân A0
int adcValue = analogRead(A0);
// Tính toán giá trị nhiệt độ đo đƣợc
float temp = (float)adcValue * 500 / 1023;
// In ra Serial giá trị nhiệt độ với 2 chữ số sau dấu phẩy
Serial.print("Nhiet do: "); Serial.println(temp, 2); // Trễ 500ms delay(500); } Kết quả:
Bật màn hình Serial monitor với tốc độ 9600bps, mỗi khi tác động thay đổi nhiệt độ trên LM35, chúng ta sẽ nhận đƣợc giá trị hiển thị trên màn hình Serial monitor.
- Điều khiển chuỗi ký tự chạy từ trái qua phải ?Câu 1: Viết chƣơng trình điều
khiển đọc giá trị cảm biến hiển thị thông số lên LCD ?
Câu hỏi ôn tập
Câu 1: Thế nào là điện áp tham chiếu?
Câu 1: Trình bày mối quan hệ giữa giá trị ADC và điện áp?
Câu 2: Thiết kế phần cứng và lập trình điều khiển bộ ADC theo yêu cầu sau: Đọc hiệu điện thế của một nguồn điện qua cổng Analog ?
103
BÀI 10: NGẮT NGOÀI .
* Giới thiệu: là một số sự kiện khẩn cấp bên trong hoặc bên ngoài bộ vi điều khiển xảy ra, buộc vi điều khiển tạm dừng thực hiện chƣơng trình hiện tại, phục vụ ngay lập tức nhiệm vụ mà ngắt yêu cầu – nhiệm vụ này gọi là trình phục vụ ngắt (ISR: Interrupt Service Routine).
*Mục tiêu: Sau khi học xong bài học này, ngƣời học có khảnăng:
- Trình bày đƣợc nguyên lý hoạt động của ngắt ngoài trong Arduino
- Vẽ đƣợc sơ đồ nguyên lý mạch ngắt ngoài
- Mô phỏng đƣợc chƣơng trình mạch ngắt ngoài Arduino bằng phần mềm
mô phỏng
- Kết nối đƣợc phần cứng mạch ngắt ngoài Arduino đúng yêu cầu kỹ thuật. - Viết, nạp và chạy đƣợc chƣơng trình ngắt ngoài Arduino
- Rèn luyện tính tƣ duy và tác phong công nghiệp , đảm bảo an toàn cho
ngƣời và thiết bị
*Nội dung: