Jean-Michel FRIEDT physics and electronics projects
Introduction to uClinux on the uCDimm5272 (from Arcturus Networks) and SSV Dil/NetPC DNP5280. Step by step introduction from first booting the system to RS232 and ethernet communication and finally emulation of a PC parallel port for connecting a black and white connectix quickcam and transferring the resulting images via a wifi link: in French and in English concerning the Coldfire 5272 processor, and the Coldfire 5282 in French (translation to English in progress).
A brief introduction to the Hough transform used in image processing for identifying the position of geometrical figures (lines, circles). I have used this technique for identifying the position of drops on a subatrate and computing the contact angle of these drops.
Since August 2003, I have been developing on two new Analog Devices microcontrollers, the ADuC814 and ADuC816. They are based on a 8051 core, include (slow) A/D, D/A, UART and SPI/I2C communication. 8 kB flash memory, 256 bytes RAM. Wonderful toys: here is a tutorial on development under linux, including data storage and retrieval on a MultiMediaCard.
ibisc.exe is a program for controlling the Holland Biomaterials Ibis II Surface Plasmon Resonance (SPR) instrument. We have reversed engineered the communication protocol of the instrument and re-written the data acquisition software in order to be able to record all the reflected intensity v.s angle curves for later post-processing (using Matlab for example). This program is text mode only, i.e. easily portable to any other operating system than Windows NT4 (Visual C++ 6) on which it was developed. It removes the limitation of the proprietary software provided by Holland Biomaterials of only allowing 8000 points acquisitions and not letting you decide what kind of fit to use when identifying the position of the SPR dip. Here is the source code for Visual C++ 6 (but only ibisc.cpp, an ANSI C program, is useful for developers) and a documentation on how to use the program.
Here is the program I quickly wrote for recording all the RS232 transactions occuring between two computers (or an instrument and a computer as in the case presented above). The hardware interface looks as follows:
                  PC MONITORING TRAFIC
                   COM1---\  /---COM2 (pin2)
                  (pin 2) |  |
                          |  |
                          |  |
                     pin 3|  |pin 2
                          |  | 
computer1 or <--> subD9 <-+--+-->   subD  <-----> computer2
instrument        male   straight  female
                     (1-1, 2-2, 3-3...)
The hardware interface is simply a straight connexion from a female to a male subD9 connectors, and we listen to the traffic occuring on pins 2 and 3 of this cable. Listening is done by connecting each one of these wires to pin2 of a subD connector to be plugged in the two serial ports of the PC listening to the trafic. Also remember to connector pin5 (ground) of all these connectors together. The program for monitoring the trafic was written in Turbo Pascal 7 under DOS (at that time it was the only way I knew to have a non blocking access to the serial ports. Now with more experience the same result could be achieved with many fewer lines of C). When launched, the program will ask for a filename in which to store the results, and simply listen to the trafic until the user hits a key.
Satellite digital date reception: using an AOR 3000A radio scanner or a RIG RX2 dedicated receiver connected to the sound card of a Toshiba laptop, I have been able to receive ISS and NOAA weather satellites. These low-altitude orbiting satellites (respectively ~400 and ~800 km) are ideal for very simple antenna setups (I have attached my Diamond wideband discone antenna to the balcony of my appartement located one the second floor of a four-floor building, with open space towards south and west). Since the sound card based on the CS4281 chip does not seem to be able to record from linux, I have to dual-boot to win98, record the satellite pass as a wave file, then switch to linux and use multimon for decoding ISS digital data and wxtoimg (free but unfortunately binary-only closed source software) for decoding NOAA images. I use sattrack for predicting satellite passes. I have summarised the results in the following manuscript I have also heard the Idefix microsatellite.
VRML models of the experiment I am currently running (SAW device used for Cu electrodeposition monitoring under AFM). VRML 1 and VRML97 file formats.
Second set of models: setup for inserting a Quartz Crystal Microbalance (QCM) under an AFM (Molecular Imaging Picoscan). VRML 1 and VRML97 file formats.
Third set: setup for a failed setup aimed at combining QCM and SPR (Holland Biomaterial Ibis II instrument). This design doesn't work because air bubbles get trapped on the top surface of the cell where the QCM is standing. VRML97 only
Finally, introduction of a SAW device in the Holland Biomaterials Ibis II SPR instrument ( VRML97 ). For this experiment, I also had to rewrite the software controlling the Ibis II instrument since the one provided my the manufacturer is limited to 8000 data points (ie 8000 seconds experiments) and uses a fitting procedure for increased angle accuracy which is not suitable when multiple peaks are present (such as due to interference patterns for example). The program is available at the top of this page.
Fourth set: the ultimate experiment, multiple wavelength SPR combined with Love mode SAW device , no moving part, white light source and a diffraction grating (reflection) as monochromator.
To be seen using the Cosmo player under M$-window$ or FreeWRL under linux (good luck for installing it !). The model was created using 3D-Studio.
I typed a list of dielectric constants (complex) as a function of wavelength for Au, Ti ,Ag, Cu, Pt, water, glass and quartz for surface plasmon resonance simulations. If these canbe of any use to anyone else, please feel free to download from here . Please let me ( know if there is any mistake in these data sets. They were copied from articles by Palik et al. and Johnson et al. (references are provided in the readme file).
A list of the articles I wrote, some of which are available on this page .
Using an broken CD/CDROM reader laser head for building an optical profilometer. This might also be a pretty good introduction to building any other kind of scanning proble microscope (SPM) such as an STM or AFM. English and French versions available. Please acknowledge the original author of this idea, Christian Ferrandez (LPMO, Besancon, France) if using this project. Two publications have resulted from this work.
Introduction to the 68HC11F1 (in French and in English): includes the basic circuit for running programs on the 68HC11F1 (no EPROM programmer required - just a serial port on a DOS or Linux running PC). Development first started under DOS, and later shifted to Linux (all programs available here) while more complex applications were developed. Latest addition to the French documentation: read/write to an I2C EEPROM 28C64. Christophe wrote the software for programming the HC11F1 from a Psion V (which also requires psion.asm running on the 68HC11 board), as well as a simple assembler (written in Perl) for compiling HC11 programs on the Psion (the assembler does not support memory re-allocation for the moment -- the program autmatically starts at 0x0000 -- and does not support .db/.dw or equ instructions).
The French version of the document also includes modifications to the external RAM expansion to program 28C64 and 28C256 EEPROMS.
Once the EEPROM programmer described above started working, I finished a project started a long time ago, aiming at using the Nintendo (classic) Gameboy for basic inputs/outputs and result display. This document describes what I achieved for now ( French and English versions). I emphasised on hardware I/O as most software development have already been made (an assembler and C compiler are freely available). The result is a communication protocol between the Gameboy and the 68HC11 so that the HC11 reads data on its A/D converters, sends the result to the Gameboy which is finally used as a simple display. More processing could be done on the Gameboy side, whose CPU power is mostly unused.
In parallel with the Gameboy development, I wanted to be able to add basic functionalities to a PC BIOS. Here is a document (in French for the moment) describing basic BIOS extensions hardware and software aspects.
Finally, in the aim of expanding the capabilities of my microcontroller based circuits, I focused on getting used to the Hitachi H8 and Z84 microcontrollers. The former is a very powerful controller (at least when compared to the HC11) with a lot of RAM and flash memory (in the H8/3048 version I use), including 10 bits A/D and 8 bits D/A converters, while the latter is a Z80 based microcontroller which lacks most peripherals (no onboard RAM or A/D converters) but is compatible with Z80 code (I mainly expect to use it for data logging/processing). Two reports on these microcontrollers ( H8 and Z84 ) based on the boards sold by Akizuki in Akihabara, Tokyo, Japan are available in PDF format (English only). I also provide here a tar ball containing the software I wrote for uploading programs to the H8 board through the serial (RS232) port.
Because communication with the user and data display can be an essential part of embedded systems, I also wanted to look at the Visual Memory Unit developed by Sega for its Dreamscast console. I only got the hardware communication to work for now (allows one to send games from the PC to the VMU) but I hope to be able to send my own programs later. The result would be quite similar to the result obtained with the Gameboy, but with a cheaper, smaller, lest power consuming hand held console.
I recently (29/10/01) discovered the Atmel ATtiny15L, which provides 4 10 bits ADC, timers and 4 general purpose I/O pins in a 4 US$ (for 20 chips), 8 pin (DIP or SOIC) package ! Ideal for battery powered autonomous data acquisition systems or intelligent sensors. Here is a document that briefly describes what tools are needed (assembler and programmer) for using this microcontroller under linux. The programmer is made of four resistors (or eventually 4 wires) and a parallel port connector: it could hardly be cheaper.
Since the RS232 serial port is slowly disappearing from the PC (especially from laptops) and in order to see my microcontroller circuits compatible with other architectures than the PC, I wanted to learn how USB works. I thus developed some software for programming the 68HC08JB8 under linux, and wrote a small documentation (in English ) on programming the HC08. Up to now I have not been able to get more than the linux kernel message recognizing the USB peripheral (I am stuck in writing the linux USB driver). But at least the HC08 programming works ...
August 2004 update: the linux driver and user space programs for controlling the HC908JB8 are working and are available on the Projet Aurore web site.
In order to extend the data logging capabilities of the microcontrollers I use, I wanted to learn how to use the MultiMediaCard (MMC). Here is a document in English describing how to connect an MMC to your PC via parallel port or to an 68HC08 (should be portable to any other micronctroller since I emulate by software RS232 and SPI communication protocols). I plan to extend this document to the connexion of the MMC to an ATtiny15l microcontroller.
I used a high-voltage DC power supply (estimated voltage by the tip-plane distance to produce a spark: ~15000 V) as described in an article in Megahertz Magazine to power an electron beam I bought at Friedrischaffen (sp ?) during the amateur radio meeting in summer 1998.
First of all, here are the scanned pages of the (french) article published in Megahertz Magazine (uses an old TV high-voltage transformer). Use at your own risks ... (very large images !) page 1 , page 2 , page 3 , page 4 , page 5 , page 6 , page 7 , page 8 Here are the results from the electron beam experiment, and bending the beam with a magnet (using a color digital camera):
no beam
with beam
bending the beam up
bending the beam down
bending the beam up
no bending
global view, with the power supply
Addition (17/02/2005): following a one year postdoc stay a the Nuclear Microanalysis Laboratory (LMN, Besancon, France) I have learned how to make an ionisation chamber for measuring the dose of soft Xrays (1-10 keV range). The document is in French but will be translated upon request.
Linux modules programming examples: controlling a homemade (AD574 based) analog to digital converter (ISA/PC104 card) and managinf interrupts from user space (all the programs are available here .
A picture of the ISS passing over France (Orleans) while I was listening to packet radio transmission (software decoding using a SB-compatible sound card, running multimon under linux). Large file: 1353609 bytes.
Computing minimal surface shapes (aka soap bubbles or rubber sheets). The report is in French , the software written in C for linux/X11. Example of a result obtained using this program: rubber sheet .
Past activities:
Astronomy club of ENS Lyon where I used a Connectix B&W Quickcam for making astronomy images. I am particularly happy of the accelerated movies showing the motion of the satellites of Jupiter .
The Projet Aurore Web site (Besancon, France) where I played with accelerated movies, image processing, electronics (includes SEM images of insects we made at LPMO/CNRS), lauching a meteorological balloon (aerial photography) ... Check the link named " Les cheyennes hi-fi a diodes" of the old web site.