Tuesday, January 31, 2012

USB to GPIB Adapter, OSHW

I've decided to release my USB to GPIB adapter as open source hardware! I'll be releasing everything under the Creative Commons Attribution-Sharealike 3.0 license in the coming days.

I would probably be done packaging up the files if it weren't for my monitor being on the fritz. It makes it hard to work when half of your screen randomly decides to stop working.

I want to get a bootloader in the system too allow for user upgradeable firmware. Assuming that goes well (and I get a new monitor!), we'll have a nice oshw adapter!


With that out of the way, I also want to let everyone know that I'll be selling this adapter when I release all the source. I haven't completely decided how I'm going to go about that, but I'll be sure to keep everyone posted.

Saturday, January 28, 2012

Video Blog Episode #3 - OSHW Function Generator (Part 1)

In this episode I introduce my open source hardware function generator.

In part 1 I show some of the preliminary experimental work I did to get a feel for how to use direct digital synthesis (DDS) chips.


Saturday, January 21, 2012

Video Blog Episode #2 - GPIB Protocol

In this episode I talk about about how the GPIB protocol works and a little bit of the history.

We take a closer look at my USB to GPIB adapter to see how I implemented the protocol, and talk about a few of the things I did wrong in RevA.


Saturday, January 14, 2012

Video Blog Episode #1 - USB to GPIB Adapter

Hey everyone, I just published my first ever Youtube video today! The video quality might be a little poor, but I did the best I could with what I had.

In this episode, I talk about my USB to GPIB adapter project. It was my first PCB manufacture, surface mount soldering, and microcontroller project!

Hope you guys enjoy the episode.


Monday, January 2, 2012

So, you want to learn electronics?

I get asked this question a lot from my friends. "Steven, how did you learn so much about electronics?". Now before we start, I don't know everything about electronics (far from it) and I acknowledge this. I just know much more than many of my friends.

Let's back up to when I first started. This wasn't that long ago. Summer 2010 in fact. I was working during the summer for Prof Cory in his freshly moved lab at the IQC. I remember the one day he was showing myself and another how to use the Network Analyser. He asked me a few basic questions about electronics and I was completely unable to answer. Sure I knew Kirchoff's circuit laws from class, but anything beyond that was out of my knowledge. At that point he looked at me and said that I need to take a formal electronics course starting the next term.

This takes us to Sept 2011, start of my 4A term. Here I took a second year engineering electronics course. It started off as basic as it gets: Kirchoff's laws. My goodness did that course go quickly. We covered the basics of all sorts of things, including non-ideal operational amplifiers, filters, and DACs. This course was 4 hours a week of lectures, more than any other course I've taken (standard is 3).

This is where I'm going to stop and make a point. This course gave me the solid foundation required to continue on and progressively learn more advanced concepts. The reason I'm bringing this up is because I see people going out and deciding that purchasing an Arduino and associated "project book/kit" is the best way to go about learning the basics of electronics. What I feel ends up happening to most (not all!) of these people is that they simply reproduce the projects found in their project box/book/kit. Most of these "project idea" books aren't going to go into any theory detail to actually teach you about what is going on. They are no match for a quality textbook.

The Arduino is a development platform. Of course its for also for learning, but its not going to give you that solid foundation. You're not going to learn what the rolloff of a Nth-order Butterworth filter is. You're not going to learn about opamp input bias currents. What you will learn is how to flash a few LEDs or drive a motor using a microcontroller. Sure, with that you'll probably learn about charlieplexing and H-bridges, but you're not laying that solid foundation.

I see plenty of posts on the Internet of these people asking "where do I go next to further my knowledge?". The majority of the responses that I see go along the lines of "get a generic microcontroller development platform". Although one would gain more skills from broadening their platform experience, one is not furthering their knowledge of electronics. All you are doing is learning the specifics of some different platform.

Let me remind the reader that I have nothing against the Arduino "ecosystem" at all. I think its a great platform for rapid prototyping and for learning about microcontrollers. I just don't think that it is the best starting point as it does not build that solid foundation of electronics knowledge. If you know the basics, the question of "what do I do next?" never comes up because you're continuously reading and learning about new things.


Alright, back to my classes. After that course I moved onto my 4B term. Here I took another analog electronics course, this time a third year course offered by the physics department. Although it was third year, it was still a "introductory level" course (there are no 1st or 2nd year electronics courses from this department). The reason I took this course is because there was a large focus on transistors, something that was not included in my previous course. There was also a project component. If you've read my previous entries, you know that my project was an audio trigger for a DSLR camera.

I learned so much from that project. I learned about designing an entire project from start to finish. I learned about single supply opamps and their limitations. I learned how a device with high current draw can mess up your opamps if not provided with adequate decoupling capacitors.

Most importantly, I read. I would spend my time at home reading blog posts and wikipedia articles on various electronics topics. I started watching the EEVBlog to learn about a wide variety of topics and issues. If I walked into a room with a bunch of textbooks, I'd look to see if there was one on electronics to flip through. This is why I've been able to help my friends on a wide variety of electronics related issues. I've build that starting foundation and just kept reading, even if the topic wasn't of immediate project relevance.


After this course I went on to take other courses. During the summer I took "Intro to Digital Signal Processing" and just this past term I took "Intro to Radio Frequency and Microwave Design". So I went from next to zero knowledge to taking a graduate level microwave engineering course in 1 year. Now I'm not saying everyone go out and enrol at their closest University, but the point is I was able to do it (while taking other courses!) because I built that foundation.


In summary, getting an Arduino is not a starting point for learning about electronics. Its a great way to learn about microcontrollers and rapid prototyping. Instead, get yourself a good textbook on the subject. An oldie but a goodie is "The Art of Electronics" by Horowitz and Hill. Yes, its a textbook. Yes, there is some math. But it contains so many highly educational sections you will benefit from it.


So, you want to learn electronics? Learn the basics, and afterwards get an Arduino.