Làm volt kế, amper kế đơn giản với Attiny85

I. Giới thiệu

Xin chào các bạn! Mình xin chia sẻ với các bạn về cách làm một volt kế, amper kế đơn giản với vi điều khiển attiny85, hiển thị ra màn hình lcd1602 qua i2c module. Các máy đo này mình làm trong quá trình tự tạo một bộ nguồn điều khiển 0-24V 2A.

II. Phần cứng

III. Sơ đồ và làm mạch

Mình dùng Proteus để vẽ mạch sau đó làm mạch bằng phương pháp thủ công.

IV. Lập trình

Mình sử dụng phương pháp đọc tín hiệu analog ở các chân của vi điều khiển, sau đó so sánh giá trị đó với 5V (vì hiệu điện thế ở các chân của vi điều khiển là 5V max). Kết quả thu được và kiểm tra bằng máy đo loại này:

sai lệch giữa 2 máy là 0.1V và 10mA.

Các bạn cần phải tải thư viện LiquidCrystal_I2C.h và TinyWireM.h tại http://learning.grobotronics.com/2014/02/control-lcd-display-attiny85/ (dự phòng). Sau đó viết đoạn code đơn giản này:

#include "LiquidCrystal_I2C.h"
#include <TinyWireM.h>

#define amperInput     4              	// ATtiny Pin 3
#define voltInput      3				// ATtiny Pin 2

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity

float Uout = 0.000;
float Uin = 0.000;
float Uout1 = 0.000;
float Uin1 = 0.000;
float Iin = 0.000;
float I = 0.000;
float R1 = 98100.000; // Dien tro R1 (100K)
float R2 = 9400.000;  // Dien tro R2 (10K)
float R3 = 9900.000;  // Bien tro R3 (10K)
float R4 = 0.200;    // Dien tro R4 (0.2R 5W)
int value = 0.000;
int value1 = 0.000;

void setup(){
  pinMode(voltInput, INPUT);
  pinMode(amperInput, INPUT);
  lcd.begin(16,2);               
  lcd.backlight(); 
  lcd.setCursor(0,0);
  lcd.print("Volt-Amper metr");  
}

void volt(){
    value = analogRead(voltInput);
    Uout = (value * 5.0) / 1024.0;
    Uin = Uout / (R2/(R1+R2));
    if(Uin > 0.1){
    	lcd.setCursor(0,0);
 	lcd.print("Volt-Amper metr");
    	lcd.setCursor(0,1);
        lcd.print("U=");
        lcd.print(Uin);
    }else{
    	lcd.clear();
   	lcd.setCursor(0,0);
 	lcd.print("Volt-Amper metr");
   	lcd.setCursor(0,1);
   	lcd.print("U= 0");
   	delay(1000);
    }
}

void amper(){
	value1 = analogRead(amperInput);
	Uout1 = (value1 * 5.0) / 1024.0;
	Uin1 = Uout1 / (1+R1/R3);
	Iin = Uin1 / R4;
	I = Iin * 1000;
	if(I >= 1){
    	lcd.setCursor(0,0);
 	lcd.print("Volt-Amper metr");
    	lcd.setCursor(8,1);
        lcd.print("I=");
        lcd.print(I);
    }else{
    	lcd.setCursor(0,0);
 	lcd.print("Volt-Amper metr");
   	lcd.setCursor(8,1);
   	lcd.print("I= 0");
    }
}
void loop(){
   volt();
   amper();
}

V. Nhược điểm

  • Độ chính xác không cao nên không thể dùng trong các máy chính xác hơn.
  • Màn hình hiển thị không được dễ nhìn cho lắm. Chắc vì mình chưa làm đúng cách với màn hình, mong các bạn góp ý để điều chỉnh.

Bỏ qua những nhược điểm trên thì máy đơn giản, phù hợp để sử dụng trong các trường hợp như của mình.

VI. Lời kết

Chúc các bạn có nhiều dự án hay!

lên
6 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Cánh tay robot 4 bậc tự do - Điều khiển bằng máy tính dùng LABVIEW

Thông qua các phương tiện thông tin trên các diễn đàn Internet và các trung tâm học tập thực hành, cho thấy nhu cầu học tập và nghiên cứu cũng như tự mày mò tìm hiểu về nhiều lĩnh vực trong ngành điện điện tử nói chung và ngành tự động hóa nói riêng là rất cao. Hiện nay trong các nhà máy có các dây chuyền sản xuất, có rất nhiều các tay máy hoạt động. Robot công nghiệp đã có mặt trong sản xuất từ nhiều năm trước, ngày nay robot công nghiệp được dùng ở nhiều lĩnh vực sản xuất. đó là xuất phát từ những ưu điểm mà robot đó đã được chọn và đúc kêt lại trong quá trình sản xuất, robot có những tính năng mà con người không thể có được, khả năng làm việc ổn định,làm việc trong môi trường độc hại. Do đó việc đầu tư nghiên cứu, chế tạo ra những loại robot phục vụ cho công cuộc tự động hóa sản xuất là rất cần thiết cho hiện tại và trong tương lai.

lên
18 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Máy in 3D (phần 1 - Dựng phần cứng)

Xin chào các bạn! Máy in 3D và công nghệ 3D đã rất phổ biến trên thế giới. Tại Việt Nam, công nghệ này cũng đang bắt phát triển nhanh. Hôm nay mình xin được chia sẻ với các bạn dự án máy in 3D của mình. Hãy cùng hoàn thiện nó với nhiệt huyết và sự tự tin nhé, vì cộng đồng Arduino Việt Nam là nơi sẽ đưa bạn đến thành công.

lên
33 thành viên đã đánh giá bài viết này hữu ích.

Máy in 3D (phần 2 - Hiệu chỉnh phần mềm và sử dụng máy in)

Xin chào các bạn! Máy in 3D và công nghệ 3D đã rất phổ biến trên thế giới. Tại Việt Nam, công nghệ này cũng đang bắt phát triển nhanh. Hôm nay mình xin được chia sẻ với các bạn dự án máy in 3D của mình. Hãy cùng hoàn thiện nó với nhiệt huyết và sự tự tin nhé, vì cộng đồng Arduino Việt Nam là nơi sẽ đưa bạn đến thành công. Trong phần 1 mình đã chia sẻ với các bạn về quá trình dựng máy in 3d của mình, trong phần thứ 2 này mình xin tiếp tục chia sẻ với các bạn về phần lập trình code, hiệu chỉnh phần mềm và sử dụng máy in 3d.

lên
22 thành viên đã đánh giá bài viết này hữu ích.