SSC - Serial Servo Controler ou Controladora de servos Serial

Como o proprio nome ja menciona trata-se de uma interface de controle de servos motores usando a porta serial do PC para controlar a posição do eixo de cada servo.
As controladoras SSC são vastamente utilizadas em projetos eletronicos e mecanicos onde desejamos efetuar o controle de servos mecanismos usando um PC que atraves de sua porta RS232 ou porta Serial efetua o envio do comando para a placa de controle SSC e a mesma efetua o posicionamento de acordo com o programa de controle.
Para contruirmos interfaces SSC precisamos de um microcontrolador independente do frabricante e obviamente de uma interface de controle ( Software para a interface Homen/Maquina ).

Como nosso objetivo é uma apresentação EDUCACIONAL de um projeto e dar o inicio ao raciocinio de como funciona a interface para que cada um possa dar vida a sua ideias. Nos iremos apresentar neste artigo um projeto para controle de ate oito(8) servos porem os exemplos de firmware ( programa contido no Microcontrolador ) e do programa de controle tem a capacidade de controlar somente um (1) dos servos. Nosso objetivo é sempre de fazer com que o leitor tenha entendimento do produto e faça o seu de acordo com o pesquisado e o que foi aprendido. Para aqueles que não tem tempo para pesquisas temos o produto pronto que pode ser obtido em nossa loja digital no endereço http://www.edukatikaloja.com.br/produto.php?cod_produto=4187818 .

Em nosso projeto de estudo e apresentação iremos utilizar o PIC16F628A funcionando a uma frequencia de 4Mhz programado internamente com a Linguagem PICBASIC PRO 2.6x.

O diagrama da interface basica para oito(8) canais esta na figura 1.
diagrama






















               Figura 1

Descrição Basica do diagrama da figura 1. Podemos observar como componente principal o PIC16F84A no diagrama mas o modelo usado é o PIC16F628A mais moderno, mais barato, mais rapido, com mais funções e totalmente compativel em pinagem com o PIC16F84A mostrado no diagrama.
No diagrama devemos iguinorar todos os JUMPERS as chaves S1 e S2 os Leds LED1 e LED2 pois os mesmo fazem parte do projeto de robo de seis(6) patas.

Sendo assim os dados enviado pelo PC atraves da porta RS232 ( Porta Serial ) é enviado ao Microcontrolador atraves do conector K1 conector DB9 de 9 pinos o qual utiliza somente tres(3) sinais que corresponde ao TX, RX e GND. O sinal vindo do PC parra por um resitor de 22K o qual faz o "casamento" e eliminação de possiveis ruidos no sinal e o entrega ao Microcontrolador. O microcontrolador ira interpretar os comandos enviado pelo PC atraves do codigo fonte abaixo que no caso é mostrado somente de um dos canais ou seja somente de um servo.

Na sequencia abaixo temos o codigo fonte do programa de controle em PICBASIC PRO.


'****************************************************************
'*  Name    : ssc_edukatika.pbp                                                                   *
'*  Author  : [Clovis Magoga Rodrigues -
www.edukatika.com.br]                *
'*  Notice  : Edukatika - Robotica Educacional]                                            *
'*          : Programa para controle de servos usando a RS232c                      *
'*          : e VB6, controle de ate 8 servos                                                     *
'*  Date    : 30/05/2011                                                                                 *
'*  Version : PIC16F628/627  para 16F84A Renomeio linha CMCON            *
'*  Notes   : Faça bom uso do conhecimento e agradeça quem                      *
'*              : gosta de ensinar e compartilha conhecimento                             *
'* Aplicação: Controle de servos usando a porta serial e VB6                       *
'****************************************************************

CMCON = 7                        ' desativa portas

TRISB = %00000000                ' define portB como saida
TRISA = %00000001                ' define portA com entrada

DEFINE OSC 4                        ' define a frequencia do cristal em 4mhz


Baud            CON N2400         ' velocidade da porta RS232
Com_In       VAR PORTA.0    ' pino de entrada para serial
Com_Out    var PORTA.1        ' pino de saida para serial
Controle       VAR BYTE          ' armazena dados relacionado a Nr. pulsos
ativa           VAR byte               ' aramazena qual o servo a ser ativo
Sync            var byte                ' sincronismo de comunicação serial
I               VAR BYTE             ' variavel para contagem
S0              var byte                 ' varivael do servo 0 

low PORTB.0                      ' nivel logico baixo na PortB.0

high led

S0 = 127                         ' centraliza todos os servos ao iniciar

inicio:                              ' inicio da rotina principal

    serin Com_In,Baud,7,Set_Pos,[255],ativa,Controle ' recebe dados da RS232
    SEROUT  Com_Out,Baud,[ativa,Controle]            ' envia dados para a RS232
    If ativa = 0 then S0 = Controle  ' se servo 0 ativo envia pulsos para saida
 

Set_Pos:

    pulsout PORTB.0,S0               ' gera pulsos em MS na PortB.0 = dado em S0
goto inicio

O codigo fonte acima é bem simples sendo a rotina principal com inicio na linha INICIO: a linha principal que efetua a comunicação esta no comando SERIN CON_IN.BAUND,7,SET_POS`que efetua o recebimento dos dados enviado pelo PC. Nesta linha ja estamos controlando a velocidade de trabalho fixada em 2400bps, com palavra de transmissão de sete(7) bits, e a variavel SET_POS que define qual dos oitos servos estamos comandando.  A linha SEROUT COM_OUT,BAND efetua o controle de fluxo de dados no caso de usarmos a rotina de repetição dos comandos.
A linha IF ATIVA = 0 then S0 = Controle efetua a checagem do dados recebido e aciona o servo correspondente ao dado contido na variavel S0, uma vez identificado o dado o programa salta para a rotina SET_POS e envia o dado para a porta PORTB.0,S0 que siguinifica PORTB do Microcontrolador, porta 0 de saida e o dado S0 responsavel por gerar o pulo na largura correta para posicionar o eixo do servo motor.

Toda a rotina acima é enviado ao microcontrolador atraves do programa mostrado na figura 2. Lembre-se que a tela do programa tem oitro(8) barras deslizates de controle porem iremos explicar somente o funcionamento de uma delas. O restante é indentico obviamente levando-se em consideração as variaveis de saida de cada pino do microcontrolador.

software

 




















Figura 2

De acordo com a figura 2 apos a ativação do programa executavel instalado no PC teremos exatamente a tela da figura 2, observe que podemos setar a porta serial COM1 ou COM2. Escolhe sempre a porta COM1 pois é a que sta setada no programa interno do Microcontrolador.
Cada barra deslizante é responsavel por ativar um dos oito(8) servos para a direita ou esqueda. Os botões abaixo de cada barra deslizante serve para posicionar os servos na posição central. O botão grava efetua a gravação de cada movimento que foi efetuado nas barras. Para gravar voce devera efetuar o movimento da barra ou do botão de controle e clicar em gravar e assim por diante. Para repetir os movimentos basta teclar em repetir.

Na sequencia abaixo podemos observar o codigo fonte dos pontos principais do programa de controle da figura 2. Sendo que o primeiro exemplo se refere ao Botão deslizante 1 o qual aciona o primeiro servo.

Codigo fonte de acionamento da barra deslizante do Primeiro Servo
Private Sub VScroll1_Change()
' Servo 1
Text1(0).Text = Str(VScroll1.Value)
MSComm1.Output = Chr$(255)
MSComm1.Output = Chr$(0)
MSComm1.Output = Chr$(Text1(0).Text)
End Sub

Codigo fonte de centralização do Primeiro Servo
Private Sub Command1_Click()
MSComm1.Output = Chr$(255)
MSComm1.Output = Chr$(1)
MSComm1.Output = Chr$(127)
Text1(1).Text = Str(127)
VScroll1.Value = Text1(1).Text
End Sub

Codigo fonte das definições basicas do Programa
Dim armazena_posicao() As Double
Dim indice_posicao As Double
Dim velocidade As Byte
Dim InString As String


Os tres(3) modulos acima é o centro de controle de todo o programa de controle. Como mencionamos modulos individuais, obviamente o estudante, projetista tem que ter em mente que devemos repetir os comandos de controle para os outro sete(7) servos.

Lembramos tambem que existe em nossa loja  http://www.edukatikaloja.com.br/produto.php?cod_produto=4187818 a versão completa dos programas.

 
 
 
  Site Map