Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

Encoder ne šteje dobro!?
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Čet Dec 22, 2011 8:16 pm    Naslov sporočila: Odgovori s citatom

Marko,
seveda bi šlo tudi s prikazom 1/10 obrata. Poskusi z uporabo ukaza encoder.
Menim da bo hitreje ker so rutine za +/- posebaj pisane in se ne izvajajo v isti podrutini.
Koliko hitro lahko vrtiš?
Štetje enega puza traja 12uS za kristal 4MHz, če si dal 8 to pomeni da en pulz prešteje v 6uS. za en obrat rabiš 600uS, za 10 obratov 6mS . . . .
Marko, povej pa mi koliko je najvišje število obratov na tej mašini?
Nisi mi povedal kakšen motor ima mašina.
Kakšeno je razmerje med prenosom motor/vreteno naivjalnega stroja?
LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Profesionalec


Pridružen/-a: Ned Jan 2004 18:00
Prispevkov: 112
Kraj: Ponikve

PrispevekObjavljeno: Pon Dec 26, 2011 6:19 pm    Naslov sporočila: Odgovori s citatom

Vlado je napisal/a:

seveda bi šlo tudi s prikazom 1/10 obrata. Poskusi z uporabo ukaza encoder.
Menim da bo hitreje ker so rutine za +/- posebaj pisane in se ne izvajajo v isti podrutini.
Koliko hitro lahko vrtiš?
Marko, povej pa mi koliko je najvišje število obratov na tej mašini?
Nisi mi povedal kakšen motor ima mašina.

LP


Mislim, da je najvišje število obratov ca 1500-1800 / minuto.
Bom probal napisati codo z uporabo ukaza ENCODER.

Sem pa nekaj poizkušal napisati, da bi štel po 1/10 obrata pa mi ni do sedaj še uspelo.

Če uporabim zunanji 16 MHz kristal, kolikšni morajo biti kondenzatorji vezani proti masi? Ali je dovolj, da vpišem v programu velikost kristala, ali moram to vpistati v " fusebit"?

Ta program, ki si ga sestavil @vlado sem sprobal na mašini ki ima števec obratov in deluje zelo točno.

LP,

_________________
Kdor visoko leta, daleč vidi.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 27, 2011 11:54 am    Naslov sporočila: Odgovori s citatom

Marko,
pri uporabi 16MHz kristala bodo kondenzatorji 22pF kar v redu, Lahko pa ti se zgodi da vsak kristal ne bo zanihal, ko sem delal z 16MHz kristalom sem imel enega ki ni hotel zanihati, nisem pa zmanjševal kondenzatorjev, raje sem dal drug kristal.
V fuse bitih moraš samo nastaviti na zunanji kristal (ne oscilator), v programu pa vpišeš vrednost kristala.

Če je najviše število obratov 1800, potem je to 30 Obr/sec, ker na obrat dobiš 100 impulzov bo to njveč 3000 impulzov v sekundi. en impulz ti bo vzel 330uS, tako da bi tudi to najvišjo vrednost brez težav bral in obdeloval.

Še enkrat, kakšen motor ima mašina?
Ali motor ima zavoro?
Sprašujem zato da vidmo kako bi se dalo krmiliti motor, ker potem te LCD sploh ne zanima dokler se motor ne ustavi in tedaj vidiš na LCD-ju ali je število ovojev pravilno.
LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Profesionalec


Pridružen/-a: Ned Jan 2004 18:00
Prispevkov: 112
Kraj: Ponikve

PrispevekObjavljeno: Sre Dec 28, 2011 3:33 pm    Naslov sporočila: Odgovori s citatom

Vlado je napisal/a:


Še enkrat, kakšen motor ima mašina?
Ali motor ima zavoro?
Sprašujem zato da vidmo kako bi se dalo krmiliti motor, ker potem te LCD sploh ne zanima dokler se motor ne ustavi in tedaj vidiš na LCD-ju ali je število ovojev pravilno.
LP


