A/D prevodnik v ATMEGA16
Moderátor: Moderátoři
A/D prevodnik v ATMEGA16
Zdravím,
potreboval bych poradit jak rozchodit vnitrni AD prevodnik, aby mi daval spravne hodnoty. Zobrazeni je pomoci LCD displeje, ukazuje to nejake zmatky(na miste jednotek se strida 0,1,2; na pozici desetin jsou to uz vetsi psycha...napr.=,^n,o,k,0,atd... pouzivam vnejsi frekvenci 16MHz.
Hodila by se nejaka funkci ukazka nebo rada jak na to.
Potrebuji merit hodnoty kolem 1V... chci tam pouzit tu vnitrni referci 2,56V i za cenu vyuziti jen poloviny rozsahu
...v priloze je pouzity program..
potreboval bych poradit jak rozchodit vnitrni AD prevodnik, aby mi daval spravne hodnoty. Zobrazeni je pomoci LCD displeje, ukazuje to nejake zmatky(na miste jednotek se strida 0,1,2; na pozici desetin jsou to uz vetsi psycha...napr.=,^n,o,k,0,atd... pouzivam vnejsi frekvenci 16MHz.
Hodila by se nejaka funkci ukazka nebo rada jak na to.
Potrebuji merit hodnoty kolem 1V... chci tam pouzit tu vnitrni referci 2,56V i za cenu vyuziti jen poloviny rozsahu
...v priloze je pouzity program..
- Přílohy
-
- AD.txt
- pouzil sem tenhle kod
- (1.02 KiB) Staženo 207 x
(vysledek % 100)/10...tak to udelam takhle...ale to nevysvetluje proc mi tam na miste jednotek litaji cisla od 0V do 2V pri pripojenem i nepripojenem napeti na ADC0.Andrea píše:Tak například
LCDsendChar(vysledek % 100+0x30);
je blbost, vysledek % 100 je číslo 0-99 a tolik číslic nemáme. Musíš nadvakrát.
...nevim cim to je vstupy AREF, AVCC mam osetrene podle vyrobce... ale stejnak to nejak kmita....
Ted sem pridal jeste setiny... a kdyz neni nic pripojeneho.. tak se tam strida 0,00 1,01 2,02 ....nevite cim to muze byt? Potreboval bych testovat kdy je neco pripojeno, kdy neni a jakou to ma velikost...s tim kmitanim toho moc nenamerim..
Ted sem pridal jeste setiny... a kdyz neni nic pripojeneho.. tak se tam strida 0,00 1,01 2,02 ....nevite cim to muze byt? Potreboval bych testovat kdy je neco pripojeno, kdy neni a jakou to ma velikost...s tim kmitanim toho moc nenamerim..
Zkus toto:
Kód: Vybrat vše
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include "lcd_lib.h"
#define REF (1<<REFS1)|(1<<REFS0) //internal reference
#define VREF 2560UL //reference [mV]
unsigned long read_adc(unsigned char kanal)
{
ADMUX = REF + kanal;
ADCSRA |= (1<<ADSC); //start převodu
while (ADCSRA & (1<<ADSC)); //čekej na konec převodu
return ADC;
}
int main(void)
{
unsigned int vysledek;
unsigned long napeti;
static char cela_cast[2];
static char tisiciny[4];
LCDinit();
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); //dělič 128
while (1)
{
vysledek = read_adc(0); //ADC0
napeti = vysledek * VREF /1024;
itoa(napeti/1000, cela_cast, 10); //převeď na string
itoa(napeti%1000, tisiciny, 10);
LCDclr;
LCDGotoXY(2, 0);
LCDsendString(cela_cast);
LCDsendChar(',');
LCDsendString(tisiciny);
LCDsendString(" V");
_delay_ms(300);
}
}
Naposledy upravil(a) AB1 dne 27 dub 2010, 08:58, celkem upraveno 1 x.
porad stejny problem i po zkousce vyse zmineneho programu..
schema je zde:
http://leteckaposta.cz/487230727
tady mi to neslo uploadnout
schema je zde:
http://leteckaposta.cz/487230727
tady mi to neslo uploadnout
Naposledy upravil(a) frontm4n dne 29 bře 2010, 19:28, celkem upraveno 1 x.
tak uz mi to asi meri...ale potreboval bych nejak vyresit aby mi to nekmitalo kdyz neni nic pripojene...Da se to nejak udelat? Potrebuji totiz detekovat pripojeni akumulatoru 1,2 V. ...
... akorat me napada....dat tam cekaci smycku ktera bude sledovat treba 5 vzorku po sobe a kdyz budou shodne tak ji povazovat za pripojene napeti...... nebo je jiny zpusob?
schema je zde:
http://leteckaposta.cz/487230727
... akorat me napada....dat tam cekaci smycku ktera bude sledovat treba 5 vzorku po sobe a kdyz budou shodne tak ji povazovat za pripojene napeti...... nebo je jiny zpusob?
schema je zde:
http://leteckaposta.cz/487230727
Jsou na schematu propojené země GND a AGND?
Edit:
Odpor případně překlenout kondenzátorem M1-1M.
Zkusil bych připojit odpor proti zemi, nejvyšší hodnotu která udrží ADC v nule (500k?, 100k?). Na měření baterky by to nemělo mít vliv.potreboval bych nejak vyresit aby mi to nekmitalo kdyz neni nic pripojene
Edit:
Odpor případně překlenout kondenzátorem M1-1M.