Modernizing old electronics with many I/O lines

Hello! Sorry if this is the wrong newsgroup for this sort of thing. I have a jukebox thats about 25 years old (Rowe-Ami R-81). For now it works okay, but could use some playing with to clean up amp noise and such. But mostly I'm worried that someday the electronics on it will finally pop, and I'll have no way to replace them. I know the memory unit on it is some custom chip thats no fun to replace.

So, I got it into my head that it'd be interesting to see if I could replace all of the control electronics with something more modern. But, I'm a software guy. Programming the logic will be easy, but I dont know about controlling/reading the hardware. I should know enough about electronics that controlling some motors and stuff shouldnt be a huge deal, I hope. But I'm not sure about interfacing with the relatively large number of lines I have. Heres exactly what I'm working with:

User I/O Input 12 keyboard lines - (0-9, Reset) 5 coin switches (could ignore) Output 5 lights 10 display lines - (888 LED display: 3 lines to select digit, 7 for lights)

Operation Input 10 encoder lines (Encodes record magazine position) 1 tone arm cutoff switch 4 cam switches (Might not need to be read) 1 auto cancel switch Output 1 detent coil 1 record magazine motor 1 turntable motor 1 transfer motor 1 shift coil (right/left side selector) 1 amp mute relay

Diagnostics Input 1 manual cancel switch 1 scan switch 1 service switch

36 input lines, 21 output lines

So my question is, what sort of equipment would I need to do this? I'm thinking a PC based solution would be easiest for me since I'm a programmer. A microprocessor based solution might work okay too, but I'd still like to be able to interface it with a PC and I'm not sure how easy thatd be. But I dont know how I'd connect all the I/O lines. I dont know of any options for that many lines. A PC with a few extra parallel ports would be fairly easy, but they have mostly output lines so I'd need way too many. The microprocessor options I've found top out at around 40 I/O lines. Preferably less than $100 for the I/O interface, much more and I could buy a new jukebox. :) It doesnt even need to be fast, the fastest thing on there is the strobing LED display. I could probably do some clever things to reduce the number of lines, but I'm not sure. Like, maybe I could replace the 12 keyboard lines with the guts from a USB keypad if I go with a PC, reduce the encoder lines to 2 and track the record magazine position in software, or find a way that I wouldnt have to control the LEDs directly (serial connection to a small microcontroller?).

Once I can control/read the I/O lines, I dont think I'd have much trouble. Trickiest bit would be the relatively high voltage (28V AC/DC) required by some components, but I'm thinking that using a few relays would solve that. I hope.

Ah well, I hope this all made sense. Thanks for any suggestions. :) Joe

Reply to
Joe Bott
Loading thread data ...
[snip...snip...]

I guess that a single-board CPU, passive backplane, and several parallel port cards would most match what you have in mind. Doesn't seem to map all that well to the problem domain, though.

It could be done with one microcontroller driving an address buss. An

8-bit I/O port could drive 6 address lines (64 addresses) with a R/W bit and an enable bit. Another bit (or several) as the data bus.

However, I'd probably approach it with several smaller processors, say one to handle the user interface, one the mechanics, and a supervisor that coordinated it all and also handled PC-side comms. Tie it all together with I2C or Microwire.

--
Rich Webb   Norfolk, VA
Reply to
Rich Webb

He he,

You could probably replace the whole of the innards with a single iPod and just fiddle with the mechanics twiddling fake 45's around!

DLC

: Hello! Sorry if this is the wrong newsgroup for this sort of thing. I have a : jukebox thats about 25 years old (Rowe-Ami R-81). For now it works okay, but : could use some playing with to clean up amp noise and such. But mostly I'm : worried that someday the electronics on it will finally pop, and I'll have : no way to replace them. I know the memory unit on it is some custom chip : thats no fun to replace.

: So, I got it into my head that it'd be interesting to see if I could replace : all of the control electronics with something more modern. But, I'm a : software guy. Programming the logic will be easy, but I dont know about : controlling/reading the hardware. I should know enough about electronics : that controlling some motors and stuff shouldnt be a huge deal, I hope. But : I'm not sure about interfacing with the relatively large number of lines I : have. Heres exactly what I'm working with:

: User I/O : Input : 12 keyboard lines - (0-9, Reset) : 5 coin switches (could ignore) : Output : 5 lights : 10 display lines - (888 LED display: 3 lines to select digit, 7 for : lights)

: Operation : Input : 10 encoder lines (Encodes record magazine position) : 1 tone arm cutoff switch : 4 cam switches (Might not need to be read) : 1 auto cancel switch : Output : 1 detent coil : 1 record magazine motor : 1 turntable motor : 1 transfer motor : 1 shift coil (right/left side selector) : 1 amp mute relay

: Diagnostics : Input : 1 manual cancel switch : 1 scan switch : 1 service switch

: 36 input lines, 21 output lines

: So my question is, what sort of equipment would I need to do this? I'm : thinking a PC based solution would be easiest for me since I'm a programmer. : A microprocessor based solution might work okay too, but I'd still like to : be able to interface it with a PC and I'm not sure how easy thatd be. But I : dont know how I'd connect all the I/O lines. I dont know of any options for : that many lines. A PC with a few extra parallel ports would be fairly easy, : but they have mostly output lines so I'd need way too many. The : microprocessor options I've found top out at around 40 I/O lines. Preferably : less than $100 for the I/O interface, much more and I could buy a new : jukebox. :) It doesnt even need to be fast, the fastest thing on there is : the strobing LED display. I could probably do some clever things to reduce : the number of lines, but I'm not sure. Like, maybe I could replace the 12 : keyboard lines with the guts from a USB keypad if I go with a PC, reduce the : encoder lines to 2 and track the record magazine position in software, or : find a way that I wouldnt have to control the LEDs directly (serial : connection to a small microcontroller?).

: Once I can control/read the I/O lines, I dont think I'd have much trouble. : Trickiest bit would be the relatively high voltage (28V AC/DC) required by : some components, but I'm thinking that using a few relays would solve that. : I hope.

: Ah well, I hope this all made sense. Thanks for any suggestions. :) : Joe

--
============================================================================
* Dennis Clark         dlc@frii.com                www.techtoystoday.com   * 
* "Programming and Customizing the OOPic Microcontroller" Mcgraw-Hill 2003 *    
============================================================================
Reply to
Dennis Clark

You can control a lot of on/off out lines from the parallel port. The below link shows how to do 380 seperate out lines for controlling 380 strings of christmas lights from the parallel port. I made a simple gizmo to use the parallel port status pins to check the status of some contacts open or closed. It uses 12 diodes, 8 resistors, 4 npn transistors, a D-25 connector and some phone wire to check the status of 12 contacts. You could combine the two and have more I/O than you can probably use.

formatting link

Reply to
Si Ballenger

You can control a lot of on/off out lines from the parallel port. The below link shows how to do 380 seperate out lines for controlling 380 strings of christmas lights from the parallel port. At the bottom link I made a simple gizmo to use the parallel port status pins to check the status of some contacts open or closed. It uses 12 diodes, 8 resistors, 4 npn transistors, a D-25 connector and some phone wire to check the status of 12 contacts. You could combine the two and have more I/O than you can probably use.

formatting link
formatting link

Reply to
Si Ballenger

Nothing too hard. I would recommend looking for an I/O board that has optical isolation - that way if you stuff up the electronics it will be next to impossible to damage your PC.

I would also be tempted to break the problem down in to blocks. Don't think of it as 57 pins all at once. Try making each block stand alone (eg build a keyboard interface that lives at one address, an LED display interface that lives at another address etc). That should reduce all the interactions between blocks and allow the S/W to be more modular.

have a

but

I'm

have

replace

But

I

programmer.

to

I

for

easy,

Preferably

reduce

the

trouble.

by

that.

Reply to
CWatters

Thanks for everyone's comments. So far the option I like best is the circuit Si Ballenger pointed out for controlling 320 outputs with 1 parallel port. It was enough to jog my memory regarding flip-flops and decoders/encoders. I'm glad I paid some attention in digital-logic classes. :) I could scale the project way down to fit my needs, reducing the parallel port output lines if needed. Then I could use the remaining output lines, run through a decoder, to select input banks. Polling input 5 bits at a time shouldnt be an issue. LED display would be tricky, since I have to update at least 9 output lines simultaneously to make it display nicely. But I should be able to add another layer of flip-flops for LED data, and save a parallel port output line to update them all at once. Then I can take as many cycles as needed to update LED data.

