Mike G
Keep it alive
Goeieavond,
Vandaag heb ik eens geprobeerd een programmatje te schrijven (dit is mijn eerste) om een servomotor aan te sturen via een PIC
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
CLEAR ;Wis alle RAM geheugen
dim duty as byte
;Hoofdprogramma
WHILE 1 = 1 ;Oneindige lus
SERVO PORTA.1, duty, 5 ;Puls 1,5mSec, komt (meestal) overeen met de motor-as centreren
DELAYMS 20 ;Zorgt ervoor dat 50x per seconde het signaal verzonden wordt
WEND ;Terug naar WHILE
END
Klopt dit ongeveer of kunnen hier nog wat verbeteringen bijkomen?
Klopt ook de regel met het SERVO-commando? Hier ben ik niet zeker van
Groetjes
Robbertbd
robotica rules :D
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
CLEAR ;Wis alle RAM geheugen
symbol duty = 1500
;Hoofdprogramma
WHILE 1 = 1 ;Oneindige lus
SERVO PORTA.1, duty ;Puls 1,5mSec, komt (meestal) overeen met de motor-as centreren
DELAYMS 20 ;Zorgt ervoor dat 50x per seconde het signaal verzonden wordt
WEND ;Terug naar WHILE
END
je kan het gewoon testen of als je het compileert en hij klopt niet krijg je een fout.
Mike G
Keep it alive
Ik krijg dus inderdaad een foutmelding.
EROOR [Line 10] : Unrecognised or Illegal characters found',5 '! (Test.bas)
Hoe moet je deze dan wegkrijgen?
MAH
Every machine is a smoke machine if you operate it wrong enough
op regel 10 staat de delayms
ik denk niet dat die fout is maar dat je niet op regel 1 bent begonnen met schrijven.
ik ken de notatie van servo porta.1 duty niet. mogelijk moet je daarvoor een apart include voor invoegen. ik weet ook niet of de poort van de PIC dat aankan..
Robbertbd
robotica rules :D
die delayms klopt. het gaat om de regel er boven.
heb je de verzie van het script wat ik voor je heb gemaakt al geprobeerd?
Robbert
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
@Robbertbd: Je mist de regel
DIM duty AS BYTE@MAH: Je hebt
SERVO PORTA.1, duty, 5de '5' staan en dat mag niet.
Kijk maar eens bij de help van Proton
[Bericht gewijzigd door marcob op (13%)]
Robbertbd
robotica rules :D
en de dim duty heeft geen inhoud.
daarom had ik hem veranderd naar symbol dyty = 1500
als je die dim gebruikt moet je dit doen:
DIM duty AS BYTE
duty = 1500
dan zal de servo een puls krijgen van 1.5 mS.
Robbert
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Je hebt gelijk, zo zou het ook moeten werken.
Zo ziet het voorbeeld in de help eruit:
' Control a servo motor attached to pin 3 of PORTA
DEVICE 16F628 ' We'll use the new PICmicro
DIM Pos as WORD ' Servo Position
SYMBOL Pin = PORTA.3 ' Alias the servo pin
ALL_DIGITAL = ON ' PORTA to digital
CLS ' Clear the LCD
Pos = 1500 ' Centre the servo
PORTA = 0 ' PORTA lines low to read buttons
TRISA = %00000111 ' Enable the button pins as inputs
' Check any button pressed to move servo
Main:
IF PORTA.0 = 0 AND Pos < 3000 Then Inc Pos ' Move servo left
IF PORTA.1 = 0 Then Pos = 1500 ' Centre servo
IF PORTA.2 = 0 AND Pos > 0 Then Dec Pos ' Move servo right
SERVO Pin , Pos
DELAYMS 5 ' Servo update rate
PRINT AT 1 , 1 , "Position=" , Dec Pos , " "
GOTO Main Misschien heeft de TS er wat aan
EDIT:
Ik maak zelf ook een fout, het moet WORD zijn in plaats van eem Byte
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Cursus deel 8 gaat volledig over servo's aansturen met Proton PIC Basic.
Mike G
Keep it alive
Op 15 november 2007 11:28:30 schreef Frits Kieftenbelt:
Cursus deel 8 gaat volledig over servo's aansturen met Proton PIC Basic.
Dit deel heb ik inderdaad nog niet gezien.
Ik had mij gebaseerd op het 7e deel van die site, misschien dat het daarom rare dingen deed. 
@Robbertbd: ik ga zo dadelijk eens proberen.