I was looking around for a small case to put by Bus Pirate in and I found these Microchip sample bins in which the Bus Pirate fits just nice. No need to make any openings cause I’ll only be using it for storage probably. Checkout the pics below.
So in my last post I was telling you how I managed to mess up the ATAVRSBIN1 I got from Atmel during a crash with the quad. After the crash I noticed it didn’t respond any more so I hooked it to my Bus-Pirate and the result of a search on the bus was not pretty, no device found:
Searching I2C address space. Found devices at:
Warning: *Short or no pull-up
But I figured maybe one or two of the chips (ITG3200, AK8975 and BMA150)survived and the other one who got damaged is keeping the bus low, or shorted or whatever. So I decided to de-solder the chips one by one to find if any still works. I started with the ITG3200 gyro, removed it and the same error, no device found, next I continued with the BMA150 accelerometer and success!:
Searching I2C address space. Found devices at:
0×18(0x0C W) 0×19(0x0C R)
When there was only the AK8975 magnetometer left it replied. I also tried soldering back the ITG3200 but it didn’t work. So I was only left with the AK8975 but that’s useful for comparing with the other magnetometer that I’m working with the LSM303DLHC from STmicro. I guess you could call this whole incident a stress test and I’ve determined that out of the 3 chips only the AK8975 survived in conditions above its maximum ratings .
Now for reading something out of the sensors I tried reading the WIA register which holds a fixed value(0×48 as mentioned in the datasheet) set during manufacturing. The WIA register is at 0×00 address so start by writing the address of the register then perform 1 read:
I2C START BIT
WRITE: 0×18 ACK
WRITE: 0×00 ACK
I2C STOP BIT
next perform 1 read:
I2C START BIT
WRITE: 0×19 ACK
I2C STOP BIT
And the returned value 0×48 matches the one from the datasheet. I’ve gotta say the BP helped allot during this debug session and it would’ve been much harder without it.
If you ever get the message “Entering programming mode.. FAILED!” while trying to program your AVR device don’t start messing with your MKII or upgrade its firmware 10 times or messing with the windows drivers like I did, cause that’s probably not the cause and you risk damaging you’re perfectly working MKII. As it turns out its just a faulty connection between the programmer and the target board. This is not likely to happen if you only use the programmer occasionally but I used it for like 50+ times a day and that meant inserting and removing the little 6pin connector a bunch of times. I removed the old 6pin connector, crimped a new one and its working again, so long live the MKII because it is a great tool.
You might be wondering why would I need to use that many times, well its because I’m working on this new project, a quadrocopter based on an atmega64. The microcontroller was chosen because I had a bunch around and ATMEL was kind enough to send me a ATAVRSBIN1 for my project.
The Inertial One System Board delivers a full 9 degree of freedom sensor platform comprising a 3 Axis Magnetometer from AKM (AK8975); 3 Axis Accelerometer from Bosch (BMA150) and a 3 Axis Gyroscope from InvenSense (ITG-3200) connected through an I2C interface.
At $54 its probably the most accessible 9DOF breakout out there and it comes with great sensors. Unfortunately I only managed to test and fly with the ITG-3200 gyro before I had a crash(you crash allot when developing from scratch a new firmware for a quad). Because of the crash a short-circuit happened somewhere on my board and it messed up the ATAVRSBIN1 sensors.
The ITG-3200 is a very good gyro with low noise so to replace the damaged ATAVRSBIN1 and to continue flying I got a wii motion plus which has the ITG3205 inside(its supposed to be just an OEM version of ITG3200). I haven’t done allot of testing with this new ITG3205 but I did notice some problems on the I2C bus, like sometimes the sensor does not respond , which is strange.(maybe the 400KHz freq is too high for the ITG3205 ?).
Anyway enough for now, I’ll post some updates on the project soon.
I’ve been pretty busy lately working on the latest spectrum analyzer V2.1. Its available in the online shop if you are interested in getting one. Here are some videos bellow with the new blue LED’s and with a half green/half red display.
I have also been working on the new expansion board pictured bellow. The Expansion Board was created to help you create bigger custom displays for the Spectrum Analyzer. The Expansion Board works by switching the signals from the spectrum analyzer with the help of high current MOSFET transistors thus giving you the possibility to output higher voltages and currents for your custom setup. You can read more about it on the forum.
There is also a new assembly guide for the audio spectrum analyzer V2.1 that will be helpful to those that get the kit unassembled.
When Gabriel Anzziani from gabotronics.com asked me if I would like to do a review of the XMEGA Xprotolab I said yes because although these small devices cannot replace a real tool in an electronics lab, they often serve as development boards for the devices used on them. The Xprotolab is a miniature mixed signal oscilloscope and waveform generator packed in a DIP module which makes it great for breadboards. It has a nice set of features for such a small device:
for oscilloscope mode:
- 2 Analog Channels, 8 Digital Channels
- Maximum Sampling rate: 2MSPS
- Analog Bandwidth: 320kHz
- Resolution: 8bits
- Input Impedance: 1MΩ
- Buffer size per channel: 256
- Max. Input Voltage: +/- 10V
for arbitrary waveform generator:
- 1 Analog Channel
- Maximum conversion rate: 1MSPS
- Analog Bandwidth: 44.1kHz
- Resolution: 8bits
- Low output impedance
- Buffer size: 256
- Max. Output Voltage: +/- 2V
The hardware is based on a ATXMEGA32A4 coupled with a Graphic OLED display 128×64 pixels and a TL064 quad op-amp for the analog side. What is not mentioned on the product page is that it also has FFT, Meter mode with voltage and frequency, X-Y mode and a logic analyzer. Sound nice but lets put it to the test and see how it performs.
First thing I wanted to test on the xprotolab is the meter mode; I think for beginners who build breadboard circuits it will be a very useful feature because you could use your multimeter to check some voltage or current while you use the xprotolab to check another voltage or frequency. Every electronics lab should have at least 2 meters to serve this purpose but if you’re a beginner its most likely you only have one. I must tell you that Gabriel was very helpful when I discovered some bugs in the firmware and he corrected them within hours. Unfortunately it is a work in progress and I could find other bugs even after upgrading. The firmware version used during tests is 0.95.
So to start testing I placed the xprotolab on a mini breadboard and supplied power at 5V. First thing to notice is the OLED display which is a very good choice for this application and provides nice & crisp display with good contras. The menu is not difficult, it takes about 10 mins to get used to it and learn what each menu/key press does. After switching to meter mode (VDC) I applied a 3.3V voltage through a 10k series resistor to CH1 and CH2. With both channels connected to the same signal at the same time CH1 was reporting 3.22V and CH2 3.28V while my multimeter was reporting 3.24V so CH1 was off by -0.02 compared to the multimeter while CH2 was off by +0.04. A slight offset between channels can be noticed ~0.06V. The firmware has an offset compensation feature which can be accessed by holding key 4 during power on.
After entering the offset menu it will ask you to ground all inputs and press start. I did that.. it acquired the new offset values and I continued using into meter mode to see how it affected the results. Connected to the same signal as earlier CH1 was now showing 3.19 V which is off with -0.03 compared to the multimeter but the surprise is that CH2 is not taking any measurements, its just stuck after the offset compensation. As you can see the values are pretty close to what the multimeter was reporting and really a 0.02 offset is not a big deal in most applications, but the software has a bug that’s preventing CH2 from taking measurements after the offset compensation. To fix this I just re-flashed the EEPROM and CH2 started working on meter mode again.
Next I tried the frequency measurement. I used a signal generator with a sine wave and the xprotolab was able to detect frequency down to 10Hz and up to 500KHz which is pretty good for a device so small and inexpensive. Next I tried the VPP meter mode which was able to detect values on a sine wave up to 100KHz, any frequency higher and the measurement got all weird.
Next test was on scope mode, and I was able to get a clean and accurate reading on CH1, up to 100KHz sine wave. Anything higher than 100KHz caused false readings and I could notice the amplitude going down.
I also did tests with square and triangle wave shapes and the results were the same. I did not have enough time to review the other features like the arbitrary waveform generator or the logic analyzer but I’m sure I’ll use it somewhere in a future project cause if you remember I wrote a post about how nice is to have a logic analyzer when debugging. There is one feature I felt it was missing from it though , the value of the frequency printed on the screen while taking scope measurements.(later edit: Gabriel pointed out that this feature exists and he was right, I somehow missed it. You have the option of activating and locking the cursors and this will show the frequency on the screen as 1/deltaT but I feel the position its not the best as it overlaps with the represented signal). This is a feature commonly found on all modern scopes, and although you have the options of controlling two cursors from the menu its easier to just have the value on the screen without having to use the cursors.
To conclude the Xprotolab is a small and cheap device which besides the features enumerated above doubles as a development board with schematics and source code offered on the product page. To me its clearly visible that someone has put a lot of work into this project and is using every bit of processing power from the ATXMEGA32A4 to crunch the numbers.