Relógio RS-232 / PIC

Introdução

      Projetos envolvendo comunicação entre microcontrolador e PC são comuns na maioria das aplicações onde a captura de dados externos, ou o envio de dados para fora do computador seja o foco principal do projeto. O objetivo deste artigo é apenas didático, serve para orientar o iniciante em programação à fazer uma simples aplicação que, irá capturar a hora do sistema em segundos e enviar para o microcontrolador via porta Serial, para que o mesmo interprete e mostre em um display LCD atualizando a hora a cada segundo.
      O projeto foi dividido em três partes, a primeira é a parte de hardware que trata do circuito elétrico do relógio, a segunda é a parte de software que trata da aplicação que roda no PC, e a terceira é a parte do firmware do microcontrolador que controla o relógio.

Hardware

      Abaixo podemos ver que o circuito elétrico do relógio é bem simples, e pode ser montado em um protoboard, a alimentação do circuito é feita pela porta USB através da placa conversora USB/SERIAL com o chip da FTDI. O conector CN1 pode ser substituído por fios jumpers (aqueles que o Arduino usa) conforme veremos no vídeo de funcionamento.

Esquema elétrico

Software

      Este software é o responsável por capturar a hora do PC, transformar tudo em segundos e enviar para a porta serial RS-232, e foi desenvolvido em C# utilizando o compilador Microsoft Visual C# 2010 pois facilita a comunicação com a porta Serial.

telarelogio


Nele temos um componente Timer que fica capturando a hora do sistema a cada segundo, e após isso são inseridos dois caracteres para informar ao PIC quando a transmissão começa e quando termina, a string final que é enviada ao PIC tem o seguinte formato: Ex: “<4000>” onde o caracter ‘<‘ indica para o PIC começar a capturar os caracteres que compõem a hora, e o caracter ‘>’ indica para o mesmo finalizar a captura da hora, e ao final temos somente o valor referente à hora em segundos “4000” sem os caracteres “< >” isso servirá para facilitar a conversão dessa string para um valor inteiro.

 

 

Firmware

      O firmware do microcontrolador PIC, foi escrito em linguagem C utilizando o compilador da CCS, esse código também está incluso para download no final dessa página, os trechos principais desse serão tratados abaixo.
      Para que possamos visualizar a hora no display do relógio precisamos extrair da string recebida, a hora, os minutos e os segundos, mas antes é necessário converter essa string em um valor inteiro de 32bits, pois para o valor máximo de horas ex: meia noite temos o valor 86400, o que supera o tamanho do tipo int, que no compilador CCS é de 8 bits (0 a 255), portanto a variável que armazena esse valor é do tipo int32 do compilador da CCS, e com o uso da função atoi32() é possível fazer essa conversão como segue abaixo.


/* armazena a hora recebida do PC */

char HoraRcv[8];// variável de 32 bits para armazenar a hora em inteiro
int32 con=0;// converte a string de horas em um valor inteiro
con = atoi32(HoraRcv);
 
Como o PIC separa hora, minutos, e segundos?
 
Exemplo: hora recebida: 4000 segundos que equivale a: 01:06:40 Para obtermos a hora, dividimos o valor em segundos 4000, pelo valor de 1 hora em segundos que é igual a 3600, para obtermos os minutos pegamos o resto da divisão, e dividimos por 60, que é o valor de 1 minuto em segundos, e do resto dessa última divisão obtemos os segundos. A figura abaixo demonstra melhor essa explicação.

      Abaixo temos detalhes da função converte(); do código do microcontrolador PIC.

// obtém a hora
R.h = con / 3600;
// obtém os minutos
R.m = (con % 3600) / 60;
// obtém os segundos
R.s = (con % 3600) % 60;

      Por se tratar de um projeto didático, o mesmo foi montado em protoboard, mas se tiver experiência em PCI poderá confeccionar uma placa para o circuito.
      Qualquer dúvida em relação ao artigo, deixe seu comentário abaixo, e aproveite para visitar e se inscrever em nosso Canal no YouTube.

Downloads

 

2 thoughts on “Relógio RS-232 / PIC

  1. boa noite
    vc faz este timer pra vender? E tem como fazer este timer pra programar via bluetooth, ou seja, alterar a programacao de acordo com as condicoes climaticas.. pra hidroponia?
    grato

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *