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 

MR1
Pojdi na stran 1, 2, 3, 4, 5, 6, 7  Naslednja
 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Ned Maj 01, 2011 6:57 pm    Naslov sporočila: MR1 Odgovori s citatom

Hi,
naredil sem prvi svoj mobilni robot.Vrjetno ima kar nekaj napak,bo 2. boljši.
Torej podvozje ima od legendarnega RP6 robota.

Kaj ima na sebi:

-atmega 32
-3x RGB LEDdiodi
-5x tipke
-2x tipke
-IDC 10 za programiranje
-2x L272M
-1x pinezo
-2x sprednja stikala
-in ostala drobnarija

V bližnji prihodnosti dobi še 2x8 LCD zaslon in IR senzorje.Kasneje pa ultrazvočne senzorje,I2C komunikacijo,mobilno roko in še kaj se bo našlo.

Evo par fotk.









Če vidi kdo kakšno napako ali kaj dodati da bo bolje delovalo naj pove.

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Ned Maj 01, 2011 11:24 pm    Naslov sporočila: Odgovori s citatom

Čestitam!

Daj obesi na forum še shemo, kako si stvar vezal!

Jaz imam že dolgo v predalu tale Conradov voziček, a nisem še nič pametnega realiziral.

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Pon Maj 02, 2011 9:30 am    Naslov sporočila: Odgovori s citatom

Hi,
bom narisal shemo in jo pripel na forum.Zaenkrat imam vse v glavi Wink .

Trenutno glih odpravljam napake na L272M,nekakašen šlus se mi je naredil.

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Pet Maj 13, 2011 6:59 pm    Naslov sporočila: Odgovori s citatom

Hi,
kar nekaj časa že poskušam usposobiti servo motor in mi ne rata.

Na začetku sem probal napisati sestavo programa po primeru ki je napisan v S.E.166 ,ampak neuspešno.Potem sem probal v helpu in tudi neuspešno in tudi iskal po netu.
Prebral sem da ni več potrebno uporabiti timerje da ga nadomesti servo ukaz.Ponekot pa piše da še moramo uporabiti timer tako da ne vem kaj in kako.

Karkoli napišem mi servo začne delati par mm korake in nato pol cm korake.Ko pride do mehanske blokade se začne zaletavati.

Koda:
$regfile = "m32def.dat"
$crystal = 4000000




Config Servos = 1 , Servo1 = Portd.6 , Reload = 10

Config Portd = Output

Enable Interrupts




Servo(1) = 10

                                               '

Dim I As Byte

Do

For I = 0 To 100

  Servo(1) = I

  Waitms 1000

Next



For I = 100 To 0 Step -1

  Waitms 1000

Next

Loop

End




tudi če napišem servo(1)=150 , kjer bi se moral servo motor postaviti v sredinski položal se prestavi do blokade se parkrat zaleti in ustavi.

uporabljam tale servo motor:
http://www.servodatabase.com/servo/modelcraft/rs-2

Mogoče moram uporabiti timer.Prebral sem da timer1 v moji različici bascoma ne deluje pravilno za servota.Tako da mi ostane še samo timer0.Ali ima timer0 poseben priklop na MCU-ju?Ali je lahko katerokoli pin ki se ga določi v programu?V data sheetu kjer je mega32 narisan nikjer ne piše zraven pina timer0,1.

Lepo bi prosil če mi lahko kdo obrazloži zadevo.Trenutno pa samo hočem da se motorček zavrti iz ene skrajne lege do druge skrajne lege.Vrjamem da ne manjka veliko do delovanja.

Najlepša hvala za razumevanje in pomoč.

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Pet Maj 13, 2011 7:48 pm    Naslov sporočila: Odgovori s citatom

Nikoli se nisem ukvarjal z bascom ukazi SERVO, tako, da ti v tem ne morem pomagati.

Sam sem generiral inpulze za servomotor s pomočjo interrupta.
Program, ki ga prilagam, generira inpulze za tri servomotorje.
Kam naj se obrne servo, glavni program določi v spremenljivki Tmrrl(i) kjer je i številka servomotorja.
No, ta program, ki ga prilagam, ima tam konstante, tako samo postavi servomotorje v zahtevani položaj in jih tam drži. Razširiš ga lahko, da bo spreminjal vrednosti teh spremenljivk in servomotorji se bodo premikali.

Koda:

$regfile = "M32def.dat"
$crystal = 11059200

Const Timer0reload = 4
Config Timer0 = Timer , Prescale = 256
Load Timer0 , Timer0reload
On Ovf0 Timer0_isr
Enable Ovf0
Start Timer0
Enable Interrupts

Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output

Dim I As Byte
Dim J As Byte
Dim K As Byte
Dim L As Byte
Dim M As Byte

Dim Tmrrl(4) As Byte                                        ' samo tri izhode
Tmrrl(1) = 44                                               ' 1 ms dolg servo inpulz
Tmrrl(2) = 66                                               ' 1.5 msec dolg servo inpulz
Tmrrl(3) = 88                                               ' 2 ms dolg servo inpulz

I = 1
Do

Loop

Timer0_isr:
   Select Case I
   Case 1 : Load Timer0 , Tmrrl(i)
             Set Portd.7
   Case 2 : Load Timer0 , Tmrrl(i)
             Set Portd.6 : Reset Portd.7
   Case 3 : Load Timer0 , Tmrrl(i)
             Set Portd.5 : Reset Portd.6
   Case Else : Load Timer0 , 54
             Reset Portd.5
   End Select
   Incr I : If I = 16 Then I = 1
Return
' Takole bi bilo nekako v redu...


Sicer pa, kaj ti bodo servomotorji na tanku, ki si ga slikal?

Ah, ja še to, pri meni dela mikro na 11MHz-ih, le tvoj dela z 4Mhz, je potrebno interrupt rutino drugače krmiliti.

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Sob Maj 14, 2011 12:52 am    Naslov sporočila: Odgovori s citatom

Vilko,
hvala ti.
Ja servote rabim za robotsko roko ki bo montirana nanj.



MR1 je bil polomija,ker je bilo narejeno vse na enkrat iz fraj glave brez izračunov....tako da je bilo veliko zapletov.Zato sem se odločil narediti MR2 kjer ga sproti preizkušam.Ko prispajkam tipke jih ustrezno preizkusim in tako dalje.Korak za korakom.

Bom pa danes sprobal program.

Aja,napisal si sledeče:
Ah, ja še to, pri meni dela mikro na 11MHz-ih, le tvoj dela z 4Mhz, je potrebno interrupt rutino drugače krmiliti.

Morem v fuse bitih nasatviti notranji oscilator na 12MHz?Ali dam kar zunanji kvarc?

Hvala še enkrat,
lpm.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Sob Maj 14, 2011 8:35 am    Naslov sporočila: Odgovori s citatom

marc je napisal/a:
Vilko,
MR1 je bil polomija,ker je bilo narejeno vse na enkrat iz fraj glave brez izračunov....tako da je bilo veliko zapletov.Zato sem se odločil narediti MR2 kjer ga sproti preizkušam.Ko prispajkam tipke jih ustrezno preizkusim in tako dalje.Korak za korakom.

Jaz vedno delam po majhnih samostojnih korakih, preizkusim vsak del posebej, in šele potem delam nadgradnjo, sistem, iz preizkušenih delov.
Tudi ta program je bil preizkus krmiljenja servotov.
marc je napisal/a:

Ah, ja še to, pri meni dela mikro na 11MHz-ih, le tvoj dela z 4Mhz, je potrebno interrupt rutino drugače krmiliti.

Morem v fuse bitih nasatviti notranji oscilator na 12MHz?Ali dam kar zunanji kvarc?

Če boš tako naredil, bo gotovo delalo, če pa ostaneš na 4 MHz se boš moral kar precej zafrkavati z load timer ukazi, kakšne parametre boš dal noter. Tako na oko, je tvoj mikro trikrat počasnejši, 4Mhz je trikrat manj kot 11MHz ov, torej bi moral v load timer dajati trikrat manjše vrednosti, če bi ostal na 4 MHz-ih.

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Sob Maj 14, 2011 8:38 am    Naslov sporočila: Odgovori s citatom

Prilagam še program, ki ima enako interrupt rutino, le v glavnem programu spreminjam vrednosti, s katerimi se polni interrupt load timer, tako da servoti malo migajo.

Koda:
'   Sedaj sledi krmiljenje brez 4017   direktno na D.7, 6, 5,


$regfile = "M32def.dat"
$crystal = 11059200

' Timer na 100 usec ali 0.1 msec
Const Timer0reload = 4
Config Timer0 = Timer , Prescale = 256
Load Timer0 , Timer0reload
On Ovf0 Timer0_isr
Enable Ovf0
Start Timer0

Enable Interrupts

Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output

Config Porta.0 = Output                                     ' led kaže na sprejem


Dim I As Byte
Dim J As Byte
Dim K As Byte
Dim L As Byte
Dim M As Byte

Dim Tmrrl(4) As Byte                                        ' samo tri izhode
Tmrrl(1) = 44                                               ' 1 ms dolg servo inpulz
Tmrrl(2) = 66                                               ' 1.5 msec dolg servo inpulz
Tmrrl(3) = 88                                               ' 2 ms dolg servo inpulz

I = 1
Do
Dim Ii As Word


Tmrrl(1) = 44                                               ' 1 ms dolg servo inpulz
Tmrrl(2) = 66                                               ' 1.5 msec dolg servo inpulz
Tmrrl(3) = 88                                               ' 2 ms dolg servo inpulz
Wait 5

For Tmrrl(1) = 44 To 88
    Waitms 10
Next
For Tmrrl(1) = 88 To 44 Step - 1
    Waitms 10
Next


For Tmrrl(2) = 66 To 88
    Waitms 10
Next
For Tmrrl(2) = 88 To 44 Step - 1
    Waitms 10
Next
For Tmrrl(2) = 44 To 66
    Waitms 10
Next


For Tmrrl(3) = 88 To 44 Step - 1
    Waitms 10
Next
For Tmrrl(3) = 44 To 88
    Waitms 10
Next

Loop

Timer0_isr:
' Timer prekinitvena rutina se proži na osnovi Load timer ukaza,
' ki je odvisen od dolžine inpulza, ki ga generiramo.
' Izhodni inpulz generiramo samo, če ni vhodnih inpuzov.
' Če so vnodni inpulzi, tedaj jih verno prenašamo naprej na izhodne
' Če vhodni inpulzov ni 300 msec tedaj se izteče števec ii in to pomeni
' da spet preidemo na programsko generiranje inpulzov.


' števec ii, če preteče do 0, potemni, da ni sprejema in gremo
' na generiranje svojih servoinpulzov

   Select Case I
   Case 1 : Load Timer0 , Tmrrl(i)
             Set Portd.7
   Case 2 : Load Timer0 , Tmrrl(i)
             Set Portd.6 : Reset Portd.7
   Case 3 : Load Timer0 , Tmrrl(i)
             Set Portd.5 : Reset Portd.6
   Case Else : Load Timer0 , 54
             Reset Portd.5
   End Select
   Incr I : If I = 16 Then I = 1

Return




' Nekako dela

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Sob Maj 14, 2011 7:54 pm    Naslov sporočila: Odgovori s citatom

Hi,
hvala vam.

Grem kar preizkušat Very Happy .

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Pon Maj 16, 2011 7:30 pm    Naslov sporočila: Odgovori s citatom

Hi,

Dodal zunanji kvarc in dva kondenzatorja,nastavil fuse bite in naložil program.Deluje Very Happy .Mu ga kar malo dogaja Shocked servotu mislim.

Zdaj grem pa program študirat ker ga nič ne razumem.Da ga bom lahko krmilil tako kot js hočem.

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Pon Maj 16, 2011 9:34 pm    Naslov sporočila: Odgovori s citatom

Interrupt podprogram se uporavblja preprosto, sploh ga ni potrebno klicati, samo daš v spremenljivko Tmrrl(1) za servo 1 vrednost, in servo se bo obrnil, kamor mu vrednost nakaže. Vrednost pomeni 66 sredina, 88 ena skrajna lega, in 44 druga skrajna lega.
Vrednosti morajo seveda biti med 44 in 88.

Če ne bo kaj jasno, sem na vprašaj!

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Tor Maj 17, 2011 5:39 am    Naslov sporočila: Odgovori s citatom

Hi,
torej zadnji program ki ste ga priložil bi moral servo se premikati iz ene skrajne lege v drugo a ne.

Koda:
Do
Dim Ii As Word

