sexta-feira, 25 de setembro de 2015

Termômetro Digital com o Attiny


Aqui vai mais um projeto muito legal, e apesar de redundante é bem útil. O diferencial desse termômetro para dos demais vendidos comercialmente, é que ele usa um display digital de led de 7 segmentos para mostrar a temperatura ambiente, que torna a leitura muito visível até mesmo a noite. Outro diferencial é sua precisão, dado pelo CI LM35, que mostra a temperatura exata, ao contrário desses outros que dão "uma idéia" da temperatura ambiente.

Já vou avisando que eu projetei esse termômetro para mostrar temperaturas positivas, digo isso porquê o LM35 irá retornar uma tensão negativa caso a medição seja uma temperatura abaixo de zero, e os microcontroladores AVR (no caso do Attiny), não são capazes de ler, só conseguem ler dados analógicos positivos. Ou seja esse termômetro vai parar no "00" caso a leitura seja uma temperatura abaixo de zero. Digo isso pois você pode querer usar esse projeto para monitorar um freezer ou coisa assim. Há como fazer isso, porém você terá que "enganar" a leitura, ou subindo a tensão de leitura (no caso por exemplo -50º = 0v) ou teria que usar uma outra porta analógica só para ler a tensão indo na direção contrária. No google há vários exemplos de como fazer isso.

A montagem é simples porém trabalhosa. A ideia é usar 2 ci 75hc595 para multiplicar as portas de saída do Attiny (que só tem 6 disponíveis), um CI para cada dígito. A ligação do ci 75hc595 em cada display também é simples, basta ligar cada porta em um segmento de led, e o GND em comum sai um resistor de 1k para regular a tensão dos leds. De uma olhada na relação das portas no display abaixo:


O primeiro algarismo é o mestre (que tem o pino "Data" do ci75hc595 ligado diretamente no Attiny) e o segundo algarismo é escravo (ligado o pino Q7' do ci mestre, no pino "data" do segundo ci 75hc595), multiplicando assim 3 pinos do Attiny em 16. Os pinos "latch" e "clock" são comuns nos 2 ci75hc595. De uma olhada na minha referência:
O ultimo passo é ligar o sensor de temperatura LM35 em uma das portas que sobrou do Attiny, o resto fica por conta do código. No código você pode definir todas as portas usadas nesse projeto, assim como o calculo e a montagem dos números para o display. Para baixar o código clique aqui. No código há rotinas para economizar energia, faz com que o Attiny desligue por um tempo e acorde para atualizar a temperatura atual, indispensável para ser usado com bateria.

As aplicações desse projeto são bem amplas, você ao invés de soldar o LM35 diretamente na placa, pode estender com um cabo para fazer a leitura num boiler, leitura da temperatura corporal, e até blindando o sensor hermeticamente, ler a temperatura de líquidos, basta que a faixa de leitura seja de 0 a 99º. Lembre-se o sensor LM35 pode ler de -55º a 150º, basta modificar um pouco esse projeto, nesse caso deixo pra você quebrar a cabeça um pouco, só compartilhe aqui o que você fez ok ?

sábado, 19 de setembro de 2015

Dado eletrônico usando o Attiny

Eu sei, a internet está cheia de dados eletrônicos por ai, mas por que eu quis reinventar a roda ? Muito simples, eu queria um projeto que fosse o mais simples e barato possível e ainda ser o mais "divertido". 

Divertido pelo fato de que ele não simplesmente joga aleatoriamente um resultado nos leds, mas você pode rodar o dado pelo tempo que quiser, e você ainda vê isso acontecer. É mais ou menos como jogar naquelas maquinas de cassino, você aperta e segura o botão e ele vai mostrando rapidamente números aleatórios nos leds (numa frequência de 0,1 segundo), sendo impossível você "escolher" um numero, ao soltar o numero para de rodar e "trava" por 5 segundos. Ele trava justamente para que se caso o resultado não tenha agradado o jogador, não seja possível ele rodar novamente "acidentalmente", tornando o jogo mais justo. Se você acha pouco ou muito esse tempo, basta alterar a constante "tempo" no código fonte, antes de compilar.

Esse projeto basicamente usa um Attiny85 (porém pode usar até um Attiny25, mas no Brasil a diferença de preço é quase nula, não compensa) e um CI 74HC595, já que o attiny tem somente 6 portas disponíveis e para esse projeto precisaremos de 8 (7 para os leds e 1 para o botão), abaixo eu mostro a minha referência para ligar o CI 74HC595 no attiny:
E nessa próxima imagem, como deve ser ligado os leds nas suas respectivas portas:



Eu ainda não passei para uma placa definitiva, (vamos ver quando terei saco pra isso), mas de maneira geral funciona bem, e ainda está implementado para funcionar com uma bateria botão de 3V (CR2032), sendo assim nada de resistores para os leds, já que todos os componentes funcionam bem com 3V. E nada de chave liga-desliga também, pois no código está implementado para que o Attiny desligue toda vez que os leds apagam, eu medi a corrente com um multímetro e quando os leds estão desligados a corrente era ZERO (sim eu fiquei impressionado com esse modo de economia do Attiny, ta de parabéns Atmel !). Aparentemente o 74HC595 também não consome energia quando todas as saídas estão em low. Bom chega de falar, veja como ficou:

Exemplo como ficou (ainda na protoboard)

Como eu disse, esse projeto não tem a necessidade de nenhum resistor nem capacitor (se achar necessário fique a vontade de por), somente a ligação direta mesmo. Se você viu um lm78l05 perdido ali na protoboard, é porque primeiramente eu fiz ele funcionar numa bateia de 9V, depois mudei de idéia, mas deixei ele espetado lá numa trilha nula, pois eles realmente são fáceis de perder. Caso tenha se interessado, aqui está o código para ser compilado via IDE do Arduíno (Você achará dezenas de tutoriais por ai de como gravar o Attiny usando arduino). E para não ter erro, aqui está a biblioteca do Attiny85 que eu utilizei, que aliás para esse projeto eu setei o Attiny para rodar a 1Mhz (oscilador interno) afim de economizar energia (lembre-se de usar a opção "gravar bootloader" para fazer isso). Qualquer dúvida fique a vontade de coloca-la nos comentários deste post.