I needed a control program to control my robo tube welder for the
low cost universal motor mount.
As far I have discovered I have found nothing better than an old
mother board with a printer port on it, DOS and Quick Basic.
DOS and QB is as close to a real time OS as you are likely to find.
More than powerful enough to control most machines. Very low cost
and very easy to program.
<
http://www.aaroncake.net/****electronics/qblpt.htm<
http://www.aaroncake.net/**electronics/qblpt.htm
<http://**www.aaroncake.net/electronics/**qblpt.htm<
http://www.aaroncake.net/electronics/qblpt.htm
http://www.aaroncake.net/****forum/
<
http://www.aaroncake.net/**forum/ <
http://www.aaroncake.net/**forum/ <
http://www.aaroncake.net/forum/
Quote:
You need to know the address of the port you want to use. You will
also need two other things; the command to access the port and the
number you want to set it to. The command will be explained in a
little while. The ports work with numbers. These can be expressed in
hex, binary or decimal, but for this document all values will be
expressed in decimal. It's just easier that way. Anyway, you operate
the port by sending it a number that represents the binary pattern
of the physical outputs on the port. For example, to set the 8 data
lines to 11111111, you would send 255. To set them to 00000000 you
would send 0. Note that these are all 8 bit binary numbers, and the
port is also 8 outputs. Coincidence? I think not.
Now that we know how to tell the port what bit patterns we want, we
have to actually apply that to the BASIC language. BASIC uses two
commands to talk to the computer's ports. These are OUT and INP. OUT
is a statement and is used like the following:
OUT [port],[number]
We will get to INP later. As you can see, the two parameters
required are the port address and the value we want to set it to. The
address can be decimal or hex, as can the value. Because there are
only 8 data lines, we can only send a maximum of 255 to the port (255
is decimal for binary 11111111). The examples below illustrate
sending a few different bit patterns to the data lines.
'set port to 00000000 OUT 888, 0 'set port to 10000000 OUT 888, 1
'set port to 01000000 OUT 888, 2 'set port to 00100000 OUT 888, 4
'set port to 00010000 OUT 888, 8
Of course, you can also turn on more than one bit:
'set port to 10110000 OUT 888, 11
The control lines are just as easy to control, but there are a few
differences. First, the address of the port is 890. Second is that
there are only 4 outputs, so the highest decimal representation of
the binary bit pattern you will be using is 15 (binary 1111).
Outputting information is easy, and inputting is just as easy. If
you actually want to get information into the computer, you will be
using the 5 status lines. Reading the bit pattern of a port is done
using the INP function. This function is used in the following way:
[variable]=INP([port])
End of quote;
With those four printer control lines you can use a data selector to
control up to 16 eight bit ports. Way more than Adriano. This idea
struck me like a bolt of lighting :)
Here is a device to control two pulse width modulated DC electric
motor speeds.
Only three chips and two FET's!!!!!
It does not need the data selector as it uses two printer port
control lines directly to store data in a D to A. The D to A
controls a very linear $1 CMOS 555 pulse width modulator. You need a
another 555 as a trigger oscillator. The speed of the rotation can
be measured by using RS232 ON COM hard ware real time QB interrupt.
In theory this could be used to build an EFI for a couple of hundred
including the mini form factor PC mother board.
It is trivial to program in QB. Compiled QB is lightening fast on
modern hardware. QB64 is not real time unfortunately.
Paul Lamar
--
I wrote this program is 5 seconds and here is the output on the
scoop.
start: out 888,1 out 888,0 goto start
Square wave more or less 3.25 ms cycle time. The Q BASIC is running
in interpreted mode. This old mother board is not fast enough for
timed fuel injection but batch mode fuel injection would work.
Tracy's EFI is batch mode. You would have to use a CD ignition
system and fire the plugs directly.
Paul Lamar
Here are a couple of charts that come in handy when programming.
The colors are for the brand of printer cable I had lying around.
Your cable may vary.
I print these out because DOS is not multi tasking :)
BTW since I am doing the PWM in hardware it makes programming half
as hard and the program needs far less overhead time. All single
chip computers have a PWM problem because they use a difficult to set
up timer and a hardware interrupt routine. Many of these timers are
mind boggling complicated :)
Paul Lamar
I fooled around with this some more and compiled a QB stand alone
exe PWM program.
I got a PW of 22 usec off and 45 usec on. Resolution about 1 %.
Here is the simple program
start: out 888,1 for x = 1 to 100:next out 888,0 for x = 1 to
50:next goto start
This is half of an EFI program if you want to fire all four
injectors at the same time. Very little hard ware required. Just FET
amps to fire the injectors.
The micro XT mother boards continue to get smaller,faster and
cheaper. I have seen them for as little as $50. A Lava dual printer
port PCI card is available to take in data from the air temp and MAP
for less than $50.
The MAP table can be stored, emailed and shared.
This is a EFI computer system a child can program.
Paul Lamar
-
Paul,
I just want to print out the the precision of timer in your code
depends on: 1. It is running in pure DOS mode, no windows stuff. 2.
Since it uses software loop to time, the actual delay depends on the
CPU clock speed. So delay will vary from motherboard to motherboard.
3. No TSR program is in place. 4. And the delay can still be
affected by system interrupts such as timer updates, etc.
Therefore, it is best to have a simple uP such as 8051, running at a
fixed CPU clock say 10MHz clock, dedicated to do this task. Your
basic program then only have to send out variables to the 8051 to
change the PWM. The resulting system will always have precise
timing.
Henry
I am not going to use that QB PWM program directly. I just did it to
illustrate the power, simplicity and ease of programming of this
approach to EFI.
I am using this PWM hardware scheme in the attached schematic. The
mother board processor can set this PWM hardware up and go off and
do something else.
It was originally developed for use with a 8051 but I don't need it
now. PWM is done with a hardware D to A and CMOS 555.
I will now use it with a couple of bi directional Centronics printer
ports running under DOS on a micro ATX mother board and programed
with a PC. With a VGA LCD on the panel everything is there necessary
for an EFIS as well. One card can be expanded to 16 eight bit ports
for data ack. The other printer port will be dedicated to 4 PWM 555
injector drivers. MAP ASCII tables in comma delimited form can be
saved on HD or USB thumb drives and emailed if required. Everybody
underestimates the real time power of DOS and Quick BASIC. The "ON"
hardware interrupts are a boon for hardware control.
Brilliant idea on my part if I do say so myself :)
I think you are the only guy so far smart enough to appreciate this
Henry :)
As usual I am probably ten years ahead of my time again. I will
probably be dead before this brilliant idea will be recognized :)
==============================****================
2 printer ports Lava board instructions.
Installing the Parallel PCI card under DOS for use with Windows 3.x
or DOS
PURPOSE OF UTILITY
The purpose of the program is to enable our board from DOS level. It
configures DOS to accept our board and it may set the PCI bus
address to what you have set as a parameter. You can leave that
parameter out and DOS will be configured to what the PCI bus on your
system has configured our card to. DOS can have a maximum of three
parallel ports enabled. So you can have up to 3 Parallel PCI cards in
a system as long as there are no other parallel ports in the system.
The three standard addresses are 3bc 378 278. The lava card cannot
install on 3bc because it may cause problems with video cards. You
may assign the card any address you wish other than 3bc. You must
omit parameter 2 and three if there is only one parallel Pci card in
your system.
INSTALLATION INSTRUCTIONS
1) Insert the Lava Parallel PCI into a free PCI slot.
2) Boot into DOS.
3) With the Lava Parallel PCI floppy diskette in the floppy drive,
copy the setaddr.sys file to root directory of the hard drive. Use
the following command: copy a:\DOS\setaddr.sys c:\
4) Add the following line to your config.sys above (following) all
devices to be loaded such as HIMEM and EMM386, or if you are running
DOS under Windows 95 add this line also to your Config.dos.
device=c:\setaddr.sys [1] [2] [3]
where [1] [2] [3] (leave the [] out) are the I/O addresses that you
wish to assign to the Lava Parallel PCI cards started with Lava
Parallel PCI with the lowest PCI slot number. Consult your
motherboard manual to verify which slot is the lowest slot number.
You can use other addresses for the Parallel PCI card such as 378 or
non standard addresses such as 288,238,2b8,338.
NOTE!! DO NOT USE THE STANDARD ADDRESS 3BC! This address could cause
problems with your video.
here are some examples:
2 Lava Parallel PCI cards installed on address 278 and 378 first
card 378 second card 278. device=c:\setaddr.sys 378 278
You can also leave out these parameters and the Parallel PCI card
will be assigned the PCI bus assigned address like 6000,5000....
5) Reboot into DOS and our setaddr.sys utility will report the IRQ
and address assigned to our card.
==============================****============
Paul Lamar
Henry,
I messed around all morning interfacing the TI.... TLC7226 DAC to
the printer port. I could not think of why it was not working for
the life of me. Then I noticed I did not ground the PC to the
prototype board.
Shessss!
Getting old is hell on the mind :)
These are some of the programs I tried thinking it was the program.
I got this out of the DOS machine on a 3.5" floppy and read it into
Linux on a USB 3.5" floppy :)
I need to celebrate and have a banana split for lunch :)
Paul Lamar
I have been looking for an RX-8 with stick shift but without
success. Finally I settle on a 2003 automatic as it seems to be in
quite good condition. I got it last night. I will go get a banana
split for breakfast so we can celebrate together. :)
I do have a question for you. The used car inspector claims that
there is a bit of excessive smoke (white). I did not see it so may
be it is only when it is cold. Is it normal? If not, what can be
wrong. Also, it seems that the previous owner had taken out the
catalytic converter, could that be the source of the white smoke?
Speed limits are low in Hong Kong, So I end up keeping the car in
2nd and 3rd gear so I can keep the rev up above 3500. It sounded
really good above 5,000. It is surprisingly quiet at high rev., I am
now say that I am officially converted to rotary power. The onlly
By the way, I checked retail price here on the printer cards. Looks
like for PCIe based printer port adapter, price on eBay is about the
same as price here. After consideration for shipping, (free on eBay)
I think it is better to get them on line.
Cheers on the banana split! Good health to you and Robin.
Henry
Congratulations. I love they way they sound 6000 to 9000 RPM full
chat. You found an RX8 in Shenzing or Hong Kong ??
The smoke is unusual. It usually means the o-rings on the sides of
the rotor are damaged from overheating. I have not seen that for
about 20 years. I guess it could be a water leak too. If it starts
OK it is probably not a water leak. Is the white smoke just when you
start it up. If so it is rotor O-rings. Not to worry I drove my
Cosmo for 15 years with shot rotor o-rings.
BTW I set up the CMOS 555 hardware PWM and it is working
fantastically.
This is a major breakthrough for all single chip and full blown
computers doing PWM. It is working way beyond my fondest
expectations. The scoop pictures tell the story. Totally unloads PWM
from the program and the computer hardware. Perfect for DC motor
control and EFI. Send it an 8 bit value and it puts out a
corresponding pulse width.
Paul Lamar
I purchased it in Hong Kong. I was not too worried about it because
the water temp had been very stable. Unfortunately, being an
automatic, it is limited to 7,500 rpm. Looks like there is some
re-programming to do..:)
Looks like you have found a great way to do PWM with LM555. With a
simple uP, the Pulse width can be controlled easily by the
voltage.....clever!
Now that you can change PWM at any time, There's no reason why you
can't build the simple EFI controller using Basic on a uP. You
already have most of the code, if not all, and all you really need
is a PCB to build the first prototype.
Henry
I am going to get some PC boards made in the next few days. If
somebody wants to experiment with this let me know. I have to get 3
PC boards.
I have a few Micro ATX mother boards lying around.
Paul Lamar
Paul,
Would Beaglebone be of help in this project? It seems to come with a
lot of features, runs on Linux, and has kernel support for Unbuntu,
Fedora, and Android.
http://www.gizmag.com/beaglebone-black/27289/?utm_source=Gizmag+Subscribers&utm_campaign=f8c6b595a4-UA-2235360-4&utm_medium=email
Tom Sash
That can be certainly made to work. You will need and integrated
development system running on a PC and probably programmed in "C". If
you are an accomplished "C" programmer that would help greatly. I am
not. It is bit cryptic for my taste. BASIC is plain English The other
thing about it is the ARM pulse width modulation support is very
complicated indeed. Once you figure it out you will have a least a
bachelors degree in ARM PWM. It is not trivial, unlike Quick BASIC
which is trivial. Some teachers have taught QB in kindergarten. One
can be programing in QB with in a matter of minutes.
The other very significant advantages to my approach is you are
using the same computer to run the program you are writing the
software on.
In other words it takes just a few seconds to test your program
rather than minutes or hours to download and run the test on the
target hardware. There is no down loading of software to the target
computer.
When you type in the program it is on the target computer already.
Just press "RUN"!
A truly integrated development system.
The screen is the same screen you will see in the cockpit except for
size.
I can send you bootable DOS on a 3.5 floppy disk. You can use that to
boot DOS in any PC. You can get USB 3.5 inch floppy drives. I can
email you QB. QB was the original integrated development system and
all other are derived from QB. In my opinion it is still the easiest
to use.
To make a bootable floppy disk you merely type "sys a:". To make a
hard disk bootable you type "sys C:"
To make a DOS bootable flash drive go here.
http://www.sevenforums.com/tutorials/46707-ms-dos-bootable-flash-drive-create.html
http://blogs.technet.com/b/csstwplatform/archive/2012/06/26/how-to-create-a-ms-dos-bootable-usb-flash-drive.aspx
http://www.pendrivelinux.com/boot-dos-from-usb/
Booting DOS from a CD
http://forums.techguy.org/dos-other/668351-ms-dos-boot-cd-can.html
http://www.vintage-computer.com/vcforum/showthread.php?17089-Bootable-DOS-6-22-install-CD
http://www.bootdisk.com/
Paul Lamar
I was driving home from the hangar tonight and a bolt of lightening
struck me concerning the new DOS QB EFI system.
I realized the engine would not stop if you stopped or killed the EFI
program.
WHAt???????
I'll say that again.
I realized the engine would not stop if you stopped or killed the EFI
program. AMAZING!!!!!!!!
That means you can have dozens of different EFI program stored on the
hard disk in the airplane and change program anytime you feel like
it WHILE YOU ARE ST1LL FLYING!!!!!!!!!I
The reason is the DAC has a memory in it. What ever the last pulse
width the computer sent will stay in the DAC. As long as you keep the
supply voltage on the DAC the engine will continue to run.
Paul Lamar
Paul, looks like you are on your way to building a complete
electronically controlled engine management and display system that is
highly reliable [ engine still runs - if computer hangs ] for a fraction
of the cost of commercial and military aviation - but also has options
to network with other communication / navigation displays / computers
for aircraft. Aircraft builders can choose the level of integration they
wish. Wonder how much is involved in adapting the DOS Printer Port to
CAN-BUS specifications - com / nav equipment ? Us readers do recognize
your pioneering work !
George M
It was a rare case of untended consequences having a positive outcome :)
Paul Lamar
The Rotary Engine News Letter. Powered by Linux.
ACRE NL web site.
http://www.rotaryeng.net
You Tube
http://tinyurl.com/beqqxas
Copyright 1998-2013 All world wide rights reserved.