 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ivan16 Član


Pridružen-a: Ned 07 Dec 2008 0:36 Prispevkov: 215 Aktiv.: 1.07 Kraj: LJUBLJANA
|
Objavljeno: Tor Feb 23, 2010 6:46 pm Naslov sporočila: KRMILJENJE SERVO MOTORJA |
|
|
Pozdravljeni!
Potrebujem pomoč za krmiljenje modelarskega servo motorja s pomočjo PIC mikrokontrolerja.
Pri modelni železnici bi potreboval bi program (najbolje v mikroC), ki bi oponašal delovanje zapornic na železniškem prehodu.
Delovati bi moral takole:
1. Najprej bi ob pritisku natipko začele izmenično utripati LED diode.
2. Čez 5-7 sekund bi se začele spuščati zapornice.
3. Zapornice se počasi spustijo v vodoravni položaj (7-8 sekund), LED diode pa stalno tripajo.
4. Po pritisku na drugo tipko se zapornice začnejo dvigati in se po 7-8 sekundah dvignejo v navpičen položaj. LED diode utripajo še 1-2 sekundi.
Zahvaljujem se za pomoč in vas lepo pozdravljam. _________________ Ni ga čez zdravo pamet. |
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5530 Aktiv.: 24.06 Kraj: Domzale
|
Objavljeno: Tor Feb 23, 2010 6:53 pm Naslov sporočila: |
|
|
In kaj od tega si že naredil da rabiš pomoč?
Kje se je zataknilo?
(domačih, seminarskih in maturitetnih nalog na forumu ne delamo ...)
LP, Grega
p.s. Sicer ni noben problem ...  |
|
Nazaj na vrh |
|
 |
ivan16 Član


Pridružen-a: Ned 07 Dec 2008 0:36 Prispevkov: 215 Aktiv.: 1.07 Kraj: LJUBLJANA
|
Objavljeno: Tor Feb 23, 2010 7:04 pm Naslov sporočila: |
|
|
Ja no, nekaj sem že poskušal s servotom, samo je bil program zelo dolg. Drugače pa to ni za šolo, ampak za hobi, ukvarjam se namreč z modelnimi železnicami. _________________ Ni ga čez zdravo pamet. |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Sre Feb 24, 2010 12:40 am Naslov sporočila: |
|
|
Program za servo pa ja ni noben problem.
Tole je moja koda za "servo pwm" ki naj bi tekla v Timer interruptu. Timer je potrebno nastavit, da je owerflow vsakih 1/64 ms. Je pa vsa zadeva napisana tako, da je 8 servov na portuB. In vsak servo ima 64 pozicij, le-ta pa sa nastavi z vrednostjo v spremenljivki servo[x]=y;
int8 servo[8];
int8 pause, servo_cycle, so globalne spremenljivke. Koda je napisana za CCS, vendar ne bi smelo biti kakšnega večjega problema v prevajanju drugam.
Koda: |
#int_TIMER2
void TIMER2_isr(void)
{
int8 _i;
if (!pause) //Are we in servo cycle
{
if (servo_cycle<=64) // First part of signal is allways 1ms long
{
Output_b(0xff);
servo_cycle++;
}
else
{
for (_i=0;_i<=8;_i++) //set the actual delay of servos
{
if ((servo[_i]+64)<=servo_cycle) output_bit(pin_b1+_i,0);
}
if (servo_cycle>=64) //End of servo cycle
{
servo_cycle=0;
pause=1;
}
}
servo_cycle++;
}
if (pause) //Are we in pause cycle
{
pause_cycle++;
if (pause_cycle==0) pause=0;
}
} |
Utripanje, počasno premikanje itd, pa je potem tvoja stvar. Načeloma bi lahko tole predelal tudi za en servo. |
|
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: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|