Lý thuyết Dòng điện trong chân không hay, chi tiết nhất Bài viết Lý thuyết Dòng điện trong chân không với giải pháp giải cụ thể giúp học viên ôn...
Đo tần số xung PWM – Arduino
Bài viết này sẽ hướng dẫn đo tần số của xung vuông trên board Arduino Nano .
Bạn đang đọc: Đo tần số xung PWM – Arduino
Mạch tạo xung NE555 được sử dụng để tạo xung vuông với tần số và biên độ có thể điều chỉnh được trên mạch, thích hợp cho các ứng dụng tạo xung, điều khiển động cơ nhanh chậm,… Thông số kỹ thuật:
- Điện thế ngõ vào: từ 5 ~ 15VDC. Chú ý: khi nguồn cung là 5V, dòngngõ ra có thể xung quanh giá trị 15mA, khi nguồn cấp là 15VDC thì dòng ngõ ra có thể đạt xung quanh giá trị 35mA.
- Độ lớn áp đỉnh ngõ ra: từ 4.2VPP – 11.4VPP (điện áp ngõ vào khác nhau thì độ lớn áp ngõ ra khác nhau)
- Độ rộng xung ngõ ra (Duty Cycle) có thể điều chỉnh được.
- Vùng tần số ngõ ra có thể chọn: • LF: 1Hz ~ 50Hz • IF: 50Hz ~ 1KHz • High-frequency: 1KHz ~ 10KHz • HF: 10KHz ~ 200KHz
- LED chỉ thị ngõ ra: mức thấp: LED On, mức cao: LED Off, Mức bình thường: LED nhấp nháy
- Độ lớn Maximum dòng ngõ ra : • >=15mA (khi nguồn ngõ vào 5V) • >=35mA(khi nguồn ngõ vào là 12V)
- Tần số ngõ ra có thể điều chỉnh được thông qua công thức sau: • T = 0.7(RA + 2RB) C • Trong đó: RA, RB từ 010k. • LF khi C = 0.00uF • IF khi C = 0.1uF • HF khi C = 1uF • HF khi C = 100uF
- GND – GND
- VCC – +5V
- V0 – Biến trở
- RS – D12
- RW – GND
- E – D11
- D4 – D5
- D5 – D4
- D6 – D3
- D7 – D6
- A – +3V3
- K – GND
- Output – D2
PWM điều chế độ rộng xung (Pulse-width modulation) là ngoại vi phổ biến được hỗ trợ hầu hết trong các loại vi điều khiển, ứng dụng rộng rãi và nhất là trong lĩnh vực điều khiển động cơ. Một số thông số cơ bản của xung PWM:
- Duty cycle: tỷ lệ phần trăm mức cao. Duty cycle được dung để tính giá trị trung bình của tín hiệu PWM
- Period: chu kỳ xung (T) chính là khoảng thời gian giữa 2 lần xung cạnh lên (hoặc xung cạnh xuống) liên tiếp
- Pulse width: độ rộng xung chính là thời gian giữ 1 xung cạnh lên và xung cạnh xuống liên tiếp.
- Tần số xung f được tính f = 1/T
Trong ví dụ này, board NE555 được sử dụng để điều chế độ rộng xung và tín hiệu xung PWM ở chân output của NE555 được liên kết với chân D2 của Arduino để đo tần số xung .
// 1. Su dung thu vien LCD cua Arduino #include// 2. Cai dat chan ket noi giua LCD voi arduino const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 6; // 3. Khai bao cac bien su dung trong chuong trinh unsigned int PWM_T_us = 0; // PWM Cycle Time: Bien dung de luu chu ky xung T unsigned int PWM_f_Hz = 0; // PWM Freq: Bien dung de luu tan so xung f unsigned int TimerValue_us = 0; // Bien luu gia tri dem cua Timer (us) // 4. Cai dat ket noi chan cua LCD voi Arduino LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // 12. Chuong trinh ngat ISR_2 dung de do chu ky xung T void ISR_2() { unsigned long now = micros(); PWM_T_us = now - TimerValue_us; // Chu ky xung T TimerValue_us = now; // 10. Tinh toan tan so xung cua IC555 PWM_f_Hz = 1000000.0/(double)(4*PWM_T_us); } // 5. Ham khoi tao ban dau cho mot chuong trinh Arduino void setup() { // 6. Cai dat loai LCD su dung ( So cot va so hang) lcd.begin(16, 2); // 7. Luu gia tri ban dau cua Timer TimerValue_us = micros(); // 8. Day la doan code ket noi chan xuat xung cua IC555 voi chan ngat ngoai cua Arduino // Khi co xung canh len, timer se chay vao chuong trinh ngat ISR_2 de dem thoi gian cua chu ky xung T attachInterrupt(digitalPinToInterrupt(2), ISR_2, RISING); } // 9. Doan chuong trinh chinh cua Arduino void loop() { // 11. Hien thi gia tri tan so xung len LCD lcd.clear(); // Xoa ma hinh LCD lcd.print("PWM Freq (Hz):"); // In len dong thu 1 cua LCD dong chu PWM Freq (Hz): lcd.setCursor(0, 1); lcd.print(PWM_f_Hz); // Hien thi tan so xung (Hz) delay(500); // Dung man hinh 200 mili s de de quan sat LCD delay(500); }
Source: https://vh2.com.vn
Category : Điện Tử