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.

Gravando o Bootloader do Arduino no ATmega328

Para substituir o ATmega do Arduino é necessário gravar nele o Boot loader. Isso é feito externamente com um gravador In-System (conectado no Arduino na barra de pinos ICSP). Nesse caso, é necessário o uso de um gravador. Caso se deseje utilizar o Arduino para gravar um ATmega isso também é possível (existem explicações na internet). Não é possível substituir o ATmega original do Arduino por outro que não contenha o chamado programa de Boot loader (ver explicação abaixo).

Boot loader é um pequeno programa escrito no final da memória de programa e serve para que o microcontrolador gerencie a gravação de sua memória. Para tal, é necessário uma interface de comunicação externa com o software de desenvolvimento. Isso é feito através da USART, por isso os pinos RX e TX do ATmega328 (pinos 0 e 1 no Arduino, respectivamente) são conectados ao conversor Serial/USB (da placa do Arduino) para comunicação com o computador. Obs.: é possível utilizar o conversor Serial/USB do Arduino para outra atividade, basta retirar o ATmega328 do soquete ou configurar os pinos 0 e 1 para serem entradas (alta impedância). Dessa forma, os pinos RX e TX do conversor podem ser acessados externamente (pinos 0 e 1).

Para gravar o Boot loader no ATmega328 é necessário seguir os seguintes passos (é necessário saber o que isso significa e ter um programa adequado para a gravação, ver marcador Gravação Arduino): 

1 - gravar os Fuses: 
   EXTENDED BYTE = 0xFD
   HIGH BYTE = 0xDE
   LOW BYTE = 0xFF 

2 - gravar a memória flash (programa de boot loader *.hex), encontrado, por exemplo, em:
C:\arduino-1.0.1\hardware\arduino\bootloaders\optiboot\optiboot_atmega328.hex 
Válido para o Arduino UNO

3 - gravar os LOCK BITS (valor 0xCF)

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.


Instalando o Arduino no Atmel Studio

É possível gravar e programar diretamente o Arduino no Atmel Studio. A configuração do Atmel Studio é uma tarefa árdua, com inúmeros passos, mas vale a pena poder gravar diretamente o Arduino sem depender de um programa externo, não  há a necessidade de procurar o arquivo *.hex, tudo é feito automaticamente.



Abaixo a forma simplificada e mais eficiente:
http://omarfrancisco.com/arduino-programing-using-atmel-studio-6-0/

Nestes dois vídeos um processo mais longo:
http://www.youtube.com/watch?v=F74khQnh9pM
http://www.youtube.com/watch?v=qEcWR5EUNdk

Como eu não sou expert no assunto, se precisares de ajuda será necessário consultar algum dos autores dos  posts supracitados.

Estruturação e Criação de um Projeto no Atmel Studio

Quando se programa é fundamental dar manutenção e portabilidade ao programa. Isso é feito ao se estruturar o código de programação através de arquivos de programação separados por funcionalidade, os *.h (arquivos de cabeçalho) e respectivos *c (arquivo com as funções). No vídeo abaixo eu explico como fazer isso, aplicado aos arquivos da pasta de PROGRAMAS do livro AVR e Arduino: Técnicas de Projeto.
Também, como utilizar o arquivo *.hex para simulaçao no Proteus.

Exemplo da estruturação de um suposto projeto fonte_digital (livro AVR e Arduino: Técnicas de projeto).




ENGENHARIA ELETRÔNICA NO IFSC!!!

Agora é oficial, teremos Engenharia Eletrônica no Dept. de Eletrônica do Campus Florianópolis do IFSC a partir de 2013/1.
Com um corpo docente altamente capacitado e adaptável às mudanças tecnológicas, sem dúvida, a engenharia eletrônica do IFSC será uma das melhores do país!

Confira o Planejamento Pedagógico do Curso e a sua Grade Curricular. Inscrições no site ingresso.ifsc.edu.br. Para maiores informações envie um e-mail para eng.eletronica@ifsc.edu.br




Depuração de um programa Assembly no Atmel Studio

Para a compreensão do funcionamento do ATmega é primordial  utilizar a depuração do ambiente de programação. Para exemplificar isso, em um vídeo apresento a analise de um programa Assembly simples para ligar e desligar um LED quando um botão é pressionado. Utilizo o Atmel Studio 6, mas poderia ser o AVR Studio 5.


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. 

RESUMO DOS REGISTRADORES DE I/O DO ATMEGA328

Para o programador do ATmega328 é muito importante ter um resumo dos registradores de I/O, permitindo a programação das características desejadas de forma rápida e precisa.
Dessa forma, aqui disponibilizo o documento para os aventureiros e profissionais da área.

How to read one 220V switch with a uController?


This is a interesting circuit  to read one switch on AC power. Also can be used to read the frequency of an AC signal (a schmitt trigger can be needed). It´s based on an optoacopler IC to isolate and to convert the AC signal into a DC signal.

 

Identificando Resistores SMD

Neste caso, uma imagem vale mais que mil palavras.

Identificando Resistores PTH

A identificação de resistores PTH (Plated-Through-Hole) é feita de acordo com as faixas de cores que o mesmo possui, as quais definirão o valor do resistor e sua tolerância, conforme demonstrado pela figura abaixo e exemplo (aqui).


Quando se emprega resistores é necessário utilizar algum valor comercial, dado pela diferente série a qual ele pertence. Uma das mais comuns é a E24, conforme apresentado abaixo.
Dependendo do projeto será necessário resistores de precisão, tanto para o seu valor quanto para variações deste com a temperatura. As séries servem para indicar os valores que o projetista irá encontrar sem necessitar associar resistores.
Os resistores poderão ter valores múltiplos de 10 das séries comerciais, como por exemplo:
Série E24: 1.2 Ohm, 12 Ohm, 120 Ohm, 1k2 Ohm, 12k Ohm, 120k Ohm, 1M2 Ohm, 12M Ohm e 120M Ohm.


RESISTORES DE 4 FAIXAS

Série E6:
1.0, 1.5, 2.2, 3.3, 4.7, 6.8

Série E12:
 1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2

Série E24 (tolerância +- 5%):
 1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1

RESISTORES DE 5 FAIXAS

Série E48:
1.00, 1.05, 1.10 ,1.15, 1.21, 1.27, 1.33, 1.40, 1.47, 1.54, 1.62, 1.69, 1.78, 1.87, 1.96, 2.05, 2.15, 2.26, 2.37, 2.49, 2.61, 2.74, 2.87, 3.01, 3.16, 3.32, 3.48, 3.65, 3.83, 4.02, 4.22, 4.42, 4.64, 4.87, 5.11, 5.36, 5.62, 5.90, 6.19, 6.49, 6.81, 7.15, 7.50, 7.87, 8.25, 8.66, 9.09, 9.53

Série E96 (tolerância +- 1%):
1.00, 1.02, 1.05, 1.07, 1.10, 1.13, 1.15, 1.18, 1.21, 1.24, 1.27, 1.30, 1.33, 1.37, 1.40, 1.43, 1.47, 1.50, 1.54, 1.58, 1.62, 1.65, 1.69, 1.74, 1.78, 1.82, 1.87, 1.91, 1.96, 2.00, 2.05, 2.10, 2.15, 2.21, 2.26, 2.32, 2.37, 2.43, 2.49, 2.55, 2.61, 2.67, 2.74, 2.80, 2.87, 2.94, 3.01, 3.09, 3.16, 3.24, 3.32, 3.40, 3.48, 3.57, 3.65, 3.74, 3.83, 3.92, 4.02, 4.12, 4.22, 4.32, 4.42, 4.53, 4.64, 4.75, 4.87, 4.99, 5.11, 5.23, 5.36, 5.49, 5.62, 5.76, 5.90, 6.04, 6.19, 6.34, 6.49, 6.65, 6.81, 6.98, 7.15, 7.32, 7.50, 7.68, 7.87, 8.06, 8.25, 8.45, 8.66, 8.87, 9.09, 9.31, 9.53, 9.76

