Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

A/D prevodnik v ATMEGA16
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 10:14    Předmět: A/D prevodnik v ATMEGA16 Citovat

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..



AD.txt
 Komentář:
pouzil sem tenhle kod

Stáhnout
 Soubor:  AD.txt
 Velikost:  1.02 kB
 Staženo:  226 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: po březen 29 2010, 10:23    Předmět: Citovat

Tak například
LCDsendChar(vysledek % 100+0x30);
je blbost, vysledek % 100 je číslo 0-99 a tolik číslic nemáme. Musíš nadvakrát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 10:32    Předmět: Citovat

Andrea napsal(a):
Tak například
LCDsendChar(vysledek % 100+0x30);
je blbost, vysledek % 100 je číslo 0-99 a tolik číslic nemáme. Musíš nadvakrát.


(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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: po březen 29 2010, 10:37    Předmět: Citovat

Zkus ten čekací while změnit na
while (ADCSRA & 0x40)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 10:41    Předmět: Citovat

...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..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 10:45    Předmět: Citovat

Andrea napsal(a):
Zkus ten čekací while změnit na
while (ADCSRA & 0x40)


tohle nepomohlo
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: po březen 29 2010, 16:40    Předmět: Citovat

Zkus toto:
kód:
#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 AB1 dne út duben 27 2010, 7:58, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4513
Bydliště: Košice

PříspěvekZaslal: po březen 29 2010, 16:44    Předmět: Citovat

NO ze softver bude ok este neznamena ze mu to bude chodit Very Happy kto vie ako to nadratoval.....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 17:59    Předmět: Citovat

porad stejny problem i po zkousce vyse zmineneho programu..

schema je zde:

http://leteckaposta.cz/487230727

tady mi to neslo uploadnout


Naposledy upravil frontm4n dne po březen 29 2010, 18:28, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: po březen 29 2010, 18:10    Předmět: Citovat

citace:
a kdyz neni nic pripojeneho.. tak se tam strida 0,00 1,01 2,02

To je normální chování, je třeba zkusit pin uzemnit, (musí ukazovat 0),
nebo připojit napětí.

A kde je to schema?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 18:33    Předmět: Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: po březen 29 2010, 18:46    Předmět: Citovat

Jsou na schematu propojené země GND a AGND?

citace:
potreboval bych nejak vyresit aby mi to nekmitalo kdyz neni nic pripojene

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.

Edit:
Odpor případně překlenout kondenzátorem M1-1M.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 19:03    Předmět: Citovat

AB1 napsal(a):
Jsou na schematu propojené země GND a AGND?


nejsou, ale mam je spojene
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: po březen 29 2010, 19:15    Předmět: Citovat

Ještě bych dodal, že pro přesné měření je třeba změřit referenční napětí na pinu AREF a podle něho nastavit konstantu v programu.
Vnitřní reference nemusí být přesně 2,56V, mám dojem že datašít uvádí toleranci až 10%.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frontm4n



Založen: Oct 15, 2009
Příspěvky: 62

PříspěvekZaslal: po březen 29 2010, 19:21    Předmět: Citovat

AB1 napsal(a):
Ještě bych dodal, že pro přesné měření je třeba změřit referenční napětí na pinu AREF a podle něho nastavit konstantu v programu.
Vnitřní reference nemusí být přesně 2,56V, mám dojem že datašít uvádí toleranci až 10%.


na pinu AREF se da merit Uref ikdyz mam nastevene vnitrni ref. napeti?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.16 sekund