- Giới thiệu Công ty
- TẦM NHÌN - SỨ MỆNH - GIÁ TRỊ CỐT LÕI
- QUÁ TRÌNH HÌNH THÀNH PHÁT TRIỂN
- HỆ THỐNG CỬA HÀNG
- BANLINHKIEN THAY ĐỔI NHẬN DIỆN THƯƠNG HIỆU
- BanLinhKien chung tay đóng góp cho cộng đồng người lao động bị ảnh hưởng bởi dịch COVID-19
- THÔNG BÁO NGHỈ LỄ QUỐC KHÁNH 2-9
- Chứng Nhận Nhà Cung Cấp Golden Relay
- Thông báo nghỉ lễ 30/4-1/5
- Nhà Phân Phối Độc Quyền YU HONG TECHNOLOGIES
- Workshop Kỹ thuật và tiêu chuẩn trong thiết kế mạch in
- Mua Hàng Và Chính Sách
- Chia sẻ - Kinh nghiệm
- Chế quạt điều khiển từ xa phun sương giải nhiệt mùa hè siêu dễ, siêu rẻ
- Cấu Tạo Và Nguyên Lý Hoạt Động Của Module Chuyển Nhiệt TEC (Sò Nóng Lạnh)
- Bộ Kit Học Tập Arduino UNO R3 Cơ Bản
- Bluetooth HC-05 Và SocKet Bluetooth HC05 HC06
- Phân Biệt Servo SG90 180 Độ Và 360 Độ
- Hướng Dẫn Nạp USBisp : Cách nạp chương trình cho ATmega16 ATmega32 với mạch nạp USBISP
- Cách nạp chương trình cho ATmega8 với mạch nạp USBISP
- Hướng dẫn sử dụng phần mềm codevision avr
- Bộ Kit Học Tập Arduino UNO R3 Cơ Bản
- Giao Tiếp Cảm Biến Áp Suất MPX5010DP MPX5050GP MPX2202GP MPX53DP MPX10DP
- Thông tin khuyến mãi
- Tuyển Dụng
Đọc tốc độ của quạt CPU (quạt 12Vol - hay quạt 3 dây)
Quạt 12 Vol thường có 3 dây (tuy nhiên một số mạch cũ hoặc những loại cực nhỏ thì có 2 dây). Trong đó:
- 1 dây là cực dương (thường là dây đỏ)
- 1 dây là cực âm (màu đen)
- 1 dây là DÂY ĐO TỐC ĐỘ (thường là màu vàng)
Bạn có thể mua quạt này ở chợ Trời hoặc chợ Nhật Tảo tại các cửa hàng điện tử
Phần cứng
- Arduino Uno
- 1 quạt CPU 12Vol
- Breadboard
- Dây cắm breadboard
- 1 cục pin 9V (pin vuông) hoặc 1 cục acquy 12 Vol (cái này có thì tốt không thì thôi, do bài này chúng ta chủ yếu phân tích về interrupt )
- 1 mũ chụp pin 9v
Lắp mạch
Giải thích & lập trình
Để hiểu nó khái niệm về interrupt , bạn hãy tham khảo bài viết này. Tuy nhiên, ở đây như đã giới thiệu ở trên, tôi sẽ mô tả cho bạn hiểu interrupt một cách khác, cách này được tôi nghĩ ra và sử dụng khi mới học về interrupt, cách này có hiệu quả với tôi và tôi nghĩ nó cũng sẽ hiệu quả với bạn.
Interrupt đối với tôi giống như một cái button (cái nút), nhiệm vụ của nó có nhiều điểm giống với digitalRead, nên bạn cứ xem interrupt là một cái nút, không sai đâu. Vì interrupt giống như một cái nút nên nó sẽ cần một chân digital. Có một điều đặc biệt khiến interrupt trở nên “pro” hơn button, đó là nó không bị dừng bởi hàm delay! Kết hợp những điều đó, với Interrupt, bạn có thể làm những ứng dụng thời gian thực hoặc tính toán những thứ CẦN ĐỘ CHÍNH XÁC CAO. Và cứ mỗi lần bắt được một hành động thì nó lại chạy một lệnh ngay tức thì!
Ở ví dụ này, chúng ta dùng interrupt để đọc tốc độ quạt. Vì sao? Bởi vì, cứ quay hết được 1 vòng thì chân tốc độ (thường là màu vàng) của quạt sẽ được nối đến cực âm ⇒ chân interrupt cũng được nối đến cực âm. Ngược lại thì chân interrupt sẽ có mức điện thế cao (do được nối đến nguồn 5V qua điện trở 10k). Vì vậy ta sẽ dùng interrupt để bắt sự kiện (đang ở điện thế cao xuống điện thế thấp - RISING), từ đó đếm được tần số (số sự kiện cao xuống thấp trong 1 giây) của quạt. Sau đó, lấy số ấy đem nhân với 60 (60 giây = 1 phút) để có được tốc độ của quạt (Round per minute - RPM - vòng / phút).
- volatile int Hz = 0; //Biến dùng để lưu tần số của quạt. Thanks to pitagoever
- int rpm = 0; // Biến dùng để lưu tốc độ quạt
- unsigned long lastmillis = 0;
- void setup(){
- Serial.begin(9600); //Bật Serial để debug chương trìn
- attachInterrupt(0, rpm_fan, FALLING); // Attach Interrupt ở chân digital 2 (http://arduino.vn/reference/attachinterrupt
- // sự kiện FALLING sẽ xảy ra khi chân digital 2 đang từ cao nhảy xuống thấ
- // Và khi có sự kiện FALLING xảy ra thì ta sẽ chạy hàm rpm_fa
- }
- void loop(){
- if (millis() - lastmillis >= 1000){ //Cập nhập trạng thái sau mỗi 1 giây
- noInterrupts();//Tạm dừng mọi Interrupt đang có trên Arduino. http://arduino.vn/reference/nointerrupt
- // Bạn có thể đây là dạng delay trên Interrup
- rpm = Hz * 60; // tính tộc độ của quạ
- Serial.print(“RPM =\t”); //xuất ký tự RPM và một TA
- Serial.print(rpm); // xuất tộc độ quạ
- Serial.print("\t Hz=\t"); //xuất 1 TAB rồi ký tự Hz rồi 1 ta
- Serial.println(Hz); //xuất tần số của quạ
- Hz = 0; // khởi lộng lại bộ đếm tần s
- lastmillis = millis(); // cập nhập lại thời điểm cuối cùng ta kiểm tra tốc đ
- interrupts(); //Tiếp tục chạy các interrup
-
- }
- void rpm_fan(){
- Hz++
- }
Cre: Nguồn Arduino