Videos: I forgot which way I soldered the chip!

I was soldering a QFN-25 in flip-chip configuration and forgot which way round I soldered it… Here’s how I figured it out.

Advertisements

HP2VGA: PCB Design with a BGA

This PCB represents two firsts for me – first 4 layer board and first BGA package. The former isn’t really a big deal and is really just necessary because of the latter. Due to my memory requirements, I was forced to use the Lattice iCE40HX8k which has more RAM than the smaller variant, iCE40HX4k, and also only comes in BGA packages.

Continue reading “HP2VGA: PCB Design with a BGA”

Oscilloscope Mod: Decoding My First Frame

It’s been a long time since I last updated about this project, but I have been working slowly in the background. The current plan is to use a TVP7002 from Texas Instruments which is a triple 10-bit video digitiser. It is a little bit over-kill for my needs – it is able to handle three RGB video signals and I only need one monochrome video signal – but nonetheless it is an interesting chip and will achieve what I need.

Continue reading “Oscilloscope Mod: Decoding My First Frame”

Multispectral Imaging with Raspberry Pi

Last weekend I went to a meetup which was a bit like a hackathon. The title was ‘Multispectral Imaging with Raspberry Pi’. In a lot of ways I am not a fan of the Raspberry Pi – I feel that it was hyped as a great way to get kids into programming, but in reality most kids have access to full Windows PCs which they will be more familiar with and also have much more user friendly programming IDEs, tutorials etc. What interested me was the multispectral imaging, so I went along not sure what to expect.

They introduced the concept of the Normalised Difference Vegetation Index (NDVI). This is a value indicates the health of plant life and calculate by measuring the light reflected by a plant. It is defined as:

{\displaystyle {\mbox{NDVI}}={\frac {({\mbox{NIR}}-{\mbox{Red}})}{({\mbox{NIR}}+{\mbox{Red}})}}}

Continue reading “Multispectral Imaging with Raspberry Pi”

The Atmel’s Universal Serial Interface (USI) sucks for I2C

Quick Intro to I2C

Along with USART and SPI, I2C is definitely the most common interface used by a microcontroller to communicate with peripherals. In order to implement an I2C bus all you need is two open-collector collector pins, one for the SCL (clock) line and one for the SDA (data) line.  It has to be open-collector because there are times during the protocol when two devices drive the clock line at the same time which can lead to a short circuit if one device drives it high and one drives it low. This way, the bus lines are high by default due to the pull up resistors –  if a device wants a line to go low, it just shorts it to ground via an internal transistor. There is no path from VCC to GND that does not contain a high-valued resistor.

Continue reading “The Atmel’s Universal Serial Interface (USI) sucks for I2C”