Sprieguma līmeņa indikators 9 V bateriju pārbaudei


Šoreiz, izmantojot mikrokontrolleri (ATmega8), tika izveidota sprieguma līmeņa indikatora elektriskā principiālā shēma. Izmantojot sprieguma dalītāju (R1 un R2) un ACP kanālu, var izmērīt sprieguma vērtību diapazonā no 1 V līdz 10 V (shēma paredzēta 9 V bateriju pārbaudei).


1.1.att. 9 V baterijas sprieguma līmeņa indikatora prototips


1.2.att. 9 V baterijas sprieguma līmeņa indikatora elektriskā principiālā shēma



#define F_CPU 16000000UL
#include <avr/io.h>  
#include <util/delay.h>  
#include <avr/interrupt.h>



void LED1();
void LED2();
void LED3();
void LED4();
void LED5();
void LED6();
void LED7();
void LED8();
void LED9();
void LED10();
void ADC_inicializacija();
unsigned int nolasa_ADC(unsigned int kanals);




int main(void){  

unsigned int spriegums=0,ACP_vertiba=0;

DDRB=0x03; 
DDRC=0x00;
DDRD=0xFF;


while(1){  
ACP_vertiba = nolasa_ADC(5);  
spriegums = ACP_vertiba*0.0025*11;   

switch (spriegums){
case (1):
LED1();
break;
case (2): 
LED1();
LED2();
break;

case (3): 

LED1();
LED2();
LED3();
break;
case (4): 

LED1();
LED2();
LED3();
LED4();
break;
case (5): 

LED1();
LED2();
LED3();
LED4();
LED5();
break;
case (6): 

LED1();
LED2();
LED3();
LED4();
LED5();
LED6();
break;
case (7): 
LED1();
LED2();
LED3();
LED4();
LED5();
LED6();
LED7();
break;

case (8): 

LED1();
LED2();
LED3();
LED4();
LED5();
LED6();
LED7();
LED8();
break;
case (9):
 
LED1();
LED2();
LED3();
LED4();
LED5();
LED6();
LED7();
LED8();
LED9();
break;
case (10): 
LED1();
LED2();
LED3();
LED4();
LED5();
LED6();
LED7();
LED8();
LED9();
LED10();
break;
default: 
break;
}
}
return 0;  
}  








void LED1()
{
PORTD |= (1<<PD0);
_delay_ms(500);
PORTD &= (~(1<<PD0));
}

void LED2()
{
PORTD |= (1<<PD1);
_delay_ms(500);
PORTD &= (~(1<<PD1));
}

void LED3()
{
PORTD |= (1<<PD2);
_delay_ms(500);
PORTD &= (~(1<<PD2));
}

void LED4()
{
PORTD |= (1<<PD3);
_delay_ms(500);
PORTD &= (~(1<<PD3));
}

void LED5()
{
PORTD |= (1<<PD4);
_delay_ms(500);
PORTD &= (~(1<<PD4));
}

void LED6()
{
PORTD |= (1<<PD5);
_delay_ms(500);
PORTD &= (~(1<<PD5));
}

void LED7()
{
PORTD |= (1<<PD6);
_delay_ms(500);
PORTD &= (~(1<<PD6));
}

void LED8()
{
PORTD |= (1<<PD7);
_delay_ms(500);
PORTD &= (~(1<<PD7));
}

void LED9()
{
PORTB |= (1<<PB0);
_delay_ms(500);
PORTB &= (~(1<<PB0));
}

void LED10()
{
PORTB |= (1<<PB1);
_delay_ms(500);
PORTB &= (~(1<<PB1));
}


void ADC_inicializacija()  
{  
     ADMUX |= (1<<REFS1)|(1<<REFS0);  
     ADMUX &= ~(1<<ADLAR);
     ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);  
}  
unsigned int nolasa_ADC(unsigned int kanals) 
{
unsigned int rezultats;
ADC_inicializacija();
ADMUX |= kanals;
ADCSRA |= (1<<ADSC);
while(!(ADCSRA&(1<<ADSC)));
rezultats = ADC;
ADCSRA |= (1<<ADIF);
return rezultats;
}


UZ SĀKUMU