Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • AVR, nestabilní AREF

AVR, nestabilní AREF

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

AVR, nestabilní AREF

Odoslaťod DanielK » 14 Sep 2019, 12:53

Ahoj
Mám problém s nestabilním napětím z napěťové reference tl431 na pinu AREF viz obrázek
Měřím napětí na teplotním čidlu lm35 a hodnota vypadala spíš jako TIP sprot, a i po zprůměrování 64 hodnot je výstupní hodnota s rozkmitem cca 20mV.

Má někdo tušení kde dělám chybu?

Kód: Vybrať všetko
// ATMEGA 8A
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h> 
#include <avr/interrupt.h>
#include <stdlib.h> 
#include <stdio.h> 
#include "lcd.h"


char text[32] = {0,}; // LCD

volatile uint8_t count= 0;

volatile uint8_t countADC= 0;

void zmer(uint16_t pole[]);// změří 5 hodnot a vrátí je v poli

uint16_t val[6];// pole pro výsledky měření


void zmer(uint16_t pole[]){

   char i;

   for(i=0;i<5;i++){

      ADMUX = i;// nastavení měřeného kanálu

      ADCSRA |= (1<<ADSC);// spustit převod

      while(ADCSRA & (1<<ADSC)){}// čekej dokud je ADSC=1 (probíhá převod)

      pole[i] = ADC;// ulož výsledek převodu
   }
}



unsigned long int prumer( int*pole, int delka ){

   unsigned long int sum = 0, x = 0;

   for( x = 0; x < delka; x++ ){

      sum += pole[x];
   }
   
   return sum/delka;
}




int main (void) {

   DDRB = 0b11111111; // set IO

   DDRD = 0b11011111; // set IO

   PORTD |= (1 << PD5); // pull up

   TCNT0 = 0;

   TCCR0 |= (1<<CS01); // PRESCALER 8

   TIMSK = (1<<TOIE0); //Timer/Counter0 Overflow Interrupt Enable

   ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // povolit ADC, clock pro ADC F_CPU/64

   lcd_init(LCD_DISP_ON); //inicializace LCD

   int temp = 0; // hodnota teploty v mV

   char x =0; // počet uložených hodnot

   unsigned int hodnoty[64] = {0,};

   sei(); // povolení globálního přerušení

   while(1){
      
      if(count > 3){ // 6us, doba záknitů tlačítka
      
      PORTD ^= (1 << PD0);  // Invert   
      }
   
      zmer(val);

      hodnoty[x] = val[4] * 2.3763; // U REF = 2.4312

      x++;
      
      if ( x == 64 ){

         temp = prumer( hodnoty, 64 );       
         
         lcd_clrscr();

         sprintf(text,"TEMP=%d",temp);

         lcd_puts(text);

         lcd_gotoxy(0,0);
      
            
         x = 0;
      }

   }

}



ISR (TIMER0_OVF_vect){ // 2048 us

   if((PIND & (1 << PD5)) == 0){

      if(count<200)

      count++;
   
      if(count==254)   

      PORTB |= (1 << PB2);  // rele_off
      }
   else{   

      count=0;
      }
}
Prílohy
DS1Z_QuickPrint17.png
schema.png
2. ročník ŠSSI Tábor, Ubuntu, Rock Metal, Škoda Octavia RS TSI
DanielK
Stály člen
Stály člen
Príspevky: 154
Založený: 28.02.2015
Karma: 0

Re: AVR, nestabilní AREF

Odoslaťod lucky62 » 14 Sep 2019, 13:06

Tá píla na obrázku je nameraná kde? Na tom TL431?...
....môj bazar....

...Nikdy sa nehádaj s blbcom...
lucky62
Obrázok používateľa
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1094
Založený: 14.02.2012
Bydlisko: Liptovský Mikuláš, SK
Karma: 9

Re: AVR, nestabilní AREF

Odoslaťod zdeno6505 » 14 Sep 2019, 13:15

Skús vyhodiť C 100n medzi A a C TL431.
Amatéri postavili Noemovu archu, profesionáli Titanic.
zdeno6505
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1218
Založený: 04.08.2010
Bydlisko: TO

Re: AVR, nestabilní AREF

Odoslaťod DanielK » 14 Sep 2019, 13:24

Super, po odstranení C7 je to pěkně stabilní. Díky za pomoc.
2. ročník ŠSSI Tábor, Ubuntu, Rock Metal, Škoda Octavia RS TSI
DanielK
Stály člen
Stály člen
Príspevky: 154
Založený: 28.02.2015
Karma: 0


Naspäť na Mikropočítače

Kto je prítomný

Užívatelia prezerajúci si toto fórum: Žiadny registrovaný používateľ a 1 hosť.

Forums ©
Autor stránky je Ondrej Závodský(zawin), o graficky design sa stará Ľuboš Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
Čas potrebný k spracovaniu stránky 0.25 sekúnd