M8 a 2 kanaly z ADC- ovlivnujou se – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

M8 a 2 kanaly z ADC- ovlivnujou se – Mikrokontroléry – Fórum – Programujte.comM8 a 2 kanaly z ADC- ovlivnujou se – Mikrokontroléry – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
xhans690
Návštěvník
11. 9. 2010   #1
-
0
-

Zdar lidi,
jsem zase nekde v koncich. Delam nekde nakou chybu.
Mam M8, mam v ni program kde potrebuju mit stale aktivni PWM regulaci (motory), vystupy a komunikaci a jeste potrebuju merit na 2 kanalech ADC.
PWM funguje jak ma, vpodstate vsecko az na ten ADC.
Ke kanalu 0 a kanalu 1 mam pripojene potenciometry. Klasicky mezi Vcc a GND a vystup jde na kanal.
Problem je v tom, ze at otacim kterymkoliv potenciometrem, promitne se zmena i v druhem kanalu
Merici funkce je jasna

int zmeradc(char kanal)

{
//kanal 0 - napeti aku 0-20V
//kanal 1 - napeti ze solaru 0-25V
//kanal 2 -
//kanal 3 -
ADMUX=kanal | (1<<REFS0); //0b01000000+kanal; //ad prevodnik vref=avcc a kondikem na aref pinu
sbi(ADCSRA,ADSC); //start mereni
while (!(ADCSRA & 16)); //cekani na konec mereni
//ADCSRA|=(1<<ADIF); //tohle jsem mel a nemel, a chova se to stejne
return ADC;
}//zmeradc


funkci volam 2x, jednou v parametru predam hodnotu 0, podruhe hodnotu 1.
Hodnoty si pote prepocitam na pozadovany rozsah a odeslu uartem do pc pro kontrolu.
Kanal jedna ma rozsah prepocitanych hodnot 0-250, kanal nula ma rozsah 0-200
Do pc mi prijdou pocatecni hodnoty 0,0
Pohnu s jednim potenciometrem (treba kanal 0) a dojde mi napriklad 10,0
Pohnu vice a uz mi dojde treba 90,8
Dam to nadoraz tak mi dojde 240,40
Podobne je tomu naopak

Copak delam spatne?

Nahlásit jako SPAM
IP: 81.30.248.–
Reklama
Reklama
KIIV+42
God of flame
11. 9. 2010   #2
-
0
-

nejak sem nepochopil co ze to resis za "chybu"

na co sem narazil:
* musis mit ty piny nastaveny jako vstupy - jinak meris napeti vystupu a maximalne muzes pekne zatopit
* vypnout pull-up taky dokaze pekne zamichat s napetim na vstupu..
* linearni potenciometry aby "rychlost zmeny" byla stale stejna... tj. otocim do poloviny, aby byla polovina napeti

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
xhans690
Návštěvník
11. 9. 2010   #3
-
0
-

Piny jsou vstupy, nejsou aktivni pullup
Potenciometry jsou lineary, ale na prubehu ani tak moc nezalezi
Jde mi o to ze otocim potenciometrem na PC0 nad polovinu, druhy je natocen na 0 a presto se mi pohne hodnota ADC na obou
Tedy avr by mel odeslat do pc hodnotu z PC0 treba 100 a z PC1 odeslat 0, jenze on posle z PC0 100 a z PC1 treba 20
Kdyz PC0 natocim na 0, posle z obou 0.
Neco podobneho se deje kdyz PC0 je v klidu, treba na 0 a tocim s PC1

Zkousel jsem vic svabu, delaji mi to vsechny. Daval jsem i 100n kond na vstupy, jestli to treba nekmita ( = potenciometry nechrci) tak to taky nepomohlo, proste jak jde jeden z nich nad 50% tak se to prelije do dalsiho
jeste zkusim pokus "jak daleko se to prelije", tedy budu posilat vsech 6 analogu, i kdyz na nich neni nic pripojene

Nahlásit jako SPAM
IP: 81.30.248.–
xhans690
Návštěvník
11. 9. 2010   #4
-
0
-

Tak vypada to ze jsem to vyresil
Nejspise jsem neco prehlidnul v datasheetu nebo nevim.
Zkratka kod v prvnim prispevku je spatne
Spravny kod, pri kterem se jednotlive vstupy neovlivnuji vypada takto

int zmeradc(char kanal)

{
//kanal 0 - napeti aku 0-20V
//kanal 1 - napeti ze solaru 0-25V
//kanal 2 -
//kanal 3 -
ADMUX=kanal | (1<<REFS0); //0b01000000+kanal; //ad prevodnik vref=avcc a kondikem na aref pinu
char prodleva=50; //prodleva pro zapsani adresy vstupu a pockani na prepnuti MUXu
while(prodleva--);
sbi(ADCSRA,ADSC); //start mereni
while (!(ADCSRA & 16)); //cekani na konec mereni
//ADCSRA|=(1<<ADIF); //tohle jsem mel a nemel, a chova se to stejne
return ADC;
}//zmeradc

Tech 50 je jenom odhad. Kdyz jsem tam mel 10, tak bylo jeste patrne ovlivnovani.

Nahlásit jako SPAM
IP: 81.30.248.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

LAB kanály — založil Petroff

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý