Sunday, May 31, 2009

Reverse Engineering Accu-Scan AS560

I have made a device to control the address lines of the flash module, out of some TC4094BP chips that I salvaged from an old cash register. I then wrote a small program using the parapin library to control the pins that I connected to the shift registers, that then read the data on the data lines. So now I am ready to reverse engineer the program.

Sunday, May 17, 2009

Reverse Engineering Accu-Scan AS560

Accu-Scan AS560
meal tracker

version 3.15

  • PowerTip PC2004-A Back-lit LCD
  • 2 DE9 RS-232 ports
  • 1 unknown Male DE9 connector (possibly video connector)
  • 2 RJ45 connectors suspected EIA RS-485
  • 1 Parallel port connector
  • Onboard DC-DC voltage regulator
  • Piezoelectric speaker
  • 18.432 MHz Oscilator

  • [U1] ZILOG Z80180 MPU
  • [U8] TL16C452FN: Dual UART with Parallel Port and without FIFO
  • [U10] ADM483EAN: EIA RS-485 Transceiver
  • [U3] TC551001CP-70L: 131,072 WORD BY 8 BIT STATIC RAM
  • [U2] SUPERIOR 522U2V108 flashed onto a AT29C010A-12PC 5V FLASH memory
  • [U9] 74HC04N: Hex inverter
  • [U11][U7] ADM202JN: High Speed, +5 V, 0.1 uF CMOS RS-232 Driver/Receivers
  • [U6] DS1232 Power Monitor / pushbutton reset / watchdog timer
  • [U14] CD74ACT244E: Octal Non-Inverting Buffers/Line Drivers with 3-State Outputs
  • [U15] SN74HC245N: Octal Bus Transceivers With 3-State Outputs
  • [U4] -522U4V100 (GAL22V10D: 24 pin GAL)
  • [U5] 2-522U5V100 (GAL16V8D: 20 pin GAL)
  • [U12] LT1171CT 100kHz switching regulator
The Hex inverter looks like it is connected to at least one of the RS-485 ports.

The DS1232 is set up for 4.5V / 1.2 seconds, Push button reset left unconnected. !RST connected to CPU and possibly to control panel.

NJU3718L connected to control panel, and speaker.

CD74ACT244E connected to controlpanel and SN74HC245N

SN74HC245N connected to LCD.

Thursday, May 7, 2009

Multiple colliding roles

role tree{
method bark(){...}

role dog{
method bark(){...}

class dog_tree does tree does dog{
method dog::bark(){ say "woof" }
method tree::bark(){ say "rough" }

sub pet_dog( my dog $dog ){
# actually calls
# $dog.meta.does(dog).bark
# $
# or something similar

Thursday, August 21, 2008

Stack Overflow: Question Overload

I have noticed that some people don't necessarily put a lot of thought into their questions. What I have been wondering, is how to discourage some of the pointless questions.

One idea I came up with is for the asking of a question, which does not get any up votes, actually reduce the reputation of the person asking. Of course I would not want people overly discouraged from asking a question, just the pointless ones. So essentially what I'm thinking is that you would essentially put your reputation on the line with every question you ask. This would also have the added benefit that the users asking questions would put more thought into every question they write, so that someone would be more likely to come along and give them an up vote.

Another idea I have come up with is what if someone decides they no longer want their reputation tied to a particular question. What would be the procedures involved? I thought that they could release a particular question, that would then go into a holding area. Once in this holding area, you would have the positive, or negative reputation, discounted from your own reputation. You probably would want to limit the activities that could occur, in association with that question. Also what if you decide that you want to assign the question, back to the account it was originally assigned?

Monday, August 18, 2008

CNC rant

So I was reading a post over on CNC Zone, that seemed to say that the post that I added was irrelevant. Which really ticked me off, especially since he said no one would ever have any problems, because he himself never noticed a problem. Which is almost like saying that because I'm not allergic to milk, that no-one could possibly be allergic to milk. I happen to have a cousin that is very allergic to milk, even a small drop of milk in her hot chocolate has caused her to require medical attention.

Well anyway my post was about RF interference inside of a combined computer, motor driver case. Here is my post.

There is a big difference between you not noticing any problems, and others not having any problems. You may actually be having problems, and never ever notice them because of backup, or reliability enhancing designs of computer electronics. If you took, for example, a ten year old computer, and put inside a case with a cheap driver, you WILL have problems. Then again newer computers have built in shielding to help prevent such occurrences from happening. If you have ever compared an older IDE cable and a UDMA IDE cable, you will notice that the former has only 40 wires, while the latter has 80 wires. That is because they added more ground wires to prevent cross-talk between the wires, that is they shielded the cable from the interference that it itself causes. Which is why SATA cables have shielding, because they are designed to work at higher frequencies, which has an exponential effect on its ability to be affected by interference. You should also note that the reason that Ethernet cables have pairs of wires inside of the cable, is so that if one wire of the pair gets a signal induced on it, that the other wire will be more likely to have the same signal induced on it as well, effectively canceling out the induced signal.

I wonder if you have tried to design an antenna, because at higher frequencies, the length required to get a good Standing Wave Ratio (SWR), goes down. So basically at the frequencies that are involved inside of most newer computers, the length of a near-perfect antenna is only about one inch (2.5 cm) or so. Which is why when designing the circuits on a motherboard, the designers have to be careful to keep the lengths of the traces, at a different length than the near-perfect antennae lengths ( quarter-wave, half wave, three quarter wave, full wave, etc), because otherwise it will easily emit a signal, that will bounce around inside of the case, only to picked up by the very wire which produced the signal to begin with, only at a later time. Which by the time the signal returns, the signal path might not be doing anything.

Now take all of this information, and refer to what I wrote earlier. Which was that it was a good idea to protect against RF interference, not necessarily a requirement. Which can be as simple as adding a signal capacitor to the wires that go out to the stepper, or servo motors. Better drivers, probably already have a signal capacitor built into them. Which will cause the other wires to have an inverse signal applied to them, effectively canceling out the original signal (mostly).

The reason you may not have any problems is because the frequencies of stepper motors, are more than likely going to be inside of the audible range, while the signals inside of a computer are more likely going to be outside of the audible range. BUT the size of the box could be at a multiple of a frequency, causing a harmonic frequency to develop, which would cause a frequency inside of the case, that may not have otherwise existed.

So like I said it is a good idea to protect against RF interference. What I guess I should have also said, it might not be necessary, depending on the circumstances.

Sorry about the rant, but I really hate people who have knowledge, in one area, only to presume that they are absolutely knowledgeable about everything that could possibly involve their knowledge . I don't presume to know everything about what I have written, which is why I have used a lot of weasel words. Plus I want to help people avoid possible pitfalls that they may otherwise encounter.

"My New 24x24 V-Groove Router Design Log"