PICBasic Pro - Servos - Primeira Parte

        O PICBasic PRO é um compilador BASIC para microcontroladores da MICROCHIP, para maiores informações sobre a linha de produtos da MICRCOHIP acesse o site http://www.microchip.com/, voce ira encontra uma serie de produtos de exelente qualidade e baixo custo..
        Voltando ao compilador PICBASIC PRO, o qual é desenvolvido pela MicroEngineering Labs, para maiores informações visite o site neste endereço http://store.melabs.com/prod/software/PBP.html, e conheça os produtos disponivieis.
        Vamos nos fixar no compilador PICBASIC PRO Versão 2.60, que voce pode fazer o download aqui mesmo no site da EDUKATIKA em Downloads ou no site da MicroEngineering Labs, o manual de instalação pode ser visualizado nesta pagina, onde o video ira mostrar passo a passo  com instalar o compilador http://video.melabs.com/getting_started/Installing_PICBASIC_PRO/.
        Siga os passos indicados no video e estude o manual do compilador com todos os comandos da linguagem disponiveis, voce pode obter o manual do compilador aqui mesmo no site da EDUKATIKA, Downloads ou pode fazer o DOWNLOAD no site da MicroEngineering Labs em http://www.melabs.com/doclist.htm. Para maior praticidade instale o gerenciado grafico do Compilador fazendo o DOWNLOAD do MICRO CODE STUDIO, no site da EDUKATIKA Downloads ou no site da MicroEngineering Labs em http://www.melabs.com/resources/win_ide.htm.
        Agora vamos aos projetos praticos e de simples implementação.

 _______________________________________________________________________________________________________________
 
                                           Controlando um Servo Automaticamente


        Para voce saber mais de como funciona os servos de uma olhada neste link dentro do site da EDUKAITKA Servo e se familiarize com ofuncionamento dos servo motores, caso queira se aprofundar de uma olhada em http://pt.wikipedia.org/wiki/Servo_Motor.
        Nosso Primeiro projeto tem como objetivo:

  1 - Utilzar uma linguagem simples de programação ao qual dispense a linguagem assembler, ou qualquer outra linguagem de programação de alto nivel.

  2 - Um circuito simples de baixo custo, o qual ira controlar um servo de maneira automatica, onde apos o circuito ser acionado, o mesmo ira fazer movimentos identicos saido do centro indo todo a direita e voltado todo a esquerda e repetindo o ciclo ate a alimentação do circuito eletronico ser interompida.

  Definido nossos objetivos vejamos o diagrama eletrico da figura 1, onde temos o diagrama completo do nosso circuito exemplo inicial, observe a simplicidade do circuito e o baixo custo de implementação do mesmo para uma melhor visualização voce pode efetuar o DOWNLOAD do diagrama eletrico, do layout da placa de circuito impresso em formato JPG no site da EDUKATIKA em Downloads.

                                  
                                                                                                       Figura 1

  Na figura 2 temos a visualização do Layout da placa de circuito impreso em dupla face porjetado no software EAGLE 5.0 vesão estudantil que voce pode efetuar o DOWNLOAD neste endereço http://www.cadsoftusa.com/.

                                                                                        
                                                                                                         Figura 2
  Descrição do Circuito:

  O circuito eletronico tem como componente prncipal o microcontrolador PIC16F84A da Microchip, o download do DATASHEET do componente pode ser eftuado neste endereço http://ww1.microchip.com/downloads/en/DeviceDoc/35007b.pdf.

  Os componentes auxiliares são compostos por:

01 PIC 16F84A                      - microcontrolador
01 cristal oscilador de 4 Mhz   - circuito oscilador
02 capacitores de 22pf            -  circuito oscilador
03 capacirores de 100nF         - desacomplamento e filtragem da fonte de alimentação
04 resistores de 10k                - limitador de corrente para o LED e PULUP das chaves de controle
01 regulador 7805                   - regulador de voltagem de 5V
01 diodo 1N4007                   - Para proteção da fonte contra inversão na alimentação
01 diodo LED                         - Indicação de cirucito ligado
03 conectores                         - sendo um para alimentação, outro para o servo e outro para as chaves de controle

 RESUMINDO O NOSSO OBJETIVO.

     Um circuito que ao ser acionado faz com o que o servo parta de sua posição incial, no centro e se moviemnte da esquerda para a direita em toda a sua extremidade, efetuado tal movimento continuamente.

O PROGRMA DE CONTROLE.

     O programa de controle pode ser visto logo abaixo, onde podemos observar a simplicidade dos comandos bem como a quantidade reduzida de codigos.
     Vejamos com mais enfase o codigo de controle, o codigo de controle pode ser efetuado o download em nossa seção de Downloads.

'****************************************************************
'*  Name    : Servo_automatico.BAS                                                                       *
'*  Author  : [Clovis Magoga Rodrigues]                                                                  *
'*  Notice  : Copyright (c) 2010[Edukatika Robotica Educacional]                           *
'*              : All Rights Reserved       www.edukatika.com.br                                    *
'*  Date    : 12/2/2010                                                                                             *
'*  Version : 1.0                                                                                                      *
'*  Notes   : Sensacional as soluções que podemos dar aos                                      *
'*          : problemas quando nos eforçamos para resolvelos !                                   *
'****************************************************************

temp var byte                                                                           ' inicializa as variaveis
freq var byte
servo var byte

portb.0 = 0                                                          ' coloca nivel logico 0 na porta B.0
freq = 13                                                          ' define a velocidade de giro do servo
servo = 140                                                                    ' Nr. de pulsos para o servo

calibrar:                                                                 ' Rotina de centralização do Servo
if porta.3 = 0 then repete                               ' Verifica se o interruptor foi precionado
   servo = 140
   gosub central                                                        ' Desvia para a rotina CENTRAL
 goto calibrar                                 ' volta para a rotina CALIBRAR apos o RETURN

central:                                                                                         ' Centraliza o servo
   for temp = 1 to 10                                ' efetua um laço de tempo para fixar o servo
   pulsout portb.0,servo                ' envia um pulso para a portb.0 contido em SERVO
   pause freq                    ' efetua um atraso no programa - define velocidade do servo

   next temp                                                                      ' incremente o laço for next
return                                                                      ' RETURN da instrução GOSUB

' ------------- Inicio da Rotina de vai e vem
 ' A variação de posição se da alterando os pulsos na linhas
' IF servo < XX then repete da rotina repete: e na linha
' IF servo > XX then volta da rotina volta
' Alterando essas duas linha podemos limitar o angulo
' de rotação do servo

repete:                                               ' Inicio da rotina de repetição dos movimentos
pulsout 0, servo                            ' envia um pulso para a portb.0 contido em Servo
pause freq                                                                ' efetua um atraso no programa
servo = servo + 1                                   ' faz um incremento na contagem de pulsos
if servo > 250 then volta                  ' checa se o incremento de pulsos chegou a 200
if porta.3 = 0 then calibrar                  ' Verifica se o botão foi precionado, caso seja
goto repete                                                                        ' vai para a rotina calibra

volta:
servo = servo - 1
pulsout 0, servo
pause freq
if servo < 50 then repete
if PortA.3 = 0 then parar
goto volta
   
  parar:                                                                ' Rotina de parada do moviemto
  pause 300                                  ' efetua uma pausa no programa mais demorada
  pulsout 0,0                                                                   ' envia pulso 0 na porta 0
  goto calibrar                                                                     ' volta a rotina calibrar

  Como podemos observar o codigo fonte para executar o nosso propostio possui  35 linhas de comando, onde setamos o microcontrolador e suas variaveis e toda a rotina de leitura da tecla de incio do progrma. No quadro 1 temos a definição das variaveis do programa.
         
               
 

temp var byte                                                                           ' inicializa as variaveis
freq var byte
servo var byte

portb.0 = 0                                                          ' coloca nivel logico 0 na porta B.0
freq = 13                                                          ' define a velocidade de giro do servo
servo = 140                                                                    ' Nr. de pulsos para o servo
 



                                    Quadro 1

 Comandos do PICBasic Utilizados:

Var Byte  - utilizado para definir uma variavel tipo  Byte  
 portb.0    - define o estado logico de saida de uma determinada porta do microcontrolador 





 No quadro 1 temos a inicializaçã das variaveis utilizadas no programa, são elas [ temp, freq, servo ], atraves das definições da variaveis podemos continuar o estudo sobre o programa exemplo. Passemos ao quadro 2

calibrar:                                                                 ' Rotina de centralização do Servo
if porta.3 = 0 then repete                               ' Verifica se o interruptor foi precionado
   servo = 140
   gosub central                                                        ' Desvia para a rotina CENTRAL
 goto calibrar                                 ' volta para a rotina CALIBRAR apos o RETURN

central:                                                                                         ' Centraliza o servo
   for temp = 1 to 10                                ' efetua um laço de tempo para fixar o servo
   pulsout portb.0,servo                ' envia um pulso para a portb.0 contido em SERVO
   pause freq                    ' efetua um atraso no programa - define velocidade do servo

   next temp                                                                      ' incremente o laço for next
return         


                                    Quadro 2

 Comandos do PICBasic Utilizados:

 If...           - testa uma condição
 gosub       - desvia para uma rotina , executa a rotina e volta
 goto         - desvia para uma rotina, executa e presegue
 for , next   - executa um laço de contagem tipo for next
 pause        - faz uma pausa no programa
 pulsout      - envia um pulso para a saida






 No quadro 2 é mostrado duas rotinas especificas em nosso programa sendo que a rotina
"calibra" é responsavel por manter o servo na posição central enaunto que a rotina  "central" posiciona o servo no meio independente da posição que o mesmo estiver parado inicialmente. Para finalizar  no quadro 3 temos a parte final de nosso programa inicial.

 

repete:                                               ' Inicio da rotina de repetição dos movimentos
pulsout 0, servo                            ' envia um pulso para a portb.0 contido em Servo
pause freq                                                                ' efetua um atraso no programa
servo = servo + 1                                   ' faz um incremento na contagem de pulsos
if servo > 250 then volta                  ' checa se o incremento de pulsos chegou a 200
if porta.3 = 0 then calibrar                  ' Verifica se o botão foi precionado, caso seja
goto repete                                                                        ' vai para a rotina calibra

volta:
servo = servo - 1
pulsout 0, servo
pause freq
if servo < 50 then repete
if PortA.3 = 0 then parar
goto volta
   
  parar:                                                                ' Rotina de parada do moviemto
  pause 300                                  ' efetua uma pausa no programa mais demorada
  pulsout 0,0                                                                   ' envia pulso 0 na porta 0
  goto calibrar                                                                     ' volta a rotina calibrar



                               Quadro 3

 Comandos do PICBasic Utilizados:

 
pulsout      - envia um pulso para a saida
 pause        - faz uma pausa no programa
 If...            - testa uma condição
 goto          - desvia para uma rotina, executa e presegue


 No quadro 3 temos a finalização do programa dividido em tres (3) rotinas, sendo elas a rotina [repete], a rotina [volta] e rotina [parar].  Observe os comentarios de cada linha para um perfeito entendimento do codigo fonte;
 
 





  











Na sequencia temos o codigo fonte ja compilado e no formato .HEX, o qual devera ser programado dentro do microcontrolador, figura 3.

                                                             
                                












                           Figura 3

 Terminamos o nosso primeiro projeto com caracteristica puramente educacional, para os iniciantes ter uma pequena amostra de como utilizar as ferramentas disponiveis no mercado. Para visualizar o video do prototipo  vai_vem_final.MPG.
 
 Educacional                                                                                                                                                                                 PicBasic PRO-2

 
 
 
  Site Map