Friday, 29 March 2013

Power Supply Noise

Após construir uma pcb para fonte de alimentação para uma breadboard com um conversor de níveis MAX232, estive a analisar o ruído da saída de tensão de 5V e deparei-me com alguns picos de tensão na casa do 20~30mV, após fazer um probe, reparei que a fonte de ruído era a fonte de alimentação (um SMPS de 1997 de um portátil toshiba).

Escala vertical 20mV/div
Breadboard psu rev2

A figura "A" mostra a saida de 5V usando como fonte de alimentação a fonte SMPS.

A figura "B" mostra a mesma saída usando como fonte de alimentação linear, mas estando a fonte SMPS ligada a corrente eléctrica na mesma régua.

A figura "C" difere apenas no facto da fonte SMPS estar desligada da rede, nota-se agora menos ruído.

Curiosamente um dos vídeos do Dave Jones/eevblog fala exactamente deste problema, de fontes de alimentação SMPS (de má qualidade ou antigas) que colocam ruído em tudo o que esteja perto.

Também acabei por detectar ruído na casa dos 300kHz gerado pelo conversor max232, que acabei por "matar" acrescentando um condensador de 500uF.

Quando desenhei a placa não tinha feito grande estudo de quais eram as fontes de ruído e acabei por adicionar condensadores a mais, footprints erradas ou mal posicionados, mas já sei o que fazer, fica para proxima revisão board, já aprendi mais umas coisas!

Sunday, 20 January 2013

Sudo e portas de serie virtuais

Para aceder as portas de serie emuladas (FTDI 232 chip), o linux requer sempre que o acesso root, contudo isto tem solução:

sudo chmod 666 /dev/ttyUSB0 

Ou seja, todos os utilizadores podem ler, escrever mas não podem executar. Agora os programas em java, C# e C++ já podem correr em debug com permissões do utilizador :)

Sunday, 9 December 2012

Flashing de um Atmega novo

Quando tentei flashar um Atmega 8 novo usando o USBASP, o avrdude não consegui-o obter a assinatura do dispositivo, lançado a seguinte mensagem:
avrdude: error: programm enable: target doesn't answer. 1
Por defeito todos os atmega novos estão configurados para usar o oscilador interno, que é demasiado lento para o sinal de SCK do USBASP.

Mas existe uma opção para resolver o problema que consiste em activar a opção de SCK lento, conectando o pino 25 do Atmega8 do USBASP à massa, assim obtém-se a seguinte mensagem executado o comando de leitura do dispositivo:
avrdude: Device signature = 0x1e9307
Comando de leitura da assinatura: 
sudo avrdude -c usbasp -p m8

Comando para flashar o Atmega 8 para usar o oscilador de cristal de 12 MHz: 
sudo avrdude -c usbasp -p m8 -U lfuse:w:0xde:m -U hfuse:w:0xd9:m 

Os fusíveis podem ser calculados com a ajuda deste site, o start time escolhido não foi o maior que era possível, parece ser boa prática escolher o tempo mais longo para que o sinal gerado durante o arranque esteja o mais estável possível.

Saturday, 18 February 2012

Lowpoly human brain texturing

PT: Criação do mapa de relevo para um modelo de baixa resolução de um cérebro em Blender 2.6X.
EN: Creating the bumpmap for a lowpoly brain model in Blender 2.6X.

Download or click on View Image to see full-size version
PT
  1. Modelo de baixo detalhe criado a partir de uma referência encontrada na wikipedia;
  2. Pintar os relevos do cérebro no modelo usando a opção de edição Texture Paint na 3D View; 
  3. Mapa da textura não organizada(o mapa UV foi feito com o auto-unwrapping, não é recomendável eu é que fui perguiçoso ... :P );
  4. Mapa da textura reorganizada (criar uma nova camada de mapeamento UV, criar os seams necessários e unwrap, usar Render > Bake > Texture gerar então a textura reorganizada); Desfocar a textura pouco para suavizar a pintura;
  5. Adicionar os modificadores de multires e displace; No displace usar nova textura para deformar a geometria e depois carregar em Apply, isto vai transferir a deformação para o multires;
  6. Colocar o preview do multires em zero e ir ao separador Render > Bake > Normals para transferir os normais para uma textura;
  7. Mapa da textura de relevo gerada;
  8. Previsualização em tempo real do modelo com as texturas criadas.
EN
  1. Lowpoly model created from a wikipedia reference;
  2. Paint brain relief using Texture Paint editing option in the 3D View;
  3. Unsorted texture map (the uvmapping was made with auto-unwrapping because i was too lasy ... :P );
  4. Fixed texture map with a new uv layout, the texture was created using the Render > Bake > Texture feature; The texture should be blurred a bit to smooth the painting;
  5. Add multires & displace modifiers; On displace modifier use the new texture to displace the geometry, then press on the Apply Button to merge the displace modifier with the multires;
  6. Set the preview on Multires to zero and go to Render > Bake > Normals to generate the bumpmap;
  7. The generated bumpmap texture;
  8. Profit :) !

Tuesday, 14 February 2012

Sawtooth oscilator

This is a small sawtooth (almost) oscillator circuit which I have been tweaking the last weeks to generate a reasonably decent 100kHz waveform at Vcc=5V. It was based on some random schematic on the web, which didn't generated the output from 0V to Vcc, so I added a few more components and changed a few parts.

Circuit schematic
Assembled circuit
Oscilloscope signal capture

Basically it charges a capacitor (C1) and uses the 555 comparators to trigger the discharge via other PNP transistor(Q2). The triggering voltage is calibrated with the POT_2 and the capacitor fill time is calibrated with the POT_1.

It has a few glitches which didn't appeared on the simulation and neither on the breadboard(parasite capacitances FTW), but I also used some BC560 instead of the BC557.