Série E192:
1.00, 1.01, 1.02, 1.04, 1.05, 1.06, 1.07, 1.09, 1.10, 1.11, 1.13, 1.14, 1.15, 1.17, 1.18, 1.20, 1.21, 1.23, 1.24, 1.26, 1.27, 1.29, 1.30, 1.32, 1.33, 1.35, 1.37, 1.38, 1.40, 1.42, 1.43, 1.45, 1.47, 1.49, 1.50, 1.52, 1.54, 1.56, 1.58, 1.60, 1.62, 1.64, 1.65, 1.67, 1.69, 1.72, 1.74, 1.76, 1.78, 1.80, 1.82, 1.84, 1.87, 1.89, 1.91, 1.93, 1.96, 1.98, 2.00, 2.03, 2.05, 2.08, 2.10, 2.13, 2.15, 2.18, 2.21, 2.23, 2.26, 2.29, 2.32, 2.34, 2.37, 2.40, 2.43, 2.46, 2.49, 2.52, 2.55, 2.58, 2.61, 2.64, 2.67, 2.71, 2.74, 2.77, 2.80, 2.84, 2.87, 2.91, 2.94, 2.98, 3.01, 3.05, 3.09, 3.12, 3.16, 3.20, 3.24, 3.28, 3.32, 3.36, 3.40, 3.44, 3.48, 3.52, 3.57, 3.61, 3.65, 3.70, 3.74, 3.79, 3.83, 3.88, 3.92, 3.97, 4.02, 4.07, 4.12, 4.17, 4.22, 4.27, 4.32, 4.37, 4.42, 4.48, 4.53, 4.59, 4.64, 4.70, 4.75, 4.81, 4.87, 4.93, 4.99, 5.05, 5.11, 5.17, 5.23, 5.30, 5.36, 5.42, 5.49, 5.56, 5.62, 5.69, 5.76, 5.83, 5.90, 5.97, 6.04, 6.12, 6.19, 6.26, 6.34, 6.42, 6.49, 6.57, 6.65, 6.73, 6.81, 6.90, 6.98, 7.06, 7.15, 7.23, 7.32, 7.41, 7.50, 7.59, 7.68, 7.77, 7.87, 7.96, 8.06, 8.16, 8.25, 8.35, 8.45, 8.56, 8.66, 8.76, 8.87, 8.98, 9.09, 9.19, 9.31, 9.42, 9.53, 9.65, 9.76, 9.88.

Regras para a Escrita de Artigos Técnicos e TCCs

Neste documento apresento algumas dicas para a escrita de documentação técnica, como: artigos científicos e trabalhos de conclusão de curso.
Muitas regras são de estilo e podem ser diferentes dependendo do modelo de documento a seguir. Aconselho consultar seu orientador ou orientadora.


COMO GRAVAR O ARDUINO SEM O SEU PROGRAMA

Quando se programa o Arduino muitas vezes se deseja gravar o hardware independentemente da sua IDE. Isto permite desenvolver projetos em programas profissionais e com mais recursos que a limitada IDE do Arduino.
Um bom programa para a gravação dos AVRs é o AVRdude, confiavel em muito utilizado. Para gravar o Arduino esse programa é empregado em conjunto com uma interface gráfica (inclusive pela IDE do Arduino).  Comecei utilizando o AVRdude-GUI, entretanto acabei encontrando o AVR8 Burn_O_Mat mais completo e facil de utilizar. Abaixo o video explicativo e o programa.

Obs.: para o Arduino Uno e/ou para a versão 1.0 (ou superior) do programa do Arduino, deve-se selecionar em <Programmer> arduino (Arduino). Nesse caso, deve-se selecionar os arquivos avrdude.exe e avrdude.conf, respectivamente, da pasta onde foi descompatado o programa do Arduino, por exemplo: C:\arduino-1.0.1\hardware\tools\avr\bin\avrdude.exe e C:\arduino-1.0.1\hardware\tools\avr\etc\avrdude.conf



FONTE DIGITAL DE TENSÃO

   Este projeto apresenta uma fonte digital microcontrolada com o ATmega88, saída de 1 a 15V, 0,8A, resolução de 0,1V e 10mA. Utiliza um circuito simples e os limites de tensão e corrente podem ser alterados de acordo com o transformador empregado e algumas alterações na programação. 

   O princípio de funcionamento baseia-se em um circuito amplificador com ganho estável. São empregados dois canais AD do ATmega88, um lendo a tensão proveniente de um divisor resistivo e outro, lendo a corrente proveniente de um resistor shunt. O conversor DA, para o controle, emprega um sinal PWM e um filtro RC de segunda ordem.

   O firmware é quase uma "pintura", possui controle Proporcional e Integral (PI), oversample para aumentar a resolução do AD de 10 para 12 bits e filtro de média móvel de 16 amostras. O programa consumiu módicos 2982 bytes de memória Flash, 169 bytes de RAM e 2 bytes de EEPROM.

   O projeto surgiu do desafio de se construir uma fonte digital simples. A idéia do circuito surgiu de uma pesquisa na internet, o coração do sistema é o circuito amplificador para ajuste da tensão de saída, simples, estável e com ganho fixo. O resultado funcional do protótipo foi conseguido após várias horas de programação e ajustes no hardware, resultando em um projeto simples, barato e funcional.

   O circuito é dependente do resistor shunt empregado, como eu não tinha um muito preciso, o circuito apresentou um erro em torno de 20mA para a corrente e um erro na tensão de ajuste de até 0,2V. Toda a precisão depende da corrente consumida pela carga, e pode ser melhorada utilizando-se um resistor shunt de precisão.

  O detalhamento completo do projeto pode ser visto aqui, abaixo os arquivos de programa, esquemático e PCI.




Depois de algum tempo ...


Esquemático
Layout da Placa de Circuito Impresso
Programa (AVR Studio)

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)

LIVRO AVR - ATmega8

Download do Sumário, Programas, Figuras.
Apêndice:
      A: Instruções Assembly do ATmega8 (em português) 
      C: Circuitos para o Acionamento de Cargas (chave transistorizada e CIs) 
      D: Projeto de Placas de Circuito Impresso (como fazer um bom Layout) 
      E: Tabelas de Conversão (ASCII - DEC - HEX - BIN)

      Lista de Exercícios
SINOPSE
Devido ao desempenho de processamento, os microcontroladores AVR de 8 bits tem assumido papel de destaque entre os microcontroladores de sua classe. Sua arquitetura moderna, além de permitir execuções mais rápidas dos programas, permite uma maior densidade de código comparado as outras tecnologias de 8 bits. Sua popularidade crescente corrobora para o seu emprego em um número cada vez maior de projetos, tudo associado a um custo atraente, a disponibilidade de um grande número de periféricos e a ferramentas de programação gratuitas.
Ao abordar a tecnologia dos modernos AVRs, esta obra inclui inúmeras técnicas para o projeto de sistemas microcontrolados raramente encontrados em um único livro, tais como: o uso de displays de LCD a caractere e gráficos, geração de pequenas músicas, leitura de teclado, matriz e cubo de LEDs, técnicas de multiplexação, geração de formas de onda, comunicação serial com um computador, leitura de sensores e acionamento de motores. Também são apresentadas as técnicas para o desenho de placas de circuito impresso e o projeto de chaves transistorizadas. Ainda, é apresentado um software para a simulação de microcontroladores, de fácil e crescente uso no meio acadêmico e industrial, o PROTEUS – ISIS.
Os inúmeros programas desenvolvidos contam com seus respectivos códigos em linguagem C, os quais podem ser empregados para qualquer outra tecnologia de microcontroladores devido à portabilidade dessa linguagem. Para a validação dos códigos foi desenvolvido um hardware específico, na forma de um kit didático.
Ao final de cada capítulo são sugeridos exercícios, que além de apresentarem idéias de projeto, apresentam as informações técnicas necessárias, permitindo o desenvolvimento crescente e a solidificação do conhecimento.
Em resumo, esta obra apresenta uma abordagem objetiva e prática para o ensino de técnicas de projeto para o uso com microcontroladores.
 

ATmega8 versus ATmega88/168/328

Este tutorial apresenta as diferenças entre os microcontroladores que podem ser utilizados no Arduino, incluindo exemplos.

ATmega8 versus ATmega88/168/328

Controle de Motores Servo com Sinais PWM

No programa abaixo é apresentado o uso do Timer1 do ATmega para gerar dois sinais PWM para o controle de dois motores servo.

PWM_servo.c (AVR Studio)

Como Gravar um Arquivo *.hex no Arduino (AVRDUDE - GUI)


Neste tutorial é explicado como empregar o programa AVRdude para gravar qualquer programa compilado (*.hex) no Arduino. Isto permite o desenvolvimento de programas em outras IDEs que não a do Arduino. Neste exemplo o AVRStudio foi empregado.
As vantagens de utilizar outras IDEs na programação do Arduino são as facilidades que estas dispõem, tais como: debug do programa e otimização.

Arquivos de programa
Detalhes + Vídeo

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)

Apostila sobre o AVR - ATmega


Este material foi exclusivamente desenvolvido para as aulas que ministro, para ser empregado por alunos e SEM fins comerciais. Parte de seu conteúdo não foi adequado para a língua portuguesa.  Foi o ponto de partida para a escrita do livro sobre os AVRs.

As fontes empregadas não foram devidamente citadas ao longo do texto e algumas figuras foram copiadas sem cuidados com os direitos autorais. Dessa forma, se alguém se sentir prejudicado, peço sinceras desculpas, pois este material acabou na rede.

Logo, é justo que eu distribua a apostila, com um pedido de desculpas aqueles que, por ventura, se sentirem ofendidos pelo desreipeto às leis de copyright.

Apostila_AVR

PROGRAMA PARA SIMULAÇÕES ELETROMAGNÉTICAS

Programa interativo para simulações eletromagnéticas, desde a eletrostática, magnetostática e ondas eletromagnéticas. Inclui a simulação de antenas e ondas, permitindo a geração de diferentes cenários.
Feito para o Matlab, com interface gráfica amigável.

PROGRAMAS USANDO FDTD (DIFERENÇAS FINITAS NO DOMÍNIO DO TEMPO)

Estes programas são empregados para simulações eletromagnéticas, foram desenvolvidos para o Matlab. Entretanto, os códigos podem ser adaptados para alguma linguagem de programação.
São códigos muito úteis para pesquisadores da área!

* Cálculo das freqüências de ressonância de um guia retangular - MODO TE/TM.
* Propagação de onda ao ar livre usando condições absorventes de Mur de primeira ordem (célula TM) e PML (Perfect Matched Layer, célula TE).
* Espalhamento onda plana e cilindrica, encontrando obstáculos metálicos, célula TE.
* Propagação tridimensional (3D) de onda ao ar livre (pulso Gaussiano), usando condições absorventes de Mur de primeira ordem e UPML2 (Uniaxial Perfectly Matched Layer).
* Onda Plana 3D utilizando UPML1 .
DOWNLOAD

Função para o Matlab para plotagem de um sinal em frequência

Função que extrai a transformada de Fourier de um sinal e plota o eixo horizontal em Hertz (freqüência).  DOWNLOAD