Motor je DC 88V, 9.5A, 700W.
Motor ima vgrajeno zavoro DC24v.

To sem hotel prihraniti za konec, kako krmiliti ta motor.

Sam sem to probal tako, da sem napravil en dimmer s triakom in potenciometrom, na koncu pa sem dal "grec". Motor lepo deluje.

Kako bi pa vi krmilili tak motor?

Pravzaprav pa še vedno nisem prišel do kraja z encoderjem.

lp,

_________________
Kdor visoko leta, daleč vidi.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
marko11
Profesionalec


Pridružen/-a: Ned Jan 2004 18:00
Prispevkov: 112
Kraj: Ponikve

PrispevekObjavljeno: Pet Dec 30, 2011 4:52 pm    Naslov sporočila: Odgovori s citatom

Hi

Takole sem zdaj spisal kodo, da šteje, izpisuje na ČETRT obrata na LCD.
Ko zavrtim na roke je OK, ne vem pa kako se bo obneslo pri višjih obratih.

Koda:

$regfile = "m8def.dat"
$crystal = 8000000                                          'crystal je interni


Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portd.7 , Db5 = Portd.6 , Db4 = Portb.3 , E = Portb.4 , Rs = Portb.5

Config Lcd = 16 * 2
Config Lcdbus = 4
Cursor Off


Cha Alias Pind.2
Chb Alias Pind.3

Config Cha = Input
Config Chb = Input


Config Int0 = Falling
Const Debouncetime = 1

Dim Wtime As Byte
Dim Stevec As Integer , Obrat_old As Integer
Dim Obrat As Integer
Dim Cetrt_obr As Integer , Cetrt_obr_old As Integer

Set Chb

On Int0 Stetje

Cls
Cursor Off

Wtime = 100
Stevec = 0
Obrat_old = 1
Obrat = 0
Cetrt_obr = 0
Cetrt_obr_old = 0

Enable Interrupts
Enable Int0

Do

  If Obrat <> Obrat_old Or Cetrt_obr <> Cetrt_obr_old Then
  Upperline
  Lcd "Stanje: " ; Obrat ; ". " ; Cetrt_obr ; "   "
  Obrat_old = Obrat
  Cetrt_obr_old = Cetrt_obr
  End If

Loop

Stetje:

'ŠTEJE GOR
  If Cha = 0 Then
    If Chb = 0 Then Incr Stevec Else Decr Stevec
  End If
  If Stevec => 25 Then
  Incr Cetrt_obr
  Stevec = 0
  If Cetrt_obr => 4 Then
   Incr Obrat
   Cetrt_obr = 0
   End If
 End If

 'ŠTEJE DOL
 If Stevec <= -25 Then
  Decr Cetrt_obr
  Stevec = 0
  If Cetrt_obr <= -4 Then
   Decr Obrat
   Cetrt_obr = 0
   End If
  End If
Return

End


Citiram:
Štetje enega puza traja 12uS za kristal 4MHz, če si dal 8 to pomeni da en pulz prešteje v 6uS. za en obrat rabiš 600uS, za 10 obratov 6mS . . . .


Prosim, če mi kdo razloži, kako se zračuna, da to prešteje v 6uS.
Vkolikšnem času pa bo preštel v zgornjem primeru?

lp,

_________________
Kdor visoko leta, daleč vidi.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
JUG
Mojster


Pridružen/-a: Čet Nov 2011 15:49
Prispevkov: 38

PrispevekObjavljeno: Pon Jan 02, 2012 12:15 pm    Naslov sporočila: Odgovori s citatom

Jaz uporabljam spodnji program pa deluje odlično (moj enkoder ima 1024imp/obrat):


________________________________
$regfile = "m8515.dat"
$crystal = 8000000

'::::::::::::Konfiguracija::::::::::::::::::::::::::::::::::::::::::::
Cha Alias Pind.2 'vhod, ki ima 10kOhm pull-up upor vezan na +5V
Chb Alias Pind.3 'vhod, ki ima 10kOhm pull-up upor vezan na +5V

