Boa tarde amigos do Lab de Garagem! 

No dia 1 de abril de 2020, fui convidado por um amigo para participar de um projeto de um Respirador para ser usado em pacientes infectados com a doença Covid-19. E prontamente aceitei o desafio. 

Para quem não esta acompanhando esse tipo de projeto, fique sabendo que aqui no Brasil, já temos dezenas de grupos  e  empresas empenhados no desenvolvimento de Respiradores de baixo custo. A evolução da doença, graças a Deus e às boas orientações dos governos estaduais e municipais, não está progredindo com o ritmo assustador como em outros países. Infelizmente em algumas cidades brasileiras, a situação crítica já esta em andamento! 

O nosso projeto se chama Ambu Sol e Ar e esta sendo desenvolvido por engenheiros, técnicos e médicos principalmente daqui de Belo Horizonte. Mas temos alguns colabores de outras regiões como SP, Paraná, Ceará, etc. O grupo formado no whatsapp contém atualmente 26 participantes. 

Desde 22 outubro 2011, estou aqui no Lab de Garagem, sempre ajudando os colegas. Resolvendo dúvidas e problemas, dando conselhos e orientações. E agora é a hora de eu pedir ajuda. Como alguns devem saber, sou especialista em HW e não em SW. Estou sempre estudando e aprendendo, mas às vezes tenho dificuldades. 

A gente ainda não sabe como a doença vai evoluir aqui no Brasil, mas sabemos que a demanda de Respiradores poderá ser grande. Tomara que não. Mas se a gente não precisar deles aqui no Brasil, poderemos até exportar o nosso projeto para outros países mais necessitados. 

Irei tomar a liberdade em expor todas as nossas dificuldades técnicas aqui, na esperança que alguém possa nos ajudar. Se a sua solução for usada no nosso projeto, colocaremos seu nome na lista de colaboradores. 

Links do nosso projeto:

https://www.instagram.com/ambusolear/

(obs: eu não apareço nas fotos, pois minha ajuda ainda esta sendo remota) 

https://github.com/tiagocriaar/AMBU-SOL-AR

(nem sempre a documentação estará atualizada) 

https://github.com/tiagocriaar/AMBU-SOL-AR/tree/master/C%C3%B3digos...

(Obs - nosso código esta ainda desorganizado, pois eu e um outro colega estamos fazendo desenvolvimentos diferentes. E o tempo esta curto, para organizar).

Fique à vontade para perguntar e comentar! 

Agradeço antecipadamente a sua ajuda e colaboração! 

Gustavo Murta 

Exibições: 621

Responder esta

Respostas a este tópico

Irei numerar as dificuldades para facilitar as respostas e sugestões. Quando for responder, favor citar o número da tarefa. Obrigado. 

Tarefa 01 ) Precisamos criar uma "tabela" de tempo de inspiração relacionada com a velocidade do motor. Para o Arduino, será uma matriz, onde teremos o tempo_INS (varíável float) , e velocidade (variável integer). 

tempo_inspiracao = 0,6 a 1,8 s (resolução 0,1 s) Valor Padrão = 1,0 s

Velocidade variável de 300 a 30 mm/seg (esses valores serão aferidos ainda) 

stepper.setSpeedInMillimetersPerSecond

Por exemplo:

const int linhas_VI = 13;
const int colunas_VI = 2;


float velocidade_ins[ linhas_VI ][ colunas_VI ] = { { 0.6, 220 }, { 0.7, 210 }, { 0.8, 200 }, { 0.9, 180 }, { 1.0, 134 }, { 1.1, 112 }, { 1.2, 98 }, { 1.3, 88 }, { 1.4, 70 }, { 1.5, 60 }, { 1.6, 50 }, { 1.7, 40 }, { 1.8, 30 } };

Como fazer isso funcionar?? É possível ter um Array com dados float e integer? 

Como posso usar os dados dessa matriz para controlar a velocidade? 

Exemplo de teste do movimento do motor. 

velocidade_mm_por_seg = 180 ;                               // I NS = 0,9 seg
motorPressionaAmbu();                                              //  movimenta a aba de pressão do Ambu

Obs: estamos usando a biblioteca FlexyStepper para controlar o motor de passo.
https://github.com/tiagocriaar/AMBU-SOL-AR/tree/master/C%C3%B3digos...

A função de ajuste dos parâmetros pelo painel já esta funcionando. Eu preciso ajustar a velocidade do motor de acordo com a seleção feita no painel. 

Parabéns !!!

01) Usaria a tabela em milisegundos. Por ex para 0.6 acumule 600. Só o visor precisa estar em s para facilitar a enfermagem.

Tarefa 01)  RESOLVIDA ! 

Bom dia Eduardo!

Matou a charada! Muito bom e muito obrigado. Colocarei o seu nome na lista de colaboradores no código fonte do Programa Ambu Sol e Ar. 

Ontem á noite, conversando com o Rui Viana, eu até comentei com ele -  se não conseguir usar o float no array, eu multiplicarei por 10 o valor do tempo de inspiração.

