sábado, 31 de outubro de 2015

Mais exemplos para a Placa Fambruino 2.0

Recentemente, eu desenvolvi, para uso dos meus alunos de Microcontroladores, uma pequena placa baseada no microcontrolador Microchip PIC18F2550, regravável através da porta USB com o uso de um bootloader.  O lay-out deste placa é mostrado a seguir:
Lay-out da Placa de Circuito Impresso Fambruino 2.0

A disposição dos componentes é mostrada na próxima Figura.
Disposição dos componentes da Placa Fambruino 2.0

Fiz alguns exemplos para uso nesta placa, utilizando o Compilador PCWH da CCS (eu uso a versão 4.0) e deixei todos os exemplos neste pacote aqui. O pacote zipadocontém 3 exemplos prontos para uso na placa Fambruino, bem como um cabeçalho padrão para uso nesta placa, além do código .HEX referente ao bootloader e de um software Windows (desenvolvido pela MikroE) para gravar na Placa.

Faça o download e utilize por sua conta e risco. Eu os testei aqui e funcionaram, mas cada um precisa saber o que está fazendo. Você vai precisar também do Compilador PCWH fornecido pela CCS www.ccsinfo.com.
O exemplo 3 mostra como utilizar o Conversor AD do PIC18F2550 para ler a tempratura a partir de um sensor LM35 ligada na entrada AN0.
As placas prontas ficaram assim:
Placas Fambruino versão 2.0 -confeccionadas por Ryndack Componentes.

Finalmente, depois de montadas, ficaram assim:




sexta-feira, 7 de agosto de 2015

Aula 6 - Eletrônica Embarcada - UNISAL - Campinas - Comunicação Serial e EEPROM

Material referente à Aula 6 do Curso de Eletrônica Embarcada na Unisal - Campinas.

Assunto:  Comunicação Serial  (USART) e EEPROM, microcontroladores PIC,   linha 16F

AULA 6- Comunicação Serial e EEPROM

domingo, 5 de julho de 2015

sexta-feira, 26 de junho de 2015

Versão 2.0 da Placa Fambruino Uno

Finalmente, desenhamos a versão 2.0 da placa Fambruino Uno, ainda em face simples (porque eu quero prototipá-la internamente aqui na FDI antes de mandar fabricar placas de dupla face).
As principais alterações em relação ao modelo 1.0 da mesma placa são:

a) Foram acrescentados mais 2 botões com os respectivos resistores de pull-up ligados aos pinos RA0 e RA1 do PIC18F2550;  Estes resistores podem ser desligados simplesmente retirando-se um jumper da mesma placa e tais pinos podem então ser utilizados como entradas analógicas;

b) Foi acrescentado um sensor LM35 para medidas de temperatura na própria placa.
Com ele, podemos construir um termômetro usando-se os 3 displays da própria placa. O sensor pode ser ligado ou desligado através de um fio na placa.

Segue o lay-out da versão 2.0:


Placa Fambruino Uno, versão 2.0   (26/06/2015)

Como um primeiro exemplo para testar esta placa, escrevi um programa utilizando o compilador CCS, que ilustra como se faz a multiplexação dos 3 displays a LEDs de 7 segmentos, utilizando o própprio padrão da placa. Este exemplo é o mostrado na foto que ilustra o protótipo.

Este programa implementa um contador digital de 000 até 999  no display de Leds da Placa Fambruino:
LINK PARA O PROGRAMA CONTADOR-FAMBRUINO:

Aula 4 - Microcontroladores I - UNISAL

Material referente à AULA 4 - Microcontroladores PIC, curso de pós-graduação em Sistemas Embarcados, Unisal, Campinas.
O assunto desta aula é:
 
1 - Conversor A/D
2 - PWM

para microcontroladores PIC de 8 bits, tomando-se por referência os modelos PIC16F876 e PIC16F877
Link para o material desta aula:  https://drive.google.com/file/d/0B0T8omiWkMq8RVpYRG5od2VCWmM/view?usp=sharing

sexta-feira, 19 de junho de 2015

Placa Fambruino Uno

Sabe o que eu mais detesto no Arduino Uno ?

Não é a IDE (lamentável na otimização do código, diga-se de passagem)  e  sim a falta de periféricos externos ao Microcontrolador.

De nada adianta ter uma plaquinha Arduino UNO sem nenhum  shield.  O aluno ou estudante não faz quase nada com ela.

Como o aluno vai praticar alguma coisa de software (firmware) se para tudo que ele for fazer precisa ter um protoboard do lado e uma grande quantidade de fios e componentes externos ?

Arduino (sozinho) não é bom para o professor ministrar aulas.

Eu queria uma placa que fosse tão simples quanto Arduino Uno, alimentada pela USB, pequena, barata, simples de montar, e já contivesse algum shield on-board, então criei  o Fambruino  UNO.

Pelo menos ai eu posso ensinar um pouquinho de firmware sem depender de shields externos

Apresento-lhes:

A Placa FAMBRUINO  UNO 
Protótipo da Placa Fambruino Uno - Versão inicial, ainda em placa de fenolite face simples.


Croqui mostrando a distribuição dos componentes:
                                                 Lay-out e distribuição dos componentes

Lay-out da versão beta (protótipo) ainda em placa de face simples:
                                                 Lado cobreado - Placa Fambruino Uno

Baseada no  microcontrolador PIC18F2550, com bootloader que não precisa de fírulas... reset no endereço 0x00  e interrupções no endereço 0x04

Baseada no conceito do Arduino UNO, mas conta com 3 displays a LED multiplexados on-board.

Ideal para ensinar:

a) Multiplexação de displays;
b) Separação dos 3 digitos por software;
c) Como se faz um contador de 000 até  999;
d) Como se faz um frequencimetro de 0 até 999 Hz;
e) Como se faz um voltimetro digital de 0.00 até 5.00 V;
f)  Como fazer um medidor de temperatura (para isso é necessário acrescentar um sensor externo);
g)  Como se lida com ponto flutuante em Assembly
h) Enfim, boa para ensinar C ou Assembly de PIC18F

Um Arduino (com PIC) + um shield de 3 displays multiplexados a LED on-board, com bootloader e baseada no PIC18F2550.

Testando Bootloaders para PIC18F2550

Desenvolvendo um  pequeno e simples kit didático baseado no microcontrolador PIC18F2550, testei diversos bootloaders para ver qual seria o mais adequado.

Para quem não não sabe, bootloader é um simples programa (código .HEX) que deve ser gravado previamente num microcontrolador de modo a permitir a programação simples e rápida via USB.
Somente bootloaders via USB foram testados, embora existam também outros bootloaders que funcionam através da porta RS-232.  Todos os bootloaders testados funcionam com cristal de 20MHz no microcontrolador PIC18F2550.

1) O primeiro bootloader que eu testei 
 não funciona em Windows 7   64-bit
Testei no Windows 7  32-bit e funcionou perfeitamente;

2) O segundo bootloader que eu testei 
precisa de um botão que aterra o pino RB4 e de um resistor de pull-up no pino RB4.  Meu hardware original utilizava o RB4 para outra coisa e era mantido sempre em nivel baixo.
Bastou colocar este botão e o problema foi resolvido.
este funciona em todos os windows.

3) O terceiro bootloader que eu testei é fornecido pela própria Microchip e trabalha juntamente com o HIDLoader.exe
Este também precisa do botão no pino RB4 e de um resistor de 10K de pull-up neste mesmo pino.  Foi só colocar o botão e o problema foi resolvido

4) O quarto bootloader que eu testei também é provided by Microchip
 e utiliza o loader  chamado  PDFSUSB.exe  mas também precisa do resistor e do botão no pino RB4.  Sem ele, nada feito !

5) O quinto bootloader que eu testei é o bootloader do programa PINGUINO. 
Instalei o Pinguino, carreguei o Firmware do bootloader do Pinguino.
Funciona sem nenhum botão e independente do pino RB4.
Mas só serve para gravar o .HEX gerados na IDE do proprio PINGUINO ou seja, é Arduino-like (usa o famoso C-Wiring igual do Arduino).

6) Não consegui usar o SanUSB. 
http://www.cienciasecognicao.org/pdf/v14_3/m254.pdf
Por algum motivo, o dispositivo não é reconhecido na minha máquina, mesmo atualizando o JAVA 64-bit. Não insisti muito (desisti logo) porque os anteriorer já me atenderam.

Todos funcionaram (à exceção do 6, que eu tenho que insistir mais).
Gostei mais do (4) por ser mais curto em termos de código.
Mas eu não gostei de ter de usar um botão (ou jumper) no pino RB4 e agora vou modificar este código para eliminar isso.

Agora, vejam o que eu achei:

O John Main publicou um ebook justamente sobre Bootloaders de alta performance.
Um colega que adquiriu este ebook me contou que o John indica o Tinybootloader neste livro, que é um bootloader desenvolvido para uma ampla linha de microcontroladores.  Vocês podem encontrar este bootloader neste endereço:
http://tinypicbootload.sourceforge.net/

Este eu ainda não testei, mas pretendo fazê-lo em breve, e assim que o fizer, postarei os resultados aqui.

Outra dica é testar também o bootloader fornecido pela MikroE, dica do meu colega Orcino:

O Bootloader da Mikroe é  excelente !

Muito rápido e eficiente.

Porém, existe uma pequena incompatibilidade (fácil de resolver) entre um .HEX gerado pelo compilador da CCS  e este bootloader da Mikroe;

Eu explico:

Quando geramos um arquivo .HEX usando o Compilador PCWHD da CCS, no final do .HEX ele acrescenta o seguinte cabeçalho de finalização:
-----------------------------------------------------------------------------------------------
Exemplo de .HEX  gerado pelo compilador CCS:

0A08A0008B9492988998CDD703003D
:020000040030CA
:0E000000000C181E008381000FC00FE00F409F
:00000001FF
;PIC18F2550
;CRC=AD92  CREATED="18-jun-15 17:31"
------------------------------------------------------------------------------
(O grifo em vermelho é meu).

Quando tentamos abrir o código HEX  gerado pelo compilador CCS no bootloader da Mikroe  (http://www.mikroe.com/startusb/pic/#startusb_pic_bootloader )  ele gera o seguinte erro:

                                  "$PI is not a integer value"

e o código não pode ser carregado no bootloader.


Como corrigir isso ?

É simples, basta abrir o .HEX gerado pelo CCS no bloco de notas e eliminar as duas últimas linhas (justamente aquelas marcadas em vermelho no exemplo acima)  e tudo funcionará perfeitamente !

Este bootloader não necessita de nenhum botão no pino RB4 e é mais rápido do que o da Microchip, porém:

a)  ocupa um pouco mais área de código no PIC18F em relação aos  citados anteriormente;

b)  além disso usa um cristal de 8 MHz (diferentemente dos outros que usam um cristal de 20 Mhz no PIC).

E como principal vantagem: Não exige nenhum desvio especial no código escrito em C, você pode colocar seu código normalmente a partir do endereço  0x00  e seu vetor de interrupção pode ficar no lugar correto: endereço 0x04  do PIC.

No mais, este bootloader da MikroE é um dos mais estáveis e rápidos que eu testei.

Foi este bootloader que eu escolhi para equipar a Placa Fambruino, descrita em outro post.

sábado, 13 de junho de 2015

domingo, 31 de maio de 2015

Um Circuito Eletrônico para Teletransporte Quântico

Uma revolução está prestes a acontecer nas telecomunicações.

Ao invés de usar ondas de rádio para transmitir informações de uma ponto a outro do espaço... que tal usar as propriedades do Emaranhamento Quântico ?

http://hypescience.com/cientistas-realizam-teletransporte-quantico-dentro-de-circuito-eletronico-pela-primeira-vez/

Vantagens ?

As ondas de rádio viajam na velocidade da luz  ( 300.000 Km por segundo)  no vácuo.

O Teletransporte viaja instantaneamente.

Aquele comunicação entre nós e o Sistema Solar da estrela Sirius que fica a 8,6 Anos-Luz da Terra poderia ser feita imediatamente, ao invés de demorar 8 anos e meio.

Mais sobre Emaranhamento Quântico:

http://pt.wikipedia.org/wiki/Entrela%C3%A7amento_qu%C3%A2ntico

Aonde este experimentos estão sendo feitos ?

Neste laboratório aqui:
QUANTUM DEVICE LAB,  em Zurich

http://www.qudev.ethz.ch/

sábado, 23 de maio de 2015

quarta-feira, 20 de maio de 2015

Curso de Especialização na Unicamp

CURSO DE ESPECIALIZAÇÃO EM  MECATRONICA NA UNICAMP-LIMEIRA.

Na FT (Faculdade de Tecnologia) de Limeira-SP

 Mais Informações aqui:   http://www.ft.unicamp.br/~espmec

ou através do e-mail:   rangel@ft.unicamp.br

Diretamente com o coordenador do Curso, prof. Dr. Arthur Rangel.

Eu  (Francisco)  leciono também neste curso a Disciplina MICROCONTROLADORES.

quinta-feira, 14 de maio de 2015

O primeiro video-game do mundo

O primeiro video-game interativo conhecido no mundo foi o CRTAD (Cathode Ray Tube Amusement Device) desenvolvido por Thomas T. Goldsmith Jr. e Estle Ray Mann,  entre em 25 de janeiro de 1947 e 14 de dezembro de 1948.
 Era um simulador de mísseis inspirado nas telas de radar da II Guerra Mundial, obviamente bastante primitivo.

 Usava circuito analógico a válvulas (transistores tinham sido recém inventados na época), e não digital, para controlar o feixe e colocar um ponto na tela de um tubo de raios catódicos de um osciloscópio. 
Veja o esquema do CRTAD abaixo, totalmente a válvulas:


Superposições de tela foram utilizadas para alvos devido ao dispositivo não poder exibir os gráficos detalhadamente. 
 Ele nunca foi implantado comercialmente e  ficou apenas no papel e no protótipo.

EM 1947, o Pai da Computação Teórica, o cientista inglês Alan Turing,  desenvolveu um programa de xadrez teórico como um exemplo de inteligência da máquina. Em 1951, seu colega Dietrich Prinz escreveu o primeiro programa limitado de Xadrez para oFerranti Mark I. O programa só foi capaz de computar algumas jogadas e não era poderoso o suficiente para jogar uma partida completa, e nem muito menos mostrava em dispositivos visuais.

terça-feira, 12 de maio de 2015

Um Guia de Referência rápida para os Microcontroladores PIC

Um Guia de Referência rápida para os Microcontroladores PIC de 8 bits foi publicado recentemente pela Microchip.
O guia relaciona os microcontroladores de 8 bits mantidos em fabricação pela Microchip e os periféricos contidos em cada um dos part numbers.
Muito útil para escolher o modelo mais adequado para seu projeto.  Disponível aqui:
Guia Microchip de Microcontroladores de 8 bits

domingo, 10 de maio de 2015

Slides- Tendências Atuais em Sistemas Embarcados

Neste conjunto de 65 slides de powerpoint, que constituem a Aula Inaugural do Curso de Sistemas Embarcados da Unisal-2015, abordo as modernas plataformas de desenvolvimento de baixo custo e acessíveis aos estudantes brasileiros: Arduino (vários modelos), Launchpad da Texas (vários modelos), Raspberry PI, BeagleBoneBlack, etc.  Faço também um overview das diversas plataformas de desenvolvimento: Arduino, Energia, Sakura, Pinguino, MPIDE, e cito também o software Processing, como plataforma de desenvolvimento de aplicativos gráficos para o PC.

Recomendo a todos os Alunos do Curso de Pó-graduação em Eletrônica Embarcada da Unisal - Campinas e também a todos os interessados em Sistemas Embarcados.

Segue abaixo o link:
https://drive.google.com/file/d/0B0T8omiWkMq8LUFZZm5tSmhMTmc/view?usp=sharing

AULA 1- CURSO DE ELETRÔNICA EMBARCADA - UNISAL -2015

No link a seguir, vocês encontram o material referente à aula 1 do Curso de Eletrônica Embarcada da Unisal, 2015:

