Índice:

Termômetro interno / externo USB (ou 'Meu primeiro dispositivo USB'): 4 etapas (com imagens)
Termômetro interno / externo USB (ou 'Meu primeiro dispositivo USB'): 4 etapas (com imagens)

Vídeo: Termômetro interno / externo USB (ou 'Meu primeiro dispositivo USB'): 4 etapas (com imagens)

Vídeo: Termômetro interno / externo USB (ou 'Meu primeiro dispositivo USB'): 4 etapas (com imagens)
Vídeo: Como resolver o erro "Dispositivo USB não reconhecido" no Windows | Wondershare Recoverit 2024, Julho
Anonim
Termômetro interno / externo USB (ou 'Meu primeiro dispositivo USB')
Termômetro interno / externo USB (ou 'Meu primeiro dispositivo USB')

Este é um design simples que demonstra o periférico USB nos PIC 18Fs. Há um monte de exemplos para os chips 18F4550 de 40 pinos online, este projeto demonstra a versão menor do 18F2550 de 28 pinos. O PCB usa peças de montagem em superfície, mas todos os componentes estão disponíveis em versões com orifícios passantes. Eu uso peças de montagem em superfície porque é mais rápido fazer a placa sem fazer furos. O resultado final é um pequeno periférico USB que mede as temperaturas internas / externas. Os dados estão disponíveis para o PC por meio de uma porta serial virtual. Sensores de temperatura são usados no exemplo, mas outros sensores analógicos podem ser adicionados. PSVeja um gráfico ao vivo dos dados do meu registrador aqui: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = gráfico

Etapa 1: Visão geral do design

Visão geral do design
Visão geral do design
Visão geral do design
Visão geral do design
Visão geral do design
Visão geral do design

Componentes PIC necessários

Este periférico USB é baseado no PIC 18F2550 de 28 pinos. Este chip tem tudo o que é necessário para uma interface USB de velocidade total. Um capacitor de 0.1uf entre a alimentação e o aterramento desacopla o PIC da fonte de alimentação. Um cristal de 20 MHz (usado para gerar um clock interno de 48 MHz) e dois capacitores de 27pf. Um resistor de 10K da alimentação ao pino MCLR. Eu adicionei um diodo equivalente 1n4148 entre o resistor e a alimentação para que os 13 + volts colocados no MCLR durante a programação não danifiquem outros componentes na placa de circuito. Um cabeçalho ICSP (5 pinos) é usado para programar e depurar o dispositivo. Material USB necessário Uma tomada USB tipo 'B' fêmea. 220nf-440nf de capacitância é necessário para o regulador de voltagem USB interno. Eu uso dois capacitores 0.1uf (os mesmos usados para desacoplamento) sem problemas. Um LED com resistor limitador de corrente de 330ohm é usado para exibir o status da conexão USB. Material de sensor necessário Usei o sensor de temperatura microchip TC1047A como o sensor de temperatura interna. Ele está fisicamente soldado à placa - isso faz com que funcione alguns graus mais quente do que a temperatura ambiente. Um cabeçalho é usado para conectar uma sonda de temperatura externa (versão TO-92 do TC1047a). Um capacitor adicional de 0.1uf ajuda a desacoplar um longo fio do resto da placa. Os níveis de tensão USB não são consistentes o suficiente para medir e calcular com precisão a temperatura dos sensores analógicos. Uma referência de tensão externa (MCP1525, 2,5 volts) é usada. A referência de tensão requer um capacitor na saída de 1uf a 10uf. Sem este capacitor, a referência de tensão não funcionará.

Etapa 2: Firmware

O firmware usa a classe CDC USB para emular uma porta serial. O dispositivo aparecerá como uma porta de comunicação virtual em um PC. O firmware é dividido em três seções: 1. O driver USB se encarrega de enumerar o dispositivo em um PC e emular uma porta COM. 2. Uma rotina de serviço lê alternadamente os valores de temperatura e os converte em um formato legível. Fazer ambas as operações ao mesmo tempo fez com que o dispositivo USB perdesse a conexão com o PC (perda de tempo). A conversão dos valores de ponto flutuante em uma string no ciclo de serviço após a conversão resolveu o problema de conectividade. * 3. Finalmente, uma rotina principal recebe bytes enviados do PC e retorna as medições solicitadas. Múltiplas medidas são separadas por uma vírgula, as linhas são terminadas com um caractere nulo (hex 0x00) O firmware de demonstração aceita os seguintes comandos: Valor hexadecimal Returns0x00 Temperatura interna (sensor integrado) 0x01 Temperatura externa (conector externo) 0x02 Ambas as temperaturas (vírgula separados) A temperatura é calculada com base na referência de 2,5 volts e no deslocamento e inclinação do Microchip TC1047A. Outros sensores de temperatura podem ter características diferentes. A folha de dados TC1047A está disponível aqui: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf O firmware é escrito em MPLAB com o compilador PIC C18 de demonstração. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011O firmware USB real é fornecido pela Microchip. O ambiente original está disponível aqui: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = en021631Para editar o firmware: extraia toda a estrutura de diretório da fonte para seu diretório raiz (c: / MCHPFSUSB). Em seguida, você pode carregar o arquivo do espaço de trabalho no MPLAB. * A rotina float para string é um consumidor de recursos. Para contornar o problema de conectividade, a rotina de serviço USB é chamada em vários pontos da rotina float2string. Isso seria melhor consertado atendendo ao periférico USB em uma interrupção. Usei o hack para que o firmware ficasse o mais próximo possível da versão de referência.

Etapa 3: Testar o dispositivo

Testando o Dispositivo
Testando o Dispositivo
Testando o Dispositivo
Testando o Dispositivo
Testando o Dispositivo
Testando o Dispositivo

As instruções são para Windows, mas o dispositivo pode ser conectado a qualquer coisa que tenha drivers de emulação de porta serial CDC.

Programe o dispositivo com o firmware. Todos os bits de configuração devem ser definidos corretamente no firmware. Conecte o dispositivo a uma porta USB. O Windows irá detectá-lo e solicitar que você escolha um driver. CLIQUE EM ‘PROCURAR O DRIVER PERSONALIZADO’. Navegue até o local do arquivo.inf incluído no arquivo do projeto (driver-win2k_winxp). O Windows usará esse arquivo para instalar o dispositivo. * Uma observação sobre o driver CDC - o driver de emulação da porta serial do CDC está incluído no Windows. O arquivo.inf (fornecido pela Microchip) simplesmente informa ao Windows para conectar esses drivers ao dispositivo. Para descobrir qual porta COM foi atribuída ao dispositivo, faça o seguinte: Vá para o painel de controle (iniciar-> configurações-> painel de controle) Clique duas vezes em 'sistema' Clique na guia 'hardware'. Clique em ‘gerenciador de dispositivos’ Clique em ‘+’ próximo às portas. Uma lista de portas COM no sistema é exibida. Eu vi o dispositivo aparecer como COM 3 e 4, mas isso varia de acordo com o sistema. Se não for óbvio qual porta é nova, tente o seguinte: Desconecte o dispositivo da porta USB. Uma das portas desaparecerá. Esta é a porta COM do dispositivo #. Conecte o dispositivo novamente, a porta reaparecerá. O pequeno aplicativo VB (fonte incluída) pode ser usado para testar o dispositivo. Digite o comando a ser enviado e clique em 'Iniciar'. A resposta será mostrada na janela.

Etapa 4: O que mais ele pode fazer?

O que mais ele pode fazer?
O que mais ele pode fazer?

Esta placa de demonstração é um bom ponto de partida para uma pequena estação meteorológica doméstica: Adicione um sensor de umidade HIH3160 ou substitua o sensor de temperatura analógico pelo sensor serial de temperatura e umidade Sensiron HT74 de alta precisão. Adicione um sensor de pressão Freescale MPX (a) 4115 a medir a pressão barométrica. Quer distribuir esses dados para a web? Incluí-lo em seu próprio site, visualizá-lo no google earth ou obter atualizações em seu reed RSS? Veja este instrutivo sobre a integração deste dispositivo com o backend da web syndicIT.com:

Recomendado: