STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Tín Hiệu Số Và Tương Tự - Analog/Digital

    Trong ngành điện tử nói chung và trong lập trình vi điểu khiển nói riêng, ta luôn thấy có sự có mặt của hai loại tín hiệu: Analog (tín hiệu tương tự) và Digital (tín hiệu số). Vậy nó là gì ? Và công dụng của nó như thế nào trong việc giao tiếp với vi điều khiển? Bài viết này sẽ giúp bạn trả lời những câu hỏi trên.

    Ngọc Thanh

    22/06/2016
    22/07/2020
    7 phút đọc
    Tín Hiệu Số Và Tương Tự - Analog/Digital

    Tín hiệu là gì?

    Tín hiệu ở đây là tín hiệu điện (tránh nhầm với tín hiệu giao thông), là sự thay đổi theo thời gian của điện thế (Volt) hoặc cường độ (Ampe) của dòng diện.

    Tín hiệu sóng

    Cũng là dòng diện nhưng dòng điện một chiều qua bóng đèn không phải là tín hiệu vì nó không thay đổi theo thời gian. Một số ví dụ về tín hiệu điện: Tín hiệu âm thanh đi qua dây loa, tín hiệu clock trong mạch RC, ...

    Như hình trên ta thấy nó tương tự như cái máy morse đơn giản (Project 1 - Morse Code Translator).

    Nếu ta nhấn công tắc tại điểm A, điện thế là 5v, giữ được 1 giây ta nhả ra: điểm A không có điện thế. Ta thấy tại điểm A có sự thay đổi điện thế, hay điểm A có tín hiệu điện.

    Xung điện

    Trong xử lý tín hiệu số, xung là sự thay đổi đột ngột về biên độ, pha hoặc tần số, ... (thường là biên độ) từ giá trị gốc lên giá trị cao, hoặc xuống giá trị thấp hơn, sau đó chuyển dần (thậm chí ngay lập tức) về giá trị gốc ban đầu. Khi làm việc với động cơ, hay thiết bị khác sẽ bắt gặp hiện tượng hoặc khái niệm này.

    Sau khi đã giới thiệu sơ về khái niệm cơ bản, chúng ta bắt đầu đi sâu vào 2 loại tín hiệu số và tương tự.

    Tín hiệu số (Digital)

    Khái niệm

    Đây là tìn hiệu rời rạc theo biên độ. Vì trong một thời điểm nó chỉ có một trong hai giá trị là 0 hoặc 1 (ứng với 0V hoặc 5V) được biểu diễn như hình dưới.

    Tín hiệu số
    Tín hiệu số

    Trong cuộc sống, ví dụ về tín hiệu số có thể thấy là máy truyền mã morse, tín hiệu trong dây mạng, USB, ...

    Công dụng và cách cài đặt

    Với Arduino, tín hiệu làm bóng đèn chớp tắt là tín hiệu số (rời rạc theo biên độ, liên tục về thời gian), hay tín hiệu từ nút nhấn (rời rạc theo biên độ lẫn thời gian) ...

    Nếu muốn truyền dữ liệu dưới dạng {0, 1} thì dùng tín hiệu số.

    Ví dụ mẫu [1]: Chớp tắt led

    int ledPin = 13;      // select the pin for the LED
    
    void setup() {
      // declare the ledPin as an OUTPUT:
      pinMode(ledPin, OUTPUT);
    }
    
    void loop() {
      // turn the ledPin on
      digitalWrite(ledPin, HIGH);
      // stop the program for 1000 milliseconds:
      delay(1000);
      // turn the ledPin off:
      digitalWrite(ledPin, LOW);
      // stop the program for for 1000 milliseconds:
      delay(1000);
    }

    Các hàm trong Arduino về xử lý tín hiệu số sẽ có tiền tố digital. Ví dụ hàm digitalWrite sẽ thiết lập giá trị đầu ra của pin 13 (0 - 0v hay 1 - 5v). Khi hàm loop() thực hiện xong thì pin 13 cho ra một xung vuông.

    Tín hiệu tương tự

    Khái niệm

    Đây là tín hiệu liên tục theo thời gian, biên độ, pha hoặc tần số dòng điện thay đổi liên tục theo thời gian.

    Ở hình trên ta thấy điện thế thay đổi theo đồ thị hình sin không phải rời rạc như tín hiệu số. Trong đời sống, tín hiệu tương tự khá nhiều như sóng âm thanh, sóng ánh sáng, xung não, ... sự thay đổi của nhiệt độ, đổ ẩm, vận tốc cũng tạo ra đồ thị dạng sin.

    Công dụng và cách cài đặt

    Khi muốn đo nhiệt độ, vận tốc, độ sáng ... không thể dùng tín hiệu số được, nhiệt độ không chính xác có 0oC hay 1oC, lúc này tín hiệu tương tự là cần thiết.

    Như đã đề cập ở trên, sự thay đổi của nhiệt độ tạo ra đồ thị dạng sin, xem nhiệt độ là một tín hiệu analog. Đối với đo nhiệt độ không thể làm việc với mức điện áp từ -30v (ứng với -30oC) đến 100v (ứng với 100oC) do đó cần dung kỹ thuật chuẩn hóa về ngưỡng 0v - 5v, vậy nhiệt độ biến thiên sẽ làm điện áp biến thiên trong khoảng 0v - 5v.

    Đối với một thiết bị số, tín hiệu tương tự sẽ không dễ dàng làm việc được, trường hợp Arduino đã tích hợp bộ chuyển đổi ADC (Analog - Digital Converter) và DAC (Digital - Analog Converter), cho phép các làm việc với tín hiệu tương tự bằng cách chuyển về tín hiệu số và ngược lại.

    Ví dụ mẫu [2]: Thời gian nháy đèn thay đổi theo độ sáng.

    int sensorPin = A0;    // select the input pin for the potentiometer
    int ledPin = 13;       // select the pin for the LED
    int sensorValue = 0;   // variable to store the value coming from the sensor
    
    void setup() {
      // declare the ledPin as an OUTPUT:
      pinMode(ledPin, OUTPUT);
    }
    
    void loop() {
      // read the value from the sensor:
      sensorValue = analogRead(sensorPin);
      // turn the ledPin on
      digitalWrite(ledPin, HIGH);
      // stop the program for <sensorValue> milliseconds:
      delay(sensorValue);
      // turn the ledPin off:
      digitalWrite(ledPin, LOW);
      // stop the program for for <sensorValue> milliseconds:
      delay(sensorValue);
    }

    Cũng giống với code ở trên, thêm dòng: sensorValue = analogRead(sensorPin);

    Đồng thời sửa delay(1000); thành delay(sensorValue);

    Các hàm trong arduino về xử lý tín hiệu tương tự sẽ có tiền tố analog trước mỗi hàm.

    Sơ đồ Arduino Uno v3
    Sơ đồ Arduino Uno v3
    Arduino DIY

    Vì điện trở của photodiod thay đổi theo độ sáng, có thể xem là tín hiệu tương tự. Vì sao phải mắc như vậy mà không cho vào (VCC - photodiod - A1), bởi vì mắc nối tiếp như vậy sẽ khó tính được sự biến thiên điện thế ở chân A0. Chia áp giúp tính toán được điện áp đầu vào A0 dễ hơn.

    Có thể áp dụng analog vào nhiều ứng dụng như dò đương (trong robot, mặc dù dùng tín hiệu digital tiện hơn), làm hiệu ứng đèn chớp (sáng từ từ).

    So sánh tín hiệu Digital và Analog

      ANALOG DIGITAL
    Tín hiệu Liên tục theo thời gian, gần gũi với tự nhiên hơn. Rời rạc theo thời gian, gần gũi với máy tính và thiết bị tính toán.
    Công dụng Thường dùng cho đo lường, làm việc với các thiết bị chuyên về analog. Dùng trong tính toán, truyền thông dữ liệu số.
    Khả năng lưu trữ Lưu dưới dạng sóng, trên các thiết bị từ (băng từ, đĩa từ,...), chứa nhiều thông tin hơn. Lưu dưới dạng bit, trên các thiệt bị nhớ đắt tiền (fash, rom, ...), chứa ít thông tin hơn.
    Truyền thông Lượng dữ liệu truyền đi nhiều hơn và ít bị lỗi. Lượng dữ liệu truyền đi trong 1 khoản thời gian rất ít và dễ bị nhiễu.

    Download code mẫu

    Download code mẫu của bài viết https://www.bugs.vn/io/iy5g1B1 hoặc sao chép bên dưới:

    Chớp tắt LED

    int ledPin = 13;      // select the pin for the LED
     
    void setup() {
      // declare the ledPin as an OUTPUT:
      pinMode(ledPin, OUTPUT);
    }
     
    void loop() {
      // turn the ledPin on
      digitalWrite(ledPin, HIGH);
      // stop the program for 1000 milliseconds:
      delay(1000);
      // turn the ledPin off:
      digitalWrite(ledPin, LOW);
      // stop the program for for 1000 milliseconds:
      delay(1000);
    }
    

    Thời gian nháy đèn thay đổi theo độ sáng

    int sensorPin = A0;    // select the input pin for the potentiometer
    int ledPin = 13;      // select the pin for the LED
    int sensorValue = 0;  // variable to store the value coming from the sensor
     
    void setup() {
      // declare the ledPin as an OUTPUT:
      pinMode(ledPin, OUTPUT);
    }
     
    void loop() {
      // read the value from the sensor:
      sensorValue = analogRead(sensorPin);
      // turn the ledPin on
      digitalWrite(ledPin, HIGH);
      // stop the program for  milliseconds:
      delay(sensorValue);
      // turn the ledPin off:
      digitalWrite(ledPin, LOW);
      // stop the program for for  milliseconds:
      delay(sensorValue);
    }

    Tham khảo

    1. https://www.arduino.cc/en/Tutorial/Blink
    2. https://www.arduino.cc/en/Tutorial/AnalogInput
    0 Bình luận
    Điện Tử Ứng Dụng

    Điện Tử Ứng Dụng

    Kiến thức điện tử, Arduino, Raspberry Pi, giới thiệu sản phẩm.

    Đề xuất

    Thông Số Kỹ Thuật Arduino Uno R3 - Các Biến Thể và Lưu Ý
    Arduino board có rất nhiều phiên bản với hiệu năng và mục đích sử dụng ...
    Tụ Điện Và Ứng Dụng Trong Khử Nhiễu Tín Hiệu
    Giới thiệu kiến thức tụ điện và các ứng dụng của tụ điện trong khử nhiễu ...

    Khám phá

    UI - Phần 1: Khái Niệm Và Một Số Đối Tượng Để Thiết Kế UI Trong Cocos2d-x 3.x.x
    Tìm hiểu về khái niệm UI và các đối tượng thiết kế UI trong Cocos2d-x ...
    Project 2 - Auto Turn On/Off Led
    Hướng dẫn điều khiển đèn led tự động bật - tắt với cảm biến ánh sáng và ...
    Điều Chế Độ Rộng Xung - Pulse-Width Modulation
    Giới thiệu và sử dụng kỹ thuật điều chế độ rộng xung (Pulse-Width ...
    Một Số Kiến Thức Điện Tử Cơ Bản
    Tìm hiểu 1 số kiến thức điện cơ bản trước khi bắt đầu tìm hiểu sâu về ...
    Giới Thiệu Intel Galileo
    Giới thiệu về Intel Galileo và cái nhìn chi tiết hơn về ngoại hình, ...
    Lọc Ảnh Bằng Phép Tương Quan Và Tích Chập
    Bài viết mô tả phép lọc ảnh sử dụng tương quan và tích chập trong lĩnh ...
    Struct Trong Lập Trình C Và Tư Duy Trừu Tượng Hoá
    Ứng dụng và tư duy trừa tượng hoá của struct trong lập trình C/C++.
    11/08/2015
    STDIO Starter Kit - Các Thành Phần Cần Thiết Để Học Điện Tử Cơ Bản
    Bộ STDIO Starter Kit là bộ kit điện tử thống kê các thành phần cần thiết ...
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích.. Tìm hiểu thêm.
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020