Conceitos básicos - parte 1 - pull-up / pull-down
Autor: Gustavo | Publicado: 2011-07-14T05:11:00-03:00

Julho chegou e com ele as minhas férias da faculdade, hora de quebrar o jejum de atualizações!

Após algum tempo aprendendo (ou tentando aprender) sobre microcontroladores, alguns conceitos considerados básicos vão sendo absorvidos naturalmente, entre eles os (considerados por mim) principais são a adição de resistores de pull up/down ao projeto, utilização de técnicas de debouncing por hardware ou software e programação baseada em bit masking.

Como eu ainda não falei deles em nenhum post,&nbsp;resolvi que já era hora de deixar "catalogado"


Resistores de pull-up e pull-down

Resistores de pull-up / pull-down são resistores adicionados ao projeto para assegurar um certo nível lógico em um pino de entrada lógica, em outras palavras, eles forçam um estado ( 0 ou 1 ) no pino do microcontrolador caso a via fique em aberto, como por exemplo quando você conecta um botão ou algum outro &nbsp;circuito que tenha saída aberta (como uma saída&nbsp;open collector)

Exemplificado:



pull-up, quando o botão não está pressionado (A) e quando está pressionado (B)

No caso desse exemplo:
(A) Quando o botão não está&nbsp;pressionado&nbsp;o resistor impõe o nível lógico 1 (5V) ao pino do microcontrolador, uma vez que a entrada do microcontrolador consome muito pouca corrente pode-se considerar que não haverá corrente fluindo pelo resistor e portanto pela lei de ohm a queda de tensão sobre ele será nula.
(B) Já quando o botão é pressionado, o terra é jogado diretamente no pino do microcontrolador levando seu&nbsp;nível&nbsp;lógico para 0 (0V), aterrando também o resistor, que consumirá uma corrente equivalente ao seu valor&nbsp;ôhmico.
Resistores de pull-down possuem praticamente o mesmo modo de operação, diferenciando dos de pull-up apenas pelo fato de serem conectados ao terra para forçar nível zero enquanto um botão (que agora será conectado ao Vcc) &nbsp;não é pressionado.
Alguns cuidados na escolha do valor do resistor devem ser tomados em um projeto, o seu valor não pode ser baixo o suficiente para consumir uma corrente excessiva da fonte quando ele for aterrado, e nem alto o suficiente para que a corrente consumida pela entrada do microcontrolador (baixa, mas existente) cause uma queda de tensão muito grande sobre o resistor, levando a entrada a ficar em um&nbsp;nível flutuante, outro detalhe importante na análise é a resistividade de contato do botão utilizado, caso o botão apresente uma resistividade alta (contato sujo ou oxidado pelo tempo) e o resistor tenha um valor relativamente baixo, poderá haver&nbsp;na entrada uma&nbsp;tensão baixa o suficiente para causar flutuações, devido ao divisor de tensão formado entre o resistor e o botão. Valores usuais para os resistores são na casa das dezenas ou centenas de Kiloohms, mas dependendo das&nbsp;exigências&nbsp;e propriedades do projeto (tensão de&nbsp;operação, otimização para baixo consumo, etc) os valores podem mudar.
PS: grande parte dos microcontroladores atuais (como os MSP da TI) possuem resistores de pull-up e pull-down internos que podem ser ativados apenas configurando registradores, esse é um recurso simples e importante, pois além de economizar no projeto elétrico é possível desconecta-los apenas pela programação, algo desejado em alguns casos. Por isso, antes de colocar um resistor de pull-up/down em seu projeto, verifique se o&nbsp;microcontrolador&nbsp;utilizado&nbsp;não&nbsp;possui esta opção.
Próxima parte: Debouncing