Config Cha = Input
Config Chb = Input

Config Int0 = Falling

Dim Stevec As Word


Set Chb

On Int0 Getencoder

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db7 = Portc.7 , Db6 = Portc.6 , Db5 = Portc.5 , Db4 = Portc.4 , E = Portc.2 , Rs = Portc.1
Cursor Off

Cls

Stevec = 0

Enable Interrupts
Enable Int0

'::::::::::::::Glavna zanka:::::::::::::::::::::::::
Do

Locate 1 , 1
Lcd Stevec
Lcd " "

Loop

'::::::::::::::::Podprogram:::::::::::::::::::::::::
Getencoder:

If Cha = 0 Then
If Chb = 0 Then
Incr Stevec
Else
Decr Stevec
End If
End If


Return
_____________________________

V programu je dodan le še ukaz za izpis na LCD, drugače pa se celoten del za enkoder vrši v parih ukazih v podprogramu. Pa clock naj bo vsaj 8MHz ker drugače ne zmore izpisovati na LCD tekoče.

LP

Jakob
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Profesionalec


Pridružen/-a: Ned Jan 2004 18:00
Prispevkov: 112
Kraj: Ponikve

PrispevekObjavljeno: Tor Jan 03, 2012 5:18 pm    Naslov sporočila: Odgovori s citatom

Gornji moj program sem probal in deluje.
Prosim za komentar, če sem to pravilno napisal, da izpisuje četrtino obrata in ali je možno kako drugače? Hvala vsem za pomoč.

@Jakob, kako si pa ti napisal kodo, da ti preračunava koliko ovojev si napravil?

LP,
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
JUG
Mojster


Pridružen/-a: Čet Nov 2011 15:49
Prispevkov: 38

PrispevekObjavljeno: Tor Jan 03, 2012 5:27 pm    Naslov sporočila: Odgovori s citatom

Ja če hočeš izvedeti koliko obratov si naredil, pa le deliš tisti števec od enkoderja, z številom impulzov, ki jih tvoj enkoder pre more (če si preštel 256 impulzov in če ima tvoj enkoder 256 impulzov na obrat, deliš 256/256 in dobiš rezulktat 1)

LP

Jakob
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jan 05, 2012 5:26 pm    Naslov sporočila: Odgovori s citatom

Marko,
meni še vedno ni jasno kaj bi rad videl na dipleju.
Če se bodo podatki prehitro spreminjali tega ne boš videl.
Poskusi skrajšati podprogram tako da večino dela opraviš v glavni zanki (štej samo pulze, v glavni zanki pa od tega naredi obrate).


Jakob je napisal:
Citiram:
Pa clock naj bo vsaj 8MHz ker drugače ne zmore izpisovati na LCD tekoče.


To ne bo povsem pravilno.
Bascom pri pisanju na LCD ne uporablja R/W pina, ampak fiksno zakasnitev, tako da hitrost takta bistveno ne vpiliva na hitrost pisanja. Če želimo hitrejši izpis moramo uporabiti LIB4BUSY.lib ki uporablja R/W pin.

LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
JUG
Mojster


Pridružen/-a: Čet Nov 2011 15:49
Prispevkov: 38

PrispevekObjavljeno: Čet Jan 05, 2012 7:04 pm    Naslov sporočila: Odgovori s citatom

@Vlado, že mogoče res, samo jaz imam zvezane pine od enkoderja na interrupt pine mikroprocesorja. Program je zato velikokrat v podprogramu in LCD enostavno ne more zvezno izpisovati.
Povsem druga zgodba je če nimaš LCD oz. izpisuješ le na nek port (prižigaš in ugašaš ledice). Tam pa imaš lahko kristal tudi 1MHz, pa bo izhod še vedno sledil štetju enkoderja.

LP

Jakob
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Profesionalec


Pridružen/-a: Ned Jan 2004 18:00
Prispevkov: 112
Kraj: Ponikve

PrispevekObjavljeno: Čet Jan 05, 2012 7:39 pm    Naslov sporočila: Odgovori s citatom

Vlado je napisal/a:

........
Lahko pa si pomagaš tako da tvojih 100 imp. prikažeš kot en obrat, tedaj bo zgodba čisto drugačna, lahko pa obrat (100imp.) deliš z 4, in po 25 imp. prikažeš 0.25 obrata . . .

LP


@Vlado, tukaj govoriš naj prikazujem četrt obrata. Saj to sem napisal v zadnjem programu, potem pa mi svetuješ naj to počnem v glavnem programu ne pa v prekinitveni rutini. Kakoooo?

Sploh mi ne potegne kaj in kako napisati.

Saj zgornji program deluje, samo nisem še preveril pri najvišjih obratih.

LP,
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jan 05, 2012 7:59 pm    Naslov sporočila: Odgovori s citatom

Marko,
nimam enkoderja da bi lahko preizkušal.
Ni druge kot da sestaviš elektroniko in preizkusiš z motorjem.
Kaj zdaj ustavlja ta motor?
Ali ima motor možnost nastavitve števila obratov (potem bi lahko proti koncu zmanjšal število obratov in lepo videl koliko ovojev je navitih)?
Kaj zdaj krmili zavoro?

Menim da bo procesor dovolj hiter da sproži ustavitev motorja in zavore ne glede na to ali boš videl koliko ovojev je navitih (boš jih videl ko se motor ustavi). Moraš pa v programu imeti možnost za nastavitev števila ovojev ki jih procesor mora prešeteti.
LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Profesionalec


Pridružen/-a: Ned Jan 2004 18:00
Prispevkov: 112
Kraj: Ponikve

PrispevekObjavljeno: Pet Jan 06, 2012 6:07 pm    Naslov sporočila: Odgovori s citatom

Citiram:

Citiram:
Štetje enega puza traja 12uS za kristal 4MHz, če si dal 8 to pomeni da en pulz prešteje v 6uS. za en obrat rabiš 600uS, za 10 obratov 6mS . . . .


Prosim, če mi kdo razloži, kako se zračuna, da to prešteje v 6uS.
To je izračunal Vlado, nekje višje v postu.


Sem že malo višje nazaj spraševal.
Prosim še enkrat, kako se izračuna koliko časa porabi recimo spodnja rutina Stetje

Koda:
  Stetje:

'ŠTEJE GOR
  If Cha = 0 Then
    If Chb = 0 Then Incr Stevec Else Decr Stevec
  End If
  If Stevec => 25 Then
  Incr Cetrt_obr
  Stevec = 0
  If Cetrt_obr => 4 Then
   Incr Obrat
   Cetrt_obr = 0
   End If
 End If

 'ŠTEJE DOL
 If Stevec <= -25 Then
  Decr Cetrt_obr
  Stevec = 0
  If Cetrt_obr <= -4 Then
   Decr Obrat
   Cetrt_obr = 0
   End If
  End If
Return


LP,
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jan 06, 2012 6:22 pm    Naslov sporočila: Odgovori s citatom

Marko,
to se ne računa (vsaj za Bascom ne), program poženeš v simulatorju in dobiš odgovor.
LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Profesionalec


Pridružen/-a: Ned Jan 2004 18:00
Prispevkov: 112
Kraj: Ponikve

PrispevekObjavljeno: Pet Jan 06, 2012 7:42 pm    Naslov sporočila: Odgovori s citatom

Vlado je napisal/a:
Marko,
to se ne računa (vsaj za Bascom ne), program poženeš v simulatorju in dobiš odgovor.
LP


Pa vsem se zdi tako vprašanje trapasto, poglejte, če nekdo nekaj sprašuje gotovo tega ne ve, pa če je za vas še tako enostavno.

Saj je še bog rabil 6 dni, da je ustvaril nebo in zemjo......

Pa brez zamere, Marko
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski č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
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group