Pullup externo vs interno (Português)

Existem duas maneiras de puxar os pinos no Arduino – usando resistor interno e externo. Eu me pergunto quando devo usar o resistor externo em vez de INPUT_PULLUP.

Comentários

  • Pela minha experiência, a única diferença é " pullup / pullup externo é mais fácil de substituir " e talvez também " apenas olhando para o circuito você pode ver o externo resistor para que ' seja mais fácil de entender o design após alguns meses "

Resposta

Você pode usar o resistor interno ou externo na aplicação normal.

Cada método tem vantagens próprias:

Resistência interna

  • Prós: flexível para alterar alterando o código
  • Prós: reduza o tamanho do PCB
  • Prós: reduza o custo (muito pequeno)
  • Contras: pode tornar o MCU quente

Resistência externa

  • Pr os: Reduzir o calor para MCU
  • Contras: Não é fácil de substituir quando é PCB embutido
  • Contras: Aumentar o tamanho do PCB

Além disso , Os resistores pull-up e pull-down não são usados apenas para a porta INPUT, mas também para a porta OUTPUT. No caso da porta OUTPUT. O resistor externo tem outra vantagem: flexibilidade na conexão de dispositivos com diferentes tensões de E / S. Por exemplo, em hardware I2C veja I2C no nível de hardware .

NOTA: Até onde eu sei, no momento da escrita, Arduino a biblioteca NÃO suporta INPUT_PULLDOWN

Comentários

  • 1. O calor gerado pelo pullup interno é insignificante. 2. Algumas placas (não as baseadas em AVR) têm INPUT_PULLDOWN.

Resposta

“Contras: pode tornar o MCU quente”
Não vai. P = V ^ 2 / R, então 5 * 5 / 20.000 = 1,25mW, isso não aquecerá o processador. Mesmo girando todos os 80 em um Mega2560, e puxando todos para baixo, só dissipará 0,1 W.

“NOTA: Até onde eu sei, no momento da escrita, a biblioteca Arduino NÃO suporta INPUT_PULLDOWN” Isso é porque Atmega328P, “1284,” 2560, etc. família de dispositivos não tem resistores internos suspensos. Apenas pullup. Consulte a Seção 14 de suas planilhas de dados, “Portas de E / S”.

Este pullup é geralmente insuficiente para o pullup I2C, a borda ascendente criada pelo pullup interno de 20K a 50K é muito lenta. São necessários 4,7 K externos para cerca de 2,2 K (depende de quantos dispositivos I2C estão conectados). E a especificação do barramento I2C diz que eles devem estar no final do barramento, não na origem do barramento (que geralmente é o processador).

Se você tiver um fio longo saindo de um botão ou interruptor, isso geralmente é um bom momento para usar um pullup externo para garantir bons níveis de comutação entre alto e baixo.

Resposta

O “Arduino Language “(ou seja, a função pinMode()) conhece apenas INPUT_PULLUP.

Portanto, você precisa de resistores externos para resistores PULLDOWN.

Os sinais de OUTPUT não são flutuantes, então o termo PULLUP / PULLDOWN resistor não se aplica lá.

Além disso, o valor de um resistor pullup interno não é ajustável. Se esse valor (20 .. 50k) não for apropriado (I²C precisa de algo menos que 10k), um resistor externo é necessário.

Comentários

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *