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.
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/.
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.