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.