(parallax part number 27945 if link above breaks)
I did a count this morning and this is no where near enough IO. Parallax
makes a 40 pin stamp with 32 IO that would work. But they don't make the
above module for it. I don't want to paint myself into a corner. Should I
look at building a custom 27945 module for the 40 pin stamp? (I don't
normally do this kind of work) Or is it no big deal to use two stamps and
link them to communicate? Other ideas?
Karl
If you've got some mileage under your belt with communications protocols,
and if the language doesn't hold the capabilities of the chip too far
away from you, it _should_ be no big deal to have them talk.
Now count the 'ifs', and tell me if you're comfortable.
Perhaps the best thing to do (if Steamer doesn't already know the answer
better than I do) is to Google around a bit for someone who's done this.
From a systems engineering perspective, all else being equal, you're much
better off with one processor doing one job. If this module was
available for a 40-pin basic stamp it'd win hands down.
If you can get two modules talking, and if the I/O works out that you can
have one in charge of ventilation and one in charge of irrigation, that
should minimize the need for communication. Alternately you could have
one doing all the thinking, and the other one (or two) that's just a dumb
slave.
But I think the first thing I'd do, if I were in your shoes but with my
shop and capabilities, would be to see if I could make an adapter cable
(or cable adapter) between one 40-pin module and two of those clever I/O
modules. _If_ they are 'dumb', and pretty much just provide a plain old
interface between the basic stamp and the outside world, without any
programming or fancy dances, then you should be able to do this fairly
easily. I'd say "with parts from Radio Shack", but I'm not sure you can
get all the bits any more. If this is as easy as it could be, it'd be
the hands-down winner.
How much I/O do you need? Motor up/down takes 2, limit switches take 2, and
2 for thermostat or serial temperature sensor. Then if you have an operator
interface you can get a serial LCD and 4 inputs for select up/down, 1 for
Enter, 1 for Back (or Esc). Parallax (among others) also sells a ULN2803A
chip that can drive 8 external relays up to 50VDC 1/2A, complete with built
in diodes for inductive loads.
I bought a PIC32 starter kit from Digi-Key (Microchip has them for same
price), has a lot of I/O, 512K program memory, 32K ram, and a optimizing C
compiler with a 64K limit, all for $49.
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2615&dDocName=en532453
RogerN
No A/D on that chip?
SMbus or I2C are good for simple 2 pin communications between
devices.
http://www.maxim-ic.com/app-notes/index.mvp/id/476
The receiver can use clock \_ edges to latch data and doesn't need to
sync very well to transmit timing.
jsw
I also installed a 1/rev contact to detect/count motor movement on each
motor. There are four of these motors total for a total of 20 IO here . I
also sense outside temp in addition to two inside temps and want to leave
room for a wind velocity sensor (future) - four more. Then there will be two
soil moisuture sensors and a water pump - three more. I'll need a couple or
four for an LCD read panel. I'd use any extras for a small operator
interface to do things like open or close everything. From experience, I
know to leave room for more IO, always seem to need it.
I'm not aware of this ULN2903A chip, I'll look into it
>
> I bought a PIC32 starter kit from Digi-Key (Microchip has them for same
> price), has a lot of I/O, 512K program memory, 32K ram, and a optimizing C
> compiler with a 64K limit, all for $49.
Basic stamp is easy to program and well documented. I'm not at all
unconfortable with it. I feel just the opposite about working with C or
assembler. Plus, I'd be on my own for driving an Opto 22 board.
Karl
With all those things to poll I'd be wary of motor sensors that
required timing measurements.
jsw
It has 16 channel of 10 bit A/D. It's listed to have 85 I/O but I know a
few are used for programming, debugging, 3 LED's and 3 PushButtons. You
could probably have 16 channels of analog and still have over 50 Digital I/O
left.
I bought some chips to play with on my Basic Stamp board, I tried out the
LTC1298 A/D converter and it works fine.
RogerN
If you have the $$ to be extravagant with processors, use one per motor
and have them all talk on an RS-485 bus (assuming you can easily get set
up with RS-485 hardware).
Or don't -- it's how I'd design the system if I were going to sell it,
but half-duplex networking can be a bitch to get working the first time.
If I were anywhere close I'd offer to drop by and help out, but IIRC
you're in Wisconsin or Michigan or some other place influenced by large
amounts of fresh water and generally flat land.
Or or or -- if you have the serial ports available, have a master with an
RS-232 out that constantly broadcasts target positions for all the motors
& whatnot, then a slave on each motor or whatnot. Then it's just single-
way and you won't be dashing yourself on the rocks of half-duplex
protocol development after hearing the siren song of two-wire
communication.
It would probably be a good idea for you to develop your application with
the Basic Stamps and after you get it like you want, you can work on getting
it to run on a $7 PIC microcontroller and get some circuit boards made. A
lot of the opto 22 modules are TTL compatible and I believe would work
directly with the Basic Stamp. The ULN2803A chip I mentioned has 8
Darlington transistor drives for $1.50, that could drive your external loads
up to 50V 1/2A.
I've seen a lot of bad examples of programming for the Basic Stamp. The
programs are well written but they make the Stamp only do one thing at a
time. I got a Boe Bot for Christmas and am rewriting one of the example
programs to run more like a PLC program.
For more I/O, you can use something like buffer chips for inputs and latches
for outputs and a multiplexer to enable what you want to address at that
time. For example, perhaps an address of 1 would give you I/O for motor 1,
address 2 for motor 2, etc. .. addresses 0,5,6,& 7 could all be used for
temperature and/or operator interface. So, on a 16 I/O PIC you can have 64
I/O without much trouble.
I'm also pretty sure that it's easy to communicate stamp to stamp. Shift in
on one and shift out on another, or serial in on one and serial out on the
other.
RogerN
What projects like this need is a Kim-1 with a BASIC interpreter in ROM,
along with a P-coded application (also in ROM).
Or an 8 Mhz XT running DOS.
As an aside,
If the Operating System could be considered the Engine that runs the computer
then by Microsoft's example everything from a weed eater to a 787 would have
a gigawatt nuclear power plant running it.
Everything else would be run by Cox .049 model airplane motors.
>I'd run the complete opposite direction, Tim.
>
>What projects like this need is a Kim-1 with a BASIC interpreter in ROM,
>along with a P-coded application (also in ROM).
Man, I thought the same thing after his first post. Kim-1 or AIM-65.
Programmable in BASIC, FORTH, PASCAL or assembler.
Some alternatives to look at as well, Karl.
Eagle 50 - starting below $50
http://micromint.com/index.php/SBC/eagle-50.html
RTC180 Zylog Z180 with ROM monitor or BASIC180 - $288
http://micromint.com/index.php/RTC/rtc180.html
RTCv25 16 bit 8086 compatible - Under $500
http://micromint.com/index.php/RTC/rtcv25.html
Or, something considerably more retro?
A brand new 1 megahertz (COUNT IT!) Kim One compatable SBC - $99
http://www.brielcomputers.com/micro-KIM.html
THIS is the kind of thing I was talking about earlier.
--
Richard Lamb
http://www.home.earthlink.net/~cavelamb/
"The clock of life is wound but once, and no man has the power
to tell just when the hands will stop, at late or early hour...
Now is the only time you own. Live, love, toil with a will.
Place no faith in time. For the clock may soon be still."
I have hopes for the Micro Kim.
If I can turn up a cross compiler that makes ROMable code, that
would be one hot set up...
Well ... the Opto 22 boards which I have have a maximum of 24
I/O channels -- in part because it is fed through a 50-pin cable
(power ground, +5V, and a signal-ground pair with each channel, so a
long cable will have a ground between any two signal lines to reduce
the chance of noise coupling from one line to another.
You would need two 50-pin ribbon cables to handle the 32 I/Os
which you want, and that would typically go to two Opto 22 boards so you
have easy access to the screw terminals for each I/O channel.
> I don't want to paint myself into a corner. Should I
> look at building a custom 27945 module for the 40 pin stamp? (I don't
> normally do this kind of work) Or is it no big deal to use two stamps and
> link them to communicate? Other ideas?
I would go for the latter approach. This has the advantage of
reducing the load on any one stamp. You simply have to define some kind
of I/O protocol for the communication between two stamps and make one
the master and the other the slave. Or -- perhaps -- make one handle
all outputs and one handle all inputs for monitoring results.
Good Luck,
DoN.
--
Email: <dnic...@d-and-d.com> | Voice (all times): (703) 938-4564
(too) near Washington D.C. | http://www.d-and-d.com/dnichols/DoN.html
--- Black Holes are where God is dividing by zero ---
I like Cox 049's, but they're obsolete. There's a lot of cool Russian
(and Chinese knock-off) 049's that come onto the market from time to time
-- AAO piston/cylinders, modern timing, stronger cranks, etc. They're
stronger, faster, lighter and more reliable, like a Cox TD that's stopped
taking Quaaludes and has been going to the gym regularly.
Not that I've even started the one example that I own.
You see me going in more or less three directions with my advice to
Karl. The reason is because I have three directions to approach the
problem from: one, what would I do if I were building pure one-off (I'd
use one of the old PC's I have lying around, with a digital I/O card);
two, what would I do if I were prototyping a product to sell to all the
operators like Karl all over the world (I'd have a module on each motor,
sensor, whatnot with power and network connections, with all sorts of
protections so you couldn't destroy anything with any of the 23 possible
ways to miswire things); finally, what can Karl do with the skills and
comfort zone he has right now, because he wants results, not a three-year
long-distance apprenticeship in embedded systems design.
So for _Karl_ I know the answer is different than for _me_. I've heard a
tremendous amount of good things about Basic Stamps even if the thought
of Basic makes me, personally, want to hurl. I've also worked on or with
too much inventor-designed equipment that was "engineered all wrong", but
would never have been made _at all_ if it were done by an engineer
dithering over "getting it right" and demanding complete specifications
before he started. The older I get the more appreciation I have of the
idea that for item #1 you just need to get the damn thing _working_
somehow; once it flies, _then_ you concern yourself with making it
reliable, manufacturable, inexpensive, profitable, etc.
So I don't really care if Karl comes up with something that isn't a thing
of beauty this winter. I just want to help Karl come up with some snarl
of wires and circuit boards that will hang in there until _next_ winter,
and make him happy enough that he (or one of his compatriots) will have
the enthusiasm to improve on things then.
And to that end, I'm trying hard _not_ to steer Karl in the direction
that _I_ would do (which is more a prototype of a production model, than
just something that'll get 'er done), but rather to steer Karl in a
direction that I think is the shortest path to success for Karl.
If and when this thing works as well as it should, then Karl can hire an
embedded engineer to improve it. They can look at his schematics and his
code then figure out the most diplomatic approach to telling him that
it's all very nice but since they didn't design it it's obviously crap.
Then they can completely redesign it, and if they're any good it'll still
work when they're done.
You are about the smartest professional software guy I've ever met.
I've built or maintained a lot of one-off test systems of similar
complexity, which usually were assembled around an old desktop or
laptop with I/O ranging from a small wirewrap board on the printer
connector to a rack of GPIB instruments.
The PC brings a nice built-in development environment and the keyboard
and display, all very useful when the application needs considerable
monitoring and adjustment or data logging.
Their power consumption isn't too bad. I've measured around 30 - 40
Watts for PII desktops, half that for laptops running without their
dead batteries on the AC adapter. The 400 MHz Armada laptop I use for
datalogging draws 14W at idle.
If you decide to put your circuit on an internal wirewrap prototyping
card the bus interface can be quite simple. One that I did for the VME
bus consisted of a very wide gate combining the addresses and read/
write commands that clocked a single D flop to send the acknowledge.
My ISA and Mac NuBus interfaces weren't much more complicated than
that. I think you can find proto boards with a full bus interface
installed, though you can get by with mapping the board into IO
address space. ISA is easier than PCI.
http://www.epanorama.net/documents/pc/isabus.html
Laptops are a little harder to talk to. Some PICs support USB or
serial data. The printer port is really quite useful for both serial
and parallel I/O if you run DOS, but Windows polls it and interferes
with the control register.
http://www.epanorama.net/circuits/parallel_output.html#circuithow
http://www.doc.ic.ac.uk/~ih/doc/par/
By decoding two control lines you can have 32 read/write bits in four
registers, plus Read and Write strobes. You can sneak two more control
bits out of a serial port.
http://www.aggsoft.com/rs232-pinout-cable/pinout-and-signal.htm
jsw
If it were me I would probably use a $3 PIC microcontroller with 36 I/O such
as the PIC 16F887.
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=PIC16F887-I/P-ND
But I already have most of the associated tools I need including a PicBasic
Pro compiler, a PIC C compiler, and a PicStart Plus programmer.
If I can find out about the sockets that Opto22 type SSR's and input modules
take, it would be nice to lay out a board that you can put a
microcontroller, voltage regulator, and sockets for 32 opto isolated I/O
modules.
RogerN
If you're comfortable that the 40-pin stamp would meet all other
criteria, namely has enough I/O and you feel able to program it in
BASIC, I wouldn't worry about the module. We can cook up an
interface between stamp I/O and opto-22.
Nothing to that...
http://www.opto22.com/site/solidstaterelays.aspx
120 volt 10 amp - $14
http://www.opto22.com/site/pr_details.aspx?cid=4&item=120A10
Roger, if you're at all interested, the best board to use is the G4PB32DEC
from Opto 22.
http://www.opto22.com/site/pr_details.aspx?cid=4&item=G4PB32DEC
There's a data sheet page there that gives the pin outs to the 50 pin
header.
I got tired of buying these boards at $10 each on eBay. I must have a
dozen. G4 series IO go for about $1.50 each on eBay
I know the outs fire by pulling the (5 volt) TTL pin to gound. Easy to test
with just a jumper wire to ground. The ins show TTL plus (red) on the logic
probe when active, TTL minus (green) when off. These boards and IO are
designed to work with a PC IO card. The Contec PIO 16/16T being a very
common one. I use this set up on all my CNC machines
I'm kind of surprised someone isn't selling a micro controller module that
just plugs into the Opto 22 header. You'd have a powerful unit for peanuts.
Karl
Thanks for the offer. I ordered the stock items with the 16 IO stamp so I
can write and debug the program while down here. I have one of the four DC
gear motor units running. Should keep me busy for a few months.
Karl
I think it would be an interesting project to make a board that connected a
microcontroller to that Opto22 board. I've also been looking at bus
transceivers, latches, and multiplexers. I'll have to order some chips to
experiment but it might be easy to get 32 (or more) I/O from a BS2. The
idea is that you have multiple 8 bit chips, some for input, some for output,
the 74XX138 selects to enable 1 of 8 chips based on the binary address
inputs. The outputs latch what the BS2 outputs, the inputs enable to read
that selected input. The program would do something like read the inputs,
process the logic, write to the outputs. There is an output enable on the
latches so you can turn them all off at once if desired.
I've been interested in investing some money in a project this year to try
to see if I can make it grow, Basic Stamp and MicroController to Opto22
boards might be an interesting investment. I would like to see what's
required for in circuit serial programming(ICSP) so users could program from
the USB port. I'd also want the Basic Stamp to be programmable without
removing from the board.
RogerN
I asked the same questions on another NG. Best suggestion was to use this
output exapander:
http://www.efx-tek.com/php/store/index.php?main_page=product_info&cPath=2&products_id=7
Parallax also sells a USB port to stamp module. It has the prints so you
could copy it if desired.
Karl
It has basic stamp source code examples to add up to 64 outs to a stamp.
I was going to suggest that, but I didn't know how much $$ you wanted to
spend.
One of the facets of designing with microprocessors is that they're so
damn flexible you find yourself standing in a sea of options, often with
no horizon in sight. It's why I've been schizoid in my advise to you.
It can easily become a problem if you let yourself get paralyzed by
trying to find the "best" way to go.
Fortunately, there are usually a ton of routes to success. It sounds
like you've chosen one arbitrarily and are starting to trudge down it --
good. "Working well but not perfect" is usually better than "not
working, but it'll be perfect once I -- oh! gotta change that!".
What used to be really nice for special controllers is the OS-9
operating system from Microware (not the Apple Mac version, which was
totally different). The boot code can be in ROM -- or the entire OS and
application. You can built the application in 6809 assembly language,
or with a BASIC-09 incremental compiler, or with a C or Pascal compiler.
Once you have it doing what you want, you can burn the entire thing into
ROM, and only need RAM for the stack where all transient data lives.
You can have it talk to serial or parallel I/O, or to floppy drives or
to hard disk drives. I even wirewrapped an interface for and wrote the
drivers for an old Calcomp drum plotter for my SWTP 6809 system.
Of course, these days, OS-9 is tailored for the 68000 family of
processors, and costs a *lot* more. It is no longer a hobby OS --
instead, it is used for embedded controllers.
Enjoy,
> I asked the same questions on another NG. Best suggestion was to use this
> output exapander:
> http://www.efx-tek.com/php/store/index.php?main_page=product_info&cPath=2&products_id=7
>
> Parallax also sells a USB port to stamp module. It has the prints so you
> could copy it if desired.
>
> Karl
>
> It has basic stamp source code examples to add up to 64 outs to a stamp.
>
>
The current hot thing is the Arduino.
http://arduino.cc/en/Main/ArduinoBoardMega
Kevin Gallimore
I just thought of an idea that might work for Basic Stamp users and PIC
microcontrollers. Make a board with an Opto22 compatible 50 pin header
connected to a PIC microcontroller. Have the board ship with a program in
the PIC to receive serial I/O from the Basic Stamp (or any other controller,
or even a PC) so the Stamp would use 2 pins and be able to control up to 32
Opto22 I/O. Or, the user could write thier own control program in the PIC
if they had an in circuit serial programmer. I would like to use a PIC with
more I/O so a LCD display and keypad could be plugged in if desired.
RogerN
Far more capability than what I'm using. But what is arduino software???
My biggest issue is ease of programming. Basic stamp basic is easy and well
documented.
I could be your first customer.
Say, I need an LCD display for my Basic Stamp. Any suggestions?
Karl
Right on. AND I'll know how to do it right after I've done it the other way.
Plus, I've got a history of always looking down at the sparkies (EEs). Real
engineers always ran the project and delegated this work. My main function
was to ask, "why aren't you done yet?" and, "We need this additional
function". I guess this little job is payback.
Karl
> Far more capability than what I'm using. But what is arduino software???
Pretty much C and C++.
Kevin Gallimore
Hoping I can come up with something in a reasonable amount of time, so far
something has went wrong at work and I've had to stay over, takes away from
hobby time but at least it's paid overtime.
> Say, I need an LCD display for my Basic Stamp. Any suggestions?
>
> Karl
>
I've seen a couple of serial LCD's at parallax.com for around $25-$30 but
their may be less expensive ones available.
RogerN
Karl, if your sorting puts EE's and "real" engineers in disjoint sets I'm
not sure that I like you any more.
What sort of engineer is "real" to you, and what traumatic experience did
you have in your youth at the hands of an EE?
Try being a tech who has to take orders from both MEs and EEs.
You should like him better. Karl's notion of a "real engineer"
delegates to and supervises the sparkies that tolerate (and enjoy)
that crap when said "real engineers" pay the sparkies full hourly
rate. What's your full rate these days, Tim? Mine was $150/hr ten
years ago but I'm fully retired now, no longer a techno-whore.
A "real engineer" is one who can design stuff that works. He or she
need not delegate and sure as hell needn't beg for freebie guidance.
That's quite different from a project manager who flogs real engineers
with "why aren't you done yet" and "we need this additional function".
Why wasn't that additional function defined a priori, "real engineer"?
It can be expensive to piss off the talent that can help one succeed,
but if means are commensurate with ego then it's a win both ways.
Do I _have_ to put a stupid smiley face on my posts any time I talk with
my tongue in my cheek?
Jeeze.
(I'm quite happy with my rates, and after my customers see my
productivity, they usually are, too. The rest are too much trouble to
work for, anyway.)
>>
>> A "real engineer" is one who can design stuff that works. He or she need
>> not delegate and sure as hell needn't beg for freebie guidance. That's
>> quite different from a project manager who flogs real engineers with
>> "why aren't you done yet" and "we need this additional function". Why
>> wasn't that additional function defined a priori, "real engineer"? It
>> can be expensive to piss off the talent that can help one succeed, but
>> if means are commensurate with ego then it's a win both ways.
>
>Do I _have_ to put a stupid smiley face on my posts any time I talk with
>my tongue in my cheek?
>
>Jeeze.
You might want to do that if you'd like readers to discount your
tongue-in-cheek posts as trivial.
>
>(I'm quite happy with my rates, and after my customers see my
>productivity, they usually are, too. The rest are too much trouble to
>work for, anyway.)
Roger that!
It helps.
We can't catch the inflection or tone of voice...
> Jeeze.
>
> (I'm quite happy with my rates, and after my customers see my
> productivity, they usually are, too. The rest are too much trouble to
> work for, anyway.)
>
A-Men!
Or a VIC-20 with the software in a game cartridge? :) Most of them
only needed +5 VDC @ 1A and had a nice I/O port. As far as controlling
four motors, that could be done sequentially, which would reduce the I/O
requirements quite a bit.
> Or an 8 Mhz XT running DOS.
>
> As an aside,
>
> If the Operating System could be considered the Engine that runs the computer
> then by Microsoft's example everything from a weed eater to a 787 would have
> a gigawatt nuclear power plant running it.
>
> Everything else would be run by Cox .049 model airplane motors.
--
Greed is the root of all eBay.
I've been doing some work on using a PIC microcontroller to send and receive
serial data to work with Opto22 boards. So far what I'm working on is
compatible with the 50 pin header boards from 8 I/O to 24 I/O, the 32 I/O
board has a different pinout on its header. I think I can read/write the 24
I/O points, plus communication, plus have an in circuit programming and
debugging port, all with a 40 pin PIC microcontroller.
I plan to have the PIC preprogrammed as a serial I/O board to work with
Basic Stamps, PC's or whatever else has a serial port. Most of what I've
done so far has to do with the schematic and board layout, connector
pinouts, and hardware for the project. I'm far enough along now with
hardware design that I need to build a prototype on a breadboard and start
developing and testing the software.
This board should be addressable either in hardware or software, meaning 2
pins from the Basic Stamp could be used for 24, 48, 72, 96,... I/O points,
you could have 6,144 I/O points with an 8 bit address and 24 I/O per module,
but the update wouldn't be very fast ;-)
And.. The PIC microcontroller on this I/O expander board would be
programmable to turn the Opto22 board into a stand alone PLC type
controller.
RogerN