Mas a sua solução é mais óbvia! E eu procurando chifre na cabeça de cavalo!

Analisando por que não encontrei informações sobre o uso de float em Array, deduzi que possivelmente isso não foi desenvolvido para o Arduino, devido ao reduzido tamanho da memória RAM. Isso faz sentido. 

Mudando o valor da variável tempo_inspiracao para milisegundos vai resolver a minha tarefa. 

Quando for mostrar no display eu divido por 1000. Resolvido! 

A pressão no grupo para terminar o código esta grande, e assim nem sempre a gente enxerga a melhor solução. 

Muito obrigado e abraços.

A base de tempo das variáveis de tempo era segundos.

Mudei a base de tempo de todas essas variáveis para milisegundos!  Valeu ! 

Para ficar mais claro :

// PROGRAMA RESPIRADOR SOL AR
//
// https://github.com/tiagocriaar/AMBU-SOL-AR
//
// Arduino Mega 2560 - Arduino IDE 1.8.12
// Motor de Passo NEMA23 15 kgf.cm / Driver de motor WD2404
// Display LCD 20x4 I2C / teclado com 16 Teclas - Keypad 4x4 - Rotary Encoder
// Eixo sem fim - Fuso 25 mm

//---------------------------------------- Definição dos Parâmetros ------------------------------------------------------------------
/*
Frequência Respiratória - 8 a 40 irpm (resolução 1) Valor Padrão = 16 irpm
Pressão no Ambu = 15 a 40 cmH2O (resolução 1) Valor Padrão = 20 cmH2O
Tempo de Inspiração = 0,6 a 1,8 s (resolução 0,1 s) Valor Padrão = 1,0 s
Relação I/E = tempo_expiracao / tempo_inspiracao Valor Padrão = 1:2,5
Tempo de Platô = 0 a 0,5 s (resolução 0,05 s) Valor Padrão = 0,2 s
*/

// sentido do motor = -1 para Ambu(anti-horário), 1 para posição inicial (horário)
// Comprimento do eixo sem fim = 200 mm
// Curso para compressão do AMBU = 100 mm ou 130 mm
// FUSO 25 mm - (25 mm de avanço por volta)
// Driver WED2404 configurado para meio passo 2/A = 400 passos/volta
// Para avançar os 100 mm são necessários 4 voltas no motor ou 4 x 400 passos = 1600 passos
// Para avançar os 130 mm são necessários 5,2 voltas no motor ou 5,2 x 400 passos = 2080 passos

Todos os protótipos e projetos que visam combater o COVID-19 usando eletrônica de código aberto do Arduino e fabricação digital não criam qualquer responsabilidade para o Grupo Ambu Sol e AR. 

Nenhum dos colaboradores do Grupo Ambu Sol e Ar  serão responsáveis, sob qualquer forma e extensão, por perdas ou danos de qualquer natureza (direta, indireta, conseqüente ou outra) que possam surgir relacionados aos protótipos do Respirador Ambu Sol e Ar. 

Qualquer equipamento de uso hospitalar, principalmente de suporte à vida deverá ter aprovação da ANVISA. 

Não use esse projeto ou parte do mesmo para suporte para pacientes, sem antes nos informar e sem essa autorização da ANVISA. 

Tarefa 01 ) Solução . Eduardo veja as mudanças que eu precisei fazer...

Clique na imagem para ampliar.

Bom dia José Gustavo Abreu Murta,

veja se é isto que vc precisa da tarefa 02.

Pode ser feito com pointer também, mas como é mais complexo o entendimento de pointer,

e outras pessoas possam ter dificuldade de entender, optei pelo mais simples: o "for" .

RV

TestaMatriz.ino

PS: Aguardando a tarefa 03. kkkkkkk

Tarefa 2 ) Sabendo o valor de tempo_inspiracao, obtido pela configuração no painel do operador, eu consiga determinar a velocidade do motor. (Usando a Matriz definida na Tarefa 01)

Rui, obrigado pela rápida resposta! 

Eu achava que seria possível determinar o valor da velocidade, diretamente através da Matriz. Mas pelo jeito isso não é possível. Vi que você fez uma varredura na Matriz para encontrar o valor. Isso atende parcialmente. Isso demanda tempo. 

Para economizar tempo então, já sei o que farei. 

Ao escolher o tempo_inspiracao através do painel, eu associarei um indice na Matriz. Portanto não será necessário usar então uma Matriz de duas dimensões. E sim uma Matriz com somente os valores de velocidade. 

Achava que o Arduino fosse mais inteligente. Mas já ajudou muito. Seu nome vai para a lista de colaboradores! 

Muito obrigado. Irei modificar o programa e postarei aqui. 

Abraços! 

Tarefa 02) Resolvida! Obrigado Rui ! 

Solução  (resumida nessa tela) :

Já consigo alterar a velocidade do motor através do painel do operador (usando o Vetor).

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço