Mensagem

"Sonhar mais um sonho impossível, lutar quando é fácil ceder, vencer o inimigo invencível, negar quando a regra é vender."
Miguel de Cervantes.

"Os microprocessadores RISC funcionam a partir do princípio genial de se encarregar das coisas mais fáceis e deixar todas as partes difíceis para outras pessoas resolverem."
Douglas Adams.

Mostrando postagens com marcador Arduino. Mostrar todas as postagens
Mostrando postagens com marcador Arduino. Mostrar todas as postagens

Sensor de Temperatura LM35 na IDE do Arduino

   Tenho visto algumas coisas bizarras relativas a programação do LM35 na IDE do Arduino. Então, resolvi apresentar um código mais elegantes aos robistas.
   O primeiro ponto é a tensão de referência que deve ser empregada pelo conversor AD do ATmega328 (o microcontrolador do Arduino), que deve ser ajustada para 1,1V e não 5V como visto por aí. Melhorando a resolução da conversão significativamente.
   O segundo ponto é a equação de transformação que deve converter o número digital puro do AD para o valor de temperatura, utilizar ponto flutuante é deveras péssimo em termos de desempenho e consumo de memória.
   Os detalhes técnicos podem ser encontrados no meu livro AVR e Arduino: Técnicas de Projeto, Seção 19.4, para aqueles que apenas gostariam de usar o código, segue comentado.

   
//LEITURA DE TEMPERATURA COM O LM35
//sensor no pino A4

unsigned int valor_temp=0;

void setup()
{
   Serial.begin(9600); 

  //definicao da tensão de final de escala para a conversao (1.1V)
   analogReference(INTERNAL);   
}

void loop()
{
   //equacao de conversao otimizada 
   valor_temp = analogRead(A4) + analogRead(A4)*19/256;   

   Serial.print("Temperatura = ");
   Serial.print(valor_temp/10); 
   Serial.print(".");
   Serial.print(valor_temp%10); 
   Serial.write(186);
   Serial.println("C");

  delay(1000);
}

/* O LM35 apresenta uma saída de 10mV/°C. O valor de leitura do AD é dado por ADC = Vin*1024/Vref, como Vref = 1,1V, para converter o valor do AD para graus Celsius, é necessário multiplicar o valor ADC por 1100/1024 (considerando uma casa decimal antes da vírgula). Utilizando a simplificação matemática e mantendo a variável temperatura com 16 bits, resulta: 1100/1024 = 1 + 19/256 */

Programação C para Arduino

Na data de 26/05/2013 fiz uma breve introdução à programação C para Arduino no The Developer´s Conference (TDC2013), aqui em Florianópolis. A apresentação é apenas um indicativo do que foi falado. Download na figura abaixo.



LCD_KEY_ETC_Shield

Desenvolvi em conjunto com o professor Villaça um shield para o Arduino visando o ensino de técnicas básicas de projeto com microcontroladores. O shield possui:
* LCD alfanúmerico.
* Teclado matricial 4x4,  permitindo o uso de 5 teclas com entradas individuais.
* Dois sensores: LM35 (temperatura) e LDR (luminosidade).
* 8 LEDs sinalizadores.
* Pequena área de expansão.


Aqui o esquemático, aqui o circuito (Gerber) para a confecção da placa e aqui o programa de teste (Atmel Studio).

Mini Curso de Arduino com Bluetooth

Este mini curso trata do uso da comunicação sem fio Bluetooth pelo Arduino. Explico como utilizar um modelo de Bluetooth Shield, incluindo sua configuração como Mestre/Escravo e o emprego para a comunicação com um computador ou dispositivo portátil com Android (tablet ou celular). Este mini curso  foi ministrado na semana comemorativa dos 25 anos do Dept. de Eletrônica do IFSC.


Aqui alguns programas auxiliares.

Mini Curso de Arduino Básico

Este mini curso destina-se ao público leigo no Arduino, trata do acionamento de LEDs, leitura de botões, comunicação serial e leitura de grandezas analógicas. Foi ministrado na semana comemorativa dos 25 anos do Dept. de Eletrônica do IFSC.


Livro - AVR e ARDUINO: TÉCNICAS DE PROJETO

IT´S TIME TO ROCK THE MICROCONTROLLER TEACHING!


Esta obra foi desenvolvida como referência para projetistas de sistemas microcontrolados e como livro texto para áreas afins.

Apresenta:

* Um grande conjunto de técnicas de projetos eletrônicos e de programação para o emprego com microcontroladores. Dentre os assuntos abordados, destacam-se:
*  displays de 7 segmentos;
*  LCDs alfanuméricos (16x2) e gráfico (128x64);
*  teclado matricial;
*  geração de sinais PWM;
*  módulo de ultrassom;
*  motores DC de baixa potência para eletrônica digital;
*  conversores CC-CC e CC-CA;
*  cartão SD;
*  RTOS;
*  técnicas de multiplexação;
*  matriz e cubo de LEDs;
*  I2C como máquina de estados;
*  comunicação serial com computador;
*  comunicação sem fio (RF básico e Bluetooth);
*  técnicas para uso com o conversor AD;
*  técnicas para a conversão DA simples;
*  programação C com assembly;
*  técnicas para o desenho de placas de circuito impresso.

* Detalhes do ATmega328 para trabalho com a plataforma Arduino, permitindo explorar suas características (facilidade de uso,  aquisição e disponibilidade de inúmeros módulos de expansão).
*  Um software para simulação de circuitos microcontrolados.
*  Amplo conjunto de exercícios.
-----------------------------------------------------------
DOWNLOAD: Sumário, Programas (5/11/15), Figuras e Exercícios.

VERSÃO COMPLETA em PDF aqui !!!
-----------------------------------------------------------

P/ + detalhes ou compra clique na figura abaixo
(também vendido aqui).


 NOT DESIGNED FOR DUMMIES
C Programming for AVR Studio.

-----------------------------------------------------------

ERRATAS OU COMENTÁRIOS:

-----------------------------------------------------------

Nos programas, se for utilizado o Atmel Studio 6 ou AVR Studio 5.1 e houver erro de compilação, quando aparecer prog_char é necessário substituí-lo por PROGMEM const char.

---------------------------------------------------------
Na pg. 158 a Tab. 6.1 esta errada, a correta possui endereçamento duas vezes maior, consequentemente as referências aos endereços das interrupções estão incorretas, favor consultar o datasheet do ATmega328.
---------------------------------------------------------
Na Fig. 6.1 (pg. 162) existe duplicidade da chave para o TWI, uma deve ser do ADC. Aqui a figura corrigida com o reajuste das chaves. 
---------------------------------------------------------
Na Fig. 9.12 (pg. 224) o sinal de 60 Hz deve estar conectado ao pino PD5 (T1) e não PD3. Aqui a figura corrigida. 
-----------------------------------------------------
No Capítulo 6 a Tab. 6.1 (pg. 158) e pg. 160 contém os endereços  de interrupção do ATmega88 e não do ATmega328, os endereços crescem de dois em dois e não de um em um. 

Driver para Motor DC para o Arduino

Esta na hora de compartilhar o projeto do Tri Motor shield!
Este shield permite o controle de pelo menos dois motores DC e dois motores de passo. Ideal para o projeto de robôs que utilizam motores DC.
O projeto emprega o LD298, ponte H dupla, além do ULN2803 (driver de corrente).
Esquemático
Lista de Componentes
Como Montar
PCI (gerber)
Programa teste (AVR Studio)

Projeto de um Cronômetro para uso no Arduino

O objetivo deste projeto é a construção de um cronômetro (direto e reverso), com funções de relógio e sorteador de números. O programa foi desenvolvido no AVR Studio.

Esquemático
PCI (gerber)
PCI (pdf)
Programa (AVR Studio)