We moeten op school als project een robot bouwen. Deze willen we laten rijden met 2 servo's en aantsturen met een pic18f452. We willen het programma schrijven in JAL. Maar nu wil ik graag weten hoe ik deze het beste kan aansturen. Op de manier zoals hieronder te zien is gaat het niet omdat dan beide servo's vooruit draaien. En een servo heeft een puls nodig die korter is dan 1,5 ms om achteruit te rijden. Iemand enig idee hoe dit te realiseren is in JAL?
include f452_20
include jlib
include jdelay
port_a_direction = all_output
forever loop
pin_a0 = on
delay_10mS
pin_a1 = on
delay_100uS
pin_a0 = off
delay_10mS
pin_a1 = off
delay_100uS
end loop
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Ik neem aan dat het gehackte servo's zijn, dan is de resolutie niet zo belangrijk, dan red je het wel met delays. Maak het jezelf niet te moeilijk, stuur eerst een puls naar de ene servo en dan een puls naar de andere.
Als je echt een servo (naukeurig) wilt aansturen zou ik assembler (kan inline) of (beter) de PWM hardware gebruiken.
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
het zijn idd gehackte servo's.
Maar het probleem is vooral dat beide servo's tegelijk moeten lopen om de robot vooruit te laten rijden. En daarvoor moet dus 1 servo achteruit en 1 servo vooruit lopen. (Beide servo's drijven apart een wiel aan) Ik heb dit getest met delays maar krijg steeds problemen met de delaytijd die nodig is om achteruit te rijden(kleiner dan 1.5mS).
Op 26 oktober 2005 11:45:51 schreef Wouter van Ooijen:
delays. Maak het jezelf niet te moeilijk, stuur eerst een puls naar de ene servo en dan een puls naar de andere.
Dit lijkt me dus onmogelijk om de robot vooruit te laten rijden. Hij zou dan continu rondjes gaan draaien.
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 26 oktober 2005 13:01:20 schreef Manvsmachine:
[...]
Dit lijkt me dus onmogelijk om de robot vooruit te laten rijden. Hij zou dan continu rondjes gaan draaien.
Een servo regeert op de puls lengte, en die reactie blijft totaan de volgende puls (binnen 20 ms ofzo).
Ik snap het probleem voor < 1.5ms niet. Je neemt dan toch gewoon delay_100us( n )?
Heb je al op de jallist gekeken?
Op 26 oktober 2005 13:05:22 schreef Wouter van Ooijen:
[...]Een servo regeert op de puls lengte, en die reactie blijft totaan de volgende puls (binnen 20 ms ofzo).
Ik snap het probleem voor < 1.5ms niet. Je neemt dan toch gewoon delay_100us( n )?
Heb je al op de jallist gekeken?
heb het getest met delay_100uS
en ook al op de jallist gekeken
maar ik snap het alleen niet helemaal hoe jij het dan bedoelt?
Op 26 oktober 2005 12:41:07 schreef Wouter van Ooijen:
kijk even op de yahoo jallist, daar komen net ene paar posts langs over servo code in Jal.
btw waren dat waarschijnlijk mijn eigen posts 
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 26 oktober 2005 13:13:50 schreef Manvsmachine:
[...]
btw waren dat waarschijnlijk mijn eigen posts
ook de antwoorden?
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 26 oktober 2005 13:08:17 schreef Manvsmachine:
[...]
maar ik snap het alleen niet helemaal hoe jij het dan bedoelt?
gewoon een puls naar de ene servo, en dan een puls naar de andere servo. Beide pulsen natuurlijk met de lengte die jij wilt.
include f452_20
include jlib
include jdelay
port_a_direction = all_output
forever loop
pin_a0 = on
delay_10mS
pin_a0 = off
delay_10mS
pin_a1 = on
delay_100uS
pin_a1 = off
delay_100uS
end loop
Deze is het geworden en het werkt. voor achteruit moet ik het nog aanpassen
En dit is de code voor achteruit. Nu vraag ik me alleen af of het mogelijk is deze in een procedure te zetten?
include f452_20
include jlib
include jdelay
port_a_direction = all_output
forever loop
pin_a0 = on
delay_100uS
pin_a0 = off
delay_100uS
pin_a1 = on
delay_10mS
pin_a1 = off
delay_10ms
end loop
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 27 oktober 2005 09:11:39 schreef Manvsmachine:
Nu vraag ik me alleen af of het mogelijk is deze in een procedure te zetten?
waarom zou dat niet kunnen?
Op 27 oktober 2005 09:15:49 schreef Wouter van Ooijen:
[...]waarom zou dat niet kunnen?
Omdat ik dan errors kreeg bij het compilen?
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 27 oktober 2005 09:16:49 schreef Manvsmachine:
[...]
Omdat ik dan errors kreeg bij het compilen?
Je kan geen error*s* kirjgen, Jal geeft altijd maar 1 error. En zou het dan niet handig zijn als je je code + de error die je krijgt post in plaats van zo'n vage vraag?
Op 27 oktober 2005 09:18:44 schreef Wouter van Ooijen:
[...]Je kan geen error*s* kirjgen, Jal geeft altijd maar 1 error. En zou het dan niet handig zijn als je je code + de error die je krijgt post in plaats van zo'n vage vraag?
Zal hem ff erbij zetten zometeen
dit is de code
include f452_20
include jlib
include jdelay
port_a_direction = all_output
procedure vooruit
pin_a0 = on
delay_100uS
pin_a0 = off
delay_100uS
pin_a1 = on
delay_10mS
pin_a1 = off
delay_10ms
end
forever loop
vooruit
end loop
En de fout is:
jal 00.04-50 (djgpp)
[Error] (PROCED~1.JAL) [line 7 char 1] expected 'is' but found 'pin_a0'
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 27 oktober 2005 09:46:35 schreef Wouter van Ooijen:
(docent mode aan)En wat zegt die foutmelding nu precies?
Simpelweg dat de compiler er IS verwacht in plaats van een pin nummer 
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 27 oktober 2005 09:51:46 schreef Manvsmachine:
[...]
Simpelweg dat de compiler er IS verwacht in plaats van een pin nummer
juist. dus wat is dan een verstandige actie van jouw?
Op 27 oktober 2005 09:53:28 schreef Wouter van Ooijen:
[...]juist. dus wat is dan een verstandige actie van jouw?
Daar een wijziging aan te brengen lijkt me. Maar het gaat me er vooral om dat ik niet weet hoe ik het dan zou moeten opbouwen?
En docenten zie ik al genoeg:S
include f452_20
include jlib
include jdelay
port_a_direction = all_output
procedure vooruit
is
pin_a0 = on
delay_100uS
pin_a0 = off
delay_100uS
pin_a1 = on
delay_10mS
pin_a1 = off
delay_10ms
end procedure
forever loop
vooruit
end loop
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 27 oktober 2005 10:03:51 schreef Manvsmachine:
de bovenstaande code was dus alles:(
Verbaast dat je? De compiler klaagt dat er een 'is' moet staan, dan lijkt de meest aannemelijke actie me om die 'is' dna maar te plaatsen.
Maar je kunt natuurlijk ook de manual lezen....