My only concern is hardware, but I think I'll be able to figure that out. Once I figure out where to buy them, the components mentioned in the article should go a long way. Then I'd need a mess of AND gates for selecting input banks, and a few relays for switching motors and coils. This might actually work!

Thanks again, Joe

Reply to
Joe Bott

"Joe Bott" schreef in bericht news:R38Eb.163699$ snipped-for-privacy@twister.rdc-kc.rr.com...

a

but

replace

But

programmer.

I

for

easy,

Preferably

the

that.

Joe,

Looks like a good newsgroup for this.

Looks like a cool project as well.

If you use old DOS or WIN95 - so you can program the hardware directly - the parallel port is a good choice. WINNT, -2000 or -XT need special drivers and may give speed problems, especially for the 7 segment displays.

To work comfortable you best can get a parallel printer port card at least during the experimental stage. It should also be a bi-directional port. An EPP-port will do best. You can check out the EPP specifications on the web. For instance:

formatting link

You should have to build some hardware. First of all I advise to buffer the parallel port lines. A bidirectional LS255 type buffer for the data lines. The direction pin of this device should be controlled by the (buffered) direction line of the parallel port. The address strobe, data strobe and direction lines can be buffered with an LS14 type. As the LS14 inverts you may need two inverters to keep the right polarity or use non-inverting buffers like LS07. Can't advise the latter for this purpose as they have no schmitt-trigger inputs and do have open collector outputs.

You will need an address register. An LS364 type will do. You put an address in it using the address strobe line. Subsequent data actions will use this address to control the correct data registers/buffers. With an appropriate address decoder you can control 256*8=2k input lines and the same amount of output lines. As you do not need this huge amount you can use 1 out of 8 decoding. That's to say, each bit of the address register controls one

8-bits output register and one 8-bits input buffer. So you have up to 64 input - and 64 ouput lines which covers all your needs.

You need a read- and a write signal. One is the address strobe logical ANDED with the direction, the other the address strobe logical ANDED with the inverted direction.

You will need up to eight data registers. LS364 types will do. To write data into them you use the write signal logical ANDED with the appropriate address bit.

You can use up to eight data buffers. LS245 types are good again. To read data from them you enable them using the read signal logical ANDED with the appropriate address bit.

That's it. The hardware is straightforward, simple and minimal.

Let us hear your experiences.

petrus

--
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.547 / Virus Database: 340 - Release Date: 3-12-2003
Reply to
petrus bitbyter

"petrus bitbyter" schreef in bericht news:2i5Fb.247087$ snipped-for-privacy@amsnews02.chello.com...

have

I'm

have

I

for

to

But

is

reduce

12

or

trouble.

by

the

and

web.

the

no

address

of

ANDED

Oops, you need to use the *data strobe* for this read - and write signals.

petrus

data

the

--
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.547 / Virus Database: 340 - Release Date: 2-12-2003
Reply to
petrus bitbyter

Thanks. Its proving to be interesting so far, and I havent even touched any hardware yet. :)

the

and

Yeah, I thought about that. I found drivers that will let me control the parallel port with XP, but I dont know about speed. At least to start, I'd probably drop my laptop in there, which is running XP. So, I might have to live with XP for now.

web.

Interesting. I've been looking at the standard parallel port so far. But, I suppose if I can use an enhanced port, I may be able to get away with less components in my schematic. If I have to actually build this thing, less is better. :) And I may have to buy a USB->Parallel cable for my laptop anyways, so I may be able to find an EPP version. I've already found a ECP one.

the

no

Eep. Okay, this might drift into sci.electronics.basics territory, but first: LS255, LS14, LS364, LS245. I have no idea what those parts are. :) Theyre not in the software I'm using for design, so I'm having trouble putting everything together. I'm guessing 74xx series? I found a few of these on online, if theyre 74xx, but the rest are a mystery. And, I'm not sure how to add them to the software so I can play with them, but I may be able to find equivalents. But beyond that, thanks a bunch, I'll have to lay out your idea and see if I can make sense of it. It sounds like it'd be less of a mess than what I have now, which would be nice.

