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í 

Riadenie DC motorčeka a PSD regulátor (AVR)

 
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
dodik



Založen: Nov 26, 2008
Příspěvky: 198

PříspěvekZaslal: pá duben 04 2014, 11:59    Předmět: Riadenie DC motorčeka a PSD regulátor (AVR) Citovat

Ahojte, mám jeden problém, chcel by som ovládať polohu ramena, ktoré je pripevnené na DC motorček s prevodovkou. Rameno by malo vykonávať pohyb v rozsahu 2∏ (rýchlosť je asi 1ot/min).
Snímanie náklonu robím akcelerometrom. Avšak nedokáže dostatočne rýchlo spracovať informácie pri pohybe ramena.
Chcem sa spýtať či na to idem dobre, alebo mám tú metódu s akcelerometrom zahodiť a vymyslieť niečo iné? Ďakujem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nick-1992



Založen: Jan 22, 2014
Příspěvky: 114
Bydliště: Rýmařov

PříspěvekZaslal: pá duben 04 2014, 14:02    Předmět: Citovat

Na tohle by byl vhodnější krokový motor
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dodik



Založen: Nov 26, 2008
Příspěvky: 198

PříspěvekZaslal: pá duben 04 2014, 18:06    Předmět: Citovat

Nemám k dispozícii krokovy motor s dostatočným výkonom.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ivan_Ryger



Založen: Mar 02, 2005
Příspěvky: 1273
Bydliště: Bratislava, Petrzalka

PříspěvekZaslal: so duben 05 2014, 8:59    Předmět: Citovat

na snímanie polohy si tam radšej dajte optický enkóder, indukčný snímač alebo niečo podobné. Je to oveľa vhodnejšie.

Ivan
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
dodik



Založen: Nov 26, 2008
Příspěvky: 198

PříspěvekZaslal: po duben 28 2014, 22:31    Předmět: Citovat

Sorry že tak neskoro. Objednal som enkóder z číny a konečne došiel. Má dve fázy, a 400imp/ot. Podľa datasheetu je možné získať 1600imp/ot. Zatiaľ to mám zapojené tak že jedna fáza je na INT2 a druhá je na klasický vstup.
V programe to vyzerá takto
kód:
ISR(INT2_vect)
{
   _delay_ms(1);
   if (!(PINB & (1 << PB1)))
   {
      count++;
   }
   else count--;
}

Takto dokážem získať len 400imp/ot.
Neviem ako na 1600. Podľa obrázka dole ma napadá len to že by som vzorkoval každú 1ms, cez nejaký časovač, a v ňom by som najprv zisťoval či ide o rotáciu do ľava alebo do prava. Potom jednotlivé stavy kanálov.

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



Založen: Oct 26, 2005
Příspěvky: 549

PříspěvekZaslal: út duben 29 2014, 16:32    Předmět: Citovat

Musíš snímat (ideálně přes dvě různá přerušení) každou vzestupnou i sestupnou hranu z obou kanálů, tudíž 4 x víc než normálně.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dodik



Založen: Nov 26, 2008
Příspěvky: 198

PříspěvekZaslal: út duben 29 2014, 18:09    Předmět: Citovat

.... už som si niečo k tomu preštudoval, v prílohe je pdfko ako na snímače, je tam v podstate ten môj návrh a aj ten tvoj použitím dvoch ext. prerušení Wink Idem sa s tým potrápiť Idea


Enkoder.pdf
 Komentář:
enkoder

Stáhnout
 Soubor:  Enkoder.pdf
 Velikost:  131.53 kB
 Staženo:  132 krát

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



Založen: Nov 26, 2008
Příspěvky: 198

PříspěvekZaslal: čt květen 01 2014, 20:57    Předmět: Citovat

Tak sa mi to podarilo, mal som s tým zo začiatku problémy, lebo som mal na každej fáze (A, B) 100n kondenzátor pripojený na zem.
A, B mám na INT0, INT2 s pripojenými pull-up.
Vyvolanie prerušenia mám pri zmene logickej úrovne, a v prerušení je podmienka kde sa rozhodne log1 alebo log0.
Nastavenie prerušení. Premenná count počíta kroky z IRC.
kód:
   EICRA |= (1 << ISC00) | (1 << ISC20);
   EIMSK |= (1 << INT0) | (1 << INT2);


kód:
ISR(INT2_vect)
{

   if ((PINB & (1 << PB2)) != 0) // sestupna hrana B kanalu
   {
      if ((PIND & (1 << PD2)) == 0)
      count++;
      else
      count--;
   }
   else // vzestupna hrana na B
   {
      if ((PIND & (1 << PD2)) == 0)
      count--;
      else
      count++;
   }

}

kód:
ISR(INT0_vect)
{

   if ((PIND & (1 << PD2)) != 0) // sestupna hrana A kanalu
   {
      if ((PINB & (1 << PB2)) == 0)
      count--;
      else
      count++;
   }
   else // vzestupna hrana na A
   {
      if ((PINB & (1 << PB2)) == 0)
      count++;
      else
      count--;
   }

}


Teraz sa idem pustiť do kódu PSD regulácie.
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