Arduino Biến trở

Trong bài hướng dẫn này, chúng ta sẽ họ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...)

sơ đồ chân biến trở

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.
bố trí chân biến trở

※ 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).

cách hoạt động của biến trở.

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
Anglerotated by userANGLE_MAX
Voltagefrom potentiometer's pin 0VVCC
ADC valueread by Arduino 01023
Other valueconverted by Arduino VALUE_MINVALUE_MAX

Sơ đồ đấu dây

sơ đồ nối dây biến trở Arduino

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().
analogValue = analogRead(A0);
  • 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.
angle = map(analogValue, 0, 1023, 0, ANGLE_MAX);
  • Điều chỉnh lại tỉ lệ theo điện áp của biến trở:
voltage = map(analogValue, 0, 1023, 0, VCC);
  • Đ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...)
value = map(analogValue, 0, 1023, VALUE_MIN, VALUE_MAX);
  • 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:
brightness = map(analogValue, 0, 1023, 0, 255);

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,

nightlight = 100; // depending on your desired brightness brightness = map(analogValue, 0, 1023, nightlight , 255);

※ 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():

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Mã Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin A0: int analogValue = analogRead(A0); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = floatMap(analogValue, 0, 1023, 0, 5); // print out the value you read: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

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
tải mã lên Arduino ide
  • Mở Serial Monitor
  • Quay biến trở
  • Xem kết quả trên Serial Monitor
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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:

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.

Tham khảo hàm