Ir ao conteúdo
  • Cadastre-se

TUTORIAL: Projeto PicUSB quase pronto PIC<-->RF<-->PIC<-->USB<-->PC


Posts recomendados

Conseguiu ver a questão de amostragem de ondas de batimento cardíaco no seu projeto?

Eita!

vão processar esse tipo de sinal? ou vão apenas quadrar o menino para usar como contagem de batimentos?

Se for a primeira opção,ja comecem a pensar em critério de nyquist pra amostrar isso ai, e tambéem como vão fazer a aquisição de sinais.

(Cai no tópico porque sou amante de processamento de sinais)

Dúvidas eu também fico a disposição.

Abs.

Link para o comentário
Compartilhar em outros sites

Salve Julierme beleza!!

Cara ainda não tive tempo para desvendar direito a teoria ainda. Mas, pedirei um help para você quando voltar a mexer novamente com o sinal. Agora eu estou focado na apresentação do PIBIC que será no mês que vem e tenho que modular o poster ainda.

Com relação ao seu projeto boa sorte e que tudo dê certo por ai!

Grande abraço!

Salve Felipe!

então a principio estou com um gerador de função que gera o batimento cardíaco e a princípio estou tentando reproduzir o sinal que eu vejo também pelo osciloscópio em um aplicativo em C# por meio do barramento USB.

Quando eu conseguir amostrar corretamente ai eu incrementarei as derivações do mesmo!

Valeu..

Link para o comentário
Compartilhar em outros sites

reproduzir o sinal que eu vejo também pelo osciloscópio em um aplicativo em C# por meio do barramento USB.

Boa, então ai que está se realmente vai reproduzir esse tipo de sinal, alguns cuidados terão de ser tomados na hora de amostrar esse sinal via conversor A/D, tanto quanto a amplificação e condicionamento, além de um bom filtro passa altas para retirar as componentes que não interessam em um sinal cardiaco.

A propósito como seria feita a aquisição desse tipo de sinal?

Abs.

Link para o comentário
Compartilhar em outros sites

A propósito como seria feita a aquisição desse tipo de sinal?

Abs.

A principio somente para entender e dominar algumas técnicas eu coleto do gerador um sinal amplificado e com off-set para que a parte negativa do sinal seja amostrada também.

Então, como batentes do conversor estou deixando o valor de minimo equivalendo a 10 do conv A/D e para máximo em torno de 1000 do conv A/D. O sinal sai do gerador com 5Hz. Do jeito que o sinal sai do gerador passando por um cabo sinal flexível com malha de proteção conecto diretamente a uma porta do PIC configurada para A/D.

Este método será utilizado somente para ver a reprodução em um aplicativo em C# sendo que apos a sua reprodução "fiel" ai passarei a coletar como se fosse um sinal real, ou seja, nas frequências e amplitudes idênticas e nesta etapa entraria com eletrônica de amplificação e filtragem necessárias.

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois...

Boa noite Comunidade! Salve Matheus!

Excelente trabalho! Que nunca te faltem respostas e auxílio em tudo que você procurar!

Matheus, sou mais um que estou te "seguindo" aqui, e meu foco nesse instante é na comunicação USB entre o 18F4550 e um PC. Segui à risca seus códigos para programar o PIC usando um compilador CCS versão 4.114 e montei o hardware também exatamente como você indicou. No PC uso Windows 7 e montei em Visual C#2008 um programinha muito simples usando seus códigos também, mas usando apenas as funções Status_Pic() e SumaPic().

Consegui resolver todos os problemas com drivers com pouca dificuldade... O Pic é reconhecido, é enumerado, reconhece o pedido do PC, tanto de Soma quando de Status, mas não responde em hipótese alguma, e, pior do que isso, trava depois de apenas um pedido respondido.

Evoluindo um pouco o código para tentar descobrir onde estaria o problema, eu coloquei leds para verificar se o PIC recebia e entendia os pedido de Status ou Soma, e os leds efetivamente são acionados quando o programa no PIC "passa" pelas funções que deveriam responder se foi solicitada uma Soma ou seu Status. Além disso, coloquei 8 leds no PORTB e quando uso a sua função de SumaPic, o PIC entende essa solicitação, recebe corretamente os dados da parcelas a serem somadas enviadas pelo PC e, como eu programei, coloca, em binários claro, os valores das duas parcelas a serem somadas, separadas por um delay no PORTB... mas depois de apenas uma solitação, seja de Soma ou de Status, o programa trava no looping e não mais reconhece os pedidos do PC.

Quando eu compilo o PIC aparecem os seguintes avisos:

>>> Warning 203 "C:\Program Files\PICC\drivers\pic18_usb.c" Line 619(1,1): Condition always TRUE

>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_token_reset)

>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_flush_out)

>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_tbe)

>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_flush_in)

>>> Warning 202 "TesteUSB.c" Line 37(6,10): Variable never used: send

>>> Warning 202 "TesteUSB.c" Line 40(7,10): Variable never used: adc

Memory usage: ROM=13% RAM=10% - 12%

0 Errors, 7 Warnings.

Não sei bem, mas acho que o erro pode estar nos arquivos ".c" ou ".h" incluídos no projeto... Será que alguém pode me dar um help nisso!

Obrigado a todos pela atenção! Fiquem em paz e com Deus, sempre!

Link para o comentário
Compartilhar em outros sites

As mensagens acima não são erros. São apenas atenções. São normais......

Qual foi o tamanho do delay que você colocou nos leds?

Talvez ao invés de utilizar os comandos output_high e output_low, suponho que esteja usando, utilize o output_toggle. Ele deverá acender o led na primeira passada e desligar na segunda.

Mas veja que esse código comigo até funcionou no windows 7, mas dava muito bug. Só usei de forma plena, no windows XP.

Tenho outro exemplo aqui para o windows 7 ..........

Posta seu código completo.

De preferência coloque em um .rar o projeto todo juntamente com o C# e armazena no www.4shared.com.

Assim posso tentar reproduzir seu erro. Já tenho hardware montado aqui com um 18F2550. Aí fica fácil de mudar.

Falou

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Oi Matheus... em primeiro lugar muito obrigado mais uma vez pela sua atenção.... além disso, por favor me desculpe pela demora... mas, eu tive uma semana muito cheia na semana passada e não queria te pedir socorro de novo sem testar tudo que fiz no Windows XP Mode, que eu não conhecia, não tinha instalado, e gostei muito de conhecer. Infelizmente, mesmo no Windows XP meu programa não funcionou... o máximo que eu consegui com o XP foi a enumeração do dispositivo, ou seja, ser reconhecido pelo Windows, mas em momento algum consegui fazer o PIC reconhecer qualquer chamado do Windows. Como você pediu, os arquivos estão disponíveis em http://www.4shared.com/rar/MCMQ6jNl/file.html, com mais algumas poucas informações.

Se você puder me disponibilizar os arquivos que você tem para Windows 7 eu te ficaria muito grato, porque, mesmo tentando fazer a coisa funcionar em XP, eu tenho que usar o Windows 7...

Outra coisa, eu vi não sei onde, afinal bati a cabeça por essa "Net de Deus" como um doido tentando encontrar soluções, mas acho que foi você que estava com dificuldade em arranjar algum componente... veja, eu sou de São Paulo... tudo que você precisar daqui e que eu puder te ajudar, será com grande prazer que o farei... conte comigo!

Matheus, mais uma vez muito obrigado pela atenção!

Fique em paz e com Deus, sempre!

Paulo...

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Oi Matheus! Boa tarde! Boa Semana!

Matheus, será que você poderia me mandar os arquivos que você disse ter para rodar USB em Windows 7? Essa é uma semana mais tranquila, quero ver se consigo mexer com isso, apesar de que desde que te escrevi venho quebrando demais a cabeça com isso...

Fique em paz e com Deus, meu camarada!

Paulo...

Link para o comentário
Compartilhar em outros sites

Poxa PVC, desculpa cara. Não tinha visto sua última postagem do dia 20/03...

Passou batido aqui no fórum...

Seguinte, o projeto feito pelo JYM: http://www.4shared.com/rar/f9I1HXNe/picwinusb.html

Consegui brincar muito com ele.

Consegui ler dois LDR e enviar a tensão sobre eles para o PC e mostrar em um gráfico;

Consegui controlar 3 barras de led via PWM através do PC, eviando os valores dos duty-cicles..

Consegui ler a cor predominante no desktop e enviar essa informação para as 3 barras de led. O efeito parece com o ambilight da philips, mas bem mais fraquinho uhahuahuaahuahu

Consegui ler a informação de um player de MP3 como o winamp e enviar o nome da música e do artista ao PIC e mostrar em um LCD.

Vou ver seu arquivo depois. Falou

Link para o comentário
Compartilhar em outros sites

Oi Matheus! Você é mesmo um grande sujeito! Se todo mundo tivesse a sua boa vontade em compartilhar conhecimento o mundo seria mesmo mais fácil de se viver... e conviver...

Obrigado pelos arquivos... nem precisa analisar os outros que eu te mandei... vou estudar esses aqui com WinUSB, era isso mesmo que eu queria, e a medida que eu for evoluindo vou te dando um retorno...

Mais uma vez, MUITO OBRIGADO!

Fique em paz e com Deus, Sempre!

Paulo...

Link para o comentário
Compartilhar em outros sites

Matheus, "vim" só te agradecer!

Rapaz, depois de penar demais com os drives da Microchip, consegui finalmente ver tudo funcionando no Windows7 com esses (PicWinUSB) códigos que você me mandou. Muito obrigado MESMO pela sua ajuda! Vou montar agora uma redinha de sensores e depois te escrevo de novo sobre o desempenho e a estabilidade do sistema inteiro!

E não se esqueça Matheus... precisando qualquer coisa de São Paulo, conte comigo!

Fique em paz e com Deus! Forte abraço!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Ola Matheus muito legal o tópico de eletrônica.

Também gosto muito.

Eu tenho um projeto legal mas não sei nada da parte de programação.

Eu estou com W7 Ultimate 64 bits, VS2010 Ultimate, Conversor USB/RS485 e usando C#.

Como posso reconhecer este conversor dentro de minha aplicação C# e colocar a porta COMx que ele emula como padrão para comunicação de minha aplicação?

Minha aplicação envia a cada 6 segundos um comando de leitura para a COMx.

Tenho 6 leitores de partículas conectados ao conversor.

ID01, ID02, ID03, ID04, ID05 e ID06.

No meu projeto, eu uso estes leitores de partículas para checar a quantidade de partículas em 6 amostras de aguá.

Estou usando este projeto para aprender como reconhecer PLUG and PLAY e como automaticamente setar o único device que tem relação com o contexto.

Abraços,

ocaccy

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois...

Oi Matheus, eu de novo! Tudo bem com você?

Matheus, eu já te disse o quando foi útil tudo que você fez por aqui... agora, à medida que fui aprimorando meus programas, me deparei com o limite de 64 bytes enviados do PIC para a porta USB, setados nas linhas "#define USB_EP1_TX_SIZE 64" no PCW e "byte[] rdBuffer = new byte[64];" no VisualC#.

Eu tenho como aumentar esse número, ou seja, enviar pacotes de mais de 64 bytes?

Minha outra questão é que nesse modelo que você me enviou, o PIC fica em looping aguardando uma solicitação do PC-VisualC#. Você tem a contrapartida disso, ou seja, o PC-VisualC# aguardando uma solicitação do PIC?

Mais uma vez muito obrigado pela atenção!

Link para o comentário
Compartilhar em outros sites

Nossa. Agora você me apertou. Pois eu nunca precisei trabalhar com mais de 64, então nao sei dizer.

Sobre o PC ficar esperando comando do PIC seria possivel sim, mas você tem que tratar bem os hendlers ou o programa no pc pode travar ou ficar doidao. Já o PIC aceita numa boa ficar num loop infinito esperando comandos.

Falou

Link para o comentário
Compartilhar em outros sites

Usando CDC,(COM emulada), só vai conseguir isso,que é o mesmo da classe USB HID e BULK,isto é pacotes de 64 bytes.

Usando isochronous,o tamanho é determinado pelo driver no Windows,que voce tem que programar.

Pacotes infinitos ou 'grandes',só com USB nativo e um driver específico para o dispositivo.

Uma observação interessante é que se voce usar BULK ou HID,o Windows XP aceita pacotes de até 512 bytes,mas com o Windows vista em diante isso foi 'barrado'.

Link para o comentário
Compartilhar em outros sites

Faz um tempão que fiquei fora, mas acho que posso ajudar indiretamente, pois o projeto do Matheus foi o pioneiro e que ajudou muita gente!

Este link que estou te passando me ajudou a desenvolver um microscópio automatizado. Primeiramente se for possível reproduza o projeto e depois utilize as partes que for conveniente para você.

Segue o link: http://www.waitingforfriday.com/index.php/Open_Source_Framework_for_USB_Generic_HID_devices_based_on_the_PIC18F_and_Windows

Link para o comentário
Compartilhar em outros sites

Amigos, muito obrigado pelas respostas, obrigado pela ajuda.

Eu conectei dois pics 18F2550 entre si pela USART e um deles ao PC usando os códigos do Matheus. O PIC "escravo" lê e armazena os dados de um sensor num looping de 1024 bytes e então envia em pacotes de 64 bytes esses dados para o PIC mestre que por sua vez envia ao PC para ser plotado em um gráfico no Visual C#. Este ciclo está sendo feito em em mais ou menos 400 milissegundos, o que é bastante bom, mas "a gente" é "guerrero", sempre quer testar limites.

Mais uma vez, muito obrigado! Que nunca vos falte ajuda quando precisarem!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Prezado Matheus e amigos deste reduto PIC-USB, paz e amor a todo vocês!

Por favor, alguém sabe que função usar para detectar que o cabo usb foi desconectado, ou por exemplo, que o PC que roda o Visual C# foi desligado? E, na outra ponta, a função semelhante, que do Visual C# eu usaria para testar a conexão com o PIC? Do Visual eu até imagino que possa fazer um looping chamando o pic constantemente, mas pode existir algo mais inteligente!

Mais uma vez obrigado a todos!

Link para o comentário
Compartilhar em outros sites

Sobre o seu projeto eu não sei,mas numa conexão USB nativa,essas informações são facilmente controladas.

Por exemplo,usando HID,que é simples, o programa no PC só envia pacotes de bytes quando existe uma conexão.

Nos programas que faço, cada vez que algo é enviado,é feito uma verificação,mas essa verificação,no meu caso,é dependente do Componente que uso no Delphi ou Borland C++.

No lado do PIC,usando HID,ele só retorna algo ser for consultado primeiro,isso é uma caracteristica da classe HID,logo se o programa no PC não consultar o PIC ou não estiver mais ativo,o PIC fica em stand by ou tambem pode ser programado no firmware para se desconectar depois de um tempo.

Link para o comentário
Compartilhar em outros sites

Prezado VTRX, obrigado pela atenção...

Imagine a seguinte situação... eu tenho o PIC e o PC-Visual C# conectados pela USB, os dois ligados, e em stand-by... Para detectar uma desconexão do cabo, ou o desligamento de um ou outro "lado", eu posso manter um looping enquanto em stan-by, com o PC perguntando e o PIC respondendo algo muito simples, e na falta de pergunta ou resposta, eu saberia que a linha foi rompida...

A minha pergunta é se o próprio protocolo USB não faz isso e teria um espécie de interrupção, de um ou outro lado, indicando desconexão do cabo!

Mais uma vez, obrigado pela atenção!

Paz e Amor!

Link para o comentário
Compartilhar em outros sites

Oi vtrx... Tudo bem?

É o seguinte, eu fiz uma rede de sensores e atuadores ligados a um pic 18F4550, que transmite esses dados a um computador, que por sua vez mostra o valor de cada sensor numa aplicação montada com Visual C#, mas também montei um pequeno painel com leds, botões e displays de 7 segmentos, de modo a poder operar essa rede de forma independente, pelo painel ou pelo PC.

Na verdade, o painel é apenas uma sofisticação do projeto... e então eu queria colocar um led que indicasse no painel que o PC está ativo ou não.

Estou usando a comunicação USB BULK que copiei aqui do Matheus, com driver WinUSB!

Por enquanto é isso! Obrigado camarada!

Paz pra você!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!