Descubra todo lo que Scribd tiene para ofrecer, incluyendo libros y audiolibros de importantes editoriales. Merloti padu ieee. Hobby grade servo motors can be used with success in several different robotic applications. They have a very simple electrical interface and are available in a great assortment of specifications and prices. Usually one can get started with a very cheap one.
|Published (Last):||1 January 2005|
|PDF File Size:||1.33 Mb|
|ePub File Size:||14.48 Mb|
|Price:||Free* [*Free Regsitration Required]|
Descubra todo lo que Scribd tiene para ofrecer, incluyendo libros y audiolibros de importantes editoriales. Merloti padu ieee. Hobby grade servo motors can be used with success in several different robotic applications. They have a very simple electrical interface and are available in a great assortment of specifications and prices. Usually one can get started with a very cheap one. Peopleareusedtodoallsortsofstuffusingtheircomputers,theywriteletters, send emails, play games, and so on.
Usually all these activities are bounded by the virtual world. Everything happens inside the computer, and results are presented in standard ways, through a screen or in paper through a printer. People dont usually expect to control real world objects using the computer, and still these days, there is an aura of mystery when one sees such interaction.
Unavoidably, interfacing between virtual world and real world must be accomplished by some peripheral that translates digital information into motion. An inkjet printer transforms a digital document into a series of movements of a mechanical arm with two degrees of freedom including the angularmotionofthecylinderthatmakesthesheetofpaperroll andcontrols rapid release of ink to produce a copy of that digital document on a sheet of paper.
But printing a document is nothing new to us and doesnt draw uhs and ohs anymore. In the other hand, if you tell your friend that your computer is the one that controls the lights of your home or turning your AC onandoff,yourhousewillprettysoonbecalledthehouseofthefuture. Transforming digital information into kinesthetic information is mainly performed by motors.
At one time, these motors were pretty hard to control, expensiveandnotateverybodysreach. According to its specs, it is a top ball bearing servo with heavy duty resin gears and long life potentiometer, which is more than enough for just doing tests.
The manufacturer website  presents a list of models offered for a variety of applications. This model operates at 0. Volt and produces an output torque of 3kg. Figure 1 displays a picture of theservothatIwillusethroughoutthispaper. The algorithms presented in this paper are very simple and are in pcode, but the source code is implemented in Mikroelektronikas Mikropascal, a pascal likecompilerthatcanbeobtainedfromthemanufacturerswebpage.
The advantage of using a high level compiler such Mikropascal is that it is so productive that sometimes you think you are developing regular windows applications. It provides a series of very useful libraries that really saves time, but as almost all in life it is a trade off. Developing your code in assembler may not be asfast asin a high levellanguage, but it could runfaster and in less instructions.
The executable can be downloaded fromtheauthorswebsiteandthesourcecodeisavailablebyemailrequest totheauthor. Servos have a very simple electrical interface; they usually have 3 wires, one for power, one for ground and the other for the pulse train. Once power usually in the 4. The dutycycle is of 20ms, and the pulse width contained withinthose20msvariesfrom1msto2ms. Asaruleofthumb,ifa1ms pulse is constantly fed to the servo, it will position itself around 60 angle, 1.
These figures will vary from model to model, but expect them to be very close to the numbers presented here. Figure 2 shows a diagram of the signals. Theauthorhasnotconductedanyexperimentstovalidate these statements. The PWM waveform can also be generated by creating a delay on the main loop of the PIC application or using interrupts.
The choice ofwhichpintousetodrivethepulsehiandlowdependsonyourapplication, intruth,anypinwillsuffice. Figure3displaystheschematicsoftherequiredcomponentsneededtocontrol aservo. InthissectionwewillshowhowtowritecodeforthePICmicrocontrollerthat will cause the servo to turn from one side to another. The algorithm provided hereisshownasapseudocode,butthefullsourcecodeinMikropascalcanbe foundinsection5Listing1.
Thisapplicationwillbenamedwiperbecauseof itscyclicleftrightmovementthatresemblesawindshieldwiper. Lets go slower in this first one and analyze what the program is doing, startingwiththeinitializationcode. We start by telling the processor that pins on port C are Output.
Then we initializethevariablesthatwillcontrolthedirectionoftheservo. IncrementandSteps will control later the direction which servo is currently turning and at which speed respectively.
Now comes the nontrivial stuff if you are not experienced in programming timers and interrupts with the PIC. In the next 4 lines we do. WealsoneedtoenabletheTMR0interruptenableflag line Lines 14 and 15 control the amount of time between TMR0 interrupts and are be explained below. It is always appropriate to enable a given interrupt only after all related parameters are set, otherwise an interrupt could be triggered before the parameters are defined, and that may cause some unpredictedbehaviortoyourapplication.
If you do the math, at a modest processor speed of 4 MHz, this count can go pretty fast; actually it is going to be over in exactly s.
Whats the solution then? Table 1 presents the available prescaler rates. If DelayCycles exceeds , we must divide it by 2 successively until it becomes a number smaller than The prescaler value is the number of divisions by 2 we perform in binary form. In the next example, we calculate the timer value and prescaler value for 20ms, exactly the duty cycle employed inAlgorithm1.
In more time sensitive applications, this fraction must be taken in consideration. One way this can be doneisbyincludingsmallloopsintheinterruptcode. Forourapplication,the servo mechanism is robust enough to accept this type of error; therefore we round up the TMR0Value to From the calculation above, the prescaler must slow down the counting at the ratio A moredetailedreferenceontheworkingsofTMR0canbefoundon.
Therefore,priortoanalyzingthemainbodyofthe program,letstakeacloserlookattheinterruptprocedure. Line 2 is not fundamental if the only source of interrupt is TMR0, but as we willseelater,ifmoresourcesofinterruptareused i. Processingshouldbeverylimited withintheinterruptprocedure;thereforetheonlythingwearedoinghereisto rise a flag flagServo signaling that its time to send a pulse to the servo. We also need to reset the value of TMR0 to as calculated above and clear the TMR0IF bit, or else the interrupt will trigger again as soon as we leave the procedure.
For the main body of the program we have an endless loop that constantly checksiftheflagServowasraised. Ifitwasthenitmeansthat20mshavepassed since the last interrupt and its time to send a pulse.
To implement the wiper behavior, after sending the pulse we increase the delay by steps s until s is reached 60 , thenwe invert the direction of theincrementsothepulsewidthstartsgettingsmalleruntiliffindsthes boundary at 60 and then repeats this operation over and over.
The servo speed in this case is controlled by steps, and roughly 10 steps are equal to 1 degree. At last, we must not forget to reset the flagServo variable in order to maketheapplicationwaituntilthenextinterrupt. IfwewanttocontroltheservousingaPC,theWiperapplicationshowninthe previous section wont be of much help, we need some way to send commands to the PIC mcu and consequently to the servo.
In this section we will show how the author implemented a basic communication protocol using a Delphi program for Windows 32 and how to implement serial communication using a. Additionally,theauthorwillshowatechniqueonhowtocontrol morethanoneservosimultaneously. As said earlier in the paper, the ServoTroller is a Windows 32 compatible application that presents a graphic interface of the servo head see figure 4.
Onthemainscreen,theuserisallowedtocontrol the current servo angle by just clicking at a given angle or by dragging the angleindicator. Itispossibletocontrol2servosfromthisapplicationusingthe boxlocatedatthebottomleftcornernamedServoControl.
Before start using the application, make sure you have the PIC connected to the PC serial port and that you have the ServoTroller application serial port properly configured. For this experiment the BaudRateissetforbps figure5. Also, the standard delays of 1. Next step is to. Because servos are linear, settings you make for the positive side are reflected to the negative side. Youmay needtoadjustthesenumbersuntilyouhaveyourservocorrectlycalibrated.
Back to the main screen, messages are sent to the PIC when you click at a given angle on the screen. If Use intermediate points is enabled, then instead of issuing one single message per click, the software will calculate the difference between the current and desired angles and issue as many messages per degreeasdefinedintheResolutionoption. Messagesareloggedintheblacklist locatedattherightsideofthewindow.
Where cmd defines the recipient servo, in this case A or B; value is a 2 byte unsigned integer with the pulse width delay in microseconds for that given angle, and finally the crc character. The ServoTroller can be downloaded from the authors website  and the sourcecodeinDelphicanbearrangedbyanemailrequesttotheauthor. The goal of this paper is not showing how to implement USART communicationonaPICmcu,thereforewewillonlypresenttheschematicsof asimplehardwareimplementation figure6 ofserialcommunicationbetween a PIC and a PC using the RS protocol, but the implementation details are outofthescopeofthispaper.
Additionally, it was also shown how to receive serial data from a PC that controls the direction of the servo. They are especially appropriate for robotic applications due to internal positioning control and relatively high torque.
Experiments performed by the author have shown that by using the approach demonstrated in the MultiServo application communication between the PC and the servo is flawless, but if serial messages are sent in rapid succession, the movement of the servo head starts getting very jittery.
Although the author still doesnt have a formal explanation for this behavior, he hypothesizes that it is due to the non realtime nature of Microsoft Windows and PC serial ports that are incapable of sending the messages with perfect timing.
An improvement for this model would be changing the content of the serial message that departs from the PC to discrete angles instead of microsecond delays. The PC application would instead send a command with a discrete angle i. The author wishes to thank the people of the PicList discussion group for the innumerous suggestions and advices they gave on this and lots of other topicsrelatedtothePICMicroandelectronics. Hitec Website. Merloti Website, software.
Comience la prueba gratis Cancele en cualquier momento. Servo Controller. Compartir este documento Compartir o incrustar documentos Opciones para compartir Compartir en Facebook, abre una nueva ventana Facebook.
Denunciar este documento. Descargar ahora.
Ramatis - O Astro Intruso. Sistema Solar. Movie Posters. Monte Fuji Japon. Starry Night Sky.
O Astro Intruso - Ramatis | Sistema Solar | Planetas | Free 30-day Trial | Scribd