Tmrrl(1) = 66                                               ' sredinski položaj

Wait 5

For Tmrrl(1) = 44 To 88                                     'Iz Ene Skrajne Lege V Drugo
    Waitms 10
Next
For Tmrrl(1) = 88 To 44 Step - 1                            'iz zadnje skrajne lege v prejšno skrajno lego po korakih
    Waitms 10

Next

Loop


Meni se pa premika samo kakšen centimeter levo in desno.Če dam namesto waitms 10 več Npr wait 1 se nič ne spremeni in ko bi moral na začetku programa se postaviti na sredino in počakati 5 sekund,nič od tega.Sem že včeraj spreminjal vrednosti in čase in ni bilo nič bolje.Sem brskal tudi po spletu in nisem našel nič pametnega.

Ali je potrebno še kakšno drugo nastavitev narediti?

Mogoče sem servota uničil?

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Tor Maj 17, 2011 6:16 am    Naslov sporočila: Odgovori s citatom

marc je napisal/a:
Hi,
torej zadnji program ki ste ga priložil bi moral servo se premikati iz ene skrajne lege v drugo a ne.
Koda:
Do
Dim Ii As Word
Tmrrl(1) = 66                                               ' sredinski položaj
Wait 5

For Tmrrl(1) = 44 To 88                          'Iz Ene Skrajne Lege V Drugo
    Waitms 10
Next
For Tmrrl(1) = 88 To 44 Step - 1              'iz zadnje skrajne lege v prejšno skrajno lego po korakih
    Waitms 10
Next
Loop

Točno.
marc je napisal/a:
Meni se pa premika samo kakšen centimeter levo in desno.
Poizkusi spreminjati skrajne lege tako, da recimo namesto 88 daš 99 in namesto 44 33
marc je napisal/a:

Če dam namesto waitms 10 več Npr wait 1 se nič ne spremeni in ko bi moral na začetku programa se postaviti na sredino in počakati 5 sekund,nič od tega.Sem že včeraj spreminjal vrednosti in čase in ni bilo nič bolje.Sem brskal tudi po spletu in nisem našel nič pametnega.
Ta wait samo določa hitrost premikanja
marc je napisal/a:
Mogoče sem servota uničil?
LPM

Hja, z gotovostjo ne morem reči. Ali imaš osciloskop ali kaj osciloskopu podobnega (PoScope), da si ogledaš inpulze, ki jih pošiljaš na servote?
Servo se krmili z inpulzi, in sicer položaj določa dolžina inpulza ki naj bi bil med 1 in 2 msec, ponavlja pa se na 20 msec ali nekaj podobnega.
Računam, da nisi spreminjal interupt podprograma.

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
RudiP
Profesionalec


Pridružen/-a: Sre Jul 2008 8:39
Prispevkov: 128
Kraj: KOPER

PrispevekObjavljeno: Tor Maj 17, 2011 12:53 pm    Naslov sporočila: Odgovori s citatom

Malo nerodno pišeš programe, pa ti verjetno zato ne dela v redu.

Poskusi to bo delovalo boljše :

Koda:

Dim I As Byte
Dim Smer As Bit

Tmrrl(1) = 66                           ' sredinski položaj
I = 66
Reset Smer

Do

   If Smer = 0 Then
      Incr I
      If I => 88 Then Set Smer
      Tmrrl(1) = I
   End If

   If Smer = 1 Then
      Decr I
      Tmrrl(1) = I
      If I <= 44 Then Reset Smer
   End If

   Waitms 500                           ' TU SPREMINJAJ INTERVAL  MED KORAKI

Loop

End



1. delaracije in najave morajo biti izven zanke do - loop

_________________
Lep pozdrav !
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Tor Maj 17, 2011 8:40 pm    Naslov sporočila: Odgovori s citatom

Hi,
hvala obema.

Hja,
nekaj je delovalo dokler nisem uničil servota.Zdej se kar vrti kot navaden DC motor.Grem jutr po novega.

Glede programa mi pa dela težave,ker še ne poznam osnov ukaza timer in kako deluje...,grem še naprej razgibavat sive celice in raziskovati ukaze.

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Pojdi na stran 1, 2, 3, 4, 5, 6, 7  Naslednja
Stran 1 od 7

 
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