www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Enkoder krmili koračni motor
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Pon Maj 12, 2014 10:01 pm    Naslov sporočila:   Odgovori s citatom

Mikim je napisal/a:
....Skoz imam neke napake v programu.
nekako mi ni jasno z (EnNaprej) tega arduino koda na razume.
Še veliko se bom moral učit, da te zadeve začnem razumet.
LP
EnNaprej je spremenljivka, ki jo moraš definirati!
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Pon Maj 12, 2014 10:36 pm    Naslov sporočila:   Odgovori s citatom

Ti bom kar sem odgovoril, namesto na ZS ...

EnNaprej in EnNazaj sta navadni 8-bitni spremenljivki.
Definiraš ju nekje na začetku programa, kjer se pač definira spremenljivke.

Naprimer ... volatile long motor_position, encoder; samo ni treba, da je "long".
Dovolj je navadna unsigned integer,... kakor se pač definira.
Te sintakse ne poznam povsem, ker pač ne delam z Arduinom.

Lahko jima celo definiraš začetno stanje PrestavnoRazmerje.
Naprimer ... unsigned long WaitReverse = PrestavnoRazmerje // 1; //<<<
Seveda moraš pred tem definirati še vrednost konstante PrestavnoRazmerje, kakor se pač definira konstante.

Pri neznanih programskih jezikih vedno vzamem en celoten in povsem zanesljivo delujoč program, ki počne kar koli, samo da nekaj počne. Toliko, da vidim ukaze in sintakso. Potem ga pa predelam v tisto, kar naj bi počel.
Pa če ima kakšne primere v Help-u, tudi prav pridejo.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Pon Maj 12, 2014 10:51 pm    Naslov sporočila:   Odgovori s citatom

@igo: sintaksa je enaka (C/C++) in seveda, če možakar ne spoštuje pravil pisanja programov v C/C++ mu, logično, prevajalnik vrne napako in seveda, če spremenljivka ni definirana, je ne pozna.......
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Pon Maj 12, 2014 11:22 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Pon Maj 12, 2014 11:55 pm    Naslov sporočila:   Odgovori s citatom

Saj C++ poznam, a ga ne uporabljam (sestavil sem si svoje funkcije v PIC Zbirniku in jih potem samo skupaj zmečem), zato sem že malce zarjavel okrog C++ podrobnosti.

Pri meni ali nekemu začetniku "neznanem programskem jeziku" je naprimer pomembno:
- definicija spremenljivk in njihov položaj (fizični naslov v RAMu)
- definicija konstant
- prirejanje imen pinom
- določanje vhodov, izhodov, ADC, notranji pull-up,...
- način prirejanja vrednosti spremenljivkam
- način prirejanja stanja bitom
- določanje vira delovne frekvence, njena vrednost ...
- položaj funkcij, prekinitev,... v strukturi programa
- razni oklepaji in podpičja
- način zakomentiranja vrstic
- razne zastavice za zaklepanje programa
...
Skratka en cel kup ropotije, ki je nujno potrebna za uspešen prevod (brez errorjev in warningov) in delovanje prvega napisanega programa.
Tisti
set Pin1
wait 1sec
reset Pin1
je potem le še formalnost.

Napisal sem, kar znam. Okoliške nujno potrebne drobnarije sem samo omenil v komentarjih, ker se nisem toliko poglobil v sintakso in strukturo programa, da bi jih znal pravilno umestiti v program.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Tor Maj 13, 2014 12:15 am    Naslov sporočila:   Odgovori s citatom

@igo:tisti odgovor se ni nanašal na tebe ampak na tisto, kar je napisal @Mikim, češ, da Arduino ne pozna EnNaprej.
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Tor Maj 13, 2014 2:01 am    Naslov sporočila:   Odgovori s citatom

Ni panike. Pojasnil sem samo, kako jaz nudim pomoč in nasvete, ne glede na programski jezik.
Ker se ničesar ne ustrašim, dostikrat podam kak uporaben odgovor in izpadem kot profesionalec. Potem pa na ZS odgovarjam, naj se spet obrnejo na forum, saj pišem programe v PIC Zbirniku, ne pa v Bascomu, C++, VHDL-ju, MikroC, ... (čeprav jih v grobem obvladam).

Kak zanimiv problem poskušam rešiti, četudi rešitev opišem z besedami, v zgoraj naštete podrobnosti pa se ne poglabljam, ker se z nekaterimi programskimi okolji ne ukvarjam. Tisti, ki išče pomoč, pa se, zato jih bo moral prej ali slej osvojiti.

Meni jih ni treba Whistle .

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Mikim
Član
Član



Pridružen-a: Ned 10 Okt 2010 1:11
Prispevkov: 141
Aktiv.: 0.86
Kraj: Brežice

PrispevekObjavljeno: Tor Maj 13, 2014 4:00 am    Naslov sporočila:   Odgovori s citatom

Hmm, če uporabim vse te kode potem mi 16Mhz mini ne bo deloval. Očitno bo potrebno uporabit Ardoino DUE 84Mhz 32bit ARM cpu.
LP Miki
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Tor Maj 13, 2014 7:49 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Tor Maj 13, 2014 11:28 am    Naslov sporočila:   Odgovori s citatom

Mikim je napisal/a:
Hmm, če uporabim vse te kode potem mi 16Mhz mini ne bo deloval. Očitno bo potrebno uporabit Ardoino DUE 84Mhz 32bit ARM cpu.
LP Miki
Hm, in zakaj ne bi deloval?
Možno, da zaradi prevelike hitrosti enkoderja ne bo zmožen procesirat vhodnih impulzov, toda to ne pomeni, da program ne bo deloval. Prostora za program je več kot preveč, torej?
Imam občutek, da hočeš zadevo pojesti s preveliko žlico, zato gre marsikaj mimo ust!
Torej, začni od začetka, prižiganje in ugašanje ledic, da se boš naučil, kaj vse je potrebno, ko pišeš program v C/C++, da prevajalnik prepozna spremenljivke (po tvoje kode).
Ko ti bo to vse jasno, potem greš naprej, lahko tudi na tvoj enkoder v povezavi s koračnim motorjem, toda, ko boš začel, si izračunaj iz tega, kar te sprašuje @Kroko, kako široki so impulzi na vhodu in če jih je mega328 sposobna sprocesirat in če je , ali jih je potem sposoben sprocesirat kontroler za koračnike in seveda sam koračnik.
Dokler pa temu ni tako, ti hitrost kontrolerja ne bo nič rešila, kakor tu ne 64bitna aritmetika, če že hočeš.
Že iz tega, kar si napisal
Citiram:
Hmm, če uporabim vse te kode....
mi je jasno, da ti skoraj nič ni jasno, kajti v tem kar ti je napisal @igo ni nikakršnih kod, temveč samo program s spremenljivkami, res je, da ni vseh potrebnih stvari, ki jih zahteva sintaksa C/C++ (podpičja, oklepaji....), temveč je v opisni obliki, kar je popolnoma dovolj za nekoga, ki mu C/C++ ne predstavlja problemov.
Napisal ti je diagram poteka in če bi ti ga narisal bi ti bilo verjetno še manj jasno, kako okvirčke spraviti v program, saj jih Arduino IDE ne pozna, tako pa imaš problem samo s "kodo" ki je ta isti IDE ne prepozna, kar je logično, če nimaš na začetku programa definiranih spremenljivk (po tvoje kod) kot npr:
Koda:
unsigned int EnNaprej;
unsigned int EnNazaj = 0;
byte Karneki1;
float Pi = 3.14;
double Karneki2;
.
.

in take in podobne definicije potrebujejo vse spremenljivke (po tvoje kode) v programu.
Torej začni s primeri, ki jih imaš v Arduino IDE, bo veliko lažje, za vse!

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Tor Maj 13, 2014 12:28 pm    Naslov sporočila:   Odgovori s citatom

Enkoder daje 500 impulzov na obrat.
Vrti se s 1200rpm = 600000 impulzov na minuto. Ker vsak impulz povzroči prekinitev, se zgodi 10000 prekinitev na sekundo.

Samo za funkcijo deljenja vhodnih impulzov s celoštevilsko konstanto, kot sem napisal na prejšnji strani (brez LCD prikaza, drugih vhodov/izhodov, tipk, komunikacije,...), bi si upal poganjati PIC s frekvenco 4MHz (to je prekinitev vsakih 100 korakov). Tudi s pol manj bi šlo (Kdo pravi, da je treba sploh kdaj priti iz prekinitve? Samo zastavice se pobriše, saj sklad pri tako enostavnem programu ni pomemben.).

Tudi če Arduino prevajalnik prevede program manj optimalno od mene, bi moralo zadostovati 10 do 16 (ali 20) MHz. To verjetno zmore tudi "mini" mega328 (ne pa 32-bitna 84MHz zverina Shocked ).

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.69
Kraj: Yogyakarta

PrispevekObjavljeno: Tor Maj 13, 2014 12:53 pm    Naslov sporočila:   Odgovori s citatom

