Índice:

Multímetro PIC16F877: 6 etapas
Multímetro PIC16F877: 6 etapas

Vídeo: Multímetro PIC16F877: 6 etapas

Vídeo: Multímetro PIC16F877: 6 etapas
Vídeo: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Julho
Anonim
Multímetro PIC16F877
Multímetro PIC16F877

Introdução ao PICMETER

Este projeto PICMETER se tornou uma ferramenta útil e confiável para qualquer entusiasta da eletrônica.

  • Ele roda em um microcontrolador PIC16F877 / 877A.
  • É um sistema de desenvolvimento PIC
  • É um multímetro de 19 funções (voltímetro, medidor de frequência, gerador de sinal, termômetro …)
  • É um verificador de componentes (R, L, C, diodo …) com até 5 faixas em cada função.
  • Possui rádio ASK de banda 433MHz, que aguarda algum tipo de aplicação.
  • É um sistema de aquisição remota, onde outro computador (PC) pode coletar dados através da porta serial para exibição gráfica. (Tem sido usado como o front end do projeto de ECG).
  • Possui um recurso de registro (para registro de dados ao longo de horas), os resultados são carregados da EEPROM.
  • Ele produz sinais de teste para acionar alguns motores.
  • Ele foi totalmente testado, veja as fotos na Etapa 5.
  • O software é lançado como código aberto

Este Instructable é uma versão reduzida da Documentação Completa. Ele descreve o hardware e o software suficientes para que outros o construam como um projeto concluído ou como um sistema de desenvolvimento para fazer alterações adicionais, ou apenas procurar ideias para usar em outros projetos.

Suprimentos

O único chip crítico para comprar é o Microchip PIC16F877A-I / P

  • A = a revisão posterior que difere do original na definição dos bits de configuração.
  • I = faixa de temperatura industrial
  • P = Pacote em linha duplo de plástico de 40 derivações, 10 MHz, limites normais de VDD.

Também o Hitachi LM032LN de 20 caracteres por 2 linhas LCD que possui controlador HD44780 integrado.

As outras partes são apenas componentes elétricos genéricos, placa de circuito impresso, LM340, LM311, LM431, transistores de baixa potência de uso geral, etc.

Etapa 1: Descrição do PICBIOS

Descrição PICBIOS
Descrição PICBIOS

Descrição PICBIOS

Este software é executado em uma placa PIC16F877 e ocupa os 4k inferiores da memória do programa. Ele fornece o ambiente de software para um programa aplicativo que ocupa a metade superior da memória do programa. É semelhante em ideia ao BIOS do PC com alguns comandos do tipo “depuração” para o desenvolvimento do programa e tem 5 componentes:

  1. Menu de inicialização
  2. Programa de configuração
  3. Interface de linha de comando (via porta serial)
  4. Kernel e drivers de dispositivo
  5. Interface de programação de aplicativo

Etapa 2: Descrição do PICMETER

Descrição do PICMETER
Descrição do PICMETER

Descrição do PICMETER

Introdução

Como um multímetro (volts, amperes, ohms), ele tem muitas funções que são selecionadas por meio de um sistema de menu. Mas ser uma combinação de hardware e software o torna muito versátil, por exemplo, recursos como registro por longos períodos e envio de dados seriais estão disponíveis.

O menu é o “coração” onde as funções são selecionadas por meio dos botões [esquerdo] e [direito]. Então, para cada função, diferentes intervalos são selecionados pelos botões [inc] e [dec]. Por exemplo, os capacitores são medidos de cerca de 0,1 nF a 9000uF por meio de 5 faixas separadas.

2.1 Software PICMETER

Ele é organizado como um programa aplicativo que ocupa os 4k superiores da memória do programa e depende das funções do PICBIOS para E / S do dispositivo e tratamento de interrupções. Consiste na seção de menu que funciona como tarefa em segundo plano e controla os botões a cada 20 ms. Quando um botão é pressionado para alterar a função ou o intervalo, a rotina apropriada é chamada. Quando nenhum botão é pressionado, a leitura medida é atualizada em intervalos de cerca de 0,5 segundos. Basicamente, o menu é uma tabela de pesquisa.

2.2 Função do Medidor - seções

