instrumentaÇÃo eletrÔnica de exercitador manual … · 2017. 12. 13. · faculdade de engenharia...

63
1 PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09 de dezembro de 2017. Autor: Lineker Schossler da Silva Pontifícia Universidade Católica do Rio Grande do Sul Curso de Engenharia Elétrica Av. Ipiranga 6681, - Prédio 30 - CEP: 90619-900 - Porto Alegre - RS - Brasil Email: [email protected] Orientador: Prof. Júlio César Marques de Lima Pontifícia Universidade Católica do Rio Grande do Sul Av. Ipiranga 6681, - Prédio 30 - CEP: 90619-900 - Porto Alegre - RS- Brasil Email: [email protected] RESUMO O tema deste Trabalho de Conclusão de Curso (TCC) é a instrumentação eletrônica de um exercitador manual, também chamado de Handgrip. O objetivo deste trabalho é tornar possível o monitoramento e registro de todos os dados úteis durante a execução de atividades de preensão manual por diversos usuários. Para tal, foram aplicados métodos como a adaptação de sensores ao equipamento e desenvolvimento de circuitos elétricos de alimentação, processamento, comunicação e registro em memória dos dados coletados. Como resultado, o monitoramento e armazenamento das atividades realizadas com o Handgrip foi efetivo. Conclui-se que é viável instrumentar eletrônicamente o equipamento e gerar relatórios individuais de desempenho, uma vez que as informações coletadas são válidas e importantes para o acompanhamento do paciente e avaliação da efetividade da terapia. Palavras-chave: handgrip. instrumentação. monitoramento. registro.

Upload: others

Post on 14-Dec-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

1

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL

FACULDADE DE ENGENHARIA

INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL

(HANDGRIP)

Porto Alegre, 09 de dezembro de 2017.

Autor: Lineker Schossler da Silva

Pontifícia Universidade Católica do Rio Grande do Sul

Curso de Engenharia Elétrica

Av. Ipiranga 6681, - Prédio 30 - CEP: 90619-900 - Porto Alegre - RS - Brasil

Email: [email protected]

Orientador: Prof. Júlio César Marques de Lima

Pontifícia Universidade Católica do Rio Grande do Sul

Av. Ipiranga 6681, - Prédio 30 - CEP: 90619-900 - Porto Alegre - RS- Brasil

Email: [email protected]

RESUMO

O tema deste Trabalho de Conclusão de Curso (TCC) é a instrumentação eletrônica

de um exercitador manual, também chamado de Handgrip. O objetivo deste trabalho é

tornar possível o monitoramento e registro de todos os dados úteis durante a execução de

atividades de preensão manual por diversos usuários. Para tal, foram aplicados métodos

como a adaptação de sensores ao equipamento e desenvolvimento de circuitos elétricos de

alimentação, processamento, comunicação e registro em memória dos dados coletados.

Como resultado, o monitoramento e armazenamento das atividades realizadas com o

Handgrip foi efetivo. Conclui-se que é viável instrumentar eletrônicamente o equipamento e

gerar relatórios individuais de desempenho, uma vez que as informações coletadas são

válidas e importantes para o acompanhamento do paciente e avaliação da efetividade da

terapia.

Palavras-chave: handgrip. instrumentação. monitoramento. registro.

Page 2: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

2

ABSTRACT

The subject of this Term paper is electronic instrumentation of manual exerciser, also

called Handgrip. The objective of this paper is to make it possible to monitor and record all

useful data during the execution of manual gripping activities by several users. To do so,

some methods were applied such as the adaptation of sensors to the equipment and the

development of electrical circuits for supply, processing, communication and collected data

storage in memory. As a result, the monitoring and storaging of activities performed with

the Handgrip was effective. It has been concluded that it is feasible to electronically

instrument the equipment and generate individual performance reports, since the

information collected is valid and important for the follow-up of the patient and evaluation

of the effectiveness of the therapy..

Key-words: handgrip, instrumentation. monitoring. storage.

1 INTRODUÇÃO

É possível observar um crescimento exponencial de novas tecnologias atualmente, o

que proporciona à sociedade inúmeros benefícios. Consequentemente, diversas áreas do

conhecimento usufruem cada vez mais de artifícios tecnológicos para o seu próprio

aprimoramento. Tal fato abre portas para o desenvolvimento da Engenharia em setores como

o da Biomedicina.

O objeto da pesquisa deste TCC consiste na instrumentação eletrônica de um

equipamento utilizado na área biomédica em atividades fisioterápicas. Este instrumento,

conhecido como exercitador manual, ou Handgrip, proporciona ao usuário exercícios físicos

de preensão manual. A adaptação desse equipamento envolve a utilização de diferentes

tecnologias de sensoriamento e alimentação elétrica para os circuitos elétricos implementados,

além de um processamento das informações coletadas durante o ato do exercício físico e seu

posterior armazenamento.

A necessidade de realizar esse artigo surge de uma demanda do setor de Fisioterapia

da Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS). Pacientes que realizam

terapia de reposição renal através de Hemodiálise (HD) têm, em exercícios com o Handgrip,

um treinamento de reabilitação eficaz da musculatura do antebraço.

Para que os resultados esperados com esse modelo de atividade física sejam atingidos,

é importante manter um acompanhamento da carga aplicada e da frequência que o

equipamento é utilizado. Como o equipamento atual apresenta apenas uma configuração

mecânica sem nenhum monitoramento interno, é difícil controlar a sua utilização. Tal fato

Page 3: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

3

justifica a necessidade de uma instrumentação aprimorada do exercitador manual,

principalmente quando utilizado por diversos usuários.

A instrumentação eletrônica do Handgrip tem como objetivos principais o

monitoramento, processamento, e registro de informações úteis durante a execução da

atividade de preensão manual. Tais informações incluem a carga utilizada e o volume de

treinamento, bem como sua eficácia. O sistema implementado também deve manter a

autonomia e mobilidade do instrumento, possuir uma interface simples de operação, além de

proporcionar conectividade com o usuário e/ou instrutor, por meio de comunicação em rede

sem fio Bluetooth. Tais requisitos configuram o nível de sistemas do projeto.

O foco deste estudo está na adaptação do instrumento às tecnologias de sensoriamento

e processamento necessárias, além do desenvolvimento de circuito elétrico e programação de

Firmware (FW) que sustentem essas funcionalidades propostas. Tais requisitos abrangem

principalmente a área eletrônica, mecânica e de sistemas embarcados.

Page 4: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

4

2 REFERENCIAL TEÓRICO

Neste capítulo, é apresentado as referências teóricas utilizadas como base para a

execução deste estudo. Os tópicos a seguir referem-se a todos os aspectos técnicos necessários

para sustentar o desenvolvimento da metodologia e encontro com os objetivos finais do

trabalho.

2.1 Exercitadores manuais

É possível relacionar os benefícios de exercícios manuais na maturação de vasos

sanguíneos e na recuperação após o procedimento cirúrgico na fístula arteriovenosa (FAV).

Tal procedimento é requerido para a realização de HD em pessoas que sofrem da Doença

Renal Crônica (DRC). É importante destacar que a taxa de mortalidade após a cirurgia da

FAV diminui com o tratamento através desse modelo de exercício. Exercícios com o

Handgrip aumentam o dimensionamento da veia cefálica e também o volume de fluxo

sanguíneo (KONG S, LEE KS, KIM J, JANG SH, 2014).

Pacientes que são submetidos a HD apresentam, como um dos principais efeitos

colaterais, sintomas ligados a anemia. A anemia também pode ser considerada capaz de afetar

a força muscular e de preensão manual. É possível inferir, através destes dados, que a

medição dessa força pode ser utilizada como parâmetro na classificação do estado nutricional

(PEDRUZZI, L. M. ET.AL, 2012).

2.2 Extensômetro de resistência elétrica

O princípio básico de funcionamento está na utilização de pequenas tiras de liga

resistiva (ex.: Cobre-Níquel) adesivamente ligadas a uma estrutura para medir sua tensão

superficial. Por possuir alta precisão e sensibilidade, combinado com um baixo custo e

aplicações em diferentes faixas de temperatura, o extensômetro de resistência elétrica é uma

das ferramentas mais utilizada no campo de análise de estresse de materiais. Sua primeira

utilização data da década de 1930, nos Estados Unidos da América.

Todo material condutivo apresenta uma relativa variação em sua resistência elétrica de

acordo com variações em seu comprimento. Logo, existe uma sensibilidade a tensão do

material conforme ele é deformado de forma elástica. Essa resistência elétrica do material é

encontrada pela equação 1:

Page 5: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

5

𝑅 = 𝜌. 𝑙/𝐴 (Equação 1)

Onde:

R = resistência; l = comprimento; A = área transversal e ρ = resistividade.

A sensibilidade à deformação pode ser expressa como indicado na equação 2:

𝐹 = 𝛥𝑅

𝑅.

𝑙

𝛥𝑙 (Equação 2)

Onde:

F = sensibilidade à deformação; R = resistência inicial; 𝛥𝑅 = variação na resistência;

l = comprimento inicial e 𝛥𝑙 = variação do comprimento.

Para que o extensômetro proporcione um desempenho satisfatório, é importante que o

material não possua uma resistência elétrica muito baixa, usualmente 350Ω. Por limitações

práticas, o comprimento necessário para que a tira condutora do extensômetro assuma uma

resistência significativa geralmente é maior que o comprimento que se deseja medir na

estrutura (A.L.WINDOW, G.S.HOLIESTER, 1982). Para contornar essa limitação, o

extensômetro é constituído em forma de uma grade formada pela mesma tira, como mostra a

figura 1:

Fonte: A.L.WINDOW, G.S.HOLIESTER [1982]

Embora apresente comportamento linear e alta sensibilidade, a tensão medida com

extensômetros é, geralmente, muito pequena. Isso faz com que as alterações de resistência do

material não possam ser aferidas diretamente. Para encontrar uma medição satisfatória, é

necessário implementar um sistema de medição em algumas etapas, como ilustrado na figura

2:

Figura 1- Extensômetro de resistência elétrica

Page 6: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

6

Fonte: KARL HOFFMANN [1987]

O extensômetro deve ser conectado a uma ponte de Wheatstone, que traduz a variação

na resistência pela deformação mecânica em uma variação de tensão elétrica, referenciada a

uma fonte de energia externa. Esse sinal elétrico deve ser amplificado por um circuito

amplificador para que então, possua amplitude suficiente para medição. Por fim, essa medição

pode ser lida de diversas formas, digital e analogicamente (KARL HOFFMANN, 1987).

2.3 Ponte de Wheatstone

Circuito em ponte criado pelo físico inglês Sir Charles Wheatstone, em 1843, para a

medição de resistências elétricas. Basicamente, uma ponte é criada utilizando resistências

elétricas de valores conhecidos ligadas a uma resistência desconhecida, como mostra a figura

3. Na entrada desse circuito, é aplicada uma tensão elétrica conhecida, e sua variação na saída

é diretamente relacionada com o valor da resistência que se pretende determinar (KARL

HOFFMANN, 1986).

Figura 2 - Processo de medição de extensômetro

Page 7: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

7

Fonte: KARL HOFFMANN [1986]

Por traduzir uma variação de resistência em tensão elétrica, o circuito de ponte de

Wheatstone é comumente utilizado na leitura de extensômetros, onde é possível relacionar a

tensão de saída em função da deformação, como mostrado na equação 3:

𝑈𝐴 = 𝐾.Ɛ.𝑁.𝑈𝐸

4 (Equação 3)

Onde:

UA = tensão de saída; UE = tensão de entrada; K = fator gauge; Ɛ = deformação; N =

número braços ativos da ponte (A.L.WINDOW, G.S.HOLIESTER, 1982).

2.4 Amplificador

Em circuitos eletrônicos, muitas vezes o sinal gerado por transdutores possui uma

amplitude e/ou potência muito baixa, necessitando a sua amplificação antes de ser

transmitidos ou analisados de forma digital ou analógica (ERNEST O. DOEBELIN, 1983).

Fonte: ERNEST O. DOEBELIN [1983]

Amplificadores de pequeno sinal são projetados para amplificar esses sinais, em geral

menores que 1V, melhorando a relação sinal/ruído. Uma característica importante dos

amplificadores é o chamado ganho, ou seja, o quanto o sinal de entrada é amplificado. O

Figura 4 - Amplificador

Figura 3 - Ponte de Wheatstone

Page 8: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

8

ganho pode ser calculado como a relação entre a tensão de entrada com a tensão de saída,

corrente de entrada em relação a corrente de saída, ou a relação entre a potência de entrada

com a potência de saída do circuito, como indicado nas equações 4, 5 e 6:

Ganho de tensão: 𝐴𝑣 = 𝑉𝑜𝑢𝑡

𝑉𝑖𝑛 (Equação 4)

Ganho de corrente: 𝐴𝑖 = 𝐼𝑜𝑢𝑡

𝐼𝑖𝑛 (Equação 5)

Ganho de potência: 𝑃𝑣 = 𝑃𝑜𝑢𝑡

𝑃𝑖𝑛 (Equação 6)

(MIKE TOOLEY, 2006)

2.5 Microcontrolador

Sistema constituído por um Hardware (HW) controlado por um Software (SW). Trata-

se de um computador de único chip (ver figura 5), consistindo em CPU, memória RAM e

memória ROM, que geralmente estão conectados a periféricos internos, como osciladores,

conversores analógico/digital (A/D) e digital/analógico (D/A), timers, etc. Esses componentes

básicos são interligados por barramentos (conexão de múltiplas vias), cujas funções são as

seguintes:

Barramento de endereço: para localizações de memória;

Barramento de dados: para transferência de dados entre dispositivos;

Barramento de controle: para a conexão de sinais de temporização e controle para o

sistema.

Page 9: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

9

Figura 5 - Arquitetura de microcontrolador

Fonte: MIKE TOOLEY [2006]

Todo o sistema se baseia em linguagem binária, onde cada bit de dado apresenta

estado lógico 0 (baixo) ou 1 (alto). Sua função primária é executar instruções residentes na

memória, através de uma sequência contínua de busca e execução de instrução. Cada ciclo de

operação da CPU do microcontrolador é conhecido como ciclo de máquina. Uma instrução do

programa pode requerer diversos ciclos, executados com frequência de acordo com sua base

de tempo, determinada por um relógio (oscilador). (MIKE TOOLEY, 2006)

2.6 Sensor de efeito Hall

O efeito Hall foi descoberto em 1879 pelo Dr. Edwin Herbert Hall e consiste no

surgimento de uma diferença de potencial elétrico causada por um campo eletromagnético

incidente em um condutor. Tal efeito é amplamente utilizado na aplicação de sensores, na

identificação de presença de objetos ou sua posição. Sensores magnéticos, como também são

conhecidos, são ideais para esse tipo de aplicação, pois não são significantemente afetados por

materiais não magnéticos. Além disso, campos magnéticos de grande intensidade são

incomuns na natureza, geralmente causados pelo homem, o que diminui a probabilidade de

interferência (EDWARD RAMSDEN, 2006).

Page 10: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

10

3 METODOLOGIA

Para o desenvolvimento deste TCC, foi seguido um planejamento base para organizar

as etapas a serem executadas e proporcionar uma análise contínua durante a realização do

projeto. A figura 6 ilustra essas etapas:

Fonte: AUTORAL [2017]

Validação da instrumentação eletrônica do Handgrip

Integração entre HW do Handgrip e SW de aplicação externa

Desenvolvimento de SW para aplicação externa de troca de dados

Desenvolvimento de FW para o microprocessador

Validação do HW da PCI

Desenvolvimento da Placa de Circuito Impresso (PCI)

Validação dos sensores

Desenvolvimento do circuito elétrico e definição dos componentes

Definição da comunicação disponível no dispositivo

Definição da interface com o usuário

Definição dos métodos de sensoriamento

Definição de requisitos de HW para o projeto

Figura 6 - Etapas da Metodologia

Page 11: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

11

3.1 Definição de requisitos de HW para o projeto

Como primeiro passo, deve-se identificar quais são os requisitos de HW que o projeto

deve possuir. Isso é definido através da análise dos requisitos em nível de sistemas e quais são

os atributos necessários ao equipamento para atingi-los de forma satisfatória. Esses seriam os

requisitos fundamentais para dar continuidade ao desenvolvimento das próximas etapas.

3.2 Definição dos métodos de sensoriamento

Devem-se definir quais métodos de sensoriamento serão utilizados para garantir as

funcionalidades desejadas. Como existem diversos modelos de transdutores que se aplicam

aos requisitos, deve-se encontrar aqueles com melhor viabilidade, levando em consideração

fatores como a adaptação na estrutura do equipamento e parâmetros elétricos de alimentação e

interpretação dos sinais.

3.3 Definição da interface com o usuário

É importante definir maneiras de o usuário final interagir com o Handgrip e ser capaz

de utilizar as novas funcionalidades implementadas após sua instrumentação. Para isso, é

necessária a criação de uma interface simples, intuitiva e objetiva, por meio na qual o usuário

poderá acessar todas as informações pertinentes e estar apto a atuar nas configurações

requeridas para a utilização dos recursos inseridos.

3.4 Definição da comunicação disponível no dispositivo

Deve-se definir qual padrão de comunicação deve ser utilizado para que o dispositivo

troque dados com dispositivos externos, de acordo com suas funcionalidades previamente

definidas. Leva-se em consideração o formato dos dados transmitidos, os componentes

eletrônicos necessários e seus parâmetros elétricos, além da compatibilidade com os

dispositivos que se deseja comunicar.

3.5 Desenvolvimento do circuito elétrico e definição dos componentes

Para a implementação de todas as funcionalidades desejadas na instrumentação do

Handgrip, é necessário definir e listar todos os componentes que serão necessários para o

desenvolvimento da parte eletroeletrônica do projeto. O circuito elétrico deve, então, ser

projetado paralelamente com base nos recursos necessários e no material disponível, tornando

Page 12: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

12

possível o dimensionando dos componentes específicos para a alimentação, processamento,

comunicação e memória do dispositivo.

3.6 Validação dos sensores

É de grande importância validar o bom funcionamento dos sensores escolhidos

previamente por meio de testes práticos. Antes da montagem de todo o circuito elétrico

projetado na etapa anterior, é necessário desenvolver um circuito básico para testar e validar o

sensoriamento do Handgrip.

Para tal, instalam-se os sensores na maneira idealizada e realizam-se testes de medição e

desempenho para verificar o correto processo de leitura e variação dos dados fornecidos. Caso

algum sensor não se comporte como o esperado, podem-se testar alternativas nessa etapa,

definindo novos componentes e atualizando o circuito elétrico.

3.7 Desenvolvimento da PCI

Terminados a validação dos sensores e finalização do circuito elétrico completo, deve-

se traduzir esse circuito em um layout de PCI. Observam-se, para este fim, os níveis de

corrente elétrica e frequência de operação dos componentes utilizados, para que não ocorra

mal dimensionamento de trilhas, evitando problemas no desempenho do circuito.

Após o layout, a PCI deve ser confeccionada juntamente com a soldagem de todos os

componentes elétricos que a compõem, definidos pelo circuito desenvolvido nas etapas

anteriores. Todos os passos dessa etapa são cruciais para evitar retrabalhos e problemas na

validação do próximo item.

3.8 Validação do HW da PCI

Com a PCI pronta, devem ser iniciados os processos de validação do circuito

desenvolvido e da integridade do HW como um todo. A PCI só deve ser alimentada com

tensão elétrica após a verificação das principais conexões do circuito, evitando possíveis

curtos-circuitos que possam danificar os componentes. Após essa verificação, já com a PCI

alimentada, todas as partes do circuito devem ser verificadas e testadas, validando seu estado

de operação.

Page 13: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

13

3.9 Desenvolvimento de FW para o microprocessador

Com todo o circuito pronto e validado, se deve desenvolver a programação, em

linguagem C, do FW e inseri-lo no microprocessador da PCI. Esse programa controlará todo o

comportamento do circuito, uma vez que o microprocessador deve gerenciar todas as

operações necessárias. Seja na coleta de dados dos sensores, no registro das atividades dos

usuários com o Handgrip ou na troca de dados com dispositivos externos, o FW do

microprocessador deve ser responsável por monitorar e solicitar cada tarefa.

3.10 Desenvolvimento de SW para aplicação externa de troca de dados

Deve-se desenvolver um SW em uma aplicação externa que contemple a funcionalidade