Link Material Aula 1- UNISAL - 2015

sábado, 2 de maio de 2015

Laboratório para Experiências com circuitos integrados digitais

                  Figura 1: Laboratorio de Prototipagem de Circuitos digitais  FDI-01

Estamos lançando através do MercadoLivre este Laboratório para experiências com circuitos integrados digitais CMOS, TTL ou outros. 
Também pode ser utilizado para experiências com microcontroladores ou eletrônica analógica.
Este kit possui as seguintes Características Técnicas:
 a) 02 matrizes de contatos (protoboards) de 660 pontos cada totalizando 1320 pontos para montagem das experiências, montadas em gabinete resistente em MDF recoberto com fórmica branca e de ótimo acabamento;
b)  Fontes de Alimentação protegidas contra curto-circuitos,  com saídas de +5V, +12V e -12V, com corrente máxima de saída de 1,5A, entrada 110/127V/220V, comutação automática;
c) 10  chaves com circuito anti-bounce (filtros contra ruídos eletricos provenientes de acionamento mecânico);
d) Buzzer piezoelétrico para transformar sinais AC em sons;
e) Entrada AC de 100V/ 240VAC (automático);

f)  10 led's de monitoramento montados no próprio kit, com resistores de proteção inclusos;
g) Um display de 7 segmentos a LEDs do tipo catodo comum, com resistores de proteção inclusos;
h) Gerador de frequências fixas de alta estabilidade com cristal de quartzo e microcontrolador. Gera 8 (oito) tipos de frequências:  500 KHz, 100kHz, 10kHz, 1kHz, 100Hz, 10Hz, 1Hz e 0,1Hz, onda quadrada;
i) Estojo com componentes eletrônicos para montagem das experiências;
j) Manual de operação e prática; 

Baixe o Manual de Instruções gratuitamente neste link:
MANUAL DE INSTRUÇÕES E USO
Cada estojo de componentes que acompanha o kit inclui o seguinte material:
Circuitos integrados C-MOS:
qtde.
1..................................   4001 B (4 portas NOU de 2 entradas)
1.................................... 4011 B  (4 portas NE de 2 entradas)
1 ..................................  4511 B (decodificador BCD para display de 7 segmentos)
1 ..................................  4017 B (contador e divisor por 10)
1 ..................................  4093 B ( 4 portas NE com Schimit  Trigger)
1 ..................................  4021 B ( shift register de 8 estágios)
1 ................................... 4027 B (duplo flip flop JK master slave)
1 ....................................4013 B (2 flip flops tipo D)
1....................................  4051 B (Multiplex / Demultplex de 8 canais)
1......................................4020 (contador/divisor binario de 14 estágios)
1......................................40106 B (seis inversores com Schimitt Trigger)
1..................................... 4026 B (contador de década para displays 7 segmentos)
1..................................... 4060 B (contador digital com oscilador de clock interno)
Circuitos integrados TTL
qtde.
1...................................... 7404 (6 portas inversoras)
1.......................................7400 (4 portas NAND)
1.......................................7402 (4 portas NOU)
1......................................7408 (4 portas AND)
1...................................... 7432 (4 portas NOU)
1.......................................74126 (4 buffers com saida 3-state)
1....................................... 7486 (4 portas OU EXCLUSIVO)
1 ...................................... 7442 (decodificador BCD para decimal)
1........................................7447 (decodificador para display 7 segmentos)
1 .......................................74153 (multiplexador de 4 entradas e 1 saída)

Resistores:
20.................................resistores  10kohms, 1/8 watt
20.................................resistores  330 ohms, 1/8 watt
20.................................resistores  1 kohms, 1/8 watt
70 fios (jumpers) próprios para protoboard em cada estojo.
1 chave de fenda pequena.

A Figura 2 mostra o aspecto do painel frontal deste kit.
Figura 2: Aspecto do kit e gabinete

Vendas unicamente através do site Mercado Livre, através do Link:

Mais fotos deste kit e do estojo de componentes:




Descoberto o monopólo magnético

Todo mundo aprende na escola que monopólos magnéticos não existem.

Todos os imãs são dipolos:  tem um pólo norte e um pólo sul.

Se você quebrar o imã ao meio, ainda assim, suas particulas de reorganizam e ele continua apresentando os 2 pólos.   Não existem monopólos magnéticos.

Um pedaço de imã, microscópico, deveria apresentar um pólo norte e um pólo Sul.

Era o que se acreditava até o momento, quando pesquisadores da Finlândia conseguiram reproduzir um monopolo magnético.

Veja o link abaixo, em inglês:

sexta-feira, 24 de abril de 2015

Controlando o Angulo de disparo dos Triacs com ARM

Neste projeto, meu aluno de pós-graduação na Unisal de Campinas, o Eng. Carlos Noel, escreve um firmware para controlar o ângulo de disparo de uma senóide através de um tiristor (Triac) para  a placa Launchpad Tiva, com o microcontrolador TM4C123G.

O Firmware foi escrito para o compilador uVision KEIL, versão 4.7.4  (arquivo MDK474) e testado em uma Placa Launchpad Tiva da Texas.

O controle de ângulo de disparo foi testado e o screenshot da tela do osciloscópio é mostrado a seguir:
Tela do scope mostrando o disparo do tiristor com ângulo de 135 graus.

Neste link (abaixo) o firmware completo. Para abrir, instale o compilador Keil uVision, versão 4.7.4, na versão gratuita:

domingo, 19 de abril de 2015

Duas ótimas Apostilas sobre ARM Cortex M4

Aqui neste link, duas ótimas apostilas baseadas na Placa Tiva TM4C123G da Texas (microcontrolador ARM Cortex M4).

A primeira, em português, de autoria do colega Stéfano Andrade de Souza, de Juiz de Fora-MG e a segunda de autoria da TTO - Techincal Training Organization, escrita em inglês:

2 Apostilas sobre ARM



domingo, 12 de abril de 2015

Projeto para Monitoramento de Temperatura usando a Tiva

Projeto que faz o Monitoramento de Temperatura a partir de um sensor com LM35, usando a placa Tiva Launchpad da Texas.  Projeto dos alunos Alvaro Schiavolin Jr. e Thiago Brunetto Baradel, do Curso de pós-graduação em Eletrônica Embarcada da Unisal - Campinas

Link consertado

Usando uma interface SPI para ler dados a partir de um SD card

Alguns alunos me pediram um exemplo de código em C, escrito para o compilador Keil uVision, capaz de se comunicar utilizando uma interface SPI na placa Tiva Launchpad da Texas, que utiliza o microcontrolador TM4C123G.

Então, aqui vai o exemplo,extraído do livro do prof. Jonathan Valvano.
Como usar sua Tiva Launchpad para implementar uma Interface SPI e ler dados a partir de um cartão SD card.  Projeto completo, aqui:
Link para o Projeto de Interface SPI

quinta-feira, 2 de abril de 2015

Usando os registradores que manipulam os PORTs no Arduino

A Placa do Arduino UNO tem a seguinte Pinagem (os quadradinhos em rosa mostram os numeros dos pinos adotados pelos fabricantes de Arduino):


Sabemos que o coração do Arduino é o chip Microcontrolador ATmega328 fabricado pela ATMEL.
Este chip, que é quem efetivamente manda nesta placa, tem a seguinte  pinagem, com seus 3 PORTs (B, C e D):


Os registradores de PORT permitem de manipulação mais rápida dos pinos de  I/O do microcontrolador em uma placa Arduino.
Ao invés de usar DigitalWrite( ) e DigitalRead( ), é vantajoso usar diretamente os registradores DDRx, PORTx e PINx.
 Os chips usados ​​na placa Arduino (o ATmega8 e ATmega168) tem três PORTS:

PORT B (pino digital de 8 a 13)
PORT C (pinos de entrada analógica)
PORT D (pinos digitais 0-7)
Cada PORT é controlada por três registradores, para os quais também são definidas variáveis ​​na linguagem Arduino.

O registrador DDR, determina se o pino é uma entrada ou saída.

O registrador PORT  controla se o pino está em nivel alto (1) ou em nivel baixo (0),
e o registrador PIN lê o estado dos pinos definidos como entrada usando-se a função pinMode ().

Os pin-outs dos chips ATMega8, ATmega168 e ATmega328 mostram os PORTS.

O chip mais moderno ATmega328P (que equipa o Arduino UNO) segue a mesma pinagem do ATMega168.

Os registradores DDR e PORT podem ser tanto de escrita e leitura.

Registradores PIN são apenas para leitura.

PORTD está mapeado no Arduino para os pinos digitais 0-7
-------------------------------------------------------
PORTD mapeia os pinos 0 até 7 da placa do Arduino;

DDRD - Port D Data Direction Register - leitura/escrita
PORTD - Port D Data Register - Leitura/escrita
PIND - Port D Input Pins Register - somente leitura
-------------------------------------------------------
PORTB mapeia os pinos 8 até 13. Os dois bits mais altos (6 e 7) mapeiam os pinos do cristal e não são utilizaveis (uma vez que já tem um cristal de quartzo de 16MHz ligados a eles).

DDRB - Port B Data Direction Register - leitura/escrita
PORTB - Port B Data Register - leitura/escrita
PINB - Port B Input Pins Register - somente leitura
-------------------------------------------------------
PORTC mapeia os pinos ANALOGICOS 0 até 5.
Pins 6 e 7 somente são acessiveis no Arduino Mini

DDRC - Port C Data Direction Register - leitura/escrita
PORTC - Port C Data Register - leitura/escrita
PINC - Port C Input Pins Register - somente leitura

Cada bit destes registradores correspondem a um único pino do chip.

Por exemplo, o bit mais baixo (bit 0) de DDRB, PORTB, e PINB refere-se ao pino PB0 (pino digital 8).


Para um mapeamento completo dos números de pinos do Arduino para PORTs e bits, consulte o diagrama para o chip em questão: ATmega8, ATmega168. (Note que alguns bits de um PORT  pode ser usado para outros fins diferentes de I/O).
Seja cuidadoso para evitar de mudar os valores dos bits dos registradores correspondente a eles.

Exemplos:

Referindo-se aos pinos do diagrama acima, os registradores PORTD controlam pinos digitais de 0 até 7 do Arduino.

Você deve observar, no entanto, que os pinos 0 e 1 são utilizados para comunicação serial para programação e depuração do Arduino.
Deve-se evitar mudar os registradores que controlam estes pinos, a menos que seja necessário para as funções de entrada e saída serial.
Esteja ciente de que mudanças na configuração destes pinos pode interferir com o download do programa ou de depuração.

DDRD é o registrador de controle de direção para PortD (pinos digitais 0-7 do Arduino).
Neste registrador de controle, os bits definem as entradas ou saídas, por exemplo:

DDRD = B11111110;            // Define pinos 1-7 como saídas, o pino 0 como entrada.

DDRD = DDRD | B11111100;  //  Este modo é mais seguro, uma vez que define os pinos 2-7 como saídas
                                                  //  Sem alterar o valor dos pinos 0 e 1, que são RX e TX, usados na                                                            // comunicação serial


PORTD é o registrador que controla o estado das saídas.

 Por exemplo;

PORTD = B10101000;             // Ajusta os pinos digitais 7,5 e 3 com nivel ALTO

Você medirá 5 volts nestes pinos somente se tais pinos foram definidos como saídas usando o registrador DDRD ou a função pinMode( ).

PIND é o registro de entrada. Ele vai ler todos os pinos de entrada digitais ao mesmo tempo.



-------------------------------------
Por que usar a manipulação de PORT no Arduino ?

 Aqui estão alguns dos aspectos positivos de acessar diretamente os registradores que controlam os PORTs:

Você pode precisar de ser capaz de comutar pinos muito rapidamente, ou seja, dentro de frações de um microssegundo.
 Se você olhar para o código-fonte em lib / metas / arduino / wiring.c, você vai ver que digitalRead( ) e digitalWrite( ) utilizam cada um cerca de uma dúzia de linhas de código, que são compilados em muito poucas instruções de máquina.
Cada instrução de máquina requer um ciclo do clock de 16MHz, o que pode adicionar delays indesejáveis em aplicações sensíveis ao tempo.
O acesso direto ao PORT pode fazer o mesmo trabalho em um número bem menor de ciclos de clock.
Às vezes pode ser necessário definir vários pinos de saída, exatamente no mesmo tempo.
 Chamando digitalWrite (10, HIGH); seguido por digitalWrite (11, HIGH); fará com que o pino 10 vá para o nível alto vários microssegundos antes pino 11, o que pode confundir certos circuitos digitais externos sensíveis ao tempo de borda de subida.
Alternativamente, você pode setar os dois pinos em nivel alto, exatamente ao mesmo tempo no tempo usando PORTB | = B1100;
Se você estiver com pouca memória de programa, você pode usar esses truques para tornar seu código menor.
Ela exige muito menos bytes de código compilado para escrever simultaneamente um grupo de pinos de hardware ao mesmo tempo através dos registradores de portas do que gastaria usando um loop "for" para definir cada pino separadamente.
 Em alguns casos, isso pode fazer a diferença entre o seu programa caber na memória flash do microcontrolador utilizado no Arduino.

sexta-feira, 13 de março de 2015

quinta-feira, 12 de março de 2015

terça-feira, 10 de março de 2015

Mini Curso Prático de Microcontroladores ARM Cortex M4

Mini Curso Prático de Microcontroladores ARM Cortex M4, grátis, on line, mantido pelo IME (Instituto Militar de Engenharia).
Basta clicar no link a seguir:
http://ead.ime.eb.br/course/view.php?id=156

Primeiro Microcontrolador projetado no Brasil : ZR16

Aqui está o datasheet do primeiro microcontrolador 100% brasileiro, projetado na UFSM (Universidade Federal de Santa Maria):


Pelas caracteristicas, é quase um PIC16F84 - Microchip  (mas não chega a tanto, o PIC16F84 é ainda um pouco superior...)  o que nos leva a crer que tecnologicamente o Brasil está uns 20 atrás dos outros países.

Aqui a noiticia:

domingo, 8 de março de 2015

Kit de Amplificador estéreo com TDA2030

Comprei há alguns meses atrás o seguinte kit de Amplificador Estéreo usando dois circuitos integrados TDA2030.  Comprei da China, no site Aliexpress, e demorou apenas 3 meses ( ...)  para chegar em minhas mãos.
Vejam as fotos antes da montagem da Placa:
                                                  Componentes que acompanham o kit
                                    Placa de circuito impresso (dupla-face) lado dos componentes
 Placa de circuito impresso (dupla-face) lado da solda

O kit é bastante completo, vieram todos os componentes necessários para montar este ótimo amplificador de áudio. Até os parafusos para fixar os circuitos integrados TDA2030 em dissipadores de calor acompanha o kit. Só faltou realmente o dissipador. Este é absolutamente necessário, senão o excesso de calor vai danificar os dois c.i.s  TDA2030.
Eu estou usando o amplificador (depois de montado, óbvio) para amplificar o som proveniente do meu computador PC.
Fiquei muito satisfeito, poque quando eu comprei, o dolar ainda custava R$ 2,50 (hoje está custando mais de R$ 3,00 reais...) e a qualidade deste kit é muito boa (recomendado!).
Detalhe: O manual de montagem consta de apenas uma folha e está totalmente em Chinês, por isso não aconselho a compra deste kit por um iniciante muito novato em Eletrônica. Para montar com sucesso, é preciso alguma experiência anterior.

quarta-feira, 4 de março de 2015

"Algoritmo e Implementação de Segmentação de Imagens baseado em Texturas"

Trabalho apresentado no Seminário da UFSCar, baseado em algoritmo JSEG.

"Algoritmo e Implementação de Segmentação de Imagens baseado em Texturas"

Clique aqui para fazer o download desta apresentação:

https://drive.google.com/file/d/0B0T8omiWkMq8aUE5MHB1azF1eXM/view?usp=sharing

terça-feira, 3 de março de 2015

Slides sobre a Aula 3 de Ondulatória - FESB

Deixei aqui os slides da 3 aula sobre Ondas - curso de Ciências Biológicas, FESB, 2015:

https://drive.google.com/file/d/0B0T8omiWkMq8UVRlNmlRb0FkWDA/view?usp=sharing

Façam o download deste resumo da Aula.

Aqui, um vídeo mostrando os efeitos de ressonância que derrubaram a Ponte Tacoma Narrow, nos Estados Unidos, em 1943:
http://upload.wikimedia.org/wikipedia/commons/1/19/Tacoma_Narrows_Bridge_destruction.ogg

segunda-feira, 2 de março de 2015

A empresa NXP (antiga Philips) comprou a Freescale

De acordo com o seguinte link:http://www.nxp.com/news/press-releases/2015/03/nxp-and-freescale-announce-40-billion-merger.html
a empresa NXP da Holanda (que pertence ao grupo Philips) comprou a empresa Freescale (que é o nome novo da antiga divisão de chips da Motorola).
Da fusão entre as duas mega-fabricantes, deverá surgir uma empresa nova, avaliada em 40 bilhões de dólares.
A NXP nasceu de um desmembramento da Philips NV em 2006, quando um grupo privado de investidores, incluindo as empresas KKR & Co., Bain Capital LLC e Silver Lake a comprou. Sua base é em Eindhoven, na Holanda, opera em mais de 25 países e teve receita liquida de 5,7 bilhões de dolares em 2014.
 A Freescale, que é de Austin, estado do Texas nos Estados Unidos, foi desmembrada da Motorola em 2004 e foi comprada por um grupo de empresas, Blackstone Group LP, Carlyle Group LP, TPG e Permira. Também opera em mais de 25 países e teve um montante de venda liquida de 4,6 bilhões em 2014.
Seria a NXscale  FreeXP  ?
Vamos aguardar o novo nome.
E veremos o que vai acontecer com a linha de produtos (basicamente microcontroladores) fabricados por cada uma delas.

domingo, 1 de março de 2015

Apostila sobre Linguagem C

Apostila bastante completa sobre Linguagem C, um curso básico, para quem inicia no aprendizado desta importante linguagem:
CLIQUE AQUI NO LINK

sexta-feira, 27 de fevereiro de 2015

Slides da Primeira Aula sobre Microcontroladores ARM Cortex M4 - UNISAL

Slides da Primeira Aula sobre Microcontroladores ARM Cortex M4 - UNISAL, ministrada no Curso de Pós-Graduação em Sistemas Embarcados, em 28/02/2015.

LINK PARA O MATERIAL DA AULA

Exemplo de Código em C que implementa FFT - Fast Fourier Transform

O código abaixo implementa, em linguagem C, a Transformada Rápida de Fourier (FFT) baseado na Relação de Euler e na definição.
Eu testei este código utizando o Compilador DevC++.
Notem que o código é experimental e ainda precisa de aperfeiçoamentos, mas o básico da implementção aí está !


#include <iostream.h>
#include <stdio.h>
#include <math.h>

int i;

int main(void )
{
int n=200;  // 200 pontos de amostra

double* tempo=new double[n];     //armazena as 200 amostras igualmente espaçadas
do sinal
for(i=0;i<n;i++)
tempo[i]=cos(6.2831853*10*((double) i/(double)n)) + cos(6.2831853*25*((double)i/(double)n)) + cos(6.2831853*50*((double)i/(double)n)) + cos(6.2831853*100*((double)i/(double)n));


double *tfr=new double[n]; // armazena a parte real do sinal
double *tfi=new double[n]; // armazena a parte imaginária do sinal

for(int u=1;u<(n/2)+1;u++) {
tfr[u]=0;
tfi[u]=0;
for(int x=0;x<n;x++)

{ // A exponencial de (-j2put)/N da equação eq 1, onde j é o número complexo v-1 é
 //  matematicamente igual a cos((-j2put)/N) – j*sin((-j2put)/N)

tfr[u]+=tempo[x]*cos(6.2831853*u*(double)x/(double)n);
tfi[u]-=tempo[x]*sin(6.2831853*u* (double)x/(double)n);
}
tfr[u]/=(double)n;
tfi[u]/=(double)n;
cout<<"\nNa frequência de "<<u<<" Hz, a amplitude é de "<<sqrt((tfr[u]*tfr[u])+(tfi[u]*tfi[u])); //a raiz quadrada da
//soma dos quadrados das partes reais e imaginárias produz o módulo (amplitude) de cada frequência.
getchar();
}
}

quarta-feira, 25 de fevereiro de 2015

Seminários apresentados no dia 21/02/2015 na FT - UNICAMP

Deixei aqui neste link :


todo o material relativo aos Seminários apresentados no dia 21/02/2015, referentes à Disciplina Microcontroladores, ministrada na FT - Faculdade de Tecnologia da Unicamp.
Obrigado a todos os alunos pelo empenho e pela participação.
O Curso mencionado é este aqui, pós-graduação em MECATRÔNICA:
                       Link para a UNICAMP

Os temas de cada Seminário foram os seguintes:

1- Controlador PID com Arduino e o projeto do Segway
2 - Motores de Passo e Arduino;
3-  Analisador de Energia Elétrica com Arduino
4 - Filtros Digitais
5 - Protocolo MODBUS e Arduino
6 - Controle de Servomotores com Arduino
7 - Protocolo 1-wire e uma implementação em Arduino
8 - Protocolo I2C implementado com Arduino
9 - Geranddo caracteres de video composto com Arduino

