Kiểm tra sức khỏe acquy 12V với Attiny13

1. Chuẩn bị

2. Sơ đồ mạch điện

3. File mạch in

Mặt trên

https://drive.google.com/open?id=0Bz8Of8V4m7oSa2twTUcyUUEtX0U (mirror)

Mặt dưới 

https://drive.google.com/open?id=0Bz8Of8V4m7oSY2MydXdrQUZ5dDg (mirror)

4. Code Arduino

Code để Attiny13 đọc giá trị ADC từ bình acquy thông qua 2 điện trở R1 và R2 và hiển thị lên 3 led để báo tình trạng acquy.

  • Led xanh nhấp nháy tức acquy đang sạc bình thường.
  • Led đỏ nhấp nháy báo hiệu dòng nạp cho acquy quá ngưởng an toàn.
  • Led xanh chỉ sáng không nhấp nháy chỉ báo bình còn tốt.
  • Led vàng sáng tức acquy dưới 12V.
  • Led đỏ sáng không nhấp nháy tức sức khỏe acquy kém (nên chuẩn bị cái mới là vừa).
// This sketch monitors battery voltage and turns on an LED based on it.
// Processor: ATtiny 13.
// Author: Rafael Larios
// Date: 13.09.03
//

int rLED = 4;                  //Red LED pin
int yLED = 1;                  //Yellow LED pin
int gLED = 2;                  //Green LED pin
int inADC = 3;
int val = 0;    //This variable will hold voltage input value
int dlyctr = 0;                      //This is the delay counter.

void setup()
{
	pinMode(rLED, OUTPUT);            //Define Red LED output
	pinMode(yLED, OUTPUT);            //ditto Yellow LED
	pinMode(gLED, OUTPUT);            //ditto Green LED
}

void loop()
{
	val = analogRead(inADC);              //Read voltage through Analog input 0
	if(val < 446)
	{
		//Is battery voltage below 9.6V?
		digitalWrite(rLED, HIGH);       //Yes, this is bad, turn on Red LED
		digitalWrite(yLED, LOW);        //Turn off Yellow LED
		digitalWrite(gLED, LOW);        //Turn off Green LED
	}
	else
	{
		if(val < 586)
		{
			//Is battery voltage between 9.6V and 12.4V?
			digitalWrite(rLED, LOW);      //This is a low voltage, turn off red LED
			digitalWrite(yLED, HIGH);     //Turn on Yelow LED as a warning.
			digitalWrite(gLED, LOW);      //Turn off Green LED
		}
		else
		{
			if(val < 621)
			{
				//Is battery voltage between 12.4V and 13.1V?
				digitalWrite(rLED, LOW);    //Yes, turn off Red LED
				digitalWrite(yLED, LOW);    //Turn off Yellow LED
				digitalWrite(gLED, HIGH);   //Turn on Green LED to indicate fully charged battery voltage.
			}
			else
			{
				dlyctr = dlyctr + 1;        //increase delay counter. every pass approx. 100ms
				if(val < 742)
				{
					//Is battery voltage above 13.1V and below 15.5V?
					digitalWrite(rLED, LOW);         //Turn off red LED
					digitalWrite(yLED, LOW);        //Turn off yellow LED
					if(dlyctr < 6)
					{
						digitalWrite(gLED, HIGH);     //Pulse green LED on for half a second
					}
					else
					{
						digitalWrite(gLED, LOW);      //Pulse green LED off for half a second to show battery is charging.
						if(dlyctr > 10)
						{
							dlyctr = 0;                 //Reset delay counter
						}
					}
				}
				else                              //Battery voltage is above 15.5V.Danger ! Overcharge
				{
					digitalWrite(yLED, LOW);        //Turn off Yellow LED
					digitalWrite(gLED, LOW);        //Turn off Green LED
					if(dlyctr < 6)
					{
						digitalWrite(rLED, HIGH);     //Turn on Red LED for half a second.
					}
					else
					{
						digitalWrite(rLED, LOW);      //Turn off Red LED for half a second.
						if(dlyctr > 10)
						{
							dlyctr = 0;                 //Reset delay counter
						}
					}
				}
				delay(100);                        //Stop program 100 milliseconds to help pulse LEDs.
			}
		}
	}
}

Trong code mình để nguyên văn của tác giả, mình chỉ hướng dẫn lại, mong là qua bài viết sẻ giúp cho các bạn mới học Arduino sẻ cảm thấy sự đa dạng, trong ứng dụng thực tế, với những con chip giá rẻ và dễ lắp.

Chúc các bạn thành công.

Những hình ảnh về dự án: 
lên
12 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

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Lập trình ARDUINO với chíp STM8S003F3P6 giá rẻ

Khi ta lập trình Arduino chắc rằng ai củng muốn ứng dụng vào cuộc sống, nhưng nếu đem nguyên board Arduino vào ứng dùng thì quá tốn kém cho những việc nhỏ. Hôm nay mình giới thiệu với các bạn một dòng chíp rẻ tiền tha hồ cho các bạn sáng tạo.

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

Nạp file .hex cho chip AVR - USBISP - Hướng đẫn cụ thể với 2 dòng ATTiny13 và ATmega8

Đôi khi chúng ta có file nạp cho chip .hex, hoặc các bạn làm xong một dự án trên board Arduino, các bạn không cần bootloader (nhất là chíp Atmega8), và các bạn muốn phát triển trên một bảng mạch riêng thì lúc đó ta sẻ nạp trực tiếp file .hex cho chip, và hôm nay mình sẻ hướng dẩn các bạn nào chưa biết một cách nạp file .hex (firmware) đơn giản và an toàn. Có rất nhiều cách nạp firmware các bạn có thể tìm hiểu trên Internet.

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