de troca de dados com o Handgrip. Esse tráfego de informações ocorrerá por meio de um

padrão de comunicação previamente estabelecido, identificando os usuários e

disponibilizando os registros de suas atividades com o equipamento. Essa aplicação também

deve ser considerada como parte da interface entre o usuário e o Handgrip.

3.11 Integração entre HW do Handgrip e SW de aplicação externa

Para todas as funcionalidades propostas, é necessário que o Handgrip esteja apto a

realizar a troca de dados de forma satisfatória com a aplicação externa, previamente definida.

Para isso, deve-se verificar a estrutura de comunicação entre os dispositivos e testar sua

eficiência, integrando as duas partes. Nesta etapa, serão feitos os ajustes finais para que haja

sincronia na transmissão e recepção de dados.

3.12 Validação da instrumentação eletrônica do Handgrip

Após todas as etapas de desenvolvimento anterior serem concluídas, é necessário validar

o sistema embarcado e todos seus requisitos. Para isso, devem ser realizados diversos testes

com todos os recursos operando normalmente, coletando dados de exercícios com diversos

usuários, intensidade de força e frequência de repetição. Todos esses dados devem ser

armazenados para a análise dos resultados obtidos com a instrumentação eletrônica do

Handgrip.

Page 14: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

14

4 APLICAÇÃO DA METODOLOGIA PROPOSTA

Após a metodologia ter sido definida, foi necessária a aplicação de cada etapa do projeto

e registro dos resultados obtidos durante seu desenvolvimento. Juntamente com estes

resultados, estão descritos neste capítulo todos os passos e decisões tomadas em cada etapa,

além das ferramentas utilizadas.

4.1 Definição de requisitos de HW para o projeto

Para a instrumentação eletrônica do Handgrip, foram considerados os seguintes

requisitos em nível de sistemas:

Leitura do nível de carga utilizado nos exercícios

Contabilização da quantidade de movimentos realizados (efetivos)

Registro individual das atividades para diversos usuários

Autonomia e mobilidade do equipamento

Interface de simples acesso e operação

Conectividade por rede de comunicação sem fio Bluetooth

Para suportar esses recursos, foi realizada uma breve análise do que o equipamento

necessitaria. Os seguintes requisitos de HW foram definidos, possibilitando integrar as

funcionalidades do sistema ao Handgrip:

1. O nível de carga aplicado e a indicação de movimento finalizado devem ser

indicados por sensores instalados diretamente no exercitador manual.

2. Todo registro de exercício no Handgrip deve ser armazenado em um Circuito

Integrado (CI) de memória dedicado a esse propósito.

3. O equipamento deve possuir uma base de tempo que garanta o registro de data e

horário na memória.

4. Toda a alimentação elétrica do dispositivo deve ser feita por meio de uma bateria

que forneça a tensão e corrente elétrica necessárias por tempo adequado,

propiciando autonomia e mobilidade ao sistema.

5. Um circuito carregador de bateria deve ser adotado.

6. A interface entre usuário e sistema de monitoramento deve ser feita diretamente no

equipamento ou através de aplicação móvel em rede sem fio.

7. A interface entre usuário e sistema de registradores deve ser feita somente por

aplicação móvel em rede sem fio.

Page 15: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

15

8. O equipamento deve possuir um módulo integrado dedicado a comunicação em rede

sem fio, responsável por criar a conexão e manter a troca de dados com outro

dispositivo e aplicação compatíveis.

9. O equipamento deve possuir uma unidade de processamento embarcado compatível

com todos os recursos necessários e que faça o gerenciamento de todas as operações

que envolvam o monitoramento e registro das atividades com o Handgrip, além da

interface com o usuário.

4.2 Definição dos métodos de sensoriamento

Para realizar a leitura do nível de carga aplicado e indicação de movimento finalizado,

foram fixados sensores diretamente na estrutura do Handgrip. Os métodos de sensoriamento

adotados para tais leituras foram extensômetros de resistência elétrica e sensor de efeito Hall,

respectivamente.

4.2.1 Sensoriamento da carga aplicada

O equipamento possui um sistema manual que permite regular a carga do exercício.

Esse ajuste acontece por meio de um fuso mecânico, alterando a inclinação da mola que

proporciona o movimento, como identificado nas figuras 7 e 8. Para o registro das atividades

com o Handgrip, foi necessário que este nível de carga aplicada fosse medido.

Fonte: AUTORAL [2017]

Figura 7 - Handgrip configurado para carga mínima

Ajuste da

carga

Page 16: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

16

Fonte: AUTORAL [2017]

O método utilizado foi a instalação de dois extensômetros para uma variação maior de

resistência. Estes foram fixados na estrutura que sustenta a mola, a fim de sofrerem

deformações elásticas proporcionais a carga aplicada, como indicado nas figuras 9 e 10.

Fonte: AUTORAL [2017]

Fonte: AUTORAL [2017]

Figura 8 - Handgrip configurado para carga máxima

Figura 9 - Extensômetro superior

Figura 10 - Extensômetro inferior

Page 17: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

17

Dessa forma, o nível de força mecânica aplicada durante o exercício pôde ser

convertido em níveis de resistência elétrica. Para utilizar essa variação na resistência dos

extensômetros, foi desenvolvido um circuito elétrico em ponte de Wheatstone, que transforma

essa variação de força em níveis proporcionais de tensão elétrica. Contudo, a tensão gerada

situa-se na faixa dos milivolts [mV], necessitando a utilização de um amplificador de sinal.

Para este fim, foi utilizado o CI HX710, da fabricante Avia Semiconductor (Xiamen), capaz de

amplificar a tensão com um ganho de 128 vezes, além de converter esse sinal analógico em

digital, com resolução de 24 bits. A figura 11 ilustra o circuito elétrico aplicado.

Fonte: EAGLE 7.5.0 LIGHT EDITION [2017]

4.2.2 Indicação de movimento finalizado

É fundamental, para a instrumentação eficaz do Handgrip, que seja possível determinar

a quantidade de exercícios que o usuário realiza (efetivamente). Para isso, foi necessário um

método de sensoriamento que indicasse o fim de cada movimento válido.

A alternativa adotada foi o uso de um sensor de efeito Hall, fixado em uma das hastes

do equipamento, ver figura 12. Na haste oposta, foi fixado um imã permanente, indicado na

figura 13. Toda vez que as hastes se encontrem, o imã induz um campo magnético ao redor do

sensor, intenso suficiente para o sensor detectar sua presença. Esse encontro das hastes indica

um movimento finalizado.

Figura 11- Circuito elétrico para leitura de carga

Page 18: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

18

Fonte: AUTORAL [2017]

Fonte: AUTORAL [2017]

O sensor de efeito Hall utilizado foi o CI modelo A3144, da fabricante Allegro

MicroSystems®. Alimentado diretamente por uma tensão de 3,3V, a saída do sensor apresenta

nível lógico alto (1) enquanto seu campo magnético não é detectado, ou seja, sem a presença

do imã. Assim que o imã se aproxima do sensor, a saída é alterada para nível lógico baixo (0).

4.3 Definição da interface com o usuário

Para que o usuário do Handgrip utilize as funcionalidades de monitoramento e registro

dos exercícios, foi definida uma Interface Homem Máquina (IHM) para essa nova parte do

equipamento. Para manter uma interface simples e objetiva, foi adotado um sistema de IHM

com apenas um botão e um LCD (Liquid Crystal Display), modelo 1112 da fabricante Nokia,

indicado na figura 14, além de uma chave liga/desliga. Esse display recebe comandos por

protocolo SPI. Complementando esse sistema, também foi definido o desenvolvimento de

uma aplicação móvel para smartphone, como mostra a figura 15, que se comunicará por meio

de uma rede Bluetooth com o Handgrip.

Figura 13 - Imã permanente

Figura 12 - Sensor de efeito Hall

Page 19: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

19

Fonte: AUTORAL [2017]

Figura 15- Aplicação móvel para smartphone

Fonte: MIT APP INVENTOR [2017]

Em ambas as interfaces, o usuário pode escolher seu número de identificação e

monitorar sua atividade em tempo real. Porém, só é possível acessar o registro de atividades

por meio da aplicação móvel, que importa os dados do Handgrip e os armazena no

smartphone para compartilhamento com outras plataformas.

Figura 14 - LCD do Handgrip

Page 20: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

20

4.3.1 Princípios de utilização da interface

Através da chave liga/desliga do equipamento, o usuário deve inicializar o sistema,

ligando a instrumentação do Handgrip. Após isso, é necessário escolher o número do usuário,

clicando múltiplas vezes no botão até que seja seu número o apresentado no LCD. Se for

desejada a utilização da aplicação móvel, o usuário deve conectar seu smartphone ao

equipamento por meio de comunicação sem fio.

Posteriormente, o usuário pode realizar seu exercício, visualizando a quantidade de

repetições para a intensidade da carga que está utilizando. Sua atividade é salva

automaticamente a cada minuto na memória do equipamento. Para exportar seu registro de

atividades, é necessário clicar no botão “Salvar dados” da aplicação móvel. Assim que

finalizar o processo, basta desligar o equipamento por meio da chave liga/desliga.

4.4 Definição da comunicação disponível no dispositivo

A partir da necessidade de uma comunicação entre o equipamento Handgrip com uma

aplicação móvel em smartphone, foi determinada a utilização de uma rede sem fio. Os

requisitos para esta rede foram o baixo consumo de energia, mantendo a autonomia do

equipamento, e o fato de que a comunicação com o smartphone do usuário não requer longas

distâncias.

Considerando tais características, foi adotado o padrão Bluetooth na criação da rede de

comunicação sem fio disponível para troca de dados com o equipamento. Para implementá-lo,

foi utilizado o módulo SPBT3.0DP2, da fabricante STMicroelectronics, indicado na figura 16.

Fonte: STMICROELECTRONICS [2017]

Tal dispositivo é responsável pelo pareamento, transmissão e recepção de dados entre o

equipamento e a aplicação móvel, disponibilizando essas informações e recebendo comandos

Figura 16- Módulo Bluetooth

Page 21: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

21

por meio de uma porta serial assíncrona. Essa porta foi configurada para uma taxa de

transmissão de 19200bps, formando pacotes de 8 bits, sem paridade e com 1 stop bit.

