Mục lục:
- Bước 1: Tạo tín hiệu Pwm cho 50Hz
- Bước 2: Chương trình Arduino cho chu kỳ nhiệm vụ thay đổi
- Bước 3: Xen kẽ các chân Arduino 50Hz
- Bước 4: Lái cầu H và lọc tín hiệu Pwm
Video: Arduino Sinewave cho Biến tần: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Trong dự án này, tôi đã tạo ra một tín hiệu SPWM (sóng sin được điều chế rộng) từ hai đầu ra kỹ thuật số pwm của arduino.
Bởi vì để tạo ra một chương trình như vậy, tôi phải nói về nhiều chức năng và thuộc tính khác của arduino, dự án đầy đủ bao gồm hình ảnh máy hiện sóng và cho các tần số khác nhau, vui lòng truy cập trang web của tôi:
eprojectszone
Bước 1: Tạo tín hiệu Pwm cho 50Hz
Để tạo ra tín hiệu 50Hz ở tần số cao hơn, điều cần thiết là phải thực hiện một số tính toán. Tần số từ arduino có thể là 8MHz, nhưng chúng tôi muốn một tín hiệu có chu kỳ nhiệm vụ thay đổi.
Để hiểu các loại chu kỳ nhiệm vụ thay đổi của arduino, bạn có thể đọc 3 phần này của cùng bài đăng 1, 2 và 3.
Giả sử tần số của chúng ta là 50Hz, nghĩa là khoảng thời gian là 20 mili giây. Vì vậy, 10ms là một nửa chu kỳ. Trong 10ms đó, chúng ta cần có nhiều xung với các chu kỳ nhiệm vụ khác nhau bắt đầu với các chu kỳ nhiệm vụ nhỏ, ở giữa tín hiệu chúng ta có các chu kỳ nhiệm vụ tối đa và kết thúc cũng với các chu kỳ nhiệm vụ nhỏ. Để tạo ra một sóng sin chúng ta sẽ sử dụng hai chân một để nửa chu kỳ dương và một cho nửa chu kỳ âm. Trong bài đăng của chúng tôi cho điều này, chúng tôi sử dụng chân 5 và 6 có nghĩa là Bộ định thời 0.
Để có tín hiệu mượt mà, chúng tôi chọn pwm đúng pha ở tần số 31372 Hz-xem bài trước. Một trong những vấn đề lớn nhất là chúng tôi tính toán chu kỳ nhiệm vụ cần thiết cho mỗi xung như thế nào. Vì vậy, do tần số của chúng ta là f = 31372Hz nên chu kỳ cho mỗi xung là T = 1/31372 = 31,8 us, do đó số xung trong một nửa chu kỳ là N = 10ms / 31,8us = 314 xung. Bây giờ để tính toán chu kỳ nhiệm vụ cho mỗi xung, chúng ta có y = sinx, nhưng trong phương trình này chúng ta cần độ để nửa chu kỳ có 180deg cho 314 xung. Với mỗi xung ta có 180/314 = 0,57deg / xung. Điều đó có nghĩa là đối với mỗi xung, chúng tôi di chuyển về phía trước với 0,57deg.
y là chu kỳ nhiệm vụ và x là giá trị của vị trí trong nửa chu kỳ nhiệm vụ. lúc đầu x là 0, sau đó x = 0,57, x = 1,14 và cứ tiếp tục như vậy cho đến khi x = 180.
nếu chúng ta tính toán tất cả 314 giá trị, chúng ta thu được một mảng 314 phần tử (gõ "int" để tính toán dễ dàng hơn bởi arduino).
Mảng như vậy là:
int sinPWM = {1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
Bạn có thể thấy rằng giống như sóng sin, chu kỳ nhiệm vụ thấp nhất ở phần tử đầu tiên và cuối cùng và cao nhất ở giữa.
Bước 2: Chương trình Arduino cho chu kỳ nhiệm vụ thay đổi
Trong hình trên, chúng ta có các tín hiệu chu kỳ nhiệm vụ thay đổi với các giá trị từ mảng.
Nhưng làm thế nào để tạo ra tín hiệu như vậy ??
phần chương trình bên dưới sử dụng ngắt để thay đổi giá trị của chu kỳ nhiệm vụ
sei (); // cho phép ngắt
}
ISR (TIMER1_COMPA_vect) {// ngắt khi bộ hẹn giờ 1 khớp với giá trị OCR1A
if (i> 313 && OK == 0) {// giá trị cuối cùng từ vectơ cho chân 6
i = 0; // chuyển đến giá trị đầu tiên của vectơ (mảng)
OK = 1; // bật pin 5
}
x = sinPWM ; // x lấy giá trị từ vectơ tương ứng với vị trí i (i là 0 được lập chỉ mục) -giá trị của chu kỳ nhiệm vụ
i = i + 1; // chuyển đến vị trí tiếp theo
}
Bước 3: Xen kẽ các chân Arduino 50Hz
Beacause mỗi chân chỉ tạo ra một nửa chu kỳ nhiệm vụ để tạo ra một sóng sin đầy đủ, chúng tôi sử dụng hai chân thay thế lần lượt sau 10 mili giây chính xác (đối với 50Hz). Sự thay đổi các chân này được thực hiện ở cuối mảng - sau khi giả sử chân 5 đã tạo ra 314 xung, chân này được tắt nguồn và bật chân 6, điều này thực hiện tương tự nhưng đối với chu kỳ nhiệm vụ âm.
Vì arduino chỉ có thể tạo ra các tín hiệu tích cực nên chu kỳ nhiệm vụ âm được thực hiện trong cầu h- bạn có thể đọc ở đây về nó
Chương trình thay đổi chân:
sei (); // cho phép ngắt
}
ISR (TIMER1_COMPA_vect) {// ngắt khi bộ hẹn giờ 1 khớp với giá trị OCR1A
if (i> 313 && OK == 0) {// giá trị cuối cùng từ vectơ cho chân 6
i = 0; // chuyển đến giá trị đầu tiên của vectơ
OK = 1; // bật pin 5
}
if (i> 313 && OK == 1) {// giá trị cuối cùng từ vectơ cho chân 5
i = 0; // chuyển đến giá trị đầu tiên của vectơ
OK = 0; // bật pin 6
}
x = sinPWM ; // x lấy giá trị từ vectơ tương ứng với vị trí i (i là 0 được lập chỉ mục)
i = i + 1; // chuyển đến vị trí tiếp theo
nếu (OK == 0) {
OCR0B = 0; // tạo chân 5 0
OCR0A = x; // bật chân 6 đến chu kỳ nhiệm vụ tương ứng
nếu (OK == 1) {
OCR0A = 0; // tạo chân 6 0
OCR0B = x; // bật chân 5 đến chu kỳ nhiệm vụ tương ứng
}
}
Bước 4: Lái cầu H và lọc tín hiệu Pwm
Các tín hiệu thu được từ arduino là phần điều khiển cho các ứng dụng biến tần vì cả hai đều tích cực. Để tạo ra một sóng sin đầy đủ và một biến tần thực tế, chúng ta phải sử dụng cầu h và để xóa pwm một bộ lọc thông thấp.
Cầu H được trình bày ở đây.
Bộ lọc thông thấp được thử nghiệm với động cơ Ac nhỏ tại đây.
Đề xuất:
Sử dụng lại tản nhiệt máy tính để tạo tản nhiệt bóng bán dẫn: 7 bước
Sử dụng lại tản nhiệt máy tính để tạo tản nhiệt bóng bán dẫn: Một thời gian trước, tôi đã mua một số Raspberry Pi 3 để sử dụng. Vì chúng không có tản nhiệt nên tôi đã tìm mua một số chiếc. Tôi đã tìm kiếm nhanh trên Google và bắt gặp sản phẩm Có thể hướng dẫn này (Đế tản nhiệt Raspberry Pi) - đây là sau khi từ chối ý tưởng về
Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19: 12 Bước (có Hình ảnh)
Cảm biến nhiệt độ cho Arduino Áp dụng cho COVID 19: Cảm biến nhiệt độ cho Arduino là yếu tố cơ bản khi chúng ta muốn đo nhiệt độ của bộ xử lý của cơ thể con người. Cảm biến nhiệt độ với Arduino phải tiếp xúc hoặc gần để nhận và đo mức nhiệt. Đó là cách t
Mod 3.3V cho cảm biến siêu âm (chuẩn bị HC-SR04 cho 3.3V Logic trên ESP32 / ESP8266, Photon hạt, v.v.): 4 bước
3.3V Mod cho cảm biến siêu âm (chuẩn bị HC-SR04 cho 3.3V Logic trên ESP32 / ESP8266, Particle Photon, v.v.): TL; DR: Trên cảm biến, cắt dấu vết vào chân Echo, sau đó kết nối lại bằng cách sử dụng bộ chia điện áp (Echo trace - > 2.7kΩ - > Echo pin - > 4.7kΩ - > GND). Chỉnh sửa: Đã có một số tranh luận về việc liệu ESP8266 có thực sự chịu được 5V trên GPIO trong
Mạch điều khiển cổng cho biến tần ba pha: 9 bước
Mạch điều khiển cổng cho biến tần ba pha: Dự án này về cơ bản là Mạch điều khiển cho thiết bị có tên SemiTeach mà chúng tôi mới mua cho bộ phận của mình. Hình ảnh của thiết bị được hiển thị. Kết nối mạch điều khiển này với 6 mosfet tạo ra ba điện áp Ac dịch chuyển 120 độ. Ra
Thuyết phục bản thân chỉ sử dụng bộ biến tần dòng 12V sang dòng AC cho dây đèn LED thay vì tua lại chúng cho dòng 12V.: 3 bước
Thuyết phục bản thân chỉ sử dụng Biến tần dòng 12V sang AC cho Dây đèn LED Thay vì Tua lại chúng cho 12V.: Kế hoạch của tôi rất đơn giản. Tôi muốn cắt dây đèn LED chạy trên tường thành nhiều mảnh sau đó quấn lại để chạy hết 12 volt. Giải pháp thay thế là sử dụng bộ biến tần, nhưng tất cả chúng ta đều biết chúng kém hiệu quả kinh khủng, phải không? Bên phải? Hoặc là họ?