Operácie

Monitor kapacity batérie: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
StudentMIPS (diskusia | príspevky)
Značka: manuálne vrátenie
Riadok 36: Riadok 36:
<tabs>
<tabs>
<tab name="AVR C-code"><syntaxhighlight  lang="c++" style="background: LightYellow;">
<tab name="AVR C-code"><syntaxhighlight  lang="c++" style="background: LightYellow;">
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
#include <avr/io.h>
#include <avr/io.h>
#include <util/delay.h>


#define LED_FULL    PD2  // Zelená LED
int main(void)
#define LED_MID    PD3  // Žltá/oranžová LED
#define LED_LOW    PD4  // Červená LED
 
#define ADC_FULL_LIMIT  778  // približne 3.8 V
#define ADC_MID_LIMIT  409  // približne 2.0 V
 
void ADC_init(void)
{
{
// Referenčné napätie AVCC = 5 V, vstup ADC0 = A0
  unsigned int measuredValue;
ADMUX = (1 << REFS0);


// Zapnutie ADC, preddelička 128
  while (1)
ADCSRA = (1 << ADEN) |
  {
(1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
    /*  relax  */ 
}
  }


uint16_t ADC_read(void)
  return(0);
{
// Spustenie merania
ADCSRA |= (1 << ADSC);
 
// Čakanie na dokončenie merania
while (ADCSRA & (1 << ADSC));
 
return ADC;
}
}


void LED_off_all(void)
</syntaxhighlight ></tab>
{
<tab name="filename.h"><syntaxhighlight  lang="c++" style="background: LightYellow;">
PORTD &= ~((1 << LED_FULL) | (1 << LED_MID) | (1 << LED_LOW));
#include <avr/io.h>
}
 
int main(void)
{
uint16_t adc_value;
 
// Nastavenie D2, D3, D4 ako výstupy
DDRD |= (1 << LED_FULL) | (1 << LED_MID) | (1 << LED_LOW);
 
ADC_init();
 
while (1)
{
adc_value = ADC_read();
 
LED_off_all();
 
if (adc_value >= ADC_FULL_LIMIT)
{
PORTD |= (1 << LED_FULL);   // Full
}
else if (adc_value >= ADC_MID_LIMIT)
{
PORTD |= (1 << LED_MID);    // Mid
}
else
{
PORTD |= (1 << LED_LOW);    // Low
}
 
_delay_ms(100);
}
}


void adc_init(void);                                  // A/D converter initialization


unsigned int adc_read(char a_pin);
</syntaxhighlight ></tab>
</tabs>


Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x ''zdrojaky.zip'':  
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x ''zdrojaky.zip'':  

Verzia z 11:47, 7. jún 2026

Záverečný projekt predmetu MIPS / LS2026 - Meno Priezvisko


Zadanie

Môj semestrálny projekt spočíval z vytvorenia vstavaného systému s využitím mikrokontroléra ATmega328P,ktorý slúži ako trojúrovňový indikátor kapacity batérie. Systém neustále monitoruje jednosmerné napätie na analógovom vstupe pomocou integrovaného ADC prevodníka. Na základe nameranej hodnoty systém vyhodnocuje stav batérie a vizuálne ho indikuje pomocou troch LED diód:

Vývojová doska ACROB.

Literatúra:


Analýza a opis riešenia

Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami... Podrobne opíšte použité komponenty (okrem základnej dosky s ATmega328P procesorom), pridajte linky na datasheety alebo opis obvodu.

Celkový pohľad na zariadenie.

Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.

Schéma zapojenia.


Algoritmus a program

Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... Výpis kódu je nižšie...


#include <avr/io.h>

int main(void)
{
  unsigned int measuredValue;

  while (1)
  {
    /*  relax  */  
  }

  return(0);
}
#include <avr/io.h>

void adc_init(void);                                   // A/D converter initialization

unsigned int adc_read(char a_pin);

Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip

Overenie

Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku hotového zariadenia.

Aplikácia.

Video:


Čo by som urobil inak

Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak.


Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.