Non-Linear Contents List
All content is Copyright 1997,1998,1999 by Jonathan Cline under
as created by the
Free Software Foundation (FSF)
and only those rights covered under the
GNU General Public License
are granted; the content (including software) is not in the
for more information. This means the content is NOT to be sold for
PROFIT, it is non-waranteed, and you may not distribute modified
versions without my permission.
This is my online lab notebook. It
contains circuits and design notes for the electronics projects I build,
as well as software projects.
If you are into Electrical/Electronics Engineering then you should
enjoy it. Keeping a virtual circuit cookbook is easier than a real
one, for me anyway.
Current Contents of my Virtual Labbook:
- The Halloween Documents: Why does good software design revolve around
Open Source Software?
Find out. These documents from Microsoft explain their possible
corporate strategies for squashing Open Source
Software such as Linux: making protocols
forcing people to use Microsoft products. Also see
on why Microsoft is anti-consumer.
(Even international media have picked up on this:
"It's free and it works. No wonder Bill Gates hates it.")
Scientific American says:
"The Best Things in Cyberspace Are Free!
- Open Source is the future. "Computer source code is ultimately a form of speech, and a society that values free speech and the free flow of information endangers itself if it puts up artificial barriers."
- So You Want To Build a Robopet?!? I'll tell you what to look out for, and hopefully
steer you towards a working design.
- Design Guidelines:
these I originally wrote for a large-scale robotics platform
project I was going to be involved in which was to use individual
modules communicating via a 2-wire 1Mbps bus (CAN protocol). The
guidelines hold for any low- or mid-tech design, though.
- A freeware CAD package which includes layout,
schematic capture, and autorouter can be downloaded from CadSoft,
EAGLE 3.5 Light Edition.
There are versions for both DOS and Windows95/NT.
- Create your own PDF files! All you need is GSView &
Aladdin Ghostscript. For Windoze, a self-extracting application
GSview 2.7 and Aladdin Ghostscript 5.50 for Win32
(3.4 Meg). For other platforms, see
Obtaining Aladdin Ghostscript 5.50.
Install this program; open the document you'd like
to convert with your word processor; select a Postscript printer
(ie: "Apple Laserjet III"-- you may need to add this print driver
if it's not already present); select Print to File and save it as .ps;
open this new .ps file with GSview; select Print; use the 'pdfwrite'
printer type; click OK; type in a filename .pdf; lather, rinse,
Hey Mike V.! See below.
- What to do with two weeks of somewhat-free time in a cubicle?
How about write an I2C Driver demo for the Intel 80960 32-bit
Check out the cool color pictures courtesy of the office Proshare camera.
I2C Driver Demo for the 80960 Processor. The schematics are pretty cheesy, though;
I didn't have any good capture software available at the time.
- PALBot I:
A light-seeking PAL-controlled robot using a radio controlled ("R/C") car
as a chassis.
Designed as the final project for EE359 (1 unit State Machine Lab).
For a commercial kit like my PALBot project, see
- Speech Recognition via Digital Signal Processing (DSP):
An experiment using Matlab's FFT to distinguish between "yes" and "no"
sampled as binary sound files (.wav's). Written for the final project for
EE459 (1 unit DSP Lab).
- PCB design & fabrication of a 2-layer board for my
BiMo IV robot (see the PIC section). I'm debating whether to
put up the OrCAD schematics & JOB files. Created for the final
project for IME157 (3 unit manufacturing class).
- I built
Light Species Derivative Robopet
for Cal Poly ME406, Mechatronics II (and also to use in RoboRodentia,
a local robot contest). Full source code
and about a dozen color pictures are included in the Acrobat
.PDF file (800 KB). The document is 32 pages long.
Note: The Circuit Schematic is outlined in the
Source Code listing; appendix H & I are not included (graphical
schematic & drawings). Light Species Derivative is an
evolution of my BiMo IV robopet.
- Undergrad Senior Project: Active Noise Cancellation in Free Space
using Adaptive Filtering on a Digital Signal Processor. I want to
cancel out broadband noise (~0Hz - 1kHz) with the potential application
of use in a vehicle cabin. The algorithm is small, but the system is
difficult to realize. The system will use a TI DSP evaluation board
(DSK) with the TMS320c31 floating point DSP CPU. A 'calibration'
mode will run first, using internally generated white noise to
model the inverse of the speaker & microphone's combined transfer
function. This inverse transfer function will then be used
before the adaptive algorithm in order to pre-filter for the
non-flat speaker & microphone response.
I have a Microchip, Inc. PICSTART Plus programmer. (You can
build your own programmer easily, see ref 9.)
The following Lab Book pages apply to Microchip, Inc. microcontrollers:
- The datasheet for the Microchip PIC 16F84 (or more
generically the PIC16x8x):
Datasheet for PIC16F8x
(1.4 Meg). This is the only reference I've used
from Microchip (besides their handy fold-out assembly language reference
- Jonathan's Meta-URL for the Microchip PIC Digest
- Microchip PIC notes: PIC16x84 are my scribbles about their chip.
- Microchip PIC Circuit #1: PIC16x84
was my first attempt at using a PIC. Didn't know anything about them at
the time.. (For another "first PIC circuit", see
- BiMo I:
'PALBot I' gets a facelift: A light-seeking, roving R/C-car
controlled with a PIC 16F84.
- BiMo II (project cancelled): Used a PIC 16F84 to control an
R/C car via servo steering and a current-gobbling drive motor. The
servo steering is done via the built-in timer ("RTCC") which generates
interrupts. The drive motor was controlled by a 3Amp H-bridge
interfaced to the PIC, until I smoked the H-bridge (no, not literally).
The way around this would have been to use the R/C Car's own speed
controller; the speed controllers are made to handle 5A peak
currents and continued operation.
- BiMo III
("Everclear" platform): A PIC 16F84 microchip controls the two servos
which drive a two-wheeled robot.
- BiMo IV has been completed, with improved software--
allowing many more servos to be controlled and 8 analog or digital
inputs. I mounted a 3rd servo on the front of the platform as a
'manipulator arm' & added an 8-channel multiplexer in order to allow
more sensor inputs through an 8-bit A/D chip (only the highest 4 bits are
used, though). The A/D works well with CdS photocells for black-line
sensing (as in a robot maze contest). Including an A/D (ADC0804C) for
only 4 bits is a little odd-- further progress in that direction and
I'll have to change the design (either PIC16c7x with built-in A/D and no
Flash, or a serial A/D with built-in MUX). (I also suppose the name
BiMo is non-intuitive, since there are now more than two motors!)
- In order to debug my PIC projects, I have built a 1-pin
Debugger, using a PIC16F84. The project to be debugged needs
to dedicate one port pin for output when debugging. The Debugger
communicates through this one pin to display debug information from the
embedded PIC. It's easy to build & it beats the "blinking LED" approach
- My latest robot, Light Species Derivative, is for
the Roborodentia robot competition. It uses a PIC16F84, servo motors,
and photocells as sensors. The chassis is based on the Everclear idea
but is only half the weight. Check it out under 'Class Projects'
Atmel now has a small RISC-based family named "AVR",
the smallest member of which competes with Microchip, Inc.'s PIC micros. The
benefits? Mainly, the AVRs have an expanded instruction set; the down
side is that they are smaller and have less features, since after all,
they are pretty new. I'll add more on these later (a sample kit is
available which includes the baseline AVR chip-- the AT90S1200-- and a
couple manuals, call Atmel).
Quoting from the datasheet:
supports high level languages efficiently as well as extremely dense
assembler code programs. The AT90S1200 provides the following features:
1K bytes of Downloadable Flash, 64 bytes EEPROM, 15 general purpose I/O
lines, 32 general purpose working registers, internal and external
interrupts, programmable Watchdog Timer with internal oscillator, an
SPI serial port for program downloading and two software selectable
power saving modes. The Idle Mode stops the CPU while allowing the
registers, timer/counter, watchdog and interrupt system to continue
functioning. The power down mode saves the register contents but
freezes the oscillator, disabling all other chip functions until the
next external interrupt or hardware reset.
The on-chip Downloadable Flash
allows the program memory to be reprogrammed in-system through an
SPI serial interface or by a conventional nonvolatile
Although the datasheet says the chip has 1kbyte of Flash,
this only allows 512 instructions, since the instructions are
16-bit wide. The AVR does not divide the clock, like the PIC
does, so the AVR gets more CPU cycles in at a given frequency
(paraphrased from a note on the PIC email list).
Microchip had a comparison between the PIC and the AVR,
but the link is not currently working.
Here's a local link to the datasheet for the AVR AT90S1200
(49 page PDF file, 1.5Meg):
AT90S1200 Preliminary Datasheet. The Serial Programming connections are on page 40.
The newer AVR chips are much bigger than the PIC; several
dozen-k of ROM and large packages; so it seems the AVR is not
really competing with the PIC; Microchip still wins the