Boa dia pessoal, gostaria muito da ajuda de vocês. pretendo desenvolver um eletroestimulador SEM FINS COMERCIAIS e seguindo as normas de segurança para tal. Será utilizado em uma ou várias universidade do pais para ajudar pessoas com AVC acometidas de alguma restrição nos membros(superiores ou inferiores)em função do AVC. Que fique registrado aqui, irei citar o nome daqueles que me ajudarem.Obrigado desde então.

1.Estou desenvolvendo um código, a principio no arduino UNO,que fará comunicação com labview via USB.

2. Trata-se de um eletroestimulador conhecido como FES.Onda quadrada bifásica.

3. Para tal, pretendo usar os timer do microcontrolador que será responsável pela modulação da estimulação.

4.Esses timer irão determinar o periodo dos pulsos e largura das fases.

5. Este eletroestimulador terá 04 canais. então terei que ativar 08 saidas,(uma saida para fase positiva da onda e outra saida para fase negativa) totalizando 08 saidas.

6.Também usarei um potenciometro digital para controlar a amplitude do pulso(cada canal).

7.Os valores de duração das fases (Duração Positiva e Duração Negativa) entre 50 μs e 500 μs, assim como o período mais próximo da menor frequência (20 Hz), 50 ms. Frequencia maxima de 200Hz

8.Na modulação de cada canal somente um timer é utilizado, sendo que este é reprogramado constantemente durante a modulação dos pulsos com os parâmetros temporais (“Duração Positiva”, “Intervalo entre Fases”, “Duração Negativa”e “Periodo Inativo”), recebidos pela USB.

9.Além dos parâmetros para o formato do pulso, é necessário informar, também, o número de pulsos desejados (Repet.), o que permite controlar o tempo ao qual a estimulação deve ocorrer.

10.O gerenciamento ocorre por uma máquina de estados, cujo objetivo é gerenciar a configuração do timer, a ativação correta das saídas digitais e o ajuste dos potenciômetros; a mudança entre os estados ocorre a cada interrupção.

11. Iniciei o código no arduino sem a comunicação com Labview (isso já está bem adiantado) . A minha maquina de estado está gerenciando apenas a ativação das fases, NÃO consigo gerenciar os timer ainda. 

Exibições: 470

Anexos

As respostas para este tópico estão encerradas.

Respostas a este tópico

Boa tarde,

Por que o pino 7 é vermelho e depois azul? Já que o pino 6 é sempre amarelo. 

Qual é a duração do período inativo? É variável? 

Bom dia, 

Para mim, ainda ficam dúvidas, nos seus gráficos. 

O grafico representa dois canais ou um canal somado ao outro. 

O canal 1 é o pino 7? E o canal 2 é o pino 6??? 

Ou o gráfico é de um canal somente? 

Mais perguntas:

1) Quais são as frequencias dos pulsos? 

2) Quais são as variações de duty cycle de cada canal?

http://www.mecaweb.com.br/eletronica/content/e_pwm

Para controle de largura de pulso sugiro o uso da função PWM do Arduino.

https://www.embarcados.com.br/pwm-do-arduino/

Bom dia. Muito obrigado pelas dicas, irei remover este post e colocar outro como realmente deve ser. Eu refiz todo o código e irei postar novamente de acordo com as regras do forum. Att, Wilton

refiz o post, e anexei os arquivos. se puder ajudar agradeço. Att, wilton

Opa! Melhorou bastante! 

Tenho certeza que a equipe de plantão lhe ajudará! 

Uma observação:

- Você  pretende usar 4 timers. 

Qual microcontrolador pretende usar ? O Arduino só tem 3 timers! 

https://www.embarcados.com.br/timers-do-atmega328-no-arduino/

Boa tarde WF, (se não gosta que te chame pelas iniciais, avise),

gostaria muito de te ajudar, mas para isto recomendo as seguintes ações:


1. Remova seu sketch da área de texto do seu tópico;

2. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo"

   e anexe o arquivo  com o seu sketch;
3. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
4. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada
     linha e facilita a ajuda.

RV

ok, farei isso. obrigado.

Bom dia WF,

refiz seu código e obtive a seguinte figura:

Aguardo a remoçõ do código do poste.

RV

Bom dia meu amigo. Eu refiz o post, me desculpa por isso. Se puder ajudar, ficarei agradecido imensamente.Att Wilton

olá Wilton.

      Há alguns problemas com sua descrição, e também alguns com seu código.

      Mas antes de tudo, veja na figura a seguir, o motivo pelo qual  o  RV  já deveria estar cansado de pedir ao pessoal aqui para não "colar"  o texto do código na página do post:

(clique na figura para "zoom")

      Como vc pode ver, o navegador reinterpreta o texto como HTML, e assim na exibição, ele suprime algumas combinações de caracteres. Ou seja, seu código aparece incompleto e portanto errôneo, prejudicando a análise (e em alguns casos levando a conclusões erradas).

      Eu disse "RV já deveria estar cansado",  porque até onde me lembro,  é uma quantidade absurda de ocorrências desse tipo. E se as pessoas dessem só um pouco mais de atenção ao site, isto não ocorreria (pois a solicitação está escancarada logo na página principal). E teve até o caso de um rapaz que disse que a solicitação do RV era uma frescura, e como vc pode ver, este rapaz não sabia bem o que estava falando.

      Sobre seu código, o ponto que mostrarei a seguir, não me parece ter sido consequência de supressão pelo navegador. Ao contrário, parece ser mesmo um equívoco no seu código. Veja a figura a seguir, que mostra a que me refiro:

(clique na figura para "zoom")

      O motivo?  É que os valores "10" e "11" que vc colocou entre parêntesis, estão representados em Decimal,  e ao serem convertidos para Binário,  irão afetar de forma errônea os bits nos Registros de Controle dos Ports (seja um "DDRx", seja um "PORTx", ou qualquer outro Registro a que se aplique).  Veja isto na figura a seguir:

(clique na figura para "zoom")

      Vc pode consultar as representações numéricas do Arduino  neste link:  "números no Arduino"

      Também ajudaria o pessoal aqui a te ajudar, se vc fornecesse as seguintes informações:

      1)  qual IDE ou Plataforma vc está usando ?  (e consequentemente qual o Compilador ?)

      2)  Se é um Arduino, qual placa vc está usando?

      3)  sobre a temporização, qual a precisão vc necessita?  Se possível, explicite na forma desse exemplo:   10 [ms]  +/- 100 [us]    ( ou seja:  10 mili-segundos  com tolerância de mais ou menos 100 micro-segundos)

      4)  mostre a Carta de Tempo  de uma forma que não deixe dúvidas ou leve a confundir a temporização que vc precisa (pois as duas que vc mostrou aqui, realmente não ajudaram).

      Se vc der uma vasculhada nos meus posts aqui no LDG,  irá encontrar uma imensa quantidade de Máquinas de Estados  implementadas, com o objetivo de resolver as mais diversas questões, e em vários níveis de sofisticação (há inclusive Máquinas de Estados "virtuais").  Então estes posts (e os tópicos onde eles estão), podem ajudar bastante vc, mostrando a forma correta de implementar estas Máquinas (na maioria, eu mostro também o Diagramas de Estados), pois todos os códigos estão ricamente comentados.

      Abrçs,

      Elcids

Bom dia. Muito obrigado pelas dicas, irei remover este post e colocar outro como realmente deve ser. Eu refiz todo o código e irei postar novamente de acordo com as regras do forum. Att, Wilton

Refiz o post, obrigado pelas dicas. se puder ajudar , agradeço. Att, Wilton 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço