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í 

Otáčkoměr pro 4T 4V motor

 
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
stres3d



Založen: Oct 25, 2009
Příspěvky: 63

PříspěvekZaslal: st březen 05 2014, 13:48    Předmět: Otáčkoměr pro 4T 4V motor Citovat

Zdravím, chtěl bych si postavit otáčkoměr s LED segmentovkama na motorku viz nadpis - 4T a 4 válce. Jsou tam jenom dvě cívky.

S PIC mám jen okrajové zkušenosti a to ještě hlavně díky programu Great Cow BASIC. Dělat něco postupně sekvence, to mi problém nedělá, ale vymyslet něco co by měřilo frekvenci to už jo..
Potřeboval bych tedy radu a vhledem k tomu, že sem rovnou napíšu dva různé problémy, tak jestli mi budete odepisovat, popište je prosím zvlášť.

1) otáčkoměr co ukazuje i nad 10000 - stačí mi ukázat stovky a tisíce (+desetitisíc - motorka točí do cca 13000), na desítkách a jednotkách bude pořád 0.
Našel jsem tohle schéma, což se mi docela líbí vzhledem k jednoduchosti, na vstup bych dal napěťovej sledovač s OZ a vstup do OZ signál co má jít pro origo otáčkoměr. Je nutné použít externí krystal, nebo by na zobrazení +-50ot. (při 1149 bude 1100, při 1151 bude 1200) stačil originální oscilátor? Jak už jsem psal měl bych problém s programem. Četl jsem cosi o přerušení, ale nemůžu pořád pochopit jak ho využít - neviděli jste někde prográmek (nejlépe v basicu) který by vyhovoval tomu co bych potřeboval (v podstatě frekvenční čítač)?

2) jiné zapojení - ukazatel zařazeného kvaltu:
Moje představa - 200ms snímat počet pulzů (stejný zdroj signálu jako pro otáčkoměr), vydělit čase => frekvence a tu uložit do proměnné. Poté 200ms snímat hall snímač na řetězovém kolečku, kde je 8 pulzů na 1 otačku kolečka. => takže získat frekvenci a do jiné proměnné uložit počet otáček (aby bylo možné porovnávat viz dále). Poté bych měl v eprom uložené převodové poměry pro jednotlivé rychlosti a pomocí dělení ot. motoru / ot. řeť. kolečka = převodový poměr bych zjistil zda vypočítaný převodový poměr je s určitou tolerancí pár procent stejný jako ten v eeprom. podle toho by se nastavily výstupy na BCD dekodér pro LED segment (stačí 3 vývody) a tam se ukázala rychlost. Na PICu by měl být vstup pro neutrál a při něm ukázat asi 0, nebo nic to je jedno.
Takže bych potřeboval navést jak zařídit aby se po určitý čas četly pulzy a následně bych z toho získal frekvenci.

3) **** jenom dodatek ke dvojce - když bych použil PIC s HPWM tak bych po ukázání rychlosti ještě nastavil PWM na stejnou frekvenci jako byla frekvence od řetězového kolečka * proměná => dolazení toho co ukazuje rychloměr (budu měnit převodový poměr, tak aby ukazoval dobře). bojím se ovšem rychlosti - aby mi rychlost "neskákala" místo cca plynulého chodu.

Potřeboval bych hlavně vyřešit problém č.1 Díky, za pomoc.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mira80



Založen: Jan 13, 2009
Příspěvky: 234
Bydliště: Brno

PříspěvekZaslal: čt březen 06 2014, 7:39    Předmět: Citovat

PIC obvody neumim, ale v atmelu si dokazu toto predstavit docela jednoduse

Co se tyce preruseni :
Jde o to, ze program ti obvykle bezi v nejake nekonecne smycce, ve kere se dokola provadi, co se provadet ma. A kdyz se ti zmeni na kratkou dobu hodnota na vstupu, tak se muze stat, ze se zmeni zrovna v okamziku, kdy se program nachazi v nejake jine casti a zrovna ten vstup netestuje, zda se zmenil ci ne. Typicky by se do talo rici takto

begin
while true do
begin
1. Otestuj vstup 1
2. Otestuj vstup 2
.
.
10 Otestuj vstup 10.
end;
end.

A kdyz prijde puls na vstupu 1 v okamziku, kdy porogram zrovna bude testovat vstup rekneme 7, tak se o te zmene na vstupu 1 vubec nedozvis. Proto se pouzivaji preruseni. V praxi to pak funguje takto

Procedura preruseni1
begin
citac1 := citac1 + 1;
end;

begin
while true do
begin
otestuj vstup2;
otestuj vstup3;
.
.
otestuj vstup 10;
end;
end.


V praxi to pak funguje tak, ze program bezi ve smycce, ale kdyz dojde ke zmene na vstupu 1, tak program prerusi svou cinnost a skoci do te procedury 1, udela co je v ni napsano a pak se zase vrati zpet do smycky hlavniho programu. Tak mas zajisteno, ze ti zadny puls na vstupu 1 neutece.
Preruseni muzes mit ruzne...bud tak jak je popsano, z externich vstupu nebo jsou preruseni i interni, napriklad od citace - kdyz pretece, vyvola se preruseni. Toho se vyuziva napr. pro zhotoveni casove zakladny, kdy vezmes krystal napriklad 14.7456 MHZ, jeho frekvenci prozenes delickou 256, nasledne privedes na 8 bitovy citac, ktery vzdy pri preteceni vyvola preruseni, v obsluze toho preruseni si do nejakeho sveho registru prictes jednicku. A az bude mit tvuj registr hodnotu 225, tak budes vedet, ze je to presne 1 sekunda (14.7456 MHz / 256 (delicka) / 256 (kapacita citace) = 225). Tj behem jedne sekundy se vyvola preruseni 225x.

Jedna vec bude pocitani otacek, druha vec, pak filtrovani, aby ta hodnota byla alespon trochu stabilni.

_________________
Klídek chlapi, to je nulák
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
Strana 1 z 1

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