What I've been doing so far is playing with schematic design tools. I started with the student version of CircuitMaker, which was great. But I didnt like the limited part library, and I'm not experienced enough to try adding my own components, so I ended up switching to the free version of Eagle. CircuitMaker let me simulate enough that I got something that looked like it might work, and Eagle has enough parts that I can play around even more. Although it still comes up empty when I search for the above parts. :\

So, heres my work in progress schematic:

formatting link
. It probably doesnt make any sense, and it might not even work at all. But I'll try to explain what I'm trying to do...

Input side - On the standard parallel port, I use 4 input lines and 3 output lines. I use the 3 outputs to address 8 banks of 4 inputs each - giving me

32 inputs, 1 more than I need. I have a 74LS138 decoder to select the bank, connected to 4 4019 quad AND/OR select gates which the inputs are connected to. The 4019 outputs go through some OR gates, and I have my 4 inputs. Well, thats the theory anyways. :)

Output side - I use a total of 8 output pins on the parallel port. 4 are for data, 3 for address, and 1 for updating the LED data. Again I use the

74LS138 decoder to select which bank I'm outputting to. I use 6 74LS175 Quad D Flip-Flops to store my output - I could use 8 but I dont ned the extra 2. So, I put my data on the 4 data lines, then select the bank using the 3 address lines. The decoder is connected to the 74LS175's CLK pins, so the clock goes high, and data is stored. I hope. For the 7 seg, I use a 74ACT821 10-bit flip-flop. The inputs are connected to 3 of the 74LS175's outputs, and then I use the 1 extra parallel port output connect to the CLK to update it all at once. Beyond that, I have a few AQG12105 solid state relays, but I dont know if they're suitable at all. :)

So, if I had to update every output and read every input, it'd take me 18 writes and 8 reads every cycle (8x input read, 6x data write, 8x address write, 1x LED update set/unset). That seems like a lot. But I'd have to see how fast I can update the port, in practice.

And thats the direction I was going. It still needs work, mostly with the decoders. They have inverted outputs, which I forgot about. And I wont know if it'll work until I have my hands on parts. If the 7-seg strobing is going to be an issue, I could add yet another set of flip-flops, one for each digit, and use a strobing circuit to switch between them. But thats yet more stuff I'd have to wire, bleh.

Thanks again, now I have to see if I can make sense of your solution. :)

Joe

Reply to
Joe Bott

Check the specs on the USB to parallel port adapters, as they may only work fro print calls from windows and not for toggling the individual parallel port pins.

You may want to try the 74LS238 chips that are not inverting. I've used the 74HCT259 8-Bit Addressable latch (Radio Shack

276-2868, $1.49) chips which also demultiplex like the 138/238 chips.

The below link is how I use the 259 chips in the demultiplex mode for a DIY webcam switcher. The next link is a simple gizmo using three data lines and four status lines to check to see if contacts are open or closed (uses qbasic). The next link is a very clever setup using the parallel port using the 138 chips for controlling some christmas lights. The bottom link is to a neat little application called wnpar011.zip that is very handy when testing the gizmos connected to the parallel port (click the data lines to toggle on/off, and you can see the status lines state). Keep posting on your project.

formatting link
formatting link
formatting link

Reply to
Si Ballenger

I

less

is

ECP

Bah, I didnt think of that. I was assuming that the driver would mirror the port status to the standard memory location, to retain the best device compatibility. Ah well, once I figure out which type of paralel port I'd like to use, I'll figure something out. Maybe a PCMCIA card would be better? Although, they seem to be pretty expensive. It looks like I could build a computer for cheaper than some PCMCIA cards

output

me

bank,

connected

Well,

Thanks! Eagle doesnt list the 74LS238, but as long as I know it exists, that will work. I'll check out the 74HCT259 also.

Ooh, thanks again for the links. Good info in there. The Christmas lights thing was what got me started. :) I think I'm going to start on the software side while my hardware design solidifies. I'll quick hammer out my control software, and maybe some "fake interface circuit" and "fake jukebox" software for testing.

Joe

Reply to
Joe Bott

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.