4.5 Desenvolvimento do circuito elétrico e definição dos componentes

Com base em todas as especificações previamente apresentadas, foi projetado um

circuito elétrico que integra todas as funcionalidades do equipamento. Este circuito engloba a

alimentação de todos periféricos, unidade de processamento, métodos de sensoriamento,

comunicação em rede sem fio, interface com o usuário e registro das atividades.

Para o seu desenvolvimento, foi utilizada a ferramenta computacional EAGLE 7.5.0

Light Edition, onde é possível desenhar o circuito e, posteriormente, desenvolver seu layout

de circuito impresso. Os componentes elétricos como capacitores e resistores, salvo em

exceções descritas a seguir, foram dimensionados de acordo com as especificações dos

fabricantes dos demais CIs. O circuito elétrico completo, bem como sua lista de componentes,

pode ser encontrado no anexo 1.

4.5.1 Circuito de alimentação

Para o fornecimento de energia elétrica a toda instrumentação do equipamento, foi

utilizada uma bateria de 4,2V / 1Ah. Também foi instalado um módulo carregador de bateria,

figura 17, com o CI TP4056, da fabricante Top Power ASIC, que possui o circuito indicado na

figura 18.

Fonte: TOP POWER ASIC [2017]

Figura 17- Módulo carregador de bateria

Page 22: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

22

Fonte: Top Power ASIC

Além disso, foi necessária a adição de um regulador de tensão para converter a saída de

4,2V para 3,3V, gerando a tensão correta de operação dos principais componentes do circuito.

Este regulador de tensão é o CI TLV2217-33, da fabricante Texas Instruments.

Para garantir a estabilidade na medição das variações de tensão geradas nos

extensômetros, também foi instalado um regulador de tensão de precisão. Este regulador de

precisão é o CI REF3230, também da fabricante Texas Instruments, que converte a entrada de

3,3V para 3,0V.

Para monitorar o nível de tensão da bateria pela unidade de processamento, foi utilizado

um divisor de tensão, convertendo a tensão da bateria em uma tensão compatível com a

leitura do conversor A/D interno do microprocessador, de 3,3V. A equação 7 demonstra o

cálculo utilizado para encontrar o valor de um dos resistores, uma vez que o resistor ligado ao

terra deveria ser de 10kΩ, para manter um baixo consumo de energia:

𝑉𝑜𝑢𝑡 =𝑅2

𝑅1+𝑅2. 𝑉𝑖𝑛 → 𝑅1 = 2,73𝑘𝛺 (Equação 7)

Onde:

Vout = 3,3V; R2 = 10kΩ; Vin = 4,2V

4.5.2 CI de memória

No processo de registro das atividades para cada usuário do Handgrip, foi utilizado um

CI de memória, modelo M24M02, da fabricante STMicroelectronics. Esse componente

contém 256kBytes de memória, dividida em registradores de 8 bits, suficientes para registrar

Figura 18 - Circuito do carregador de bateria

Page 23: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

23

as atividades de múltiplos usuários em diversas sessões de exercício. Sua comunicação é por

meio do protocolo I2C.

4.5.3 Microprocessador

Como unidade de processamento interna, foi adotada a utilização de um

microprocessador capaz de gerenciar todas as funcionalidades do equipamento. O

componente utilizado foi o CI STM32F030, da fabricante STMicroelectronics. É um

microprocessador com core ARM® 32-bit Cortex® -M0, configurado para uma frequência de

operação de 48MHz. Também foi inserido no circuito um oscilador local de 8MHz, que

fornece uma base de tempo estável ao microprocessador.

4.5.4 Interface de debug

Durante o desenvolvimento do FW e testes com a PCI, foi necessária uma interface de

debug que facilitou o processo. Para isso, foi incluído previamente no circuito elétrico um

botão de reset para o microprocessador e dois LEDs, um vermelho e outro verde, para

sinalizar etapas durante a operação do equipamento.

4.6 Validação dos sensores

Antes de montar o circuito elétrico final, foi decidido realizar testes com os sensores

inseridos no equipamento, a fim de validar seu funcionamento e garantir que esses métodos

seriam eficazes. Para isso, foi montado apenas o circuito base para a leitura dos extensômetros

de resistência elétrica e do sensor de efeito Hall, como já descrito no capítulo 4.2. A figura 19

apresenta o circuito montado.

Fonte: AUTORAL [2017]

Figura 19 - Circuito de validação dos sensores

Page 24: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

24

Para processar as leituras, foi utilizado um kit Arduino, com microcontrolador Atmel

AVR, onde foi implementada uma rotina em FW que cria o protocolo específico de coleta de

dados do conversor A/D HX710, como indicado na figura 20. O código foi criado através da

ferramenta de compilação Arduino, e pode ser encontrado no anexo 2.

Fonte: AVIA SEMICONDUCTOR (XIAMEN) [2017]

Durante os testes, foi possível identificar que o sensor de efeito Hall é afetado apenas

por materiais magnetizados, sinalizando de forma rápida a presença ou não desses materiais.

Os extensômetros apresentaram uma deformação elástica proporcional ao nível da carga

selecionado no equipamento, indicando níveis de variação de tensão para uma interpretação

da atividade. Através de medições com um osciloscópio digital, foi possível validar o

protocolo entre o microcontrolador e o conversor A/D, como indicado na figura 21.

Fonte: AUTORAL [2017]

Figura 21- Leitura do osciloscópio

Figura 20- Protocolo A/D HX710

Page 25: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

25

4.7 Desenvolvimento da PCI

Após a escolha dos componentes e desenvolvimento do circuito elétrico, passando pela

validação dos sensores, foi necessário a confecção de uma PCI para implementar o circuito

completo projetado. Para o desenvolvimento do layout, foi utilizada a ferramenta

computacional EAGLE 7.5.0 Light Edition, a partir dos arquivos do circuito previamente

criado na mesma ferramenta.

Foi optado pela confecção de duas PCIs: uma com a maior parte do circuito, contendo

alimentação, processamento, memória e comunicação; e outra com o circuito que permite a

interface com o usuário, com o botão e LCD. A figura 22 e 23 mostram ambos layouts

finalizados.

Figura 22- Layout da PCI principal

Fonte: AUTORAL [2017]

Page 26: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

26

Fonte: AUTORAL [2017]

Após a etapa de layout estar finalizada, foi necessário confeccionar as PCIs. Para isso,

utilizou-se do método de corrosão para a placa principal. Porém, para a placa de interface, foi

necessário o método de usinagem por fresadora, já que o circuito possui um conector muito

pequeno que requer alta precisão no traçado do circuito impresso. Por fim, todos os

componentes foram soldados às PCIs, de acordo com o layout predefinido. As figuras 24 e 25

mostram as PCIs, principal e de interface, finalizadas.

Fonte: AUTORAL [2017]

Figura 24 - PCI principal

Figura 23 - Layout da PCI de interface

Page 27: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

27

Fonte: AUTORAL [2017]

4.8 Validação do HW da PCI

Com as PCIs montadas e prontas para serem utilizadas, foi importante realizar uma

depuração em todas as partes do circuito, com o intuito de validar as conexões em geral.

Antes de alimentar o circuito com a bateria, todas as conexões críticas que envolvem a

alimentação direta dos componentes foram verificadas através de um ohmimetro digital,

avaliando a existência de curto-circuito.

Com a garantia de que não existiam mais potenciais curtos-circuitos nas PCIs, iniciou-

se os testes com a alimentação da bateria. Primeiramente, foi verificado que todas as tensões

estavam apresentando os níveis desejados. Em seguida, o carregador foi alimentado por uma

fonte externa de 5V e conexão USB, indicando através de seus LEDs de interface que a

bateria estava sendo carregada corretamente.

Figura 25 - PCI de interface

Page 28: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

28

4.9 Desenvolvimento de FW para o microprocessador

Após o HW ser verificado, iniciou-se o desenvolvimento do FW que, posteriormente,

foi carregado para o microprocessador do equipamento, contendo todas as instruções

necessárias para o funcionamento estabelecido nos capítulos anteriores. Para essa tarefa, foi

utilizada, primeiramente, a ferramenta computacional STM32CubeMX, que permitiu a criação

automática de diversas bibliotecas e drivers padrões na configuração do microprocessador. A

figura 26 demonstra sua utilização.

Fonte: STM32Cube V1.0 [2017]

Por meio desta ferramenta, todos os pinos e portas de comunicação foram definidos,

bem como seus parâmetros. Em seguida, foi utilizada a ferramenta computacional Keil

µVision 5 para o desenvolvimento do código de programação em linguagem C. A figura 27

demonstra sua utilização.

Figura 26 - STM32CubeMX

Page 29: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

29

Fonte: Keil µVision 5 [2017]

Nesta etapa, foram implementadas as rotinas que comandam e gerenciam todas as

funcionalidades do equipamento, tais como:

Leitura da carga por meio do CI HX710;

Comunicação Bluetooth entre equipamento e aplicação móvel;

Armazenamento das atividades no CI de memória;

Leitura do sensor de efeito Hall;

Controle do LCD e leitura do botão de interface com o usuário;

Relógio de tempo real para registro de data e hora.

Inicialmente, cada funcionalidade foi desenvolvida e testada individualmente. Após seu

funcionamento estar de acordo com os requisitos, todas as funcionalidades foram reunidas na

mesma rotina, estabelecendo todos os recursos do equipamento. O código principal, com

todas essas funções, pode ser encontrado no anexo 3.

Figura 27 - Programação em linguagem C

Page 30: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

30

4.9.1 Mapeamento da memória

Para o registro de todas as atividades do Handgrip, a memória do equipamento foi

organizada por meio do FW para armazenar até 8 usuários. Cada usuário pode ocupar até

27622 Bytes da memória, onde cada sessão de exercícios com mesma carga ocupa 8 Bytes.

Destes 27622 Bytes, os dois primeiros Bytes sempre armazenam o último endereço

salvo do respectivo usuário, a fim de facilitar a leitura e os próximos registros. Isso resulta

em, no máximo, 3452 registros de atividade por usuário. Cada registro contém as seguintes

informações: Data e hora iniciais, quantidade de repetições, carga aplicada e duração do

exercício.

4.10 Desenvolvimento de SW para aplicação externa de troca de dados

Como definido anteriormente, foi necessário o desenvolvimento de uma aplicação

móvel para smartphone, com o intuito de fornecer uma interface ao usuário para, além de

monitorar os exercícios, também salvar seu registro de atividades. A ferramenta utilizada

nessa etapa foi a plataforma online MIT App Inventor, como indicado na figura 28.

Fonte: MIT App Inventor [2017]

Figura 28 - Aplicação móvel

Page 31: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

31

Tal ferramenta possibilitou o desenvolvimento de um aplicativo móvel para

smartphones com sistema operacional Android, através de uma linguagem de programação

em blocos funcionais. Nela, foi implementada a comunicação Bluetooth com o Handgrip,

apresentando o monitoramento das atividades em tempo real, além de possibilitar a

exportação do histórico de atividades do usuário. É também a partir dessa aplicação que o

equipamento atualiza automaticamente suas configurações de data e hora.

4.10.1 Registro das atividades do usuário

Por meio da aplicação móvel, o usuário pode salvar o histórico de uso do equipamento

em seu smartphone. Tal recurso é realizado pela conversão das informações contidas na

memória do Handgrip em um arquivo de extensão CSV (Comma-separated values). Esse

arquivo é salvo na memória local do smartphone e pode ser compartilhado diretamente pela

aplicação com outras plataformas, como serviços em nuvem, por exemplo. Usualmente, essa

extensão de arquivo é interpretada em forma de tabela, como demonstrado na figura 29.

Fonte: AUTORAL [2017]

4.11 Integração entre HW do Handgrip e SW de aplicação externa

Após o desenvolvimento de todo HW e da aplicação móvel para smartphone, foi

necessário realizar a integração dos dois sistemas, validando sua comunicação e troca de

dados. Para isso, foram feitos testes de funcionalidade do equipamento, sempre conectado a

aplicação móvel.

Durante os testes, foram necessários alguns ajustes, tanto no SW da aplicação como no

FW do microprocessador. Tais ajustes tiveram o intuito de manter uma troca de dados

sincronizada e criar rotinas para a confirmação do recebimento de pacotes enviados via

Bluetooth, o que apresentava erros em casos específicos que não haviam sido previstos

originalmente.

Figura 29- Arquivo CSV

Page 32: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

32

4.12 Validação da instrumentação eletrônica do Handgrip

Como última etapa de desenvolvimento deste projeto, foram realizados testes que

exploraram todas as funcionalidades propostas na instrumentação do Handgrip. Esse processo

foi responsável pela validação do equipamento e possibilitou uma análise final dos resultados

obtidos. O principal teste empregado foi a execução de exercícios com o Handgrip, simulando

todos os oito possíveis usuários, alternando a carga aplicada na atividade entre 10% e 90% da

capacidade do equipamento.

5 CONCLUSÃO

Durante a aplicação da metodologia adotada incialmente no projeto, foi possível

desenvolver a instrumentação eletrônica do Handgrip. Foram definidos requisitos necessários

para que o sistema fosse capaz de monitorar os exercícios realizados com o equipamento e

armazená-los para análise posterior, de forma a facilitar o acompanhamento desse modelo de

atividade fisioterápica.

Os métodos de sensoriamento adotados, através da leitura do nível de carga aplicada e da

indicação de movimento finalizado, foram efetivos durante os testes com o equipamento. Isso

demonstra a validade do método.

Porém, foi identificada a necessidade futura de uma calibração do equipamento para

definir o real valor de força aplicado pelo usuário em relação a posição da mola configurada

pelo fuso mecânico. Para o desenvolvimento deste artigo, os extensômetros aplicados são

utilizados apenas na relação direta com a posição do mola, indicando o nível de carga

proporcional a possível variação do fuso mecânico.

A interface com o usuário, por sua vez, se mostrou simples e objetiva, conforme

planejado. A utilização de uma aplicação móvel foi fundamental para manter a mobilidade do

equipamento, uma vez que é cada vez mais disseminado o uso de smartphones pela

socieadade atual.

A comunicação via Bluetooth entre o equipamento e a aplicação móvel também trouxe

vantagens ao sistema. Um exemplo foi a possibilidade de transferência do registro de

atividades do usuário em rede sem fio, sem a necessidade do smartphone conectado perder

conexão com a internet, possibilitando o compartilhamento dessas informações de forma

simples e rápida.

Page 33: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

33

O fornecimento de energia elétrica ao sistema por meio de uma bateria permitiu que o

equipamento mantivesse sua autonomia e mobilidade, junto com um circuito carregador que

possibilita a recarga da bateria de forma segura. Contudo, é importante ressaltar que não é

possível alimentar o circuito somente com o carregador. É necessário que a bateria esteja

permanentemente conectada junto ao circuito.

Outra característica importante foi a memória interna do equipamento. Com 256kBytes

disponíveis, foi adotado uma configuração de armazenamento de até 8 usuários. Além disso, é

possível armazenar mais de 3400 sessões de exercício por usuário, possibilitando registros

completos da terapia.

Em geral, a instrumentação eletrônica do excercitador manual, também chamado de

Handgrip, teve êxito em relação as funcionalidades incialmente propostas. Embora o sistema

possa passar por aprimoramentos, principalmente na questão de interpretação da carga

aplicada, já é possível, com o sistema atual, criar registros confiáveis sobre as atividades de

cada usuário. Tal fato proporciona uma melhora significativa no acompanhamento do

paciente e avaliação da efetividade da terapia através de exercícios de preensão manual.

6 REFERÊNCIAS

KONG S, LEE KS, KIM J, JANG SH. The effect of two different hand exercises on grip

strength, forearm circumference, and vascular maturation in patients who underwent

arteriovenous fistula surgery. Annals of rehabilitation medicine. 2014.

PEDRUZZI, L. M.; LEAL, V. O.; BARROS, A. F.; LOBO, J. C.; MAFRA, D. Factors

related to handgrip strength in patients undergoing hemodialysis: emphasis on anemia.

Nutrire: rev. Soc. Bras. Alim. Nutr. = J. Brazilian Soc. Food Nutr., São Paulo, SP, abr. 2012.

WINDOW, A.L. and HOLISTER, G.S. Strain Gauge Technology. ed. Elsevier Applied

Science: Inglaterra, 1982. 356 p, il.

HOFFMANN, Karl. An Introduction to Measurements using Strain Gages. ed. Hottinger

Baldwin Messtechnik GmbH: Alemanha, 1987. 257 p, il.

Page 34: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

34

HOFFMANN, Karl. Applying the Wheatstone Bridge Circuit. ed. Hottinger Baldwin

Messtechnik GmbH: Alemanha, 1988. 27 p, il.

DOEBELIN , Ernest O. Measurement Systems: Application and Design. ed. McGraw-Hill :

EUA, 1983, 876 p, il.

TOOLEY, Mike. Electronic Circuits: Fundamentals and Applications. ed. Newnes:

Inglaterra, 2006. 417 p, il.

RAMSDEN, Edward. Hall-Effect Sensors Theory and Applications. ed. Newnes: Inglaterra,

2006. 250 p, il.

Page 35: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

35

ANEXO 1 – Circuito elétrico e lista de componentes

Page 36: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

36

Page 37: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

37

Componente Valor / Modelo

B_1 Push Button

BAT 4,2V / 1Ah

CB1 100nF

CD1 100nF

CE1 100nF

CE2 100nF

CE3 100nF

CM1 100nF

CP1 100nF

CP2 100nF

CP3 100nF

CP4 12pF

CP5 12pF

CR1 470nF

CV1 100nF

CV2 22uF

EXT 350Ω

HALL A3144

HX710 HX710B

IC1 TLV2217-33

LCD1 NOKIA1112

LED_1 Verde

LED_2 Vermelho

P1 1kΩ

Q1 8MHz

R1 2.7kΩ

R2 10kΩ

RB1 10kΩ

RE1 200Ω

RE2 200Ω

RL1 330Ω

RL2 330Ω

RP1 10kΩ

RP2 470Ω

RP3 10Ω

S1 Push Button

U$2 M24M02-DR

U$3 TP4056

U$4 STM32F030K6T6

U1 SPBT2632C2A

U2 REF3230AIDBVT

Page 38: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

38

ANEXO 2 – Código em Arduino para testes

#include "Arduino.h"

#define DOUT 4

#define PD_SCK 5

#define HALL 6

#define S_OUT 7

unsigned long valor;

long carga;

long leitura()

digitalWrite(PD_SCK, LOW);

delayMicroseconds(1);

while (digitalRead(DOUT) == HIGH);

valor = 0;

for (int i = 23; i > -1; i--)

digitalWrite(PD_SCK, HIGH);

delayMicroseconds(1);

digitalWrite(PD_SCK, LOW);

if (digitalRead(DOUT) == HIGH)

bitSet(valor, i);

digitalWrite(PD_SCK, HIGH);

delayMicroseconds(1);

digitalWrite(PD_SCK, LOW);

delayMicroseconds(1);

return valor;

void setup()

Serial.begin(9600);

pinMode(DOUT, INPUT);

pinMode(PD_SCK, OUTPUT);

void loop()

carga = leitura();

float l;

l = round(carga);

delay(200);

Serial.println(l,0);

if (digitalRead(HALL) == LOW)

digitalWrite(S_OUT, HIGH);

else

digitalWrite(S_OUT, LOW);

Page 39: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

39

ANEXO 3 – Código principal em C do FW

/**

***************************************************************************

***

* File Name : main.c

* Description : Main program body

***************************************************************************

***

** This notice applies to any and all portions of this file

* that are not between comment pairs USER CODE BEGIN and

* USER CODE END. Other portions of this file, whether

* inserted by the user or by software development tools

* are owned by their respective copyright owners.

*

* COPYRIGHT(c) 2017 STMicroelectronics

*

* Redistribution and use in source and binary forms, with or without

modification,

* are permitted provided that the following conditions are met:

* 1. Redistributions of source code must retain the above copyright

notice,

* this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright

notice,

* this list of conditions and the following disclaimer in the

documentation

* and/or other materials provided with the distribution.

* 3. Neither the name of STMicroelectronics nor the names of its

contributors

* may be used to endorse or promote products derived from this

software

* without specific prior written permission.

*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS

IS"

* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,

THE

* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

PURPOSE ARE

* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE

LIABLE

* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

CONSEQUENTIAL

* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

OR

* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

HOWEVER

* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

LIABILITY,

* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF

THE USE

* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*

Page 40: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

40

***************************************************************************

***

*/

/* Includes ---------------------------------------------------------------

---*/

#include "main.h"

#include "stm32f0xx_hal.h"

#include "adc.h"

#include "i2c.h"

#include "rtc.h"

#include "usart.h"

#include "gpio.h"

/* USER CODE BEGIN Includes */

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

//LCD

#include "Fonts.h"

//Range

#define load_min 10

#define load_max 95

#define qtd_max 255

#define user_max 7

#define time_max 127

//Comunicação Bluetooth com App

#define sUser 1000

#define sHall 2000

#define sLoad 3000

//Registradores da memória

#define U_step 0x8000 //32768

#define U_mem 0xEBE7 //256999

#define U_S_step 0x0008

#define U0_pg 0x50

#define U1_pg 0x50

#define U2_pg 0x51

#define U3_pg 0x51

#define U4_pg 0x52

#define U5_pg 0x52

#define U6_pg 0x53

#define U7_pg 0x53

#define U_day 0x02

#define U_month 0x03

#define U_year 0x04

#define U_hour 0x05

#define U_min 0x06

#define U_qty 0x07

#define U_load 0x08

#define U_time 0x09

#define NewLine 1

#define UpdateLine 0

Page 41: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

41

#define i2c_delay 100

#define DataBytes 8

#define Begin_st 0

#define BT_st 1

#define Wait_noBT_st 2

#define Wait_BT_st 3

#define Exer_BT_st 4

#define Exer_noBT_st 5

#define Log_st 6

#define Erase_st 7

//LCD

#define LCD_NCHAR 16

#define LCD_NLINE 8

#define _graus 128

#define _up 129

#define _down 130

#define _left 131

#define _right 132

#define _enter 133

#define CR 0x0d

#define LF 0x0a

#define virado 1

#define nao_virado 0

#define bit0 0x01

#define bit1 0x02

#define bit2 0x04

#define bit3 0x08

#define bit4 0x10

#define bit5 0x20

#define bit6 0x40

#define bit7 0x80

#define RESX_on GPIOA->BSRR = 1<<15

#define RESX_off GPIOA->BRR = 1<<15

#define SDA_on GPIOB->BSRR = 1<<5

#define SDA_off GPIOB->BRR = 1<<5

#define SCLK_on GPIOB->BSRR = 1<<4

#define SCLK_off GPIOB->BRR = 1<<4

#define CSX_on GPIOB->BSRR = 1<<3

#define CSX_off GPIOB->BRR = 1<<3

/* USER CODE END Includes */

/* Private variables ------------------------------------------------------

---*/

/* USER CODE BEGIN PV */

/* Private variables ------------------------------------------------------

---*/

uint8_t vetor[30] = "";

uint8_t state_g = 0;

uint8_t data_valid = 0;

uint8_t user = 0;

uint32_t load_v = 0;

Page 42: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

42

uint8_t time_spent = 0;

uint8_t u_pg = 0x00;

uint32_t s_addr = 0x00;

uint8_t watchdog = 0;

char porc = '%';

typedef struct

uint8_t day;

uint8_t month;

uint8_t year;

uint8_t hour;

uint8_t min;

uint8_t qtd;

uint8_t load;

uint8_t time_spent;

DATA_struct;

DATA_struct user_data;

//LCD

const unsigned char mask[8] = 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02,

0x01;

unsigned char LCD_linecount;

unsigned char LCD_charcount;

//RTC

RTC_TimeTypeDef sTime; // estrutura que recebe hora

RTC_DateTypeDef sDate; // estrutura que recebe data

/* USER CODE END PV */

/* Private function prototypes --------------------------------------------

---*/

void SystemClock_Config(void);

/* USER CODE BEGIN PFP */

/* Private function prototypes --------------------------------------------

---*/

//Bluetooth

char init_bt(void);

void connect_bt(void);

void check_bt(void);

void data_bt(void);

void log_bt(void);

void erase_log_bt(void);

//Debounce

uint8_t debounce_button(void);

uint8_t debounce_hall(void);

//Delay (us)

void u_delay(void);

void delay_us(uint8_t t);

//Load

void read_load(void);

//Others

void sel_user(void);

void wait_exercise(void);

Page 43: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

43

void exercise(void);

void save_exercise(uint8_t s_mode);

void update_user(void);

//LCD

void lcd_wrcommand(unsigned char cmd);

void lcd_wrdata(unsigned char dat);

void lcd_wrvec(uint8_t* s);

void lcd_initmodule(unsigned char state);

void lcd_setcontraste(unsigned char v);

void lcd_clrscr(void);

void lcd_on(void);

void lcd_off(void);

void lcd_reverse(void);

void lcd_normal(void);

void lcd_newline(void);

void lcd_goto(unsigned char x, unsigned char y);

void lcd_wrchar(unsigned char c);

void lcd_wrcharvec(unsigned char* c);

void lcd_putchar(unsigned char c);

void lcd_putlogo(const unsigned char *p);

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

int main(void)

/* USER CODE BEGIN 1 */

uint8_t z[2];

user_data.day = 0;

user_data.month = 0;

user_data.year = 0;

user_data.hour = 0;

user_data.min = 0;

user_data.qtd = 0;

user_data.load = 0;

user_data.time_spent = 0;

/* USER CODE END 1 */

/* MCU Configuration-----------------------------------------------------

-----*/

/* Reset of all peripherals, Initializes the Flash interface and the

Systick. */

HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */

SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

Page 44: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

44

/* Initialize all configured peripherals */

MX_GPIO_Init();

MX_I2C1_Init();

MX_USART1_UART_Init();

MX_ADC_Init();

MX_RTC_Init();

/* USER CODE BEGIN 2 */

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 1); //Vd

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 1); //Vm

//Bluetooth

//init_bt();

//HAL_GPIO_WritePin(BT_RST_GPIO_Port, BT_RST_Pin, 1);

//RTC

HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

//Last user

HAL_I2C_Mem_Read(&hi2c1,(U7_pg <<

1),U_mem,I2C_MEMADD_SIZE_16BIT,&user,1,1500);

HAL_Delay(i2c_delay);

update_user();

//LCD

lcd_initmodule(nao_virado);

lcd_clrscr();

HAL_Delay(100);

lcd_goto(1, 1);

sprintf(vetor,"Usuario: %02d\r\n", user);

lcd_wrcharvec(vetor);

//Memory

HAL_GPIO_WritePin(MEM_WC_GPIO_Port, MEM_WC_Pin, 0);

HAL_Delay(i2c_delay);

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 0); //Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 0); //Vd

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1)

//lcd_putchar('a');

switch (state_g)

case Begin_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 0);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 0);

//Vd

sel_user();

Page 45: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

45

connect_bt();

break;

case BT_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 1);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 1);

//Vd

sel_user();

check_bt();

break;

case Wait_noBT_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 0);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 0);

//Vd

wait_exercise();

break;

case Wait_BT_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 0);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 0);

//Vd

wait_exercise();

check_bt();

break;

case Exer_BT_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 1);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 0);

//Vd

exercise();

data_bt();

break;

case Exer_noBT_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 1);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 0);

//Vd

exercise();

break;

case Log_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 0);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 1);

//Vd

log_bt();

while(vetor[0] != 'O' && watchdog < 25)

sprintf(vetor,"R\r\n");

HAL_UART_Transmit(&huart1,vetor,3,200);

HAL_UART_Receive(&huart1,vetor,1,200);

HAL_Delay(1);

watchdog++;

Page 46: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

46

watchdog = 0;

vetor[0] = '1';

state_g = BT_st;

break;

case Erase_st:

HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, 0);

//Vm

HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, 1);

//Vd

update_user();

z[0] = 0;

z[1] = 0;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),s_addr,I2C_MEMADD_SIZE_16BIT,z,2,2000);

HAL_Delay(i2c_delay);

while(vetor[0] != 'O' && watchdog < 25)

sprintf(vetor,"E\r\n");

HAL_UART_Transmit(&huart1,vetor,3,500);

HAL_UART_Receive(&huart1,vetor,1,200);

HAL_Delay(1);

watchdog++;

watchdog = 0;

vetor[0] = '1';

state_g = BT_st;

break;

default:

break;

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

/* USER CODE END 3 */

/** System Clock Configuration

*/

void SystemClock_Config(void)

RCC_OscInitTypeDef RCC_OscInitStruct;

RCC_ClkInitTypeDef RCC_ClkInitStruct;

RCC_PeriphCLKInitTypeDef PeriphClkInit;

/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_OscInitStruct.OscillatorType =

RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI14

|RCC_OSCILLATORTYPE_LSI;

RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.HSI14State = RCC_HSI14_ON;

RCC_OscInitStruct.HSICalibrationValue = 16;

Page 47: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

47

RCC_OscInitStruct.HSI14CalibrationValue = 16;

RCC_OscInitStruct.LSIState = RCC_LSI_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;

RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

_Error_Handler(__FILE__, __LINE__);

/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)

_Error_Handler(__FILE__, __LINE__);

PeriphClkInit.PeriphClockSelection =

RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_I2C1

|RCC_PERIPHCLK_RTC;

PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;

PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI;

PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;

if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)

_Error_Handler(__FILE__, __LINE__);

/**Configure the Systick interrupt time

*/

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

/**Configure the Systick

*/

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);

/* USER CODE BEGIN 4 */

//RTC

void HAL_SYSTICK_Callback(void) // interrupção do timer

static int cont=0;

if(cont<1000)

cont++;

else

cont=0;

if(sTime.Seconds<59)

sTime.Seconds++;

Page 48: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

48

else

sTime.Seconds=0;

if(time_spent < time_max)

time_spent++;

if(sTime.Minutes<59)

sTime.Minutes++;

else

sTime.Minutes=0;

if(sTime.Hours<23)

sTime.Hours++;

else

sTime.Hours=0;

if(sDate.WeekDay<7)

sDate.WeekDay++;

else

sDate.WeekDay=0;

if(sDate.Date<31)

sDate.Date++;

else

sDate.Date=1;

if(sDate.Month<12)

sDate.Month++;

else

sDate.Month=1;

if(sDate.Year<98)

sDate.Year++;

else

sDate.Year=0;

if(sTime.Seconds == 0)

HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

//HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

//HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

//Bluetooth

