|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5766 Aktiv.: 25.97 Kraj: Grosuplje
|
Objavljeno: Tor Maj 13, 2014 11:01 pm Naslov sporočila: |
|
|
Sedaj pa tako, koga ti za jajca vlečeš?
Malo višje nam predstavljaš neke svoje projekte, toda o programiranju se ti tudi sanja ne!?????
Lahko se ene parkrat delaš norca iz nas toda ne ves čas! _________________ Lp, Jaka |
|
Nazaj na vrh |
|
|
Mikim Član
Pridružen-a: Ned 10 Okt 2010 1:11 Prispevkov: 141 Aktiv.: 0.86 Kraj: Brežice
|
Objavljeno: Sre Maj 14, 2014 4:29 am Naslov sporočila: |
|
|
Se opravičujem, če kdo misli da iz nekoga delam norca, pač ne poznam programiranja v C++ in iščem pomoč. Nič drugega samo rad bi zadevo izpeljal, če je pa to takšna skrivnost pa nič bom pač nekoga plačal in mi bo zadevo izpeljal.
Aja projekte sem pač pokazal, da lažje razumete kaj bi rad izpeljal.
Hvala za pomoč. LP Miki |
|
Nazaj na vrh |
|
|
red_mamba Član
Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.69 Kraj: Yogyakarta
|
Objavljeno: Sre Maj 14, 2014 11:55 am Naslov sporočila: |
|
|
jaz pa mislim da motor ni zmozen 1200RPM pomika.
zato pa korake zgublja. Niso vsi motorji sposobni tako velikoh obratov. Saj jim z obrati pada navor. In motor moras krmilit s konstantnim tokom ne konstantno napetosjo drugace ti navor zgubi ze pri par 100RPM. Pa testirat moras obremenjenega. Ce ti 1200 obratov zmore neobremenjen to ne pomeni da ti bo tudi obremenjen sposoben to naredit.
Najprej preveri ce se motor sploh lahko tako hitro pomika. Ko bo hardware ok bos pa lahko kodo porihtal.
Druga varjanta je pa da uporabis servo motor z opticno zanko.
firma za kero Aly dela majo hall sensor kotnega pomika. Izhod je lahko tudi x-bitni stevec. Kar pomeni da ne rabis impulzov stet enega po enega ampak beres stevec 10x na sekundo na prides do pravega polozaja.
tretja opcija je pa kot sem ze rekel PIC uC ki ima podporo za rotacijski encoder in je direktno vezan na 32 bitni stevec. Ne rabis nic interuptov ker ti avtomatsko povecuje ali zmansuje stevec. _________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
|
vpeter Član
Pridružen-a: Pon 11 Jun 2012 16:05 Prispevkov: 337 Aktiv.: 2.35 Kraj: Maribor okolica
|
Objavljeno: Sre Maj 14, 2014 12:07 pm Naslov sporočila: |
|
|
red_mamba je napisal/a: |
jaz pa mislim da motor ni zmozen 1200RPM pomika.
zato pa korake zgublja. ...... Najprej preveri ce se motor sploh lahko tako hitro pomika. |
Točno to sem jaz že predlagal - reševanje problema po komponentah. Ampak kot smo že lahko ugotovili avtor za to nima dovolj znanja in torej išče končno in kompletno delujočo rešitev. |
|
Nazaj na vrh |
|
|
Mikim Član
Pridružen-a: Ned 10 Okt 2010 1:11 Prispevkov: 141 Aktiv.: 0.86 Kraj: Brežice
|
Objavljeno: Sre Maj 14, 2014 2:55 pm Naslov sporočila: |
|
|
red_mamba,
koračni motor se ne rabi vrtet z takšno hitrostjo kot si napisal 1300rpm.
Enkoder se vrti okoli 1000rpm, motor pa okoli 500rpm. Program mi deluje ampak rabim vklučit v program prestavno razmerje. da mi ni potrebno uporabit zobniško prestavno razmerje. Recimo, če imam na enkoderju hitrost vrtenja 800rpm, potrebujem na koračnem motorju recimo 330rpm. Naj še enkrat povem, meni ni problem zadevo naredit, da deluje saj z uporabo dobrega servo driverja in servo motorja je problem rešen. Vendar finančno mi je predrago. Samo omron 100W ac motor je 550€.
Z arduinom sem se srečal pred 2 meseci in je zadeva zelo poceni, ampak brez delujočega programa mi nič ne pomeni.
Pri nas v podjetju poznamo samo Siemens, Hitachi... in sedaj zelo popularen Unitronics. To so industrijski krmilniki in delujejo leta in leta brez težav. Se pravim, če mi ne uspe izdelat programskega prestavnega razmerja, da bo pravilno deloval bom pač uporabil zobniškega. Lp |
|
Nazaj na vrh |
|
|
red_mamba Član
Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.69 Kraj: Yogyakarta
|
Objavljeno: Sre Maj 14, 2014 4:16 pm Naslov sporočila: |
|
|
Mikim je napisal/a: |
red_mamba,
koračni motor se ne rabi vrtet z takšno hitrostjo kot si napisal 1300rpm.
Enkoder se vrti okoli 1000rpm, motor pa okoli 500rpm. Program mi deluje ampak rabim vklučit v program prestavno razmerje. da mi ni potrebno uporabit zobniško prestavno razmerje. Recimo, če imam na enkoderju hitrost vrtenja 800rpm, potrebujem na koračnem motorju recimo 330rpm. Naj še enkrat povem, meni ni problem zadevo naredit, da deluje saj z uporabo dobrega servo driverja in servo motorja je problem rešen. Vendar finančno mi je predrago. Samo omron 100W ac motor je 550€.
Z arduinom sem se srečal pred 2 meseci in je zadeva zelo poceni, ampak brez delujočega programa mi nič ne pomeni.
Pri nas v podjetju poznamo samo Siemens, Hitachi... in sedaj zelo popularen Unitronics. To so industrijski krmilniki in delujejo leta in leta brez težav. Se pravim, če mi ne uspe izdelat programskega prestavnega razmerja, da bo pravilno deloval bom pač uporabil zobniškega. Lp |
programsko lahko delis impuze samo s celimi stevili
recimo 1:2, 1:4, 1:11 ...
800:330 ne bos enostavno zdelil. Ce lahko zaokrozis stevila potem naredi to, drugace pa mehanski prenos.
Zdelis pa korake tako da povecujes spremenljivko do vrednosti potem ga resetiras in povecas stevec.
Recimo:
cnt++;
if (cnt = 10)
{
cnt = 0;
impulz motorju;
}
to ti bo zdelilo frekvenco enkoderja z 10. Se bo vrtel 10x pocasneje kot encoder. Ce imas encoder za vhod motorja. Nisem bral cele teme in ne vem kaj ti krmili motor in kako imas vkljucen encoder v vso to shemo. _________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2066 Aktiv.: 9.30 Kraj: Ljubljana
|
Objavljeno: Sre Maj 14, 2014 5:47 pm Naslov sporočila: |
|
|
red_mamba je napisal/a: |
programsko lahko delis impuze samo s celimi stevili |
Ni nujno.
Če za potrebe deljenja impulze pomnožiš z 10, bi idejno izgledalo nekako takole:
Koda: |
// spremenljivke so pomnoižene z 10
#define STEP_TRESHOLD = 12 /* deljenje z 1,2 */
char imp_10;
// v tej vrstici onemogoči prekinitev, ki spreminja imp
imp_10 += 10*imp;
imp=0;
//v tej vrstici omogoči prekinitev, ki spreminja imp
if(imp_10 >= STEP_TRESHOLD)
{
imp_10 -= STEP_TRESHOLD;
// spremeni smer v desno in izvedi en korak
PocakajKorak(perioda_koraka);
}
if(imp_10 <= STEP_TRESHOLD)
{
imp_10 += STEP_TRESHOLD;
// spremeni smer v desno in izvedi en korak
PocakajKorak(perioda_koraka);
}
|
Zgoraj manjka:
Namesto PocakajKorak() lahko uporabiš delay() funkcije.
Prekinitvena rutina, ali rutini, za obdelavo impulzov enkoderja - imp spremenljivka.
Preračun spremenljivke perioda_koraka:
Nekako moraš ugotoviti periodo impulzov enkoderja. S pomočjo prestavnega razmerja nato preračunavaš perioda_koraka.
Če boš to počel za vsak korak posebaj, zna biti napaka precejšnja. Rezultat bo časovno neenakomeren razmik med koraki koračnega motorja.
Najbolje bi bilo upoštevati (drseče?) povprečje nekaj korakov. Precej je odvisno od tega, kakšen zamik je še sprejemljiv.
Če je sprejemljivo, bi bilo dobro pri spremembi smeri pustiti kakšen impulz histereze. Na ta načiun bi se izognil problemu, če se enkoder ustavi ravno na meji preklopa stanja. |
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.11
|
Objavljeno: Sre Maj 14, 2014 6:22 pm Naslov sporočila: |
|
|
red_mamba je napisal/a: |
...
800:330 ne bos enostavno zdelil. Ce lahko zaokrozis stevila potem naredi to, drugace pa mehanski prenos. |
800/330 = 2 + 1/3 + 1/12 + 1/132 , kar sploh ne bi bilo tako grozno, (izračun je na prvi strani spodaj). Pravo prestavno razmerje je žal drugačno. Treba bo izmeriti pomik pri znanem razmerju (četudi 1:1) in nato izračunati, kakšno bi dejansko moralo biti.
Najhujša posledica neceloštevilska razmerja je ta, da razmerje ne bo konstantno, ampak se bo sproti prilagajalo in se poskušalo kar najbolj približati točni vrednosti. A tik pred vsako prilagoditvijo bo odstopanje največje. Glede na preostalo mehaniko je lahko trenutno odstopanje med 0 in nekaj. Če je tisto "nekaj" še vedno znotraj dopustnih toleranc, je stvar rešena. _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
Mikim Član
Pridružen-a: Ned 10 Okt 2010 1:11 Prispevkov: 141 Aktiv.: 0.86 Kraj: Brežice
|
Objavljeno: Čet Maj 15, 2014 4:59 am Naslov sporočila: |
|
|
Pri testiranju koračnega motorja, kateri je priklopljen na vreteno je zadeva takšna.
Ko naredi enkoder en krog je na vretenu pomik 44mm. Če potrebujem 25,3 kar mamo 18,6mm v dobrem.
Se pravi zmanjšati bo potrebo 0,575 kroga. Prestavno razmerje imam na motorju 72zobov na vretenu pa 24zobov. Lahko tudi naredim zobato jermenico manjšo.
Sam če se da nastavljat bi bilo zelo zanimivo potem nisem odvisen od izdelovalcev zobnikov. In lahko uporabljam standardne zobate jermenice. Kar so 10x cenejše.
Po izračunu potrebujem 41,4 zobniško jermenico mxl. Bom preveril če imajo zobato palico 41 ali z 42 zobmi.
Še ena novost. Epson printer uporablja dva tipa enkoderja z 180 in 360 pulsi. |
|
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: 48 dni
Powered by phpBB © 2001, 2005 phpBB Group
|