 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.47 Kraj: Krško
|
Objavljeno: Pon Jul 04, 2011 8:46 pm Naslov sporočila: meritev 8 frekvenc naenkrat |
|
|
Meriti moram cca 8 frekvenc reda kHz. Za eno, 2 ali 3 ni problem - counter v mikrokontrolerju. Za 8 pa.....? Obstaja kak čip ki ima 8 ali več counterjev, ki jih nato bereš? Oz. kaka izpeljanka NXP 8052 ali ARM7?
Glede na to, da frekvence niso visoke, sem razmišljal, da bi jih štel softversko - npr. vsak signal na svoj pin, ob pozitivni fronti na pinu povečam njegov števec, s timerjem si naredim periodo štetja. _________________ Dobrga štromarja samo slab šnops strese! |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.03 Kraj: Divača (Kačiče)
|
Objavljeno: Pon Jul 04, 2011 9:18 pm Naslov sporočila: |
|
|
Si prepričan, da potrebuješ to naenkrat? Mogoče bi pa šlo tako, da bi najprej meril prvo, nato drugo, ..... Rezultate pa prikažeš vse na kmalu. _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.47 Kraj: Krško
|
Objavljeno: Pon Jul 04, 2011 9:22 pm Naslov sporočila: |
|
|
Tudi na to sem pomislil. Verjetno bi šlo z lpc2148 4 frekvence naenkrat, pa multipleksiram pa je.
Da ne bom tajanstven - v konkretnem primeru se gre za merjenje pretokov hladilne vode (merjenje impulzov iz turbinic). _________________ Dobrga štromarja samo slab šnops strese! |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.69 Kraj: Kranj - struževo
|
Objavljeno: Tor Jul 05, 2011 12:53 am Naslov sporočila: |
|
|
Par jih daš na tajmerje, par pa na interupte. Procesor pa v sleep mode
Softversko pa rajši ne. Boš izgubljal impulze. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
Vlado Član

Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 563 Aktiv.: 2.38 Kraj: Ljubljana
|
Objavljeno: Tor Jul 05, 2011 8:38 am Naslov sporočila: |
|
|
Damjan, nisi povedal kakšna naj bi bila natančnost merjenja.
Kaj če bi uporabil F/U converterje in s procesorjem bral napetosti ki so proporcionalne frekvenci?
Vlado |
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.40
|
Objavljeno: Tor Jul 05, 2011 12:27 pm Naslov sporočila: |
|
|
Merilniki peretoka imajo ponavadi zvezni izhod za trenutni pretok in impulze za komulativo. Impulzi so z razlogom... _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.47 Kraj: Krško
|
Objavljeno: Tor Jul 05, 2011 5:09 pm Naslov sporočila: |
|
|
Dorijan je napisal/a: |
Glede na cene cenejših mikrokontrolerjev(tudi pod 0.5€), bi si lahko na vsako turbinico dal nek mini MCU, potem pa to pošiljaš po nekem vodilu na "ta glavnega", ki ga s tem tudi precej razbremeniš.
pa glede na to kako majhne se dobi, jih lahko kar v kak konektor daš, če si na tesnem s prostorom. |
f/u bi lahko naredil z monostabilnim multivibratorjem (555) in rc členom, vendar bi se rad izognil kalibraciji in napakam.
Omenjene turbinice iz Conrada imajo samo pulzni izhod.
Zanimiv je tudi Dorijanov predlog. Mogoče bom naredil nekaj vmesnega - recimo nekaj mikrokontrolerjev (2-4), ki bi bili povezani z "masterjem", kateri bi potem skbel še za display, merjenje temperatur in komunikaicijo s PCjem. _________________ Dobrga štromarja samo slab šnops strese! |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.00
|
Objavljeno: Tor Jul 05, 2011 6:01 pm Naslov sporočila: |
|
|
Kolikšna je najvišja predvidena frekvenca impulzov?
Če imajo signali 50% duty ciklel, dobiš najkrajši čas trajanja "1" od impulza.
"Debounce" je potem lahko dolg največ polovico tega časa.
"Debounce" zato, ker v trenutku, ko prvič nekje zaznaš "1" ali "0", samo blokiraš zaznavanje tistega vhoda, ostale vhode pa še vedno preverjaš, pa tudi vse ostalo se normalno izvaja. Nato po pretečenem času spet preveriš tisti vhod.
Ne vem, kako višji prevajalniki prevedejo ukaz Debounce, kajti čakanje v zanki je čista potrata časa.
Če sam napišeš debounce, za zaznavanje počasnih vhodov ne rabiš prekinitev. Vseh 8 vhodov daš na en port. Ga prebereš vsakih 1/3 najkrajšega časa trajanja "1", primerjaš prebrano s staro vrednostjo, poservisiraš spremembe, izpišeš na LCD, ... in po pretečenem času spet prebereš port.
Dodano: Eh, šele sedaj sem opazil, da je potrebno tudi čas meriti. Brez merjenja časa se dobi samo podatek o pretečenih litrih, z merjenjem časa pa tudi podatek o litrih/minuto. _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
tonko Član