nekateri PIC-i imajo ze dekoder za rot. encoder integriran in mislim da ti direkt en stevec krmili. Tolk kar sem nazadnje okoli tega gledal.
_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Tor Maj 13, 2014 1:31 pm    Naslov sporočila:   Odgovori s citatom

igo je napisal/a:
.......Tudi če Arduino prevajalnik prevede program manj optimalno od mene, bi moralo zadostovati 10 do 16 (ali 20) MHz. To verjetno zmore tudi "mini" mega328 (ne pa 32-bitna 84MHz zverina Shocked ).
Se strinjam z vsem napisanim, Arduino IDE pa ni samostojen prevajalnik, je samo okolje napisano v Javi, za prevajanje pa uporablja gcc.
Toda, kot sem napisal post višje, problemi niso tukaj ampak popolnoma drugje.
Že sam začetek, ne v tej temi, ampak drugi istega avtorja za isti problem je bil smešen in že že iz tistega prispevka je bilo videti, da mu zadeve niso jasne, kajti on bi napisal 32 bitni (!?) program kljub temu da se v programu samem uporablja samo 8 bitna aritmetika. Kot prilogo pa je dal Arduino sketch napisan kao za Arduino DUE (ARM).
Razlika, kar se programa tiče je pa edino v številčenju portov in popolnoma nič drugega!
Kot sem napisal, bistveno prevelika žlica za tako majhna usta.

Dovolj bo, kar se mene tiče, pa ne da nimam časa, ne da se mi več Very Happy .

@red_mamba: gre za AVR.

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Mikim
Član
Član



Pridružen-a: Ned 10 Okt 2010 1:11
Prispevkov: 141
Aktiv.: 0.86
Kraj: Brežice

PrispevekObjavljeno: Tor Maj 13, 2014 3:58 pm    Naslov sporočila:   Odgovori s citatom

Prvo vsem hvala, ker se trudite in mi poskušate pomagati. Ja res je, to je moj prvi projekt. Če ne bi videl videa na youtube
https://www.youtube.com/watch?v=2dh6TIkN6jE
Se še dan danes z tem ne bi ukvarjal.
Res je tudi, da sem prvič programiral 12 izhodov z zamikom 0.2s prižiganja ledic. To je zgledalo enostavno. Ko sem se pa igral z enkoderjem in koračnim motorjem se je pa zapletlo. Jaka57 ima prav rad bi naredil nekaj, čeprav nimam osnove. Res je zato tudi iščem pomoč. Zakaj me pa to tako zanima vam pa pokažem.
https://www.youtube.com/watch?v=HOq0PipRvCc
To je moj prvi izdelan printer za direkten tisk l.2010

https://www.youtube.com/watch?v=n-tTlp4wilg
To je prvi UV printer po moje tudi prvi v SLO.

Vsi ti tiskalniki uporabljajo epson motor in sem tudi omejen z težo, zato lahko tiskam na lahke materijale. Ko sem pa videl video kako enkoder poganja močnejši motor sem dobil idejo, da to zadevo uporabim za svoj nov projekt.
Da naredim printer z lastnim pomikom mize ne glede na večjo težo in uporabim signal od epson printerja ter močnejši driver in krmilim servo ali koračni motor.
Tukaj so nastali problemi, ker epson ima za pomik papirja sunkovit in počasen obrat.
Pri počasnem se vrti motor okoli 200-300rpm pri hitrem pa okoli 800-1000rpm.
Tukaj potrebujev tudi veliko natančnost saj je en obrat na ekoderju 25,3mm pomika na printerju. Govorim o premiku papirja pri tiskanju.
Točno to razdaljo mora narediti močnejši motor priklopljen na vreteno.
Sedaj pa, če lahko spreminjam hitrost motorja se lahko prilagodim pomiku vretena.
Tukaj se mi pa ustavi, ker ne obvadam programiranja. Žal vse ne moreš vedet. Kot elektronik programiram plc krmilnike, znam delat na stružnici, rezkarju, obvladam nekaj orodjarskih veščin, ker me je to zanimalo in delam kot vzdrževalec sem se tega naučil.

https://www.youtube.com/watch?v=zvDLuKG90eM
Tukaj pa uporabljam signal epson printerja za pomik koračnega motorja.
In se pojavi problem, pri visokih obratih motorja tiskalnika se zgubijo obrati na koračnem motorju. Ne bo zastojn vsem, ki mi boste pomagate se odolžim pa če tudi z poletnim piknikom, če to zadevo usposobim. Jaka57, Igor, Kroko, Boštjan...
LP Miki
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Tor Maj 13, 2014 7:43 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
Stran 2 od 3

 
Pojdi na:  
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: 47 dni


Powered by phpBB © 2001, 2005 phpBB Group