I wanted to interface Microchip's 12-bit ADC chip (MCP3008) to the Olinuxino MICRO board, which uses the Allwinner A20 processor. Unfortunately, no kernel module supporting full-duplex SPI mode exists yet, or at least I was not able to find a working one. If we can not write and read at the same time we are limited to reading only 8bits from the ADC, which is otherwise a 12-bit SAR converter.
Here's some code implementing a bit-banged SPI specifically tailored to read out the MCP3008. It is written in python and uses the pyA20 GPI/O library by Olimex.
and the never ending rivalry
Lately the topic about science and engineering has become quite hot in our group. It is probably the fact that we always have lunch in the neighbouring buildings hosting the theoretical physics and mathematics departments. Being almost the only engineers having lunch in this canteen, otherwise packed with sciencey' theoretical physics people, I started noting differences between them and us. I am sharing some of my observations as an engineer. I do not aim to put more gasoline into the fire here, but instead note some of the aliasing artifacts between "them" and "us" in a friendly manner.
A fact, people who are into pure theoretical sciences are usually very sharp and confident in their fields. This however allures them to think that they know everything. Well, they don't. It isn't possible to learn and know everything of course, and in general, the more you know the more you learn that you know nothing. And because theoretical/natural scientists often study and work on very nieche problems they kind of lose the whole picture. Don't get me wrong, I am not saying they are stupid, which is a typical illusion they get by seaking to "us". People within pure natural sciences are very eager to have discussions within their comfort zone (whatever their field is) however when we step-over to other fields they often misbehave. Because it often happens that they know nothing about the other fields, often, their first reaction is to become arrogant and try to defend themselves. My experience shows that their defense is usually expressed in insults and explanations on how easy it is to solve "this" or "that" engineering or whatever problem. Let me give you some brief examples:
Not a long time ago I had a discussion with a friend (mathematician) with whom I somehow ignited a discussion about the MP3 compression format. I politely asked her if she knows the basic principle behind MP3 encoding wanting to share some thoughts on types of music and compression density. An immediate quite confident reaction was followed with the words "Yes, fourier transform!", with that the topic was exhausted. Well, not quite, she feels very comfortable with Fourier transformations and is probably quite good at it, however this by far does not stretch over the basic principle. When I tried giving a brief explanation, instead of listening carefully to my "intuitive engineering explanation" on the psychoacoustic model of the brain and f-domain truncations, she simply ignored and did not listen to any of my words. Head was up and pride rockets in the sky - it is Fourier transformation, too smart to listen to "intuitive stuff".
Similarly back in the old days during my undergratuate a bunch of chief science research assistants at the university were trying to build an optical pipe inspection instument. This tool consisted of eight push rod micrometers, arranged in a hexagonal shape, which were supposed to measure the pipe's geometrical shape by frictioning over it. In such industrial environments, when the pipe is formed it moves with about 1m/s, it is very easy to guess what would happen if you have sensitive measurement tools sliding on the pipe with that speed. Not only it did not work, but the measurement and correction electronics was built as a circus joke. Because they were so bad at electronics systems design, all they had was an 8-bit microcontroller reading the 10b ADC and spitting out data over UART. I am totally not joking, they had one microcontroller per channel, so eight in total. All because they could not figure out how to read more than one AD channel per MCU, so instead, yeah!, why not buy and put eight instead. Supposedly the whole system had to control the pipe forming rollers with a feedback over UART? Yes! UART feedback with a pipe travelling at 1m/s. Nevertheless, they were very proud of their work, which is okay to a certain extent, in the end they all had a physics / control theory background.
So why is this a never ending rivalry? My answer here is ACADEMIA! It is in academic institutions that you can mostly find arrogant species in theoretical sciences. In the real world, scientists do some engineering and engineers do some science, the last however never applies to academia. The whole respect and ranking systems in academia are all based on the "who's smarter model" and the number of cool publications in fancy pumped-up journals made. However, the "who's smarter" debate is old and dumb and dies out the moment you leave academia and face the real world challenges. Those who claim to be true mathematicians, physicists, chemists, scientists and renounce engineering profession are primarily pure academics, there are exceptions to this of course. Sadly a large portion of universities encourage separation between theoretical and applied sciences, which deforms the minds of graduates and due to this we end up talking about rivalry and arrogance.
Enough talking about competition, there are more interesting facts to cover on people's stereotypes, based on their fields of work, no matter if these are pure or applied sciences or engineering. Stereotypes contain enough truth to be humorous but also quite objective. We all do some sort of preliminary judjements based on stereotypes, probably quite a bit more often than we are brave to admit. Stereotype models give us fast and efficient cognitive shortcuts and save us a lot of energy and time. I will soon try to elaborate on the stereotypes of people in science and engineering in Part 2.
I was browsing around some cool circuits recently and I discovered Chua's circuit. How come I haven't come across chaotic circuits before?
I want to do a quick analysis on this non-linear circuit, and this post will ironically follow a chaotic fashion and begin upside down. Let's start with Chua's circuit non-linear behaviour. This is a non-linear circuit having a current-voltage relation resembling something like this:
So that you don't consider that I am describing a black hole, here is the classic chaotic Chua circuit diagram:
Taking an initial look at Chua's circuit we can identify an LC resonance tank and an active non-linear element, which adds-up energy in the resonance loop and forming a special "energy injector" which injects current in the system depeding on the voltage's magnitude following a non-linear function as show on the first figure. The active non-linear element is effectively a negative impedance converter with a twist. The opamps in the Chua configuration act as adding or subtracting a varying voltage in series to the voltage drop across an equivalent positive impedance. The voltage polarity of the current direction of the element is reversed and thus a phase shift of 180 degrees between the voltage and the current is introduced.
Having a single negative impedance converter would simply keep the LC tank in resonance and would not introduce any form of chaos in the system. For this reason, Chua's circuit in the from as shown in the figure would normally contain two negative impedance converters in parallel with a slight slope offset.
I will now leave you with some pictures of the circuit in operation. The circuit was not very easy to tune and get into chaos with my setup but the wobbling sinewaves were quite fun to play with.
I started to wonder how would that sound as the frequencies generated are in the audible spectrum. It isn't hard to attach a speaker to it and listen to some chaos. Not very surprising or exciting sound, but still, here is how I heard it:
Too many pictures, too little explanations? Have a look at www.chuacircuits.com.
Last weekend I paid a visit to Kris at the University of Bath. She is currently finishing-up with her doctoral studies and invited me to pay a visit to her lab and the materials group's DIY scanning tunneling microscope. During that weekend we scanned a few Silicon 111 wafer samples and injected Toulene molecules on the wafer.
I was quite impressed that the tunneling current noise floor of their microscope was in the order of a couple of hundred femto amperes, which is quite impressive for a measurement system operating at room temperature. It seems like they were using a commercial low-noise programmable gain amplifier produced by the German company Femto. It was quite tempting to open the amplifier box and see what's inside. I doubt that there is a custom OPA in it, but I really wonder which commercial chips did they use and what was this low-noise PGA feedback configuration used. Anyway, here are some fancy pictures of my visit and this has now inspired me to run an investigation on the OP and low-noise needle amplifiers used.
Besides the immense pressure/vaccuum required for this machine to work, the electronics behind it is fascinating. A PLL and all other sorts of regulating loops to precisely control the needle. The piezo elements have a natural vibrating frquency for which it should be corrected. A needle with passing fA currents though the sample, very low-noise programmable gain amplifier with filters and a 16-bit analog to digital converter. Moreover some digital image acquisition and needle vibration correction algorithms are used to reconstruct the images. Simply a symphony of virtuoso circuits!