Pridružen-a: Sob 25 Jun 2005 13:45 Prispevkov: 541 Aktiv.: 2.28 Kraj: Črnomelj
|
Objavljeno: Tor Jul 05, 2011 6:48 pm Naslov sporočila: |
|
|
V timer cikličnem interruptu, ki naj ima frekvenco nekajkrat višjo od frekvence ki jo boš meril obdeluj spremembe stanj na vhodih.
Če boš vzel 8051 boš komot delal z interrupt frekvenco 20khz , kar ti zadostuje za vzorčanje impulzov do skoraj 10khz, z LPC2148 pa boš lahko delal z interrupt frekvenco 100khz ali več. Na ta način boš lahko meril poljubno število kanalov oziroma kolikor imaš digitalnih vhodov.
Primer za dva stevca:
Koda: |
//GLOBALNE SPREMENLJIVKE
unsigned short int pulses1 = 0; //IZMERJENI IMPULZI NA SEKUNDO VHOD 1
unsigned short int pulses1_ = 0; //IZMERJENI IMPULZI NA SEKUNDO IZ //INTERRUPTA VHOD 1
unsigned short int pulses2 = 0; //IZMERJENI IMPULZI NA SEKUNDO VHOD 2
unsigned short int pulses2_ = 0; //IZMERJENI IMPULZI NA SEKUNDO IZ
//INTERRUPTA VHOD 2
void main(void)
{
while(1)
{
disable_interrupts(); //ONEMOGOČI INTERRUPTE
pulses1 = pulses1_; //PREBERI ŠTEVILO IMPULZOV P1 IZ INTERRUPT FUNKCIJE
pulses2 = pulses2_; //PREBERI ŠTEVILO IMPULZOV P2 IZ INTERRUPT FUNKCIJE
enable_interrupts(); //PONOVNO OMOGOČI INTERRUPTE
printf("P1=%5up/sek P2=%5up/sek\n",pulses1,pulses2); //IZPIS IMPULZOV KANAL 1 in 2
}
}
void interrupt_10khz(void) //TIMER CIKLIČNI INTERRUPT 10khz
{
static unsigned short interval_timer = 0; //TIMER ZA VZORCANJE V INTERVALIH 1sek
static unsigned short int int_pulses1 = 0; //PRESTETI IMPULZI V ENI SEKUNDI
bit last_input1 = 0; //PREJSNJA VREDNOST VHODA 1 ZA ZAZNAVANJE SPREMEMBE VHODA
static unsigned short int int_pulses2 = 0; //PRESTETI IMPULZI V ENI SEKUNDI
bit last_input2 = 0; //PREJSNJA VREDNOST VHODA 2 ZA ZAZNAVANJE SPREMEMBE VHODA
//======================
if(interval_timer >= 10000) //1 x v sekundi prepisi stevilo impulzov
{
interval_timer = 0;
pulses1_ = int_pulses1; //ZAPOMNI SI STEVILO IMPULZOV kanal 1
int_pulses1 = 0;
pulses2_ = int_pulses2; //ZAPOMNI SI STEVILO IMPULZOV kanal 2
int_pulses2 = 0;
}
//======================
if(INPUT1 != last_input1) //ALI SE JE STANJE NA VHODU SPREMENILO KANAL 1
{
int_pulses1++;
last_input1 = INPUT1;
}
if(INPUT2 != last_input2) //ALI SE JE STANJE NA VHODU SPREMENILO KANAL 2
{
int_pulses2++;
last_input2 = INPUT2;
}
//======================
return;
}
|
|
|
Nazaj na vrh |
|
 |
borber Član


Pridružen-a: Pon 23 Maj 2005 8:40 Prispevkov: 3111 Aktiv.: 13.12 Kraj: LJUBLJANA
|
Objavljeno: Tor Jul 05, 2011 8:36 pm Naslov sporočila: |
|
|
Conradovi merilniki pretoka imajo impulzni merilni izhod, ki dejansko podaja podatek o pretočeni količini vode saj je naveden podatek za občutljivost 10.000 impulzov na liter pretočene vode. Merilni signal je uporaben za števec pretočene vode, seštevalnik.
Ker pa damo želi uporabiti frekvencmetre na merilnih izhodih, je to enako, kot bi delal merilce pritiskov v posamezni cevi, merilcu. V ta namen bi bile sonde za merjenje pritiska cenejša in enostavnejša rešitev.
Counter in Frequency Counter sta dve različni stvari. |
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70781.29
|
Objavljeno: Tor Jul 05, 2011 9:11 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
Vlado Član

Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 563 Aktiv.: 2.38 Kraj: Ljubljana
|
Objavljeno: Tor Jul 05, 2011 9:31 pm Naslov sporočila: |
|
|
Damjan,
enkrat sem delal z enim senzorjem pretoka iz Conrada in kolikor se spomnim, izhod iz senzorja je sinusne oblike, prav tako je amplituda signala odvisna od pretoka, tako da pri majhnem pretoku imaš samo nekaj milivoltov.
Jaz sem pričakoval TTL nivo, imel pa sinus. |
|
Nazaj na vrh |
|
 |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.47 Kraj: Krško
|
Objavljeno: Tor Jul 05, 2011 10:05 pm Naslov sporočila: |
|
|
Se je kar razvila debata, vsem hvala za nasvete.
Tonko - nekako tako sem si tudi sam zamislil. Se mi zdi, da je to najenostavnejša varianta.
Mare - tudi tvoj princip je zanimiv. Če mi bo z io pini hodilo na tesno, bom mogoče šel v tej smeri.
Vlado - hvala za opozorilo. Trenutno sem gledal tole turbinico, vendar moram še malce preveriti glede pretokov.
Najti moram še sondo za merjenje prevodnosti vode - območje cca 20mikroS.
EDIT: popravljen link _________________ Dobrga štromarja samo slab šnops strese! |
|
Nazaj na vrh |
|
 |
|
|
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: 497 dni
Powered by phpBB © 2001, 2005 phpBB Group
|