Skip to main content

Posts

Showing posts with the label Arduino UNO

Đọc Fuse Bits của Arduino UNO (Mega328P) dùng mạch nạp Burn-E

Kết nối mạch nạp Burn-E với Arduino UNO theo thứ tự chân như sau, bên trái là mạch nạp Burn-E bên phải là Arduino UNO MCLR <===> RES (Reset) VDD <===> 5V GND <===> GND PGD <===> 12 PGC <===> 13 AUX <===> ~11   Mạch nạp Burn-E để jumper ở mức cấp nguồn 5v. Arduino không kết nối với bất kỳ ngoại vi nào khác Cắm mạch nạp Burn-E vào cổng USB máy tính và trên giao diện phần mềm Burn-E Programmer chọn loại chip là ATmega ISP (1). Sau đó bấm chọn nút Detect Device (2), mạch nạp sẽ nhận ra chip là ATmega328P(A). Cuối cùng bấm chọn nút Read All (3), mạch nạp sẽ đọc toàn bộ file hex và fuse bits.  Xem video ở đây   Đối với MEGA2560 MCLR <===> RESET VDD <===> 5V GND <===> GND PGD <===> 50 PGC <===> 52 AUX <===> 51   Ý nghĩa một số fuse nCKDIV8: Chia xung đồng hồ cho 8 nBODEN: Cho phép phát hiện sụt áp hay không (Brown-out detector enable) SUT1, SUT0: Delay sau khi cấp nguồn hoặc reset rồi mới chạy dòng lệnh...

Arduino đọc Analog của cảm biến độ ẩm đất và lọc nhiễu bằng bộ lọc Kalman

Giá trị analog thường có độ nhiễu lớn vì vậy trước khi xử lý, các giá trị này cần phải cho qua một bộ lọc để phần điều khiển có thể làm việc tốt hơn. Chúng ta sẽ tiến hành đọc giá trị analog của cảm biến độ ẩm đất, sau đó cho qua bộ lọc Kalman và vẽ đồ thị để so sánh giá trị trước và sau khi lọc. Kết nối phần cứng (bên trái là cảm biến độ ẩm đất, bên phải là arduino uno): AO (Analog Ouput) <===> A0 DO (Digital Ouput) <===> 2 (Chưa sử dụng tới nhưng cứ cắm vào sẵn) VCC <===> 5V GND <===> GND Cài đặt thư viện SimpleKalmanFilter bằng cách vào Tools > Manage Libraries... và cài đặt thư viện như sau Viết code #include <SimpleKalmanFilter.h> void setup() { Serial.begin(9600); pinMode (2, INPUT); pinMode(A0, INPUT); pinMode (13, OUTPUT); } SimpleKalmanFilter filter(10, 10, 0.05); float estimate; void loop() { int value = analogRead(A0); estimate = filter.updateEstimate(value); Serial.print("K:"); Serial.print(estimate); Serial.print(...