Existem muitas funções, portanto, esta parte é dividida em seções, cada uma lidando com funções de natureza semelhante. Esta é uma breve lista das seções, consulte a Documentação Completa para ver como cada seção funciona em detalhes. Devido às limitações da porta, existem 3 variações do projeto (consulte a documentação completa). As funções em fonte normal são comuns a todos os projetos. As funções UNDERLINED estão incluídas apenas no projeto PICMETER1. As funções em ITALICS estão incluídas apenas nos projetos PICMETER2 ou PICMETER3.

Seção VoltMeter - O arquivo fonte é vmeter.asm

Contém funções baseadas na medição de tensão usando o ADC.

  • Tensão ADC (lê a tensão na entrada selecionada, AN0 a AN4)
  • AD2 Dual (exibe a tensão em AN0 e AN1 simultaneamente)
  • Termômetro TMP -10 a 80? degC (2N3904 ou transdutor LM334 duplo)
  • LOG - define o intervalo de registro
  • OHM - Medição de resistência (método do potenciômetro) de 0Ω a 39MΩ em 4 faixas
  • DIO - Diodo, mede a tensão direta (0-2,5 V)
  • CON - Continuidade (emite um sinal sonoro quando a resistência é inferior ao limite de 25, 50 ou 100)

Componente Medidor1 - O arquivo de origem é meter1.asm

Medição de capacitor, indutor e resistor usando o circuito comparador LM311. Com base na medição do tempo de um ciclo de carga.

  • CAL - calibração - mede 80nf fixo e 10μF para autoteste e ajuste
  • Cx1 - medição do capacitor de 0,1nF a 9000μF em 5 faixas
  • Lx1 - medição do indutor de 1mH a ?? mH em 2 intervalos
  • Rx1 - medição do resistor de 100Ω a 99MΩ em 3 faixas

Componente Medidor2 Arquivo fonte Meter2.asm

Medição de componentes usando oscilador de relaxamento LM311 alternativo e oscilador Colpitts. Com base na medição do período de tempo de N ciclos. Este é um pouco mais preciso do que o método acima, pois o tempo de N = até 1000 ciclos é medido. É mais uma solução de hardware e requer mais construção.

  • Cx2 - medição do capacitor de 10pF a 1000 μF em 5 faixas.
  • Rx2 - medição do resistor de 100 ohm a 99M em 5 faixas.
  • Lx2 - medição do indutor de 1mH a 60mH em 1 faixa.
  • medição osc - indutor (método de Colpitts) de 70μH a 5000μH? em 2 intervalos.

Medidor de frequência - arquivo de origem Fmeter.asm

Contendo funções que usam contadores e temporizadores PIC, e pouco mais;

  • FREQ - Medidor de frequência de 0Hz a 1000kHz em 3 faixas
  • XTL - mede a frequência de cristais LP (não testado)
  • SIG - gerador de sinal de 10 Hz a 5 KHz em 10 etapas
  • SMR - motor de passo - direção reversa
  • SMF - direção de avanço do motor de passo.

Comunicações - o arquivo de origem é comms.asm

Funções para transmitir / receber sinal para testar periféricos seriais e SPI;

  • Teste UTX serial TX & inc e taxa de bits dec de 0,6 a 9,6k
  • Teste URX serial RX & inc e taxa de bits dec de 0,6 a 9,6k
  • SPM - testa SPI no modo mestre
  • SPS - testa SPI em modo escravo

Módulo de rádio FSK - o arquivo de origem é Radio.asm

Funções usando módulos de recepção e transmissão de rádio RM01 e RM02. Esses módulos fazem interface via SPI, que usa a maioria dos pinos da porta C.

  • RMB - definir taxa BAUD do módulo de rádio
  • RMF - definir frequência de RF do módulo de rádio
  • RMC - define a frequência do relógio do módulo de rádio
  • XLC - ajusta a carga de capacitância do cristal
  • POW - define a potência do transmissor
  • RM2 - transmitir dados de teste (módulo RM02)
  • RM1 - receber dados de teste (módulo RM01)

Módulo de controle - arquivo de origem control.asm

  • SV1 - Saída Servo (usando CCP1) de 1ms a 2ms em passos de 0,1ms
  • SV2 - Saída Servo (usando CCP2) de 1ms a 2ms em passos de 0,1ms
  • PW1 - saída PWM (usando CCP1) de 0 a 100% em etapas de 10%
  • PW2 - saída PWM (usando CCP2) de 0 a 100% em etapas de 10%

