11/09/2016

Placa de desenvolvimento "Prop II"

Esta é uma nova placa de desenvolvimento baseada no P8X32A, à semelhança da placa Prop apresentada em posts anteriores (26 de Março e 2 de Julho). De facto, esta nova placa é uma evolução da sua predecessora, mas com características de tal modo distintas que foi necessário criar um novo projecto com outro nome. Em especial, foi escolhido um cristal de 6MHz para fornecer a base de tempo, o que possibilita uma operação perfeitamente estável em regime de overclock (a 96MHz), e isto utilizando a tensão nominal de 3,3V. A Prop II também conta com 64KB de memória EEPROM e um LED para indicar a presença de alimentação.

Placa de desenvolvimento "Prop II".

Placa Prop II em funcionamento. O LED indica que a placa está a ser alimentada.

O circuito é muito semelhante ao da última revisão da placa Prop, pelo que seria desnecessário detalhar muito sobre o funcionamento do mesmo. No entanto, é importante mencionar as particularidades deste projecto. A sublinhar, como a base de tempo dada pelo cristal (X1) é agora de 6MHz, as frequências de trabalho após multiplicação com recurso à PLL interna do micro-controlador também serão diferentes: é possível pois obter frequências de 6, 12, 24, 48 e 96MHz. A memória EEPROM em IC5 é de um tipo diferente e comporta 64KB, o dobro da memória presente na placa original. Por último, o LED em D3 indica a presença de 3,3V na placa, servindo R2 para limitar a corrente que o atravessa.

Lista de componentes:
C1/2/4 – Condensador cerâmico multi-camada 1µF 10V (0805);
C3 – Condensador cerâmico multi-camada 10nF 10V (0805);
C5-10/13 – Condensador cerâmico multi-camada 100nF 10V (0805);
C11/12 – Condensador cerâmico multi-camada 47pF 10V (0805);
D1 – Díodo Schottky FYV0704S;
D2 – Díodo Zener BZX84-B3V3;
D3 – LED Kingbright APT2012EC (ou KPT-2012EC);
F1 – Fusível PPTC 1210L020;
IC1 – Circuito de protecção PolyZen ZEN056V075A48LS;
IC2 – Regulador de tensão TPS70933 (TPS70933DBV);
IC3 – Conversor USB-UART FT230X (FT230XQ);
IC4 – Micro-controlador P8X32A (P8X32A-Q44);
IC5 – Memória EEPROM M24512 (M24512-DFMC6TP);
J1 – Conector USB Hirose ZX62D-B-5PA8;
J2-7 – Conector header macho de 5 pinos;
Q1 – Transístor MOSFET BSS138;
Q2 – Tirístor SCR S4X8BS;
R1 – Resistor de filme espesso 150Ω±5% 1/8W (0805);
R2 – Resistor de filme espesso 82Ω±5% 1/8W (0805);
R3/4 – Resistor de filme espesso 27Ω±5% 1/8W (0805);
R5/6 – Resistor de filme espesso 4,7KΩ±5% 1/8W (0805);
S1 – Interruptor pulsador C&K PTS525SMG15J (PTS525SMG15JSMTR2LFS);
X1 – Cristal Abracon ABMM-6.000MHz-B2-T.


Como em projectos anteriores, o layout da placa está disponível nos formatos brd (Eagle 7.6.0) e Gerber. A encomenda da placa deve ser feita via OSH Park, visto que este serviço suporta todos os requisitos do layout. Pode sempre usar outro serviço de fabrico, se preferir, mas tenha em atenção que o mesmo deve suportar layouts de quatro camadas e furação a partir de 0,5mm.

A montagem da placa requer algum equipamento específico. Nomeadamente, a soldadura dos componentes SMD deve ser feita por refusão com ar quente. Note que a memória em IC5 requer cuidados redobrados na aplicação da pasta de solda com stencil, visto que o encapsulamento é do tipo DFN com espaçamento entre pinos muito reduzido. Os restantes componentes, sendo through-hole, podem ser soldados com um simples ferro de soldar. Para tal, um ferro de 25W é o suficiente.

Por último, após a montagem é necessário configurar o FT230X de modo a que a placa opere correctamente. Deste modo, e mais uma vez, recomendo a aplicação FT_Prog. O ficheiro de configuração necessário encontra-se dentro da pasta "Firmware", por sua vez localizada na pasta do projecto. Aconselho que leia as instruções antes de proceder à configuração.

Links importantes:
Diagrama do circuito (pdf): http://app.box.com/s/yj17...7022
Diagrama do circuito (Eagle 7.6.0 sch): http://app.box.com/s/erml...5toa
Layout da placa (pdf): http://app.box.com/s/jg77...q5uh
Layout da placa (Eagle 7.6.0 brd): http://app.box.com/s/o14k...l690
Ficheiros Gerber: http://app.box.com/s/umvk...vpwn
Firmware (com instruções): http://app.box.com/s/4rg7...vl67
Notas do projecto: http://app.box.com/s/muiv...zw8o
Pasta contendo todos os ficheiros: http://app.box.com/s/wi1o...n02g
Projecto no OSH Park: http://oshpark.com/shared_projects/VmzrduRz
FT_Prog: http://www.ftdichip.com/Support/Utilities.htm#FT_PROG

02/09/2016

Propeller P8X32A

O Propeller P8X32A é um micro-controlador de 32 bits da Parallax que integra oito núcleos de processamento (vulgo cogs). Este micro-controlador foi concebido por Chip Gracey, co-fundador da Parallax, que também criou as linguagens PASM (de Propeller Assembly) e SPIN para o mesmo. Foi introduzido no mercado em 2006, sendo fabricado com tecnologia CMOS de 350nm.

Para além dos 8 núcleos de processamento, o P8X32A conta com 32KB de memória RAM partilhada e 2KB de memória RAM dedicada a cada núcleo, o que perfaz um total de 48KB. Também tem 32KB de memória ROM para o mapa de caracteres, para as tabelas logarítmica, anti-logarítmica e de seno, para o bootloader e para o interpretador de SPIN. Para além do mais, pode operar até 80Mz sem overclock, o que corresponde a um processamento de 20MIPS por núcleo.

Micro-controladores P8X32A em vários encapsulamentos. O P8X32A está disponível em DIP de 40 pinos, e em QFN e QFP de 44 pinos.

Como é evidente na fotografia acima, o P8X32A está disponível em diversos encapsulamentos: DIP de 40 pinos, QFN de 44 pinos e QFP, também de 44 pinos. Em especial, a versão em DIP é muito útil em prototipagem, uma vez que pode ser facilmente montada numa placa de ensaio. As versões em QFP e QFN podem ser empregues em projectos finais que requeiram alguma miniaturização.

Em síntese, o P8X32A é um micro-controlador bastante potente. Adicionalmente, é muito acessível e fácil de programar, dado que existem várias aplicações de desenvolvimento, para além de haver documentação e suporte na Internet. Pode por isso ser facilmente implementado em projectos de automação, robótica, aquisição de dados e outras aplicações que envolvam computação.

16/08/2016

Shunt resistivo SR10S3A

O SR10S3A não é mais do que um resistor de precisão, especialmente adaptado para medição de corrente pelo método dos quatro pontos. Como tal, este dispositivo é munido de quatro bornes, sendo dois destinados à passagem da corrente a medir e dois para a medição da queda de tensão. O conceito subjacente ao referido método baseia-se na lei de Ohm: tendo um resistor de valor fixo, pela medição da queda de tensão aos seus terminais é possível calcular a corrente que o atravessa. Neste caso em particular, o valor do resistor é de 0,1Ω (o que se traduz numa condutância de 10S). É importante sublinhar que a corrente máxima suportada é de 3,8A.

Shunt resistivo SR10S3A.

O SR10S3A em uso com uma carga de 56Ω. A tensão está ajustada para cerca de 5V e, por conseguinte, a corrente medida é de 89mA.

O circuito é extremamente simples. O elemento central, como já foi mencionado, é um resistor de 0,1Ω com tolerância de 1%. Este resistor está dimensionado para suportar correntes até 3,8A, dissipando assim 1,5W no pior caso. Em cada terminal estão ligados dois bornes: um para corrente e outro para medição em tensão. Deste modo, é possível fazer passar corrente através do resistor e medir em simultâneo a queda de tensão resultante.

Lista de componentes:
J1-4 – Borne vermelho;
R1 – Resistor bobinado 0,1Ω±1% 3W.


O layout da placa está disponível nos formatos brd (Eagle 7.6.0) e Gerber. A placa pode ser encomendada através do OSH Park ou utilizando qualquer outro serviço de fabrico. Tratando-se de um projecto muito básico, é suficiente empregar um ferro de soldar de 25W aquando a soldadura do resistor. A montagem dos bornes requer somente uma chave de bocas ou de lunetas.