char init_bt(void)

uint8_t BT_v[50] = "";

char r = 0;

HAL_GPIO_WritePin(BT_RST_GPIO_Port, BT_RST_Pin, 1);

HAL_Delay(500);

Page 49: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

49

//Name 'HndGrp'

sprintf(BT_v,"AT DefaultLocalName HndGrp");

HAL_UART_Transmit(&huart1,BT_v,strlen(BT_v),1000);

HAL_UART_Receive(&huart1,BT_v,strlen(BT_v),2000);

HAL_Delay(100);

HAL_GPIO_WritePin(BT_RST_GPIO_Port, BT_RST_Pin, 0);

HAL_Delay(200);

HAL_GPIO_WritePin(BT_RST_GPIO_Port, BT_RST_Pin, 1);

HAL_Delay(100);

return r;

void connect_bt(void)

uint8_t BT_v[17] = "";

uint8_t Data_v[6] = "";

HAL_UART_Receive(&huart1,BT_v,17,1000);

if(BT_v[0] == 'P')

//RTC

//.. BT_v[1:2]; //mm

//.. BT_v[4:5]; //dd

//.. BT_v[7:10]; //yyyy

//.. BT_v[12:13]; //hh

//.. BT_v[15:16]; //mm

sDate.Month = (BT_v[1]-0x30)*10 +(BT_v[2] - 0x30);

sDate.Date = (BT_v[4]-0x30)*10 +(BT_v[5] - 0x30);

sDate.Year = (BT_v[9]-0x30)*10 +(BT_v[10] - 0x30);

HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

//HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

sTime.Hours = (BT_v[12]-0x30)*10 +(BT_v[13] - 0x30);

sTime.Minutes = (BT_v[15]-0x30)*10 +(BT_v[16] - 0x30);

HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

//HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

HAL_Delay(10);

while(BT_v[0] != 'O' && watchdog < 50)

sprintf(Data_v,"%04d\r\n", user + sUser);

HAL_UART_Transmit(&huart1,Data_v,6,1000);

HAL_UART_Receive(&huart1,BT_v,1,200);

HAL_Delay(1);

watchdog++;

watchdog = 0;

update_user();

if(state_g == Begin_st)

state_g = BT_st;

return;

Page 50: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

50

void check_bt(void)

uint8_t BT_v[1] = "";

HAL_UART_Receive(&huart1,BT_v,1,200);

if(BT_v[0] == 'N' && state_g == BT_st)

state_g = Begin_st;

else if(BT_v[0] == 'N' && state_g == Wait_BT_st)

state_g = Wait_noBT_st;

else if(BT_v[0] == 'R')

update_user();

state_g = Log_st;

else if(BT_v[0] == 'E')

update_user();

state_g = Erase_st;

return;

void data_bt(void)

uint8_t BT_v[1] = "";

uint8_t Data_v[6] = "";

HAL_UART_Receive(&huart1,BT_v,1,200);

if(BT_v[0] == 'N')

state_g = Exer_noBT_st;

else if(BT_v[0] == 'R')

state_g = Log_st;

else if(BT_v[0] == 'E')

state_g = Erase_st;

else if(data_valid)

while(BT_v[0] != 'O' && watchdog < 50)

HAL_Delay(1);

sprintf(Data_v,"%04d\r\n", user_data.load + sLoad);

HAL_UART_Transmit(&huart1,Data_v,6,1000);

HAL_UART_Receive(&huart1,BT_v,1,200);

sprintf(Data_v,"%04d\r\n", user_data.qtd + sHall);

HAL_UART_Transmit(&huart1,Data_v,6,1000);

HAL_UART_Receive(&huart1,BT_v,1,200);

sprintf(Data_v,"%04d\r\n", user + sUser);

HAL_UART_Transmit(&huart1,Data_v,6,1000);

HAL_UART_Receive(&huart1,BT_v,1,200);

HAL_Delay(1);

watchdog++;

watchdog = 0;

void log_bt(void)

Page 51: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

51

uint8_t BT_v[10] = "";

uint8_t DATALOG_v[80] = "";

uint8_t dia,mes,ano,hora,minuto;

uint8_t i2c_leitura[2] = "";

uint32_t n_addr = 0;

uint32_t i = 0;

uint8_t m_read = 0;

uint8_t limit = 0;

HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

//HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

mes = sDate.Month;

dia = sDate.Date;

ano = sDate.Year;

HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

//HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

hora = sTime.Hours;

minuto = sTime.Minutes;

sprintf(DATALOG_v,"%03d;%02d/%02d/%02d;%02dh%02dmin;\r\n", user, dia,

mes, ano, hora, minuto);

sprintf(DATALOG_v,"%sData;Hora;Qtd;Carga[%c];Tempo[min];\r\n",

DATALOG_v, porc);

HAL_UART_Transmit(&huart1,DATALOG_v,strlen(DATALOG_v),2000);

HAL_Delay(i2c_delay);

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),s_addr,I2C_MEMADD_SIZE_16BIT,&i2c_leitura[0],1,2000);

HAL_Delay(i2c_delay);

HAL_I2C_Mem_Read(&hi2c1,(u_pg << 1),(s_addr +

1),I2C_MEMADD_SIZE_16BIT,&i2c_leitura[1],1,2000);

HAL_Delay(i2c_delay);

n_addr = (i2c_leitura[0]<<8) | i2c_leitura[1];

i = (s_addr + 2) & 0xFFFF;

while(i <= n_addr && limit < 20)

//Date

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%02d/", m_read);

HAL_Delay(i2c_delay);

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%s%02d/", DATALOG_v, m_read);

HAL_Delay(i2c_delay);

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%s%02d;", DATALOG_v, m_read);

HAL_Delay(i2c_delay);

//Time

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%s%02dh", DATALOG_v, m_read);

HAL_Delay(i2c_delay);

Page 52: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

52

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%s%02dmin;", DATALOG_v, m_read);

HAL_Delay(i2c_delay);

//Qtd

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%s%03d;", DATALOG_v, m_read);

HAL_Delay(i2c_delay);

//Load

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%s%02d;", DATALOG_v, m_read);

HAL_Delay(i2c_delay);

//Spent time

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),i++,I2C_MEMADD_SIZE_16BIT,&m_read,1,2000);

sprintf(DATALOG_v, "%s%03d;\r\n", DATALOG_v, m_read);

HAL_Delay(i2c_delay);

HAL_UART_Transmit(&huart1,DATALOG_v,strlen(DATALOG_v),2000);

limit++;

HAL_Delay(200);

return;

//Debounce

uint8_t debounce_button(void)

uint8_t db = 0;

while(HAL_GPIO_ReadPin(B_1_GPIO_Port,B_1_Pin))

HAL_Delay(10); //10ms

if(db < 3000)

db++;

if(db >= 100) // 1s

return 2;

else

db = 0;

if(db >= 3) // 30ms

return 1;

else

return 0;

uint8_t debounce_hall(void)

uint16_t db = 0;

uint16_t l = 0;

uint8_t i = 0;

while(!HAL_GPIO_ReadPin(HALL_GPIO_Port,HALL_Pin))

Page 53: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

53

HAL_Delay(10); //10ms

if(db < 1000)

db++;

else

db = 0;

if(db >= 5) //50ms

HAL_Delay(25);

read_load();

return 1;

else

return 0;

//Delay (us)

void u_delay(void)

uint8_t t = 10;

while(t--);

return;

void delay_us(uint8_t t)

while(t--)

u_delay();

return;

//Load

void read_load(void)

int8_t i;

uint32_t watch_dog = 0;

load_v = 0;

HAL_GPIO_WritePin(HX_PD_SCK_GPIO_Port,HX_PD_SCK_Pin,0);

delay_us(1);

//wait falling edge from HX_DOUT pin or watchdog

while(HAL_GPIO_ReadPin(HX_DOUT_GPIO_Port,HX_DOUT_Pin))

if(++watch_dog > 200000) return;

for(i = 23; i >= 0; i--)

HAL_GPIO_WritePin(HX_PD_SCK_GPIO_Port,HX_PD_SCK_Pin,1);

delay_us(1);

HAL_GPIO_WritePin(HX_PD_SCK_GPIO_Port,HX_PD_SCK_Pin,0);

delay_us(1);

if(HAL_GPIO_ReadPin(HX_DOUT_GPIO_Port,HX_DOUT_Pin))

load_v |= (1 << i);

HAL_GPIO_WritePin(HX_PD_SCK_GPIO_Port,HX_PD_SCK_Pin,1);

delay_us(1);

Page 54: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

54

HAL_GPIO_WritePin(HX_PD_SCK_GPIO_Port,HX_PD_SCK_Pin,0);

delay_us(1);

load_v = ((load_v / 167772) - 50)*(100/22);

if(load_v < load_min)

load_v = load_min;

else if(load_v > load_max)

load_v = load_max;

load_v = (load_v / 10)*10;

//Others

void sel_user(void)

uint8_t db = 0;

uint8_t Data_v[6];

db = debounce_button();

if(db == 1)

if(user < user_max)

user++;

else

user = 0;

if(state_g == BT_st)

while(Data_v[0] != 'O' && watchdog < 50)

sprintf(Data_v,"%04d\r\n", user + sUser);

HAL_UART_Transmit(&huart1,Data_v,6,300);

HAL_UART_Receive(&huart1,Data_v,6,200);

HAL_Delay(1);

watchdog++;

watchdog = 0;

lcd_clrscr();

lcd_goto(1, 1);

sprintf(vetor,"Usuario: %02d\r\n", user);

lcd_wrcharvec(vetor);

update_user();

else if(db == 2)

HAL_I2C_Mem_Write(&hi2c1,(U7_pg <<

1),U_mem,I2C_MEMADD_SIZE_16BIT,&user,1,1500);

HAL_Delay(i2c_delay);

update_user();

lcd_clrscr();

lcd_goto(1, 1);

sprintf(vetor,"Usuario: %02d", user);

lcd_wrcharvec(vetor);

lcd_goto(1, 2);

sprintf(vetor,"Inicar...");

lcd_wrcharvec(vetor);

Page 55: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

55

if(state_g == Begin_st)

state_g = Wait_noBT_st;

else if(state_g == BT_st)

state_g = Wait_BT_st;

return;

void wait_exercise(void)

if(debounce_hall())

data_valid = 1;