Agradeço também ao professor Dr. Arthur Rangel pela oportunidade de trabalhar neste excelente Curso, o qual recomendo a todos os profissionais.

Na foto, o aluno Eng. Igor Massao, mostrando seu projeto de Segway:

Na foto a seguir, alguns alunos apresentando seu projeto:


SERÁ O FIM DO ARDUÍNO ?

Tudo na vida (até mesmo a própria vida !) chega ao final algum dia.

Duas notícias me chamaram a atenção sobre o famoso Projeto Arduino.
Uma delas, de um site alemão:
http://www.heise.de/make/meldung/Arduino-gegen-Arduino-Gruender-streiten-um-die-Firma-2549653.html
e a outra de um site em italiano:
http://www.wired.it/gadget/computer/2015/02/12/arduino-nel-caos-situazione/
que podem anunciar o Princípio do Fim do mais bem sucedido Projeto Open-Source de Sistema Embarcado do mundo.
Numa livre tradução (e não tão perfeita assim, devido à meus limitados conhecimentos desta língua) do site italiano acima:

"O que acontece no Arduino?
Por trás do projeto magnífico de hardware open source, uma  excelência tecnológica italiana, há um confronto entre os gestores que ameaça a própria vida de Arduino
Texto original escrito por Riccardo Meggiato

Ingrid Bergman gostava de dizer que "O sucesso é conseguir o que se  quer, mas a felicidade é querer o que você tem.".  Neste sentido, Massimo Banzi, um dos arquitetos do Arduino, o sucesso  foi obtido com certeza, mas a felicidade (completa), agora, tem que esperar. Porque sua criação pode apresentar vários sinais de abrandamento, devido a uma divisão interna que, como ele mesmo diz, só faz mal para o nome do Arduino.

Mas o que aconteceu, exatamente? Primeiramente, vamos começar por dizer que, por trás do nome do Arduino, o príncipal kit eletrônico eleito dos fabricantes de sistemas embarcados de todo o mundo, estar sempre ligada ao nome  de Banzi,, na verdade, também operam outras quatro pessoas: David Cuartielles, Tom  Igoe, Gianluca Martino e David Mellis.

Para os usuários finais, saber disso não muda muito: só em 2013, foram vendidos mais de 700 mil kits, para estabelecer o sucesso de um projeto fabuloso de hardware open source tão versátil e econômico.

Mas do ponto de vista dos negócios, esta gestão de cinco cabeças deu alguns problemas.

Em poucas palavras, Arduino é um projeto "open source", que qualquer pessoa pode produzir as placas por si mesmo, em qualquer lugar do mundo.

No entanto, sendo o nome do produto protegido por direitos autorais, todas as placas ("originais", que podem carregar o nome Arduino) são fabricados a partir de uma única fábrica em Ivrea.

 À frente da fábrica está o engenheiro Gianluca Martino, um dos cinco
Até aí tudo bem, só que os outros quatro membros, há algum tempo, pressionam para internacionalizar a marca, com o que  Martino, no entanto, não concorda.

E assim, de acordo com Banzi, aqui está o problema: encarregou da fábrica, como CEO, Federico Musto, uma pessoa externa ao projeto inicial sem, no entanto, avisar demais os membros.


Neste ponto, desencadeou-se uma briga: na verdade, por um lado encontramos Martin e Musto, enquanto, por outro, Banzi, Cuartillies, Igoe e Mellis.  Para levantar uma cortina de dúvida, um caso de coincidência surgiu  recentemente:. A empresa que produz placas  com o nome oficial, com Musto como gerente, tem como seu website www.arduino.org , enquanto o grupo que gerencia o projeto de código aberto, e, em seguida, Banzi e os outros três, mantém o site www.arduino.cc

Não surpreendentemente, o ".org" website é de propriedade diretamente  de Federico Musto, como demonstrado por uma consulta simples ao domínio "Whois".

Ao que parece, Musto e Martin, numa jogada planejada, comunicaram uma "virada corporativa"  no grupo Arduino, e anunciando alianças que em vez disso, nas palavras de Banzi, foram sancionadas pelo Pohl.

Basicamente, de acordo Banzi, a estratégia de Musto Martino é atrair a atenção do mundo sobre a sua empresa, tentando remover do projeto Arduino a  visibilidade em Creative Commons.
O professor, que nasceu em Monza, entre outras coisas, argumenta que quatro membros estavam empurrando para a internacionalização do projeto, enquanto a dupla que defende o  Arduino original (a do ".org") é mais refratário a esse tipo de expansão.

Difícil determinar o que realmente está acontecendo. O que é certo é que este dano está provocando um caos  no mundo inteiro dos usuários de Arduino.

A explicação do mistério pode ser uma mistura entre a confusão criada entre a realidade comercial e de código aberto, e a furada comercial  ao encontrar uma confirmação no campo internacional, principalmente pressionada pela demanda dos clones de Arduinos chineses.

A não perder os prêmios, mas é um fato que concorrentes  para o Arduino não faltam (e, como no caso de Raspberri PI, também são muito agressivos) e, no fundo, poderia estar escondendo  um mercado fragmentado e menos rentável do que  a realidade, pelo menos para as placas fabricadas na Itália.

 Hipótese  sugestiva:   Estaria o Projeto Arduino  em crise,  além dos problemas internos?

Alianças como a anunciada  com a  Intel parecem refutar esta hipótese, mas precisa se saber quais são os termos econômicos de associações como esta.
A história parece estar apenas começando. "