Links importantes:
Diagrama do circuito (pdf): http://app.box.com/s/xpna...0n2t
Diagrama do circuito (Eagle 7.6.0 sch): http://app.box.com/s/y320...1pvu
Layout da placa (pdf): http://app.box.com/s/dnqs...7rx2
Layout da placa (Eagle 7.6.0 brd): http://app.box.com/s/ysjz...gh7v
Ficheiros Gerber: http://app.box.com/s/n80u...z382
Notas do projecto: http://app.box.com/s/e8i8...bofd
Pasta contendo todos os ficheiros: http://app.box.com/s/vwh7...9zy3
Projecto no OSH Park: http://oshpark.com/shared_projects/ymsVScPA

07/08/2016

Imagens repostas

No post de 25 de Julho reportei um problema que impedia o carregamento das imagens do blogue, dado que as respectivas referências ficaram inválidas. Entretanto todos os posta contendo imagens foram revistos, e a situação foi corrigida. Espero, pois, que este inconveniente não tenha prejudicado a leitura do blogue.

02/08/2016

Programa de demonstração para a placa de desenvolvimento "Prop"

Este programa de demonstração foi criado com o intuito de avaliar o desempenho da placa Prop. Como tal, tira partido dos oito núcleos de processamento do micro-controlador P8X32A para calcular números primos. Basta ao utilizador introduzir os valores limite, e o programa calcula todos os números primos entre esses valores. Como é muito intensivo em termos de processamento, o presente programa ilustra bem as capacidades do P8X32A e, por arrastamento, da Prop.

De modo a utilizar o programa, deverá carregá-lo com o SimpleIDE (veja o post de 12 de Junho). Caso não o tenha feito anteriormente, recomendo que transfira primeiro o ficheiro "prop.cfg" para a pasta "propeller-load" da sua instalação. Isso permitirá aplicar o perfil de hardware adequado à placa. É necessário transferir também o ficheiro do projecto e o código C para a pasta dos projectos do SimpleIDE. Por último, com a placa ligada ao computador, abra o projecto "Prop_primos.side" e escolha a opção "Run with Terminal" (tecla F8).

Programa de demonstração a correr no terminal do SimpleIDE.

Contudo, fica uma ressalva: o terminal do SimpleIDE é um tanto ou quanto lento, e por isso pode haver paragens aparentes durante a execução com omissão de linhas de resultados. Uma maneira alternativa consiste em programar a EEPROM da placa pela opção "Load EEPROM & Run" (tecla F11). Desta forma é possível executar o programa posteriormente e sem recurso ao terminal do SimpleIDE, utilizando outros programas de comunicação série, como por exemplo o PuTTY.

Programa a correr no PuTTY. O SimpleIDE é visível em segundo plano.

À semelhança do programa de teste, este programa pode ser usado noutras placas baseadas no P8X32A. Tendo o cuidado prévio de seleccionar o perfil de hardware adequado à placa em questão, aplicam-se os mesmos procedimentos.

Links importantes:
Projecto SimpleIDE: http://app.box.com/s/821s...ff6s
Programa em C: http://app.box.com/s/7r63...wva0
Perfil de hardware: http://app.box.com/s/3nav...a87c
Pasta contendo todos os ficheiros: http://app.box.com/s/8d7t...wd8f

25/07/2016

Imagens com referências inválidas

Hoje venho anunciar um problema relacionado com as imagens do blogue. Como poderá ter constatado, a maioria das imagens não carrega. Esse problema foi causado por uma modificação nas propriedades de partilha da pasta onde estão armazenadas as imagens, dentro do Picasa. Embora tenha revertido a modificação anterior, a quase totalidade das imagens ficou com referências inválidas.

Para resolver esta questão, terei que repor as imagens post a post, o que irá levar alguns dias. Posto isto, apresento desde já as minhas desculpas por este incómodo. Tentarei ser o mais célere possível.

24/07/2016

Programa de teste para a placa de desenvolvimento "Prop"

Como o título sugere, trata-se de um programa para verificar o funcionamento da placa Prop. Basicamente, este programa permite testar individualmente os pinos da placa. Para tal basta introduzir o número do pino a comutar, e o programa logo indica se a operação foi bem sucedida ou não. Desta forma, é possível detectar a existência de curto-circuitos, sejam estes à massa, à alimentação ou entre pinos.

Programa de teste a correr no terminal do SimpleIDE.

Para correr o teste é necessário utilizar o SimpleIDE (veja o post de 12 de Junho para mais detalhes). Antes de mais, deve transferir o ficheiro "prop.cfg" para dentro da pasta "propeller-load", localizada na pasta da aplicação. Isso permitirá utilizar o perfil de hardware correcto para esta placa. Deverá também transferir o ficheiro do projecto e o código C para dentro da pasta de projectos do SimpleIDE. Depois, tendo a placa ligada ao computador, basta abrir o projecto com o nome de ficheiro "Prop_teste.side" e escolher a opção "Run with Terminal" (tecla F8) para executar o programa.

Embora tenha sido concebido para a Prop, este programa pode ser empregue para testar outras placas de desenvolvimento baseadas no P8X32A. Após seleccionar o perfil de hardware adequado à placa em questão, os passos para a testar são exactamente os mesmos. Note que, se não seleccionar de antemão o perfil adequado, a placa poderá não funcionar correctamente.

Links importantes:
Projecto SimpleIDE: http://app.box.com/s/62u9...fntv
Programa em C: http://app.box.com/s/gulf...9v6m
Perfil de hardware: http://app.box.com/s/asqz...qmv0
Pasta contendo todos os ficheiros: http://app.box.com/s/0xq3...2xcr

02/07/2016

Placa de desenvolvimento "Prop" (Rev. 1)

Trata-se de uma revisão menor do projecto “Prop”, originalmente apresentado no post de 26 de Março. Esta revisão visa minimizar os problemas de instabilidade em regime de overclock (veja o post de 4 de Junho para mais detalhes). Contudo, é importante salientar que só alguns integrados P8X32A serão suficientemente estáveis a 128HMz, e isto com alimentação de 3,8V. Por conseguinte, mesmo tendo em conta as correcções elaboradas nesta revisão, não se garante uma operação estável da nova placa nas condições anteriores.

Placa de desenvolvimento "Prop", revisão 1.

Pormenor do fusível F1 e do díodo Schottky em D1.

O circuito 'crowbar' em pormenor. O SCR está em Q2.

A nível do circuito, as poucas modificações que foram implementadas focam-se na alimentação e respectivas protecções. O fusível F1 é um PPTC do tipo 1210L035, em lugar do 1210L010 previamente usado. A protecção contra sobre-tensões a jusante de F1 é agora realizada por um circuito crowbar com SCR (constituído por D2, C3, R1 e Q2) que, ao invés de um simples díodo Zener, possui uma curva de disparo extremamente acentuada. Por outro lado, a protecção contra inversões de polaridade é garantida pelo díodo Schottky em D1. No restante, o circuito é similar ao original.

Lista de componentes:
C1/4 – Condensador cerâmico multi-camada 1µF 10V (0805);
C2 – Condensador cerâmico multi-camada 2,2µF 10V (0805);
C3 – Condensador cerâmico multi-camada 10nF 10V (0805);
C5-10/13 – Condensador cerâmico multi-camada 100nF 10V (0805);
C11/12 – Condensador cerâmico multi-camada 47pF 10V (0805);
D1 – Díodo Schottky FYV0704S;
D2 – Díodo Zener BZX84-B3V6;
F1 – Fusível PPTC 1210L035/30 (ou 1210L035, como alternativa);
IC1 – Circuito de protecção PolyZen ZEN056V075A48LS;
IC2 – Regulador de tensão TPS70933 (TPS70933DBV);
IC3 – Conversor USB-UART FT230X (FT230XQ);
IC4 – Micro-controlador P8X32A (P8X32A-Q44);
IC5 – Memória EEPROM 24LC256 (24LC256-I/MS);
J1 – Conector USB Hirose ZX62D-B-5PA8;
J2-7 – Conector header macho de 5 pinos;
Q1 – Transístor MOSFET BSS138;
Q2 – Tirístor SCR S4X8BS;
R1 – Resistor de filme espesso 150Ω±5% 1/8W (0805);
R2/3 – Resistor de filme espesso 27Ω±5% 1/8W (0805);
R4/5 – Resistor de filme espesso 4,7KΩ±5% 1/8W (0805);
S1 – Interruptor pulsador C&K PTS525SMG15J (PTS525SMG15JSMTR2LFS);
X1 – Cristal CTS 406C35E08M00000.


Como anteriormente, o layout da placa está disponível nos formatos brd (Eagle 7.5.0) e Gerber. De novo, recomendo que a encomenda da mesma seja feita através do OSH Park, dado que o layout foi desenhado tendo em conta as especificações desse serviço. Pode sempre usar outro serviço de fabrico, se o mesmo suportar layouts de quatro camadas com furação a partir de 0,5mm. Quanto à montagem, aplicam-se os mesmos cuidados que foram sugeridos para o projecto original.

Uma vez montada a placa, é necessário carregar as configurações para o FT230X. Para tal fim, deverá utilizar o FT_Prog. Note que este passo é essencial para habilitar o regulador e, consequentemente, a alimentação de todo o circuito por USB. O ficheiro de configuração encontra-se dentro da pasta "Firmware", localizada na pasta do projecto. Novamente aconselho a leitura das instruções que acompanham o dito ficheiro.

Links importantes:
Diagrama do circuito (pdf): http://app.box.com/s/51jb...mk61
Diagrama do circuito (Eagle 7.5.0 sch): http://app.box.com/s/ha98...tzyi
Layout da placa (pdf): http://app.box.com/s/jmzf...1bx4
Layout da placa (Eagle 7.5.0 brd): http://app.box.com/s/gtuz...mwhi
Ficheiros Gerber: http://app.box.com/s/to6y...xgsu
Firmware (com instruções): http://app.box.com/s/pcpc...kdln
Notas do projecto: http://app.box.com/s/adjc...08d4
Pasta contendo todos os ficheiros: http://app.box.com/s/cx0p...2ovh
Projecto no OSH Park: http://oshpark.com/shared_projects/b8txXhPG
FT_Prog: http://www.ftdichip.com/Support/Utilities.htm#FT_PROG

12/06/2016

SimpleIDE

O SimpleIDE é uma aplicação de desenvolvimento que permite programar dispositivos baseados no Propeller P8X32A. Embora esta aplicação não seja oficialmente recomendada pela Parallax, ao contrário do Propeller Tool, pode ser instalada em sistemas Windows, Linux (Debian) ou Mac OS X. Para além disso, o SimpleIDE providencia um ambiente gráfico bastante simples, com suporte para C e C++, não esquecendo o SPIN que é a linguagem de programação nativa do micro-controlador P8X32A.

Aplicação SimpleIDE com terminal de comunicação série aberto.

No entanto, apesar de todos estes pontos fortes, existe uma razão pela qual o SimpleIDE não é oficialmente recomendado: quando se compila um dado programa em C ou C++ o código objecto não sai tão optimizado como poderia. Ainda assim, o compilador que está por trás, o Propeller GCC, faz um excelente trabalho a gerar código optimizado e compacto. Em suma e a meu ver, o SimpleIDE é uma aplicação capaz e que pode ser usada em contexto profissional.

Links:
Parallax: http://www.parallax.com/
SimpleIDE: http://learn.parallax.com/tutorials/language/propeller-c/propeller-c-set-simpleide

04/06/2016

Modificações à placa de desenvolvimento "Prop"

De modo a contextualizar, a Prop é uma placa de desenvolvimento baseada no micro-controlador Propeller P8X32A da Parallax. Para referência, o projecto propriamente dito foi apresentado no post de 26 de Março. Contudo, esta placa apresenta alguns problemas que agudizam a instabilidade do micro-controlador quando em regime de overclock (isto é, com a frequência de trabalho definida a 128MHz), especialmente porque é necessário ter uma alimentação consistente e não inferior a 3,8V nessas condições.

O que se sucede é que, em tal regime, o consumo de corrente do micro-controlador dobra. Para além disso, existe uma passagem de corrente significativa através de D1, um díodo Zener colocado justamente para proteger o circuito contra sobre-tensões. Este díodo consome cerca de 10mA quando a 3,3V, sendo que a corrente aumenta de forma quase exponencial com a tensão. Este consumo de corrente faz com que F1, um fusível PPTC do tipo 1210L010, apresente uma queda de tensão apreciável, na ordem das décimas de volt. Estes factores fazem com que a tensão que alimenta o micro-controlador se apresente instável.

Caso seja necessário fazer overclocking, sugiro então a remoção de D1 e a substituição do PPTC em F1 por um do tipo 1210L035. Note que, ao fazer tais modificações, está a retirar a protecção contra sobre-tensões e inversões de polaridade relativamente aos pinos de alimentação. Nesse caso, a alimentação nunca deverá exceder os 4,0V. Também é importante advertir que, mesmo com estas modificações, não se garante a estabilidade do micro-controlador quando em overclock.

Placa não modificada.

A placa após a modificação. Foi removido o díodo D1 e F1 é de um tipo diferente.

Será lançada em breve uma nova revisão que resolve os problemas que a placa actual apresenta. A nova versão da placa irá incorporar um PPTC do tipo 1210L035 e, em vez do díodo Zener em D1, terá um circuito crowbar com SCR complementado com um díodo Schottky em anti-paralelo. O projecto já está disponível no repositório de ficheiros.