Arduino Biến trở
Trong bài hướng dẫn này, chúng ta sẽ học:
- Cách hoạt động của biến trở.
- Cách kết nối biến trở với Arduino.
- Cách lập trình Arduino để đọc giá trị từ biến trở và chuyển đổi nó thành các giá trị có thể điều khiển được.
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | Chiết áp | ||
| 1 | × | Alternatively, 10k Ohm Trimmer Potentiometer | ||
| 1 | × | Mô-đun chiết áp có núm xoay | ||
| 1 | × | (Hoặc) Potentiometer Kit | ||
| 1 | × | (Hoặc) Potentiometer Module with Knob | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về điện trở biến thiên
Biến trở quay (còn được gọi là cảm biến góc quay) được dùng để điều chỉnh bằng tay giá trị của một cái gì đó (ví dụ: âm lượng của dàn stereo, độ sáng của đèn, mức phóng đại của máy hiện sóng...)

Bố trí chân
Biến trở thường có 3 chân:
- Chân GND: cần được kết nối với GND (0V)
- Chân VCC: cần được kết nối với VCC (5V hoặc 3.3V)
- Chân Output: cấp điện áp cho chân đầu vào của Arduino.

※ Lưu ý:
Chân GND và chân VCC có thể hoán đổi cho nhau.
Cách hoạt động
Trục của biến trở có thể quay từ 0° (gần GND) đến một góc giới hạn phía trên (gần chân VCC), được gọi là ANGLE_MAX.
Điện áp tại chân đầu ra dao động từ điện áp của GND đến điện áp của VCC. Điện áp đầu ra tỷ lệ thuận với góc quay của trục.
- Nếu góc bằng 0°, điện áp đầu ra của pin bằng 0V
- Nếu góc bằng ANGLE_MAX, điện áp đầu ra của pin bằng điện áp nguồn VCC
- Nếu góc nằm giữa 0° và ANGLE_MAX, output_voltage = angle × VCC / ANGLE_MAX
※ Lưu ý:
Giá trị ANGLE_MAX phụ thuộc vào nhà sản xuất. Trong thực tế, chúng ta thường không quan tâm đến giá trị của ANGLE_MAX, ngoại trừ khi chúng ta cần tính góc quay (xem phần các trường hợp sử dụng).

Arduino - Điện trở quay
Các chân A0 đến A5 của Arduino có thể hoạt động như đầu vào tương tự. Chân đầu vào tương tự chuyển đổi điện áp (từ 0V đến VCC) thành các giá trị nguyên (từ 0 đến 1023), được gọi là giá trị ADC hoặc giá trị tương tự.
Bằng cách nối chân ra của biến trở với đầu vào tương tự, ta có thể đọc giá trị từ chân đó và sau đó chuyển đổi nó thành một giá trị có ý nghĩa.
Giá trị mà Arduino nhận được không phải là góc, cũng không phải là điện áp. Đó là một giá trị nguyên nằm trong khoảng từ 0 đến 1023.
Sau khi nhận được giá trị nguyên từ chân đầu vào analog, chúng ta sẽ tái chuẩn hóa giá trị này sang một giá trị khác. Hãy xem các trường hợp sử dụng.
Các trường hợp sử dụng
- Điều chỉnh tỉ lệ theo góc quay của biến trở.
- Điều chỉnh tỉ lệ theo điện áp của biến trở:
- Điều chỉnh tỉ lệ về giá trị có thể điều khiển (ví dụ: âm lượng của stereo, độ sáng, tốc độ của động cơ DC...). Đây là trường hợp được sử dụng phổ biến nhất.
Phạm vi tái chuẩn hóa
| FROM | TO | |||
|---|---|---|---|---|
| Angle | rotated by user | 0° | → | ANGLE_MAX |
| Voltage | from potentiometer's pin | 0V | → | VCC |
| ADC value | read by Arduino | 0 | → | 1023 |
| Other value | converted by Arduino | VALUE_MIN | → | VALUE_MAX |
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Cách Lập Trình Cho Biến Trở
- Đọc giá trị từ một chân vào, chân này được nối với chân ra của potentiometer bằng cách sử dụng hàm analogRead().
- Chuyển đổi phạm vi về góc của biến trở bằng cách sử dụng hàm map()function.
- Điều chỉnh lại tỉ lệ theo điện áp của biến trở:
- Điều chỉnh về giá trị có thể điều khiển (ví dụ: âm lượng của stereo, độ sáng, tốc độ của động cơ DC...)
- Ví dụ, điều chỉnh độ sáng của LED. Như đã đề cập trong hướng dẫn này, độ sáng của LED có thể được điều khiển bằng cách sử dụng giá trị PWM từ 0 (tắt hoàn toàn) đến 255 (bật hoàn toàn). Do đó, chúng ta có thể ánh xạ giá trị analog tới độ sáng của LED (từ tắt đến sáng nhất) như sau:
Nếu bạn muốn điều chỉnh độ sáng của đèn LED từ mức sáng của đèn ngủ đến sáng nhất,
※ Lưu ý:
Chức năng map() chỉ có thể được sử dụng để điều chỉnh lại giá trị analog về kiểu int hoặc long. Nếu giá trị điều khiển là kiểu float, bạn cần sử dụng hàm floatMap() thay cho hàm map().
Hàm floatMap():
Mã Arduino
Hướng dẫn từng bước
- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấp vào Tải lên nút trên Arduino IDE để tải mã lên Arduino

- Mở Serial Monitor
- Quay biến trở
- Xem kết quả trên Serial Monitor
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.
Thách thức bản thân
Sử dụng biến trở để thực hiện một trong các dự án sau:
- Điều khiển vị trí của động cơ servo. Gợi ý: Tham khảo Arduino - Động cơ servo.
- Thay đổi độ sáng của đèn LED. Gợi ý: Tham khảo Arduino - LED - Mờ dần.
Kiến thức bổ sung
- Chân GND và chân VCC có thể thay thế cho nhau. Không có quy ước nào về hai chân này. Nếu bạn chọn một chân làm GND, chân còn lại sẽ là VCC. Chỉ có một điều bạn cần lưu ý. Giá trị điện áp tại chân đầu ra bị đảo ngược khi ta hoán đổi hai chân này.