Control And Embedded Systems

Controlling The Real World With Computers
::. Control And Embedded Systems .::

Microsoft Internet Explorer users click here to make Learn-C.com your homepage.
Send an e-mail to friends about Learn-C.com
Translate this page

Control And Embedded Systems Control And Embedded Systems

This site uses hands-on experiments to show the basics of how real things in the real world are controlled with computers. That means it's about most of the computers in the world. Most computers don't sit on desks, but are used to control things that don't look anything like a computer, such as cars (someone pointed out a car to me a while back that has 61 computers in it), planes (especially military fly-by-wire aircraft), factories, spacecraft, toys and appliances. This site provides the opportunity to learn basic control and embedded system concepts while taking advantage of the low cost and conveneince of using a PC as a platform.

This site is for anyone who is the least bit curious about monitoring and controlling such things as motors, lights and switches, or recording and playing everything from sound to the arm position on a robot.

It's for anyone who likes to learn by doing. You will not only read about controlling motors, lights and sound, you will control real motors, real lights, and really record and play information.

It's for anyone who finds intriguing the prospect of controlling a robot or a toy or an appliance by means of a computer embedded in it or, for that matter, a whole factory or space station.

It's for anyone who has done little with computers beyond clicking a mouse button, as well as the professional looking for source code.

It's for anyone who wants to reach as far as the imagination will take them.

This site is for teachers who would like to give their students some interesting, hands-on experience.

It's for people who are considering a career change but don't want to suffer the high cost and time of a formal education before knowing for sure that this is the career they would actually look forward to every morning.

It's for programmers who would like to know how to read schematics and construct hardwareControl And Embedded Systems and hardware people who would like to know how to write programs to control their hardware. Control And
Embedded Systems

Please don't think electronics and programming have to be hard. Far from it. Read what others say about this site to get an idea of what the experience is like. Besides, it costs nothing but a little time to go through everything here (well, maybe more than just a little time unless you can read 240 pages really fast). It's not heavy reading, either. It's designed to be accessable by anyone with a knowledge of basic mathematics. You're ready if you can add subtract, multiply and divide. The earlier sections include self-tests that permit checking progress or skipping sections already understood.

Please note that the board is no longer offered. It has not been offered for some time now. It's ISA and that and the computers that have ISA are out of date. I now offer an alternative through Jameco Electronics. It's called the Listening Tree and uses an Arduino UNO, a small, embedded microcontroller board for experimenters that can and is actually being used in real systems.

The kit is inexpensive and offers ideas that can be used in many areas far beyond its initial use as a color organ driving a fiber optic array. It has a mike, preamp, filter and peak detectors with breakout points that allow easy use of sections of the board for other applications.

See it here

See the Kit Instructions for an idea of what it's about, then look at the Additional Files zip. It contains source code and a document called TheListeningTree.doc which shows how to build the board offered, plus tutorial information similar to this site. In fact, it makes references to learn-c.com.

And now there is the Listening Car which increases power capability from a few milliwatts to a little over 1 horspower!

See it here

The Arduino series, The Listening Tree and Listening Car let you get directly into embedded systems concepts and use a lot of the things that can be learned here.

Let me know what you think.

Of course, much of the example code here is very useful in control and embedded systems, and it is still available in a zip on the order page.

The tutorial examples will work on most operating systems that allow direct access to ports (more on ports later). Linux, DOS, Windows 3.x, Windows 95, Windows 98, and Windows Me will work, among others. To use Linux, follow the guidelines at the Linux I/O port programming mini-HOWTO. Direct port access is not permitted byControl And Embedded Systems NT, 2000, XP and some other operating systems. It's still possible to get at the ports however, by using special procedures that add a layer you can go through. Experienced programmers and brave beginners can look in Programmer's Heaven for information on gaining such access.

The optional hardware needed to provide an interactive, hands-on experience is available as an inexpensive experimenter's board Control And Embedded Systems I designed for the purpose. A small picture is shown at right. It plugs into one of the ISA slots of any XT or better PC (see Ask Jeeves for a brief description of the ISA slot). Don't have an ISA slot? Inexpensive computers that do are easy to get -- see below.

The board has more than enough capability for experimentation. Its inputs and outputs are very much like those typically found on a microcontroller, which is similar to a microprocessor, the main computational device in a desktop computer, but with extra inputs and outputs to allow it to listen to and talk to the outside world. A bare board is only $20, and there are discounts for quantity. Kits are available for $50 (plus shipping, etc.), and assembled boards can also be ordered. You can even download this whole site so you can view it off-line for your own personal use by ordering a zip archive file containing all of the site files for only $8.55. With it, you get free update files as the site is updated.

You can take the trip without the hardware, but the impact will be considerably less. It's much easier to understand the effect of the programming if it can be directly experienced. The multi-sensory impact of, for example, writing a program to control a motor or to record and play back the sound of one's own voice, then seeing it actually happen is huge. Control And Embedded Systems

Download the step-by-step instructions for assembling a board here to see how easy building one really is. The instructions even include a section on how to solder. The document is a 2 Meg Word97 file. Those who don't have Word97 can download a free reader from Microsoft by clicking here: Control And Embedded Systems

As a bonus, the board will work with Super Start. Super Start is free software that uses the hardware to help very young children get the basic core knowledge they need for a good beginning in education. That means the board can serve a dual purpose for people with infants and small children. You can also download the Super Start source code if you wish.

Need a computer? Schools and non-profits can get free computers at one of the computer recycling sites. Else, try Ebay. Just be sure the computer you find has an ISA slot available. It might be necessary to email the seller to make sure. Even computers with slots taken up with things such as modems and sound cards can be used. They are not needed and can be removed to make room for the board used in this tutorial.

Ebay search for Pentiums with ISA

Some of the computers offered in Ebay have had their hard drives erased. No problem. I have seen DOS there for around $5 -- Ebay search for MS-DOS. Don't worry if you don't know how to use DOS. You will learn enough to get by. Of course there's no need to get DOS if the machine already has an operating system on it that will work.

Control And Embedded Systems

Table Of Contents

Sections are always being added and/or updated. Please let me know if you would like to get update notices. Please Note: I NEVER release any email addresses!!

Click here to be removed from update notification.

You can also join the LEARN-C discussion group. It permits users of the tutorial and/or board to discuss experiences. There are two ways to join. Click here to subscribe by email, or here to go to the group site to subscribe.

Please let others know about this site. It's easy to do. Just click here to send an e-mail about this website to people on your list who might find the tutorial useful (which, of course, is everyone on your list). The subject and body of the email will already be entered, but you can modify them as you wish.

Data lines, bits, nibbles, bytes, words, binary and HEX
Passing information around in a computer and the hardware.
Jump To Self-Test For Data lines, bits, nibbles, bytes, words, binary and HEX

Boolean Logic as it relates to programming as well as the hardware. How to figure out if it's on or off and how to turn it on and off.
Jump To The Self-Test For Boolean Logic

Address Lines and Ports
Using the hardware to make contact with the outside world.
Jump To The Self-Test For Address Lines and Ports

How To Read A Schematic
Just a few symbols and you've got it
Jump To The Self-Test For How To Read A Schematic

  • the symbols for connected and unconnected wires
  • the symbols for power and ground connections
  • the symbol for switches
  • the symbol for resistors and the abbreviations showing their values
  • voltage, current and Ohm's Law
  • the symbol for capacitors and abbreviations for showing their values
  • the symbol for diodes
  • the symbols for integrated circuits, including digital ICs and operational amplifiers
  • the basic functioning of operational amplifiers

The Hardware
Details about portions of the hardware not discussed in the experiments.

Putting It All Together - Controlling The Hardware With The Software
The C language fundamentals

  • comments
  • main()
  • functions
  • the concept of void
  • prototypes
  • variable declaration
  • compiler directives such as #include
  • for() loops
  • printf()

Experiment 1 - Basic Switch Input Detection
Using a device on the board for digital input to get the status of switches.

  • how to use inp()
  • the use of the #define directive
  • how to use if() statements
  • the difference between query and assignment operators
  • the concept of scope
  • how to use bit masking
  • how to use the switch() statement
  • how to use left and right shift operators
  • how to use while() loops
  • how to test functions

Experiment 2 - Expanding Switch Input Capacity
Using the 8255 Programmable Peripheral Interface on the board to get an additional 8 inputs.

  • how to set the three modes in the 8255
  • how to set the three ports as input and/or output
  • how to use Port B to detect the additional 8 inputs
  • more opportunities to work with inp(), if() statements, masking,
  • scope, while() loops, for() loops, falling through decisions,
  • static and automatic variables and how they can and cannot be used

Experiment 3 - The General Purpose Digital Input/Output Module - Part 1
Using two ports of the 8255 PPI on the board to form a switch matrix.

  • file scope and encapsulation, variable protection, testing and OOP
  • how to use enumerations
  • problem analysis and solution -- figuring out when to do what kinds of logic
  • the effect of passing arguments by value to a function
  • precedence and associativity
  • external directives
  • setting up the PPI with values declared in an enumeration so they will be more readable
  • basic pointers
  • compiling, linking and testing functions in another module
  • row driving and column testing in a matrix
  • combining three discrete inputs with the matrix to get 67 switch inputs
  • more on masking, shifting, etc.
  • the most important step in programming is not programming
  • connecting the headers to see if the thing works

Experiment 4 - The Multiple Closure Problem And Basic Outputs With The PPI
More on the matrix, driving higher-current devices using the PPI on the board with current driver circuits.

  • strobing
  • diode matrix
  • rail to rail swing
  • reverse and forward biasing
  • voltage drop considerations
  • silicon and germanium
  • solid state device input and output limitations
  • open collectors and sinking
  • electrical layouts vs programming considerations
  • using the logic suggestions from Experiment 3
  • avoiding unnecessary complexity
  • more on pointers and strings
  • pointer arithmetic and de-referencing
  • avoiding precedence problems
  • a new enumeration to achieve maximum flexibility
  • the contest
  • long integers
  • delay loops and problems using them
  • driving LEDs with the PPI
  • increasing current capability with a transistor
  • making it easier with an open collector inverter
  • replacing current limiting resistors with a zener
  • forming a loop to control output with input

Experiment 5 - Controlling Motors
Powering higher-current devices using the PPI on the board.

  • darlington transistor
  • rectifiers
  • magnets and electromagnets
  • basic ideas of motor operation
  • fingers, current, thumbs and North
  • movement from electricity, and electricity from movement
  • collapsing magnetic fields and back EMF
  • turning motors on and off with the PPI
  • duty cycle
  • Pulse Width Modulation speed control
  • using the PPI to control the speed of a motor
  • a little more on printf
  • casting
Experiment 6 More Precise Control Of Motors
Using the digital I/O on the board with the computer's timer to control devices
  • Greater efficiency through pointers
  • Structures
    • struct keyword
    • declaration vs instance
    • dot referencing members
  • Arrays of pointers to structures
    • "->" refererencing members
    • sizeof(..) operator
    • what pointers point to
    • malloc(..) to get some memory, free(..) to free it
  • typdef
  • dynamic, multiple-point referencing of a single variable through pointers
  • interrupts, interrupt service routines, IRQ, ISR
  • interrupt vector or dispatch table
  • segment:offset format
  • the interrupt keyword
  • getvect(...) and setvect(...)
  • disable() and enable()
  • to be reentrant or not to be reentrant
  • floats and doubles
  • multiple-point, interrupt-driven pulse width modulation
Experiment 7 - Bi-directional Control Of Motors And The H-Bridge
Using the digital I/O on the board with the computer's timer to provide bi-directional motor control
  • H-Bridge basics
  • turning on the brakes
  • types of switches used
  • the MOSFET
  • enhancement mode
  • conductivity
  • the 555 timer/oscillator
  • RC time constants
  • logarithms
  • base e
  • high current drivers
  • voltage doublers
  • blocking capacitor
  • step response
  • gate capacitance
  • impedance and reactance
  • testing the circuits before connecting them to the computer
  • smaller h-bridges
  • the 754410
  • transistor inverter
  • voltage dividers for testing h-bridges
  • the L298
  • driving the hardware with the software
  • expanding the control structure
  • passing by value and through pointers
  • pointers to pointers
Experiment 8 - Digital To Analog Conversion
Using the Digital to Analog Converters on the the board to produce sounds, etc.
  • R 2R ladder
  • more on Op-Amps
  • virtual ground
  • resistor network analysis
  • port offsets
  • triangle waves
  • speaker output
  • sine waves
  • trig functions in C
  • radians
  • generating sine tables
  • FILE*, fopen(), fputs(), fprintf(), fflush(), fclose()
  • acos()
  • signal offset calculations
  • step size and distortion
Experiment 9 - Analog To Digital Conversion
Using the 8-channel Analog To Digital Converter on the the board to record sound and other analog data.
  • definition
  • only approximately proportional
  • numbers and steps
  • analog vs digital values
  • the ADC0809
  • comparator
  • successive approximation
  • flow charts
  • successive approximation example
  • the ADC clock
  • ripple counter
  • D flip-flop
  • Q and NOT Q
  • aliasing
  • decoding read and write select for the ADC0809
  • multiplexer
  • Address Latch Enable (ALE), ADC SELECT, BIOW and START
  • starting a conversion
  • ADC SELECT
  • End Of Conversion (EOC)
  • Output Enable (OE), ADC SELECT and BIOR
  • Auto port detect
  • recording and playing back voice
  • capturing analog information in the timer interrupt service routine
  • automatic, multiple channel analog to digital data acquisition
Experiment 10 - Using Analog Inputs To Control Motors
Modifying the timer system to control PWM in proportion to inputs
from the 8-channel Analog To Digital Converter on the the board
  • The TIP120 revisited
  • Determination of triggering levels and proportional values for setting up pulse widths from an analog input
Experiment 11 - Using Analog Inputs For Bi-directional Control Of Motors
Modifying the timer system to control PWM in proportion to inputs
from the 8-channel Analog To Digital Converter on the the board.
A relay is used this time to control the direction of the motor.

Questions, Answers And I Dunno
Questions that have been sent in and my often lame answers.
Have a question about something on the site? -- Email Q, A & I D.
Don't worry if English is not your first language. I'll work with you and we will figure it out together.

It's also a good place to make suggestions about what the tutorial should toot -- too much too fast, not fast enough, not the right stuff, just right, etc.?
Let me know what you want and I'll try to provide it.

A Special Page
The Equilbrium Matrix
A pattern recognition circuit designed to help the disabled. Please let anyone you know who might know someone who is working on human-machine interfaces, especially for the disabled.

Drag this dot to your desktop to bookmark this site: Control And Embedded Systems

Search this site powered by FreeFind

Just in case someone is curious:
Resume ..