user_data.day = sDate.Date;

user_data.month = sDate.Month;

user_data.year = sDate.Year;

user_data.hour = sTime.Hours;

user_data.min = sTime.Minutes;

user_data.time_spent = 0;

time_spent = 0;

//user_data.load = load_v;

user_data.qtd = 1;

lcd_clrscr();

lcd_goto(1, 1);

sprintf(vetor,"Usuario: %02d", user);

lcd_wrcharvec(vetor);

lcd_goto(1, 2);

sprintf(vetor,"Carga: --%c", porc);

lcd_wrcharvec(vetor);

lcd_goto(1, 3);

sprintf(vetor,"Qtd: %03d", user_data.qtd);

lcd_wrcharvec(vetor);

if(state_g == Wait_noBT_st)

state_g = Exer_noBT_st;

else if(state_g == Wait_BT_st)

data_bt();

state_g = Exer_BT_st;

user_data.load = 0;

return;

void exercise(void)

static uint8_t qtd = 1;

if(debounce_hall())

data_valid = 1;

if(user_data.load == 0 && qtd == 1)

user_data.load = load_v;

qtd++;

user_data.qtd = qtd;

save_exercise(NewLine);

Page 56: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

56

else if(user_data.load != load_v)

user_data.time_spent = time_spent;

user_data.day = sDate.Date;

user_data.month = sDate.Month;

user_data.year = sDate.Year;

user_data.hour = sTime.Hours;

user_data.min = sTime.Minutes;

user_data.time_spent = 0;

time_spent = 0;

user_data.load = load_v;

qtd = 1;

user_data.qtd = qtd;

save_exercise(NewLine);

else

if(qtd < qtd_max)

qtd++;

user_data.load = load_v;

user_data.qtd = qtd;

lcd_clrscr();

lcd_goto(1, 1);

sprintf(vetor,"Usuario: %02d", user);

lcd_wrcharvec(vetor);

lcd_goto(1, 2);

sprintf(vetor,"Carga: %02d%c", user_data.load, porc);

lcd_wrcharvec(vetor);

lcd_goto(1, 3);

sprintf(vetor,"Qtd: %03d", user_data.qtd);

lcd_wrcharvec(vetor);

else

data_valid = 0;

if(time_spent != user_data.time_spent || debounce_button())

user_data.time_spent = time_spent;

save_exercise(UpdateLine);

return;

void save_exercise(uint8_t s_mode)

uint8_t i2c_read[2] = "";

uint32_t address = 0;

uint8_t v = 0;

HAL_GPIO_TogglePin(LED_1_GPIO_Port, LED_1_Pin);

HAL_GPIO_TogglePin(LED_2_GPIO_Port, LED_2_Pin);

//Memory UnLock

HAL_GPIO_WritePin(MEM_WC_GPIO_Port, MEM_WC_Pin, 0);

HAL_Delay(i2c_delay);

HAL_I2C_Mem_Read(&hi2c1,(u_pg <<

1),s_addr,I2C_MEMADD_SIZE_16BIT,i2c_read,2,1500);

Page 57: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

57

HAL_Delay(i2c_delay);

address = (i2c_read[0]<<8) | i2c_read[1];

switch (s_mode)

case NewLine:

if(address == 0)

address += 2;

else

address++;

v = user_data.day;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

address++;

v = user_data.month;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

address++;

v = user_data.year;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

address++;

v = user_data.hour;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

address++;

v = user_data.min;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

address++;

v = user_data.qtd;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

address++;

v = user_data.load;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

address++;

v = user_data.time_spent;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&v,1,2000);

HAL_Delay(i2c_delay);

i2c_read[0] = address>>8;

i2c_read[1] = address & 0xFF;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),s_addr,I2C_MEMADD_SIZE_16BIT,i2c_read,2,2000);

HAL_Delay(i2c_delay);

break;

case UpdateLine:

Page 58: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

58

address -= 2;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&user_data.qtd,1,2000);

HAL_Delay(i2c_delay);

address++;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&user_data.load,1,2000);

HAL_Delay(i2c_delay);

address++;

HAL_I2C_Mem_Write(&hi2c1,(u_pg <<

1),address,I2C_MEMADD_SIZE_16BIT,&user_data.time_spent,1,2000);

HAL_Delay(i2c_delay);

break;

default:

break;

HAL_GPIO_TogglePin(LED_1_GPIO_Port, LED_1_Pin);

HAL_GPIO_TogglePin(LED_2_GPIO_Port, LED_2_Pin);

return;

void update_user(void)

if(user < 2) u_pg = U1_pg;

else if(user < 4) u_pg = U3_pg;

else if(user < 6) u_pg = U5_pg;

else u_pg = U7_pg;

s_addr = U_step * user;

return;

//LCD

// Implementa a temporização da interface SPI de 3 fios para

// envio de um comando (A0 = 0).

//

void lcd_wrcommand(unsigned char cmd)

unsigned char i;

CSX_off;

SDA_off;

SCLK_on;

SCLK_off;

for (i=0; i<8; i++)

if (cmd & mask[i]) SDA_on; else SDA_off;

SCLK_on;

SCLK_off;

CSX_on;

// Implementa a temporização da interface SPI de 3 fios para

// escrita de 8 pixeis no display (A0 = 1)

//

void lcd_wrdata(unsigned char dat)

Page 59: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

59

unsigned char i;

CSX_off;

SDA_on;

SCLK_on;

SCLK_off;

for (i=0; i<8; i++)

if (dat & mask[i]) SDA_on; else SDA_off;

SCLK_on;

SCLK_off;

CSX_on;

void lcd_wrvec(uint8_t* s)

unsigned char i;

unsigned char k;

for (k = 0; k < strlen(s); k++)

CSX_off;

SDA_on;

SCLK_on;

SCLK_off;

for (i=0; i<8; i++)

if (s[k] & mask[i]) SDA_on; else SDA_off;

SCLK_on;

SCLK_off;

CSX_on;

void lcd_initmodule(unsigned char state)

unsigned int i;

CSX_on;

SDA_off;

SCLK_off;

RESX_off;

HAL_Delay(20);

RESX_on;

HAL_Delay(20);

lcd_wrcommand(0x24); // VOR

lcd_wrcommand(0x90); // Electronic Volume

lcd_wrcommand(0xa4); // All off

lcd_wrcommand(0x2f); // Power Boost on

lcd_wrcommand(0xb0); // Page 0

Page 60: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

60

lcd_wrcommand(0x10); // Column 0

lcd_wrcommand(0x00);

// Zera o conteúdo da RAM

for(i=0; i<864; i++) lcd_wrdata(0x00);

if(state == virado) lcd_wrcommand(0xc8); else lcd_wrcommand(0xa1);

lcd_wrcommand(0xaf); // display on

LCD_linecount = 0;

LCD_charcount = 0;

void lcd_setcontraste(unsigned char v)

lcd_wrcommand(0xe1);

lcd_wrcommand(v);

void lcd_clrscr(void)

unsigned int i;

lcd_wrcommand(0xb0); // Page 0

lcd_wrcommand(0x10); // Column 0

lcd_wrcommand(0x00);

// Zera o conteúdo da RAM

for(i=0; i<864; i++) lcd_wrdata(0x00);

LCD_linecount = 0;

LCD_charcount = 0;

void lcd_on(void)

lcd_wrcommand(0xaf);

void lcd_off(void)

lcd_wrcommand(0xae);

void lcd_reverse(void)

lcd_wrcommand(0xa7);

void lcd_normal(void)

lcd_wrcommand(0xa6);

void lcd_newline(void)

if (++LCD_linecount == LCD_NLINE) LCD_linecount = 0;

LCD_charcount = 0;

Page 61: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

61

lcd_wrcommand(0xb0+LCD_linecount);

lcd_wrcommand(0x10);

lcd_wrcommand(0x00);

void lcd_goto(unsigned char x, unsigned char y)

unsigned char k;

if (x > LCD_NCHAR-1) x = 0;

if (y > LCD_NLINE-1) y = 0;

LCD_charcount = x;

LCD_linecount = y;

lcd_wrcommand(0xb0+LCD_linecount);

k = LCD_charcount*6;

lcd_wrcommand(0x10+(k/16));

lcd_wrcommand(0x00+(k%16));

void lcd_wrchar(unsigned char c)

unsigned int j;

unsigned char i, v;

j = (unsigned int) c * 5;

for (i=0; i<5; i++)

v = asciitable[j];

lcd_wrdata(v);

j += 1;

lcd_wrdata(0x00);

void lcd_wrcharvec(unsigned char* c)

unsigned int j, k;

unsigned char i, v;

for(k=0; k < strlen(c); k++)

j = (unsigned int) c[k] * 5;

for (i=0; i<5; i++)

v = asciitable[j];

lcd_wrdata(v);

j += 1;

lcd_wrdata(0x00);

void lcd_putchar(unsigned char c)

switch (c)

case 13 : lcd_newline();

Page 62: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

62

break;

case 10 : LCD_charcount = 0;

lcd_goto(LCD_charcount, LCD_linecount);

break;

default : if (LCD_charcount++ < LCD_NCHAR) lcd_wrchar(c);

else

lcd_newline();

lcd_wrchar(c);

LCD_charcount++;

void lcd_putlogo(const unsigned char *p)

unsigned int i;

for(i=0; i<864; i++) lcd_wrdata(*(p+i));

/* USER CODE END 4 */

/**

* @brief This function is executed in case of error occurrence.

* @param None

* @retval None

*/

void _Error_Handler(char * file, int line)

/* USER CODE BEGIN Error_Handler_Debug */

/* User can add his own implementation to report the HAL error return

state */

while(1)

/* USER CODE END Error_Handler_Debug */

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t* file, uint32_t line)

/* USER CODE BEGIN 6 */

/* User can add his own implementation to report the file name and line

number,

ex: printf("Wrong parameters value: file %s on line %d\r\n", file,

line) */

/* USER CODE END 6 */

#endif

Page 63: INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL … · 2017. 12. 13. · FACULDADE DE ENGENHARIA INSTRUMENTAÇÃO ELETRÔNICA DE EXERCITADOR MANUAL (HANDGRIP) Porto Alegre, 09

63

/**

* @

*/

/**

* @

*/

/************************ (C) COPYRIGHT STMicroelectronics *****END OF

FILE****/