TACO-BIKE - Um "tacógrafo" para bicicletas



Durante as férias de Julho, meus filhos costumam "pedalar" em um parque próximo de casa. No retorno de um destes passeios meu filho mais novo me fez algumas perguntas:

  • "Papai, qual a velocidade máxima que eu consigo alcançar com minha bike?!"
  • "Quanto tempo eu pedalei?!?"
  • "Qual a distância eu percorri?!?"

Pensando nisso, resolvi mostrar a ele que era possível desenvolver um pequeno circuito que lhe daria estas respostas. Você pode até pensar: "Isso tem pronto em uma bicicletaria!!" ou ainda "tem app no celular que faz isso!". É tem tudo isso sim, mas ai eu pergunto: "Qual a graça?!?". Criar/montar sua própria solução é bem mais divertido e de quebra, no meu caso, eu ainda tive a companhia do meu filho que aprendeu algumas coisas que com certeza, ficarão com ele pr muito tempo!


INTRODUÇÃO

O taco-bike tem alguns recursos interessantes e bem simples:

  • medir a velocidade da bicicleta
  • medir a distância total percorrida
  • medir o tempo total de pedalada

Tudo isso apresentado em um display de LEDs com 3 dígitos! Ele ainda possui uma chave de "PAUSA" que permite parar a contagem do tempo e as outras medidas enquanto o "filhão" descansa, recarrega as "energias" ou bate aquele papo com os amigos.

O CIRCUITO



O circuito pode ser visto na figura acima. U1 é o microcontrolador AT89C2051 da Atmel que tem as seguintes características:
  • Compatível com a linha MCS®-51;
  • 2K Bytes de memória Flash reprogramável;
  • Resistência a 10.000 ciclos de gravação/apagamento;
  • Faixa de operação de 2,7 V a 6 V;
  • Clock até 24 MHz;
  • Bloqueio de memória de programa com dois níveis;
  • RAM interna de 128 x 8 bits; 15 linhas de E/S;
  • Dois temporizadores/contadores de 16 bits;
  • Seis fontes de interrupção;
  • UART para comunicação RS-232;
  • Saídas com capacidade para acionamento de LEDs;
  • Comparador analógico; Modos Low-power Idle e Power-down;
  • Encapsulamento DIP ou SOIC 20 pinos;

Esse "carinha" fez sucesso há alguns anos atrás e até hoje pode ser encontrado em alguns projetos atuais!

DISP1 a DISP3 são displays de 7 segmentos com anodo comum modelo A-551UB. As linhas "a, b, c, d, e, f, g e p" foram ligadas ao PORT P1 do microcontrolador através dos resistores limitadores de corrente R4 a R11 de 470R. Os anodos foram conectados de maneira independente ao microcontrolador através dos transistores Q1 a Q3. Observando o circuito você poderá notar que estou utilizando o método da varredura no controle dos displays. Para mostrar um valor de 0 a 9 no display 1, por exemplo, basta colocar o byte correspondente ao número desejado (dentro de uma matriz no programa) no PORT P1 e colocar o transistor Q1 em saturação através do pino P3.7 do microcontrolador. Fazendo isso de uma forma rápida podemos "varrer" todos os 3 displays cada qual com seu valor até que voltamos ao ponto inicial. Devido a "persistência retiniana" o usuário não percebe essa varredura e o que ele vê são todos os digitos apresentados no "display".

Os pinos do microcontrolador P3.0 e P3.3 são as "entradas" para o controle do taco-bike (PAUSA e MUDA), respectivamente. R17 e R18 são resistores de pull-up para as portas de entrada. O resistor R12 em conjunto com o capacitor eletrolítico C4 formam o circuito de reset do microcontrolador. X1 e os capacitores cerâmicos C2 e C3 foram o "circuito de clock" para o microcontrolador que opera a 12MHz. R21 e R22 são resistores de pull-up para os pinos P1.0 e P1.1 que não possuem resistores de pull-up internos.

A entrada do para que sejam realizadas as medidas é feita através de U2, um amplificador operacional duplo (apenas um é utilizado) configurado como comparador. O sensor do tipo reed switch é ligado ao pino 3 (entrada positiva) e o pino 2 recebe um divisor de tensão por 2. Sempre que a tensão aplicada a entrada positiva for maior que a tensão aplicada a entrada negativa temos na saída o valor de VCC, e vice-versa. Note que temos na entrada positiva um resistor de pull-up que garante VCC a essa entrada. Quando o reed switch fechar, teremos nessa entrada GND e consequentemente na saída GND também, e um pulso é enviado ao microcontrolador através da entrada P3.2. A presença de um comparador nesse caso pode parecer estranha, mas o mesmo evita que pulsos muito pequenos disparem o contador no microcontrolador já que o a saída de U2 só vai a GND quando a tensão no pino 3 cair abaixo de 2,5V e só volta a subir quando essa tensão voltar a ser maior que 2,5V.

A fonte é simples e utiliza um regulador de tensão LM317 configurado para uma saída 5VDC (REG1) através dos resistores R19 e R20. D1 protege o circuito contra uma possível inversão da bateria. O capacitor C5 é utilizado como filtro. A bateria utilizada é de 9V, mas pilhas do tipo recarregáveis como 18650 (2x) também podem ser utilizadas.


A MONTAGEM



Na figura acima você pode ver uma imagem com o início do projeto numa protoboard. Costumo usar muito essa ferramenta na bancada, antes de prosseguir para um protótipo.



Para essa montagem eu dividi o circuito em duas placas: uma para instalar os displays e outra para o restante do circuito (figura acima). Para a montagem dos displays eu optei por utilizar uma placa padrão usando a "técnica do wire warpping" (figura abaixo). Abaixo você também pode ver as placas "unidas".



O PROGRAMA/FUNCIONAMENTO


O programa foi desenvolvido utilizando o compilador SDCC, outro carinha das antigas. Usei bastante esse compilador e recomendo para microcontroladores e microprocessadores mais antigos.

Não pretendo entrar em detalhes sobre o mesmo aqui, mas vou esclarecer um pouco sobre o funcionamento geral do taco-bike

A função principal "main" configura o microcontrolador (pinos de I/O, interrupção externa para o sensor e timers). Em seu laço principal ela distribui os valores para cada display e em seguida liga cada uma das colunas, uma por vez fazendo isso a cada 5ms aproximadamente. Dentro da função "main" também é verificado se o usuário deseja colocar o taco-bike em modo "espera" (PAUSA) ou se deseja trocar o dado visualizado no display (velocidade, distância percorrida ou tempo pedalando). A interrupção externa é a responsável por disparar e parar o timer. Dessa forma é possível contar quanto tempo o sensor levou para dar uma volta completa na roda e usando a velha fórmula:

Velocidade = Espaço / tempo

é possível saber a velocidade. E para utilizar esse circuito é preciso saber também o "comprimento da circunferência" da roda da bike. Para isso basta fazer:

Comprimento da circunferência = 2 * ¶ * raio (considerando o pneu também!)

Uma característica interessante nos cálculos é que eu não usei variáveis do tipo "float" no programa. Isso porque elas consomem muita memória e processamento. Como o microcontrolador possui só 2kBytes de espaço para programa e apenas 128Bytes de RAM, todo cuidado é pouco. Dessa forma preferi usar valores "inteiros" e a partir deles obter as casas decimais "manualmente".

Você deve ter notado que se temos o comprimento da circunferência, cada volta representa uma "distância percorrida" exatamente do tamanho do seu comprimento, certo?!? E sendo assim basta ir somando a cada volta o valor desse comprimento para se obter a distância total percorrida. O tempo de pedalada foi obtido através do timer. Basta ir somando o tempo das interrupções do mesmo para se obter o tempo total de pedalada.


A CAIXA



Eu poderia ter optado por uma caixa comercial para alojar o circuito. Mas confesso que desde a "chegada" da minha impressora 3D eu nunca mais comprei uma caixa. Desenhei a minha utilizando o FreeCad e os arquivos para impressão estão no meu perfil no Thingiverse.


CONCLUSÃO

Utilizando um "velho" microcontrolador foi possível desenvolver um circuito considerado atual. Utilizar velhas tecnologias pode parecer estranho, mas é bastante interessante do ponto de vista da aprendizagem já que mantém a mente "aberta" a um passado não muito distante, mas que pode a qualquer momento aparecer na sua frente na forma de uma "atualização de projeto" ou ainda num pedido de "alteração/implementação simples" em um projeto que ainda utiliza algum tipo de tecnologia mais antiga. Mantenha sua mente aberta para o novo e para o "velho" também! Bons estudos e sucesso em suas montagens!!!

Downloads:
- Pacote com programa - compilador SDCC (Arquivo Zip)

 



Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.