Aquisição remota de dados - o arquivo de origem é remote.asm

Modo remoto (Rem) - um conjunto de comandos para que o medidor possa ser operado a partir de um computador por meio de uma interface serial. Um comando coleta dados registrados na EEPROM por um período de horas. Outro comando lê as tensões em velocidade total do ADC no buffer de memória e, em seguida, transmite o buffer para o PC, onde os resultados podem ser exibidos graficamente. Efetivamente, este é um osciloscópio, trabalhando na faixa de frequência de áudio

Tempo - o arquivo de origem é time.asm

Tim - exibe apenas a hora no formato hh: mm: ss e permite a alteração usando 4 botões

Etapa 3: Descrição do circuito

Descrição do Circuito
Descrição do Circuito
Descrição do Circuito
Descrição do Circuito

Descrição do Circuito

3.1 Quadro de Desenvolvimento Básico

A Figura 1 mostra uma placa de desenvolvimento básica para colocar o PICBIOS em execução. É muito padrão e direto, fonte de alimentação regulada de 5 V e capacitores de desacoplamento, C1, C2….

O relógio é de cristal de 4 MHz, de modo que o TMR1 tique em intervalos de 1us. Os capacitores de 22pF C6, C7 são recomendados pela Microchip, mas não parecem ser realmente necessários. O cabeçalho ICSP (programação em série no circuito) é usado para programar inicialmente um PIC em branco com o PICBIOS.

A porta serial (COM1) - observe que TX e RX são trocados, ou seja, COM1-TX é conectado à porta C-RX e COM1-RX é conectado à porta C-TX (comumente referido como um "modem nulo"). Além disso, os níveis de sinal necessários para RS232 devem realmente ser + 12V (espaço) e -12V (marca). No entanto, níveis de tensão de 5 V (espaço) e 0 V (marca) parecem adequados para todos os PCs que usei. Assim, os níveis de sinal de RX e TX são apenas invertidos pelo driver de linha (Q3) e pelo receptor de linha (Q2).

O LCD LM032LN (2 linhas e 20 caracteres) usa a “interface HD44780” padrão. O software usa o modo nibble de 4 bits e somente gravação, que usa 6 pinos da porta D. O software pode ser configurado para nibble low (Port D bits 0-3) ou nibble high (Port D bits 4-7), conforme usado aqui.

Os interruptores de botão fornecem quatro entradas para seleção de menu. Use push para fazer interruptores enquanto o software detecta a borda descendente. Os resistores pull-up (= 25k) são internos à PORTA B. A porta RB6 não pode ser usada para interruptores, por causa do limite de 1nF (que é recomendado para ICSP). Não há necessidade de um botão de reinicialização?

button0

opções de menu à esquerda [◄]

button1

opções de menu à direita [►]

button2

intervalo / valor de incremento / selecionar [▲]

button3

intervalo / valor de decremento / selecionar [▼]

3.2 Entradas analógicas e verificador de componentes - Placa 1

A Figura 2 mostra o circuito analógico para PICMETER1. As entradas analógicas AN0 e AN1 são usadas para medição de tensão de propósito geral. Selecione os valores do resistor para atenuadores para fornecer 5 V nos pinos de entrada AN0 / AN1.

Para faixa de entrada de 10 V, m = 1 + R1 / R2 = 1 + 10k / 10k = 2

Para faixa de entrada de 20 V, m = 1 + (R3 + R22) / R4 = 1 + 30k / 10k = 4

AN2 é usado para medição de temperatura usando o transistor Q1 como um transdutor de temperatura “bruto”. Coeficiente de temperatura do transistor NPN a 20 celcuis = -Vbe / (273 + 20) = - 0,626 / 293 = -2,1 mV / K. (consulte a medição de temperatura na seção Analógico). O LM431 (U1) fornece uma referência de tensão de 2,5 V no AN3. Finalmente, AN4 é usado para teste de componente ou na seção analógica.

Para medição de componente, o componente de teste é conectado em RE2 (D_OUT) e entrada AN4. Os resistores R14 a R18 fornecem cinco valores diferentes de resistência usados para medição de resistência (método do potenciômetro) na seção analógica. Os resistores são “conectados no circuito” configurando os pinos da Porta C / Porta E como Entrada ou Saída.

O medidor1 realiza a medição do componente carregando várias combinações de capacitor e resistor conhecido / desconhecido. LM311 (U2) é usado para criar interrupções CCP1 quando um capacitor carrega para o limite superior (75% VDD) e descarrega para o limite inferior (25% VDD). Essas tensões de limite são definidas por R8, R9, R11 e potenciômetro R10 que dá leve ajustamento. Ao testar os capacitores, o capacitor C13 (= 47pF) mais a capacitância parasita da placa fornece um ajuste de 100pF. Isso garante que, quando o componente de teste for removido, o intervalo entre as interrupções CCP1 exceda 100us e não sobrecarregue o PIC. Este valor de ajuste (100pF) é subtraído da medição do componente pelo software. D3 (1N4148) fornece o caminho de descarga ao testar indutores e protege D_OUT, evitando que a tensão fique negativa.

λΩπμ

Etapa 4: Guia de construção

Guia de construção
Guia de construção
Guia de construção
Guia de construção

Guia de construção

O bom é que esse projeto é construído e testado em etapas. Planeje seu projeto. Para essas instruções, presumo que você esteja criando PICMETER1, embora o procedimento seja semelhante para PICMETER2 e 3.

4.1 Placa de Desenvolvimento PCB

Você precisa construir a placa de desenvolvimento básico (Figura 1) que deve caber em uma placa de circuito impresso de tamanho padrão de 100 por 160 mm, planeje o layout para mantê-lo o mais organizado possível. Limpe seu PCB e estanho todo cobre, use componentes e conectores confiáveis, testados sempre que possível. Use soquete de 40 pinos para o PIC. Verifique a continuidade de todas as juntas soldadas. Pode ser útil olhar as fotos do layout do meu quadro acima.

Agora você tem um PIC em branco e precisa programar o PICBIOS na memória flash. Se você já possui um método de programação - ótimo. Se não, recomendo o seguinte método, que usei com sucesso.

4.2 Programador AN589

Este é um pequeno circuito de interface que permite a um PIC programar a partir de um PC usando a porta da impressora (LPT1). O design foi publicado originalmente pela Microchip em uma nota de aplicação. (referência 3). Obtenha ou crie um programador compatível com AN589. Usei um design AN589 aprimorado descrito aqui. Este é o ICSP - o que significa que você insere o PIC no soquete de 40 pinos para programá-lo. Em seguida, conecte o cabo da impressora à entrada AN539 e o cabo ICSP do AN589 à placa de desenvolvimento. Meu projeto de programador obtém sua energia da placa de desenvolvimento por meio do cabo ICSP.

4.3 Configurações PICPGM

Agora você precisa de algum software de programação para rodar no PC. O PICPGM funciona com vários programadores, incluindo AN589, e é baixado gratuitamente. (Ver referências).

No Menu de Hardware, selecione Programador AN589, em LPT1

Dispositivo = PIC16F877 ou 877A ou detecção automática.

Selecione o arquivo hexadecimal: PICBIOS1. HEX

Selecione Apagar PIC, Programar PIC e Verificar PIC. Com alguma sorte, você obtém uma mensagem de conclusão bem-sucedida.

Remova o cabo ICSP, Reinicie o PIC, espero que você veja a tela PICBIOS no LCD, caso contrário, verifique suas conexões. Verifique o menu de inicialização pressionando os botões esquerdo e direito.

4.4 Conexão serial (hiperterminal ou massa)

Agora verifique a conexão serial entre o PIC e o PC. Conecte o cabo serial do PC COM1 à placa de desenvolvimento e execute um programa de comunicação, como o antigo Hyper-Terminal Win-XP ou PUTTY.

Se estiver usando o Hyperterminal, configure da seguinte maneira. No menu principal, chame> Desconectar. Em seguida, Arquivo> Propriedades> guia Conectar a. Selecione Com1 e clique no botão Configurar. Selecione 9600 bps, sem paridade, 8 bits, 1 parada. Controle de fluxo de hardware”. Em seguida, ligue> Ligue para conectar.

Se estiver usando PuTTY, Connection> Serial> Connect to COM1 e 9600 bps, sem paridade, 8 bits, 1 parada. Selecione “RTS / CTS”. Então Sessão> Serial> Abrir

No menu de inicialização do PICBIOS, selecione “Modo de comando” e pressione [inc] ou [dec]. A mensagem de prompt “PIC16F877>“deve aparecer na tela (se não, verifique sua interface serial). Pressione ? para ver a lista de comandos.

4.5 Programa PICMETER

Assim que a conexão serial estiver funcionando, programar a memória flash é tão simples quanto enviar um arquivo hexadecimal. Digite o comando “P”, que responde com “Enviar arquivo hexadecimal…”.

Usando o hiper-terminal, no menu Transferir> Enviar arquivo de texto> PICMETER1. HEX> Abrir.

O progresso é indicado por “:.” à medida que cada linha de código hexadecimal é programada. Finalmente carregue com sucesso.

Se você estiver usando PuTTY, pode ser necessário usar o Bloco de notas e copiar / colar todo o conteúdo de PICMETER1. HEX no PuTTY.

Da mesma forma para verificar, digite o comando “V”. No hiper-terminal, no menu Transferir> Enviar arquivo de texto> PICMETER1. HEX> OK.

Aviso = xx… Se você programar um chip 16F877A, receberá algumas mensagens de aviso. Isso tem a ver com as diferenças entre 877 e 877A, que são programados em blocos de 4 palavras. Infelizmente, o vinculador não alinha o início das seções em limites de 4 palavras. A solução simples é ter 3 instruções NOP no início de cada seção, então simplesmente ignore os avisos.

Reinicie e no menu de inicialização do BIOS, selecione “Executar aplicativo”. Você deve ver PICMETER1 no LCD.

4.6 Executar PICMETER1

Agora comece a construir mais seções da placa de desenvolvimento (Figura 2) para fazer com que as funções de Voltímetro e Medidor de Componente funcionem conforme necessário.

Meter1 precisa de alguma calibração. Na função “Cal”, ajuste R10 para fornecer leituras de 80,00, 80,0nF e 10.000uF aprox. Então leia um pequeno 100pF na função Cx1. Se a leitura estiver fora, altere a tampa de compensação C13 ou altere o valor de “trimc” em meter1.asm.

Agora execute a configuração do PICBIOS e altere algumas configurações de calibração na EEPROM. Calibre a temperatura ajustando o deslocamento de 16 bits (formato alto, baixo). Você também pode precisar alterar o valor de “atraso”.

Se a sua intenção é construir o projeto como ele está - Parabéns - você terminou! Conte-me sobre seu sucesso no Instructables.

4.7 MPLAB

Mas se você deseja fazer alterações ou desenvolver o projeto, você precisa reconstruir o software usando o MPLAB. Baixe o MPLAB da Microchip. Este é o “antigo” que é simples e direto de usar. Não experimentei a nova ferramenta de desenvolvimento labx, que parece muito mais complicada.

Detalhes de como criar um novo projeto e, em seguida, adicionar arquivos ao projeto em Documentação completa.

Etapa 5: fotos do teste

Fotos do teste
Fotos do teste
Fotos do teste
Fotos do teste
Fotos do teste
Fotos do teste

Foto acima do termômetro, lendo 15 grausC

Frequência de teste, leitura = 416k

Indutor de teste marcado 440uF, lê 435u

Testando o resistor de 100k, lê 101k, é fácil.

Testando o capacitor 1000pF, a leitura é 1,021nF

Etapa 6: referências e links

6.1 Folha de dados PIC16F87XA, Microchip Inc.

ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

6.2 Especificação de Programação de Memória FLASH PIC16F87XA, Microchip

ww1.microchip.com/downloads/en/devicedoc/39589b.pdf

6.3 Nota de aplicação AN589, Microchip Inc.

ww1.microchip.com/downloads/en/appnotes/00589a.pdf

6.4 Baixar PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 download grátis, Microchip

pic-microcontroller.com/mplab-ide-v8-92-free-download/

6.6 Folhas de dados para os módulos Hope RFM01-433 e RFM02-433, Soluções RF

www.rfsolutions.co.uk/radio-modules-c10/hope-rf-c238

6.7 LT Spice, Dispositivos Analógicos

www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html

6.8 Um circuito programador de pic baseado em AN589, Best-Microcontroller-Projects

www.best-microcontroller-projects.com/pic-programmer-circuit.html

6.9 Arquivos de código aberto

Código aberto

Recomendado: