www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ADC problem?

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
upornik
Član
Član



Pridružen-a: Ned 09 Jan 2005 22:35
Prispevkov: 261
Aktiv.: 1.10
Kraj: Celje

PrispevekObjavljeno: Sre Apr 30, 2008 10:43 pm    Naslov sporočila:  ADC problem? Odgovori s citatom

Imam en problem z AD pretvorbo pri ATMega16 krmilniku. AVCC pin imam povezan preko 10uH dušilke na +5V in preko 100nF na maso, AREF pin pa imam povezan preko 100nF na maso. Ta način reference imam nastavljen tudi v programu. Naredil sem v bistvu en preprost V-meter, ki meri od 0-5V. Napetost merim na 4,7k trimerju.
Ko imam priključen AD0 vhod s katerim merim napetost proti masi na omenjenem trimerju, dobim zelo točen rezultat v primerjavi z multimetrom, s katerim istočasno preverjam napetost. Sprva sem mislil, da mi kaže točno, vendar ko pa odklopim AD0 pin iz merjenega mesta, dobim na multimetru popolnoma drugačen rezultat. Ujemata se le vrednosti 0 in 5V, vmesni rezultat pa je precej mimo. Ta problem sem opazil šele, ko sem testiral temperaturni senzor LM35. Pri sobni temperaturi bi naj napetost na njem bila 200mV. Ta napetost je tudi dejansko na njem( merjeno z multimetrom). Ko jo pa želim meriti z krmilnikom, pa znaša nekaj čez 3V in se s segrevanjem sploh ne spreminja (ko pa merim samo z multimetrom se ustrezno spreminja). Če merim napetost na senzorju istočasno( s krmilnikom in multimetrom), tudi multimeter kaže ves čas nekaj čez 3V. Ne znam si pojasniti v čem je problem. Mogoče kdo ve?

Koda:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <moje/LCD.h>





ISR(ADC_vect)
 
{
  unsigned int rezultat=0;
 
 

  //rezultat je ADCH(register z vrednostjo pretvorbe)x2
  rezultat = ADCH;
 
 
  lcd_pisi_na_naslov(0);
  lcd_vrednost_spremenljivke(rezultat);

}



int main (void)
{
   

   DDRB=0xFF;
   DDRD=0xFF;

   
   lcd_inicializacija();
   lcd_izklopi_kurzor();
   lcd_izbrisi_pomakni_na_zacetek();

   
   // Set ADC prescalar to 8 - 125KHz sample rate @ 1MHz
   ADCSRA |= 0b00000011;
   
   // Set ADC reference to AVCC
   ADMUX |= 0b01000000;
   // Left adjust ADC result to allow easy 8 bit reading
   ADMUX |= 0b00100000;

   // No MUX values needed to be changed to use ADC0

   // Enable ADC
   ADCSRA |= 0b10000000; 
   
   // Enable ADC Interrupt
   ADCSRA |= 0b00001000;
   
   // Enable Global Interrupts
   sei();
               
   
   
   while(1)
   {
   // Start A2D Conversions
   ADCSRA |= 0b01000000;
   //vsakih 100ms start A2D Conversions
   _delay_ms(100);
   }
   
   
   return(0);
}


Tukaj je še program, vrednosti vhodne napetosti nisem programsko računal, ampak sem samo preverjal pretvorbo( vrednosti sem preveril s kalkulatorjem).
Vezje imam na razvojni plošči minipin in testni ploščici.

Hvala za odogovor!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igor_k
Član
Član



Pridružen-a: Pon 19 Jul 2004 11:44
Prispevkov: 1011
Aktiv.: 4.27
Kraj: Rače

PrispevekObjavljeno: Sre Apr 30, 2008 11:47 pm    Naslov sporočila:   Odgovori s citatom

Mogoče je vklopljen notranji pull-up?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
upornik
Član
Član



Pridružen-a: Ned 09 Jan 2005 22:35
Prispevkov: 261
Aktiv.: 1.10
Kraj: Celje

PrispevekObjavljeno: Čet Maj 01, 2008 12:31 am    Naslov sporočila:   Odgovori s citatom

Kako to vem in če je, kako se ga izklopi?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igor_k
Član
Član



Pridružen-a: Pon 19 Jul 2004 11:44
Prispevkov: 1011
Aktiv.: 4.27
Kraj: Rače

PrispevekObjavljeno: Čet Maj 01, 2008 4:21 pm    Naslov sporočila:   Odgovori s citatom

Pri inicializaciji dodaj:

PORTA=0x00;
DDRA=0x00;

če ne bo delalo probaj kakšen drug AD vhod (mogoče je ta skurjen).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
upornik
Član
Član



Pridružen-a: Ned 09 Jan 2005 22:35
Prispevkov: 261
Aktiv.: 1.10
Kraj: Celje

PrispevekObjavljeno: Čet Maj 01, 2008 9:21 pm    Naslov sporočila:   Odgovori s citatom

Sem poskusil vse to, pa še vedno ni vredu Sad
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igor_k
Član
Član



Pridružen-a: Pon 19 Jul 2004 11:44
Prispevkov: 1011
Aktiv.: 4.27
Kraj: Rače

PrispevekObjavljeno: Čet Maj 01, 2008 10:14 pm    Naslov sporočila:   Odgovori s citatom

Kot prvo poženi simulator in glej DDRA in PORTA če je res 0, ko delaš meritev.
Če je, potem je nekaj narobe s čipom ali pa z vezjem.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
upornik
Član
Član



Pridružen-a: Ned 09 Jan 2005 22:35
Prispevkov: 261
Aktiv.: 1.10
Kraj: Celje

PrispevekObjavljeno: Čet Maj 01, 2008 11:43 pm    Naslov sporočila:   Odgovori s citatom

Sedaj mi je končno uspelo. Problem je v tem, da minipin verjetno že vsebuje kakšne pull-up upore, saj ko sem vezje sestavil zgolj na testni ploščici, je stvar začela delovati...

Hvala za pomoč!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group