Pinball Lamp Matrix Decoding–Board design

Since I got the prototype working, I now need to convert it to something real. In the past, I’ve typically done this by hand on perfboard. This takes a lot of time to do, and the results are functional but not that great.

This time I’ve decided to go direct to a PC board, so I fired up Eagle. I think this is my third design with it, so I’m reasonably decent at it, but I’ve forgotten how strange CAD user interfaces always are; they were developed before much was known about how to build good graphical user interfaces, they are all different, and they don’t follow UI guidelines. Oh, and they tend to have some weird metaphors as well, and there is no equivalent of github or stackexchange for them.

I installed the Adafruit library by downloading it, unzipping it, copying it to a directory and then adding that directory to the library path (nuget, anybody?) so that I could start with their arduino shield outline. It has all the pins on it. I then searched for the 74HC589 shift registers. No luck, so I stated to design my own, went back, did some more browsing, and found the 74xx589 SOIC-16 design, so I could use that. I need a 34-pix (2×17) connector header; I found a 2×20 and modified it. Then, I built a new version with named pins to make it easier to wire things up.

At that point, I started the wiring. A bunch of work, an “invoke” to get the Vcc and Gnd to show on the shift registers (once again, CAD weirdness), and I ended up with the following schematic.

Basically, we have the 8 data lines and two strobe lines going from the connector to the shift registers, the two strobes heading to Arduino (pins 2 and 3 because they are the ones that support interrupts), and then a bunch of lines between the Arduino and the shift registers. Prettiness isn’t important here, though it needs to be neat enough to know whether it’s correct or not.

I also threw on two test point headers; one for ground and one connected to pin 4. I often use a pin to write debug information for an oscilliscope, so the headers give me an easy way to hook that up. I run the schematic rules engine, fix a few things, and the schematic is done.

Once you have the schematic in good shape, you can create a board to implement it. I should have taken a snapshot at the beginning because it was quite the mess; there are 8 data lines that need to make it to both shift registers, 3 shared lines from the arduino to teach shift register, plus Vcc & Gnd. Lots of overlap potential.

I like doing board layout; it starts out looking pretty hopeless, and you play a little, it gets better, and then finally it sort of jells and then you are doing cleanup. Here’s the board layout I ended up with:

Lots of left-right rights to route all the signals that go to both chips. I’m pretty happy with this layout; it’s reasonably ordered, and you can tell where things go. I run one line right under the pins of the shift registers; something that I couldn’t do if they were through-hole chips.

Two things I could have done; I could have switched pins 2 and 3, and I could have pulled one of the signals off of pin 11 and used pin 7 instead. I didn’t because I would need to redo the software; a small thing, but the current layout works fine.

Once the layout is done, I run through the design rules. It’s really easy to end up with weird stuff; multiple vias slightly overlapping, traces that don’t quite go to pins, that sort of thing. I’m planning on fabbing the board at OSHPark.com, and I remember that they have their own design rules, so I download them and run them.

Then the last task is to shrink the design down from full shield size to something smaller to save a bit of money. Oh, and I add a label or two. Upload it to OSHPark, and they tell me $20 for 3 boards. Pretty good.


Decoding Pinball Bus Signals Part 5

In the last episode, I spend time figuring out how to detect and respond to the row and column strobes. Here’s the short list of tasks:

  1. Hook up the shift registers to the arduino and write some code to make sure that I knew how to drive them.
  2. Write some timer code to handle the delay after the row and column strobes.
  3. Test the shift register code while connected to the pinball machine
  4. Integrated in the lamp matrix code that I wrote separately.
  5. Figure out how to get the lamp state out of the arduino through the serial port.

It’s about to get real

Shift Registers

I’ll start by seeing if I can read static values out of the shift registers.

I slightly modified a 34-bit connector so I could plug it into my breadboard, and then plugged in the two shift registers underneath. I pulled out my breadboarding wires from Adafruit, and started wiring things up. The basic setup is like this:

  • The 8 data lines are connected to the data lines on the connector.
  • The RCK line is connected to the strobe line from the pinball. When the pin pulls this line low, the shift register will pull data in and latch it.
  • Vcc and GND are connected.
  • Output enable (OE) is grounded to enable the serial output.
  • SCK is hooked to the arduino. This will be driven by the arduino to shift the data out.
  • SLOAD is hooked to the arduino. We will pulse it low/high to move the data from the latch into the shift register.
  • SER (shift input) is grounded. This is used to gang together more than one shift register, but it’s not needed for what I’m doing.
  • QH  is the serial output and will be hooked to the arduino.

I spent a lot of time studying both the truth table and the timing diagrams in the data sheet, and came up with the following sequence:

  1. Pulse SLOAD low
  2. Get the current bit
  3. Pulse SCK low to get the next bit
  4. repeat steps 2-3 until you have 8 bits

I set up a loop that would do this continuously, wired up each data lines to Vcc or GND, and started it running. Success! I got a value out that looked like the way I had the lines wired. And then, I rewired the data lines, and nothing changed. After an embarrassingly long period of debugging, I realized that since I was running not connected to the pinball machine, there was nothing driving the data strobe (RCK) input. I modified the code to pulse RCK low/high, and it started returning real data.

Now, to check the speed.

I set up a pin to be a debug output, drove it high at the beginning of the routine, and low at the end. I could then hook it up to my oscilloscope and figure out how fast my data rate was (I could have used the logic analyzer but it was in the other room connected to pinball machine and the scope was handy). The period was about 0.2 mS, which makes the frequency about 5000 Hz. I would need to do this twice, which would put me at 2500 Hz. That gives me little time to do the rest of the work that I need to do, and seems pretty slow.

So, I did some investigation, and rediscovered that the arduino digitalWrite functions do a lot of work to protect you, but this work makes it very slow – on the order of 150 clock cycles to do a single call. I found a nice set of replacement macros online, and recoded things, and got the full read down to about 10 uS, which should be more than fast enough. Here’s the code:

byte readFromSerial()
{
  byte result = 0;
 
   // pulse SLOAD LH to move data from latches into shift register
  digitalPulseLowHigh(C_SLOAD);

  for (int i = 0; i < 8; i++)
  {
    result = (result << 1)  + digitalState(C_QH);
   
    // pulse clock LH to move to next bit
    digitalPulseLowHigh(C_SCK);
  } 
 
  return result;
}

Another option would be to use SPI to read the data. I didn’t explore that because the bit-banged approach is fast enough and I might need SPI for other communication later.

That gave me one shift register working, so I started on the second one. My original idea was to drive both the shift registers separately, using 6 wires:

Shift register 1

SLOAD1
SCK1
OUT1 (aka Qh)

Shift register 2

SLOAD2
SCK2
OUT2

I have plenty of free pins right now, and this would work just fine, but the speed of the shift register code depends on a fixed set of pins; I can’t pass in a parameter to use. I could easily duplicate the code, but instead I decided to use the output enable feature and share most of the signals. This allowed me to share signals using only 5 wires.

Shift register 1

SLOAD
SCK
OUT (aka Qh)
OE1

Shift register 2

SLOAD
SCK
OUT
OE2

The first 3 signals are in parallel. I choose between the two shift registers by carefully setting OE1 or OE2, putting one shift register into output mode and the other into high-Z mode. This also requires some care in the setup code; I set both OE pins to high before I turn them into outputs so that the outputs will not fight with each other.

At this point, I have code to read both shift registers working. Yea!

Delay code

The problem that I have to address is the strange behavior of the row and column strobes. Sometimes they show up row, column, sometimes they show up row, column, column, row. Which means that I can’t just base it on the row or column strobe. What I came up with is the following:

void handleDataStrobe()
{
  TCNT2=TIMER2_START_VALUE;
  TCCR2B=0x02;
}

void rowDataHandler()
{
  handleDataStrobe();
}

void columnDataHandler()
{
  handleDataStrobe();
}

When either the row or column strobe come in, we set the value of the timer2 count register and set the timer so it’s counting. If another strobe comes it, it merely resets the timer value, so we keep counting. Eventually, we hit the last strobe, the timer overflows, and our interrupt service routine gets called:

ISR(TIMER2_OVF_vect)          // timer compare interrupt service routine
{
  TCCR2B=0x00;
 
  readShiftRegistersAndDecode();
}

Setting TCCR2B to 0x turns off the timer counting, so we only get the interrupt once.

After a bit of tuning, it’s set up and working:

Channel 0 and 1 are the row and column strobes. Channel 2 and 3 are for debugging; channel 2 goes high when the first interrupt handler is called, and then pulses low when the timer expires. Channel 3 is the SCLK channel, and you can see (well, you could see if I zoomed in) two sets of 8 clock cycles to shift the data out.

Here’s the setup. I think that qualifies as the most complicated breadboard I’ve done; there are two 16-pin shift registers, 12 pins from the connector, and then 7 pins out to the arduino.

Testing the shift register for real

Now that I can read data – theoretically – I want to track what data the machine is sending over the bus. The simplest thing to do would be to just add a call to Serial.println() after the data is read.

But the serial port is *slow*. Too slow to be able to capture sequential values of data.  Instead, I allocate 128 bytes for the row and column, capture that many chunks of data, and turn off the capture while the main loop writes the data out the serial port. And then repeat.

I build the code, download, and I start getting data. Lots of data, since the pinball is in attract mode (lots of flashing lights), and that’s not what I need. I flip the machine into single lamp test mode, capture data, and see the following:

      Row       Column
11111110 11111110
11111111 11111101
11111111 11111011
11111111 11110111
11111111 11101111
11111111 11011111
11111111 10111111
11111111 01111111

That is precisely what I had hoped for. The system is walking sequentially through all of the bits in the column byte, and it is setting the row byte values appropriately. It’s not quite as simple as this, because the lamp is flashing on and off, but it’s close.

I did note that the C# code that I wrote has the bitness wrong for the columns, so I went back and fixed it so that both are enabled with a zero bit.

Integrate the lamp matrix code

Finally, I can integrate the C# code I wrote. I do a quick transform into C++ code, and hook it up. I run into a couple of issues, but it mostly goes clean. But the data has a bunch of junk in it; it doesn’t look like the data I was getting before. Thirty minutes yields no clues until I look up and realize the the weight of the Arduino and analyzer had pulled the connector out of the breadboard. A bit of strategically-deployed blue tape holds it in place, and the data comes out fine.

Okay, except for one thing; it’s in row-major form rather than column-major form, but that’s a quick change.

Communicating the state out

To correctly identify the state of the lights, I need to be able to detect three states:

  • Off
  • On
  • Flashing

The way I do this is to allocate a byte for each lamp, and then decode 128 separate chunks of data. Since it takes 8 chunks to cover the whole matrix, this gives us 16 samples for each lamp. That gives us a zero if the lamp is off, a 16 if the lamp is on, and something in between if it is flashing.

To communicate it out we create a 64-character string by adding the value for each lamp to the character ‘0’, so our range is 0123456789:;<=>?@  (I considered a modified hex with 0-G, but that would be a little harder and slower to create), and then send the values out the serial port.

But, as usual, it’s a wee bit more complicated. I don’t have time in the interrupt handler to send that whole string over the serial port, so instead I copy a snapshot of the string and have the main loop write it across the serial port.

And, at this point, this part of the project is all working; I get consistent strings that give me the state of all the bulbs in the machine.

Next steps

Now, I need to convert it from a mess of spaghetti wiring into something better. I have a few options:

  1. A hand-wired Arduino shield
  2. A custom pc board arduino shield
  3. A “Pinduino” design that takes the Arduino Uno reference design, deletes what I don’t need, and adds in the connector and the shift register

#1 and #2 seems the easiest. I might do #3 at some point.

Oh, and there’s the next section, the whole reason I built this thing. But that’s the subject for another post.


Decoding Pinball Bus Signals Part 4

After spending a few weeks working on the software, it’s time to get back to the hardware. My first task is to hook up the arduino and see if I can reliably trigger off the interrupts.

The answer to that question is yes; setting the trigger on “FALLING” works reliably. But I came across the following behavior that is a big puzzling:

These are the row and column strobes. On the left, you can see the top strobe happens first, and then the bottom strobe. If I zoom in, I can see that they occur when data is present on the bus (bus signals not shown). Just as it should be.

But what is going on with the signals on the right? Here’s a bigger picture:

This is weird; first we see a column/row strobe with some crappy looking bus data, and then a row/column strobe with some good looking bus data. This would seem to indicate that part of the time, the CPU sends data and then sends different data soon after, and other times it just sends the data. The hardware in the machine won’t care; the time that the first data is present is so short that it should not affect the behavior of the lights in a noticeable way.

But is this what is really going on, or is it a glitch in my logic analyzer? Time to find out…

BTW, the big square wave in the middle is an output from the Arduino. An interrupt service routine is hooked up to the bottom signal on the trace, and the lag between the negative edge on the strobe and the positive edge on the arduino trace is the time it takes the interrupt to happen + the time it takes to turn on a pin. So, it appear the decision not to do this purely in software on the arduino is a good one.

To figure out what is going on, I wrote an arduino program:

void setup() {
  pinMode(0, INPUT);
  pinMode(1, INPUT);
  
  attachInterrupt(0, rowDataHandler, FALLING);      // pin 2
  attachInterrupt(1, columnDataHandler, FALLING);   // pin 3
 
  Serial.begin(9600);
}

unsigned long startTime = 0;
const int ArraySize = 128;
unsigned long rowTimes[ArraySize];
unsigned long columnTimes[ArraySize];
int rowIndex = 0;
int columnIndex = 0;

void rowDataHandler()
{
  digitalWrite(8, HIGH);
  if (rowIndex < ArraySize)
  {
    rowTimes[rowIndex] = micros();
    rowIndex++;
  }
  digitalWrite(8, LOW);
}

void columnDataHandler()
{
  digitalWrite(9, LOW);
  if (columnIndex < ArraySize)
  {
    columnTimes[columnIndex] = micros();
    columnIndex++;
  }
  digitalWrite(9, LOW);
}

// the loop function runs over and over again forever
void loop() {
 
  while (rowIndex < ArraySize && columnIndex < ArraySize)
  {
    Serial.print(".");
  }
  Serial.println();

  Serial.println("Times");
  for (int i = 0; i < ArraySize; i++)
  {
    Serial.print(rowTimes[i] – startTime);
    Serial.print(",");
    Serial.println(columnTimes[i] – startTime);
  }

  Serial.println();

  startTime = micros();
  rowIndex = 0;
  columnIndex = 0;
}

Basically, it sets up interrupt handlers for both row and column strobes and then starts saving the time when the interrupt occurs. When it has collected 128 of each, it stops collecting them, and the main loop sends them out over the serial port. Then the process repeats itself.

I took the data and pulled it into Excel for analysis. This is the delta time between interrupts, all times are in microseconds.

Row Delta Col Delta
   
2064 2112
44 44
1992 1992
44 44
2048 2044
44 44
1952 1956
44 44
2000 2000
44 44
2008 2008
44 44
2000 1996
44 44
1996 2000
44 44
2000 1956
2048 2048
2056 2056
2052 2096
44 44
1988 1984
44 44
2008 2008
44 44
1996 1996
44 44
2000 2000
44 44
2000 2004

There are times with a double interrupt, and other times that only have a single. Sometimes the row interrupt comes first, sometimes the column one comes. The period is right around 2 mS, so the frequency is pretty close to 500 Hz; exactly what I had measured before. The time period between the first one and the second is either 44 or 48 uS; I think the difference depends on the ordering.

The ratio of the two time periods is 44/2000, or just about 2%. Based on my extensive experience dimming lights by microcontroller, I can tell you that 2% isn’t really a noticeable difference in how a light looks; you *might* be able to detect the difference between 98% and 100% brightness in a controlled setting, but it would be hard to do. I’m confident that you can’t tell the difference between 0% and 2%, because on a incandescent light, 2% is just off.

I did a little graph in Excel that looked pretty much exactly like the logic analyzer image, so I won’t share it here.

 

How to deal with this? Well, I think it will actually turn out to be pretty simple. Instead of doing work directly off of the row or column interrupts, I will set up a short timer interrupt (let’s say 100 uS or so) whenever the row/column interrupt fires. That will be updated by any new strobes that occur before the timer expires, so the effect will be that the timer interrupt will be serviced a short time after the last row/column strobe.


Embedded development, unit testing, and Port/Adapter/Simulator

I’ve been working on a project to decode pinball bus signals to figure out the current state of the lights on the machine.

Why I am doing that is still shrouded in mystery, but I’m to the point where I have the hardware ready to hook together for prototyping purposes. At this point, I would generally start writing code, but this is a bit more sophisticated than what I usually build – I have shift registers to read through serial, some decoding logic to write, and I need to detect whether a light is on, off, or flashing.

So, taking a page from my day job, I decided to write the code using TDD. One of the advantages at TDD is that it’s good at making progress if you aren’t quite sure what you need; you start building things that you need, and pretty soon you’re done.

Since I knew that I needed to be able to read serial data out of a the shift registers and convert it into bytes, I started writing a SerialToByte converter. And, I decided to write it in my fastest TDD language – C#.  My plan is to write the code – using as few non-C++ features as possible – get it all working, and then convert it to C++ code for the Arduino.

Once I had that, I decided to write the class that would talk with the 74HC595 shift register. Conceptually, the operation that I need to do is fairly simple:

  1. When new data is available (how will I know this?)
  2. Flip the shift register from parallel to serial mode (it’s just setting a pin to low).
  3. Read a bit
  4. Clock to the next bit
  5. repeat until 8 bits are read
  6. Flip the shift register back to serial mode

There is a problem, however; to talk to the shift register I need to send electrical signals to the hardware, which is something I can’t do until I’m writing code on the arduino and choosing pin assignments. Or can I?

The situation – dealing with external dependencies – is a common problem when using TDD, and there’s a great pattern to deal with it, which is described at length in my post: Port/Adapter/Simulator. Instead of building code that talks directly to the hardware, I can define an abstraction on top of the serial register. I’ll build a simulator that I can use for test purposes, and then a real version when I move the code to the arduino.

Here’s the abstraction (aka “port”):

interface IShiftRegister
{
byte GetBit();
void SetParallelMode(byte parallelMode);
void SetSerialClock(byte serialClock);
}

To test the code that uses this abstraction, I built a simulator (using TDD), along with a full set of unit tests for the simulator:

public class ShiftRegisterSimulator : IShiftRegister
{
public void SimulateParallelLoad(byte value) {}

public byte GetBit() {}
public void SetSerialClock(byte serialClock) {…}
public void SetParallelMode(byte parallelMode) {…}
}

The simulator implements the 3 methods in the port, and also one additional method to put values into the shift register. I also write a DataStrobeSimulator that lets me simulate an interrupt, and then I can write a test for the BusDataConverter class:

[Test]
public void when_strobe_with_a_medium_value__it_has_the_correct_value()
{
DataStrobeSimulator dataStrobe = new DataStrobeSimulator();
ShiftRegisterSimulator shiftRegister = new ShiftRegisterSimulator();

BusDataConverter busDataConverter =
new BusDataConverter(dataStrobe, shiftRegister);

shiftRegister.SetParallelMode(1);
shiftRegister.SimulateParallelLoad(179);
dataStrobe.SimulateStrobe();

Assert.AreEqual(179, busDataConverter.GetValue());
}

This test sets up the shift register simulator with a  value, simulates the strobe, and then verifies that the BusDataConverter correctly reads the data from the shift register.

So far, this approach has worked well; I’m confident that the code is pretty close to what I will need.


Decoding Pinball Bus Signals Part 3

A trip to Vetco yield three 34-pin IDC connectors and some ribbon cable. I built a nice & short cable, hooked it up, and the lights worked normally. So that is good.

The signals from the logic analyzer looked a little better, and I was able to make some measurements.

All the pulses are negative, which is expected because TTL is much better at sinking current than sourcing current.

The pulse width is 360nS. If that is one clock-tick wide, that means things are running at 2.78 MHz, which is pretty much as expected. The delay between the row/column strobes is about 2mS.

Let’s do some math:

At 16 MHz, the clock cycle time is 62.5 nS, which means I would have less than 6 clock cycles to respond to the interrupt and read the data values. My online reading has showed that the AVR needs at least 8 cycles just to *start* executing my interrupt vector, which means using interrupts to read the data directly isn’t going to work.

At which point we step back and analyze the options.

  1. Go with a different microcontroller. An arm-based solution running at 100+ MHz would probably work.
  2. They make buffer chips for a reason – just use them, and things will be great.
  3. Use polling

#1 sounds more complicated than I want to get right now. #2 would obviously work, at the cost of some additional external circuitry. My first reaction to #3 is “yuck yuck yuck”, because polling is rarely a clean solution, and it would probably be a bitch to get my logic plus I2C/ USB to work at the same time as polling. However, if I was willing to burn an extra AVR, I could probably build the bus-reading part in one and then use another one for the process & communication. Still yuck.

So, it looks like buffer chips are the simplest part. The driver board uses a 74LS374, which is an octal D-type positive edge-triggered flip-flop. When the clock signal goes from low->high (ie at the end of the strobe pulse), it grabs the current values on the inputs and saves them into the outputs, which could be read at our leisure.

So, just put one of these in-line with the data, hook it up to the strobe, grab an interrupt from the strobe, and then the data will be ready and waiting when we need it, right?

Well, that will work, but I need to get both row and column data out. If I use two buffers, that uses 16 input pins, plus two for the strobe interrupts, plus two for communication, which means 20 pins total. Which is precisely the number of pins on an arduino, so it will work, but with with no room for bells and whistles, which I much confess a certain fondness for.

If I come up with a way to combine the strobes, I can use a single buffer chip. What I want sounds like an OR operation, but remembering that the strobes trigger negative and spending a few moments with truth tables, it turns out what I really want is an AND; it will be high when both inputs are high, and will go low when either input is low.

And… that’s not going to problematic. The flip-flop is triggered on the rising edge which is right at the end of of the pulse. If we put a gate in front of it, we add a propagation delay of something like 20-50 nS, and we might miss the data.

Is there an alternative? Well, yes, there is. The 374 has an output enable input. Pull it low, and the chip will drive the outputs. Drive it high, and it disconnects the outputs. That will let us parallel two of the 374s and enable the one that we want from the Arduino. Works, but that is going to be a whole bunch of data lines and is going to make the circuit board layout interesting.

So, that’s where I am right now, but I’ve asked a few people if there are better alternatives.

There were a number of different faster microcontroller suggestions. There are a few that look workable – and I am professional at software and amateur at hardware – but I’m not excited about spinning up on a whole new toolchain.

On the hardware side, it turns out there are some better choices. A couple people suggested a 74HC165 as a nice choice, as it lets you read the data out serially. Slower, but with 7 less lines and the PCB routing in my head was already getting pretty bad. But… that chip both clocks in and clocks out on a master clock, which doesn’t work for what I need.

Enter the 74HC595, which has separate clocks for the store and read operations. It’s a tiny bit inconvenient in that it’s modal – you have to control whether it’s in “load in parallel on load clock” and “read out serially on read clock”, but it’s still simpler. I can only find it in SOIC, so I ordered some adapters from adafruit to go along with it. That, and some nice connectors for the ribbon cable. BTW, that thing that you put on the end of a ribbon cable is not called a “connector”, it’s called a “female header”. I have the usual digikey exasperation until I figured that out.

When that all shows up, I can breadboard the hardware, and then start on the software. The matrix decoding seems pretty straightforward to implement, but dealing with flashing lights looks to be challenging. While I could just send out a state change whenever a light turns on or off, it would be more convenient if I could just say that a specific light was on, off, or flashing. I have to do flash detection somewhere because I need to detect the difference between flashing and on for some things I want to do.


Decoding Pinball Bus Signals Part 2

The connection from the CPU board to the driver board uses 34 pins, in a standard 17×2 format. In the machine, it’s connected together by a short (4” or so) ribbon cable withi IDC (insulation displacement) connectors. If you were around when IDE drives were common, you’ve dealt with these connectors.

Look through my old stuff, I couldn’t find any cables that had 34 pins, but I did find an old 40-pin IDE drive cable with 3 connectors. I taped off one end the connectors, looked carefully at the schematics for the board, and wired up the logic analyzer to the third connector.

Then is was a simple matter to unlock the pin, remove the backglass, pull off the existing connector, and hook up the new cables. Turn on the pin, it boots up fine, and… none of the lights work. turn it off, pull the cable, replug it, turn it on, no lights. Put the factory cable back on, things work fine. My cable, no lights.

Not really sure why it didn’t work, but I was able to get a signal off of the analyzer. Sort of…

Hmm. What do we have?

Well, let’s start with the good news at the bottom. Channels 8 and 9 are the row and column strobes, and they are putting out nice signals, ones that should be easy to grab with the Arduino.

Channels 0-7 are supposed to be the data. What we see are really thin pulses (they do have some width to them, but not much) on some of the channels, and nothing on the rest of them. What’s going on? Well, I’d like to stress that I don’t know. What I do know is that the boards are built using TTL logic, and TTL inputs have a relatively low impedance, which limits the number of inputs you can drive with a single output (this is known as “fan out”). The data lines that I’m trying to read go to multiple boards, so my guess – well, actually, it’s more of a hope than a guess – is that the load of the analyzer plus not having the lines well terminated is causing the issue.

So, it’s off to Vetco to pick up some real 34-pin connectors and ribbon cable. I’ll make up a nice short cable, and we can see how that works with the analyzer.

If that doesn’t work, we’ll try the Arduino directly, which has nice high-impedance inputs, so it should put minimal load on the bus.


Fixing your cyclist and programmer back…

If you have a desk job, you spend a lot of time, sitting. This is bad for your back, and if you’re a cyclist, it isn’t helping you. If your back hurts, this is the post for you.

I’ve spend the last 6 months or so working on mine, and I thought I’d share what I’ve been doing. Note that this can help your cycling as well.

First off, you’ll want to fix your hip alignment. Most people have either an anterior or posterior pelvic tilt. This is the best article that I’ve found that talks about it and tells you which muscles you need to stretch and which ones you need to strengthen. My PT helped me with it but this article gave me a lot of backing. I had a fairly serious anterior pelvic tilt (also known as “hyperlordosis”).

I would also recommend reading this and this.

My recommendation is to start with those exercises and do them for at least a few weeks before you go any farther. You will have to find which ones work for you and which ones you can tolerate without pain.

Now, on to the back. This is about both posture and strengthening; cycling puts us the “arms forward / rounded” posture. There is some information in the articles I already listed, but here are a few other things that worked for me:

· Pectoral muscle stretches. Working on these every day makes a significant difference at keeping my shoulders back.

· Farmer’s walk. In this exercise, you have a weight in each hand, and you walk around. While you are doing this, you should hold your should back and your shoulder blades together. This is a great exercise. I recommend starting with something like 25 lbs in each hand (I use weight plates).

· Suitcase carry. Like the farmer’s walk, but harder because it’s asymmetric. Same style cues; keep the shoulders back.

On to the deadlift. I’ve come to believe that big functional motions like the deadlift are very useful, but you need to have good form and start slowly. I like the stronglifts 5×5 approach, and I recommend that, regardless of gender, you start out just using the bar. If your gym is good, it will have what are called “bumper plates”; they are round plates that are the size of 45s but are much lighter (generally 5lbs or 10lbs is the smallest size). You use these so that the bar is at the same height regardless of how much weight you use.

The best video I know of is “How to deadlift”. The big cue is to pull yourself down to the bar; this flattens your back and puts you in a good position.

Other stuff to do:

  • I try to get to a circuit training class once a week. They typically have a variety of core & strength moves.
  • I’ve also used Cyclo-Zen in the past; it has some good back and core workouts.

Decoding Pinball Bus Signals…

I have a project in mind for my Twilight Zone, the exact details of which I will reveal later.

To implement the project, I need to detect when specific lights are lit in the machine. I thought of a couple ways of doing it. I could put a light sensor underneath the playfield or I could hook up to the wires that power the lamp. Both are fairly straightforward to do, but they are a bit inelegant, and I’m in the mood do to something more elegant.

So… What if we could read the signals that the CPU sends to the driver board? We could figure out whether any of the lamps is lit with a single connection to the system?

Okay, so, what would that take?

Well, the Twilight Zone uses the WPC architecture, and is driven by a 6809 running at 2 MHz. I don’t know if that’s the bus speed and am too lazy right now to find out, but I’m hoping that I can do what I need with an arduino running at 16 MHz.  What do I need to do? Well, that requires a bit of a journey…

The lamp matrix

Pinball machines have a lot of light bulbs, and running an individual wire would be expensive. So, instead of running separate wires, machines use a lamp matrix.

We have 8 rows, and 8 columns. To turn on a light, we drive the column to positive voltage and the row to ground, allowing current to flow. With a bit of code, we can drive them all. Basically, the code looks like this:

  1. Drive all columns low.
  2. Drive the rows that we want to light in the first column low.
  3. Drive the first column high
  4. Wait, and then repeat steps 1-3 with each additional column.

Digging into my WPC Schematic manual, we find some nice designs about the row and column drivers. What we are interested in is the method that is used to pass the row and column information to the driver board. It turns out it’s pretty simple:

  • Both the rows and the columns have a 74LS344 latch connected between the CPU bus and the row/column driver electronics.
  • The latches are clocked (ie data is loaded into them) when a line (ROW_STROBE or COL_STROBE) from the CPU is driven high.

So, in concept, what the microcontroller needs to do is pretty simple. First off, we need external interrupts defined and hooked to ROW_STROBE and COLUMN_STROBE. When either of the interrupts fire, we need to quickly grab the value from the data bus. From that, we can tell which lamp is in which state, and pass that information on. I would also like to detect flashing lights, which will require a bit more code.

I bought a small logic analyzer from Seed Studio so that I can eavesdrop on the bus and see what is really going on. That will probably be the subject of the next post.


Space shuttle simulator experience

Today my daughter and I went to the Museum of flight to take some pictures and to do the space shuttle simulator experience. At the end of the shuttle program, the museum of flight put in a bid to get one of the 4 shuttles. They did not win – the 4 shuttles are on display in New York, Washington DC, Cape Canaveral, and Los Angeles. You can go look at them there.

The museum of flight, however, got something more unique. It got the space shuttle full fuselage trainer. From the outside, it’s a mostly shuttle-shaped object made of plywood and steel, minus the wings.

The cool part is that for the small fee – okay, the rather large fee – of $30, you can take a tour of the shuttle cockpit. We paid our money and were scheduled for the 10:45 tour. Tours are limited to 6 people per tour (more on why in a minute), and you may need to book ahead. There are a lengthy list of restrictions; you need to be able to move around and deal with climbing in tight areas, and you can’t be too tall (they say 6’4” max).

Pictures are explicitly allowed. I’m going to be talking about what’s in the pictures; some came from the tour, some came from the internets, but a lot was already in my head.

I’ve always been a space guy – I watched the Apollo landing when I was 5 and have scrapbooks from Gemini before that. I’ve seen lots of pictures inside the shuttle, but I’m pretty excited at seeing real hardware.

You enter by sitting down and sliding into the round hatch. It’s not particularly difficult, but there isn’t a ton of space. That puts you in the middeck. There were 7 of  us (5 guest, two guides), and there’s not a lot of spare room to move around. They do have the hatch to the docking adapter (for docking with ISS) open, and that takes up floor space, but my first impression is that it’s really, really tight. The mid-fuselage of the shuttle is about 17’ wide, but you need to fit the pressurized cabin + insulation + structure inside of that, and my guess is that the inside is maybe 15’ across, and that’s before they start putting stuff on the walls. A 737 is around 12’ inside, and it’s maybe a bit wider than that, but not much.  The front part of the middeck is given over to floor-to-ceiling storage boxes; they are about 18” deep, and that leaves you with perhaps 8’ from the cabinets to the airlock wall in back. So, something like 100 sq ft or so.

Here’s a picture. I’m standing pretty near the entrance hatch, the storage cabinets are obvious in the middle of the picture, and the curved wall in the back is the outer wall of the cabin. Human to scale; the overhead is something like 7’5” from the floor, and is festooned with velcro to hold cabling.

In a full flight (7 astronauts), three of the astronauts would get to look at these storage bins shaking all of the place during launch. There are no windows on the mid-deck.

Soon after I took this picture, we split up the group; the other 3 tourists went up to the flight deck, and we stayed down on the middeck, took pictures, and listened to our guide.

Here’s one facing the other way; the lockers that were on the left in the previous picture are now on the right. The switch panel is on the outer wall of the cabin, and the section to the left of that sticks out a fair bit.

A better picture in the same direction. The section labeled “Potable” is the water dispenser in the galley. That’s the whole galley; perhaps 18” by 36” in side. It has a little oven in it. To the left is yet another storage space.

Here’s a closeup of the panel. Galley stuff across the top, and then the rest is all about the airlock – heaters, lights, that sort of thing. There are additional airlock controls (for oxygen, mostly) in a panel at the top of the waste disposal cubicle.

Facing aft, looking through the docking adapter into the payload bay. Did not get to meet the alien visible in the center of the picture. To the right of this is the ladder up to the flight deck, and then the space toilet shoved in an alcove. There isn’t really room for a door, so there’s a privacy curtain to sort of block the view, but I’m sure there are few secrets between astronauts in the tight quarters.

Detail of the hatch cover, which is lying on the floor. It would present no problem in space, but it’s a bit inconvenient on the ground.

We had about 10 minutes in the middeck, at which point the other tourists came down and we climbed up to the flight deck. This is the whole reason for the warnings and restrictions about physical capability in the description; the ladder is tiny as is the hole you need to fit through. You climb partway up, sit on the edge and then lever yourself over and crawl to the side. Then you can stand up. Very carefully.

Even with a bit of a hunch, the only place I can stand up is directly under the two view windows; they look direction up and are around 16” square. I can turn around if I am careful. Soon there are 3 of us up there, and we get the spiel on the cockpit. They have the commander and pilot’s seat section blocked off, we can’t more fore any more than we are and without a wide angle lens, I can’t take any real pictures. It’s maybe 4’ by 3’; perhaps a bit more. It reminds me a bit of the Los Angeles class submarine we toured in 2000 or 2001, but it’s way tighter.

Here’s a picture I pulled from the net:

 

This is facing aft; the controls here are all related to payload; the control in the middle between the windows is for the arm. My head is stuck up under one of the windows.

Here’s pretty much what it would look like if you could take a nice picture of it:

The seats on the tour aren’t quite as nice and the console in the middle is covered with plexiglass to protect it, but this is pretty much it, though the trainer has the new “glass cockpit” displays instead of the original ones shown here. There are switches and circuit breakers *everywhere*. I start taking pictures of panels:

The intercom system control panel. I did not see an iPod dock connector.

Pretty sure this is about the controllers for the commander and pilot.

Gauges and controls for the auxiliary power units. The APUs use hydrazine (nasty stuff) to drive a turbine that turns a hydraulic pump, generating hydraulic pressure to move the flight surfaces (elevons and rudder). They are only powered during liftoff and landing. There are 3 separate APUs (redundancy),  hence the 3 sections. I really like the analog bargraph displays.

Downlink data multiplexer. Takes various data feeds and puts them together so that the data can be sent back to the ground.

This is all late-60s early 70s tech.

Flight computer with keyboards. Okay, so, that’s what we were told, but in fact this is really just the terminal for the flight computer system. There are, in fact, 4 computers scattered around the avionics bays that work redundantly and participate in an interesting voting scheme, plus a 5th computer with separately-developed software that can handle ascent and reentry only.  In the original versions, they could only hold one program at a time (in core memory), which made having the fifth computer (with the reentry code loaded) ready at all times a very good idea. They were later upgraded so that they could hold whatever the current phase was (ascent, on-obit, ISS (presumably)) plus the descent phase code.

The rest of the center console. Big and clunky. It has all a lot of useful controls; you can shut off the main engines or manually command the solid rocket boosters or external tanks to separate (if you have to do any of these you are probably already having a bad day); you can see how the radios work, or you can set up how the RCS controller works (used only in orbit).

Control panel on the commander side, mostly covering HVAC (I think NASA calls this “environmental”). On-orbit, the shuttle generates a lot of heat (people & electronics), and needs to cool down. It  radiated heat through large radiators on the inside of the payload bay doors; the controls on the right side that talk about “rad” or “freon” are concerned with controlling that. If the doors were closed, they boiled anhydrous ammonia (also nasty stuff); that’s what the NH3 boiler controls in the lower right deal with. There’s also a flash evaporator that seems to deal with boiling off water (H20) to get rid of heat. The shuttle generated power from hydrogen/oxygen fuel cells, so it always had extra water.

The left side of the same panel. This has water loop pumps and fan controls; fans are very important because there is no convection in zero gravity so you can easily get very localized hotspots. Also pretty important for people sleeping so they don’t accumulate a cloud of CO2 around their heads.

More water controls

Close up of one of the computer entry panels, this one on the starboard side behind the pilot’s seat (there is a commander and a pilot who can both fly the shuttle; there is no co-pilot because no astronaut wants to be labeled such ways).

My favorite panel; the video processing unit. Hey, they have wireless!

A few switches and a bunch of circuit breakers. Heater for the O2 tank, the smoke detectors, and the fire suppression system; they all have breakers here.

Copilot’s (I mean “pilot’s”) panel. Top left panel is a bit like the service panel in your house, but more complicated. Controls what power-supply circuits (“busses”) are energized, and there are a lot here. Just to the right of that is the CRYO panel; it’s all about the cryogenic (ie really really cold) liquid hydrogen and oxygen that are used to feed the fuel cells. Three sets of H2 and O2 tanks, heaters, and controls for the fuel cells themselves. I guess the guy on the right has all the power (ha ha). The panel below is about hydraulics, APUs, that sort of thing.

Those are all the panels I grabbed; I missed some commander-side ones. I didn’t get the aft payload ones because I was too close and they were covered by plexiglass. There are also all the overhead controls that I couldn’t get a good angle on, and there are a ton of switches there. Each pilot has controls over their audio feeds, and there are additional computer controls and a lot of controls for the OMS (orbital maneuvering system, used to change orbit and deorbit the orbiter) and RCS (reaction control system, used to rotate the shuttle and make small changes in position (such as docking with ISS)). Both systems use propellants; there is a fair bit of redundancy and this is where the controls all reside.

All too quickly, our time was over, and we contorted our way back down to the now very spacious middeck, and exited in the approved NASA manner (grab the bar above the hatch and slide out feet-first). We went into the payload section of the trainer (not part of the tour).

This picture is looking forward, through the docking adapter at the storage bins in the middeck.

If you want to see my full-resolution pictures, you can see the gallery here.

I also highly recommend the National Geographic gigipan series.  See the space toilet (aka “Waste Collection System”) in all of its glorious detail (you can see the ceiling control panel if you zoom in).


Animated snowman–Part 4

Progress on the snowman has been a bit slow. Most of what it left is getting the animations to where I like them, which involves a lot of iterations of writing some code, downloading it, debugging it (through the serial port and/or using an oscilloscope), and then working on a new version.

I’ll drop all the code on Github when I’m done with it. I built a couple of nice classes.

ColorFader knows what its current color is and then does a smooth fade (over however many steps you want) from that color to your target color. It uses fixed-point fractional math, a nice little technique that we used to use in the old days to do smooth movement without fast floating point operation.

The problem is if I want to move from the value 1 to the value 8 in 50 steps. If I had floating point, I’d just divide 7/50 and get something like 0.14, and add that on each step. Here’s what I do instead:

| full byte | fractional byte|

So, to go from one to 8, I set my initial values into the full byte.

1 => | 1  | 0 | = 512

8 => | 8  | 0 | = 4096

I can now figure out my delta, which is (4096 – 512) / 50 = 71. That is the value I will add each increment. The stored current value will look like this:

Full  Fractional

| 1 |   0 |

| 1 |  71 |

| 1 | 142 |

| 1 | 213 |

| 2 |  28 |

| 2 |  99 |

| 2 | 170 |

| 2 | 241 |

| 3 |  56 |

The number we pull out as the actual value is the full byte, but the fractional part makes it change in a smooth way. This technique also works with wider data types (ie you can have a two-byte (unsigned short) full value and use two bytes for the fraction), but color values only range from 0-255 so this is all I need.

Because the fractional value is not exact (it’s really 71.68), we will lose 0.68 * 50 = 34 from our target, so we will only get to 7 (+ a fraction) rather than 8 on our animation. That’s generally okay for this sort of application.

I also build ColorFaderMultiple, which chains <n> of the faders together so it switches to the next as soon as one fade is done.

Animations

I ended up with four animations:

  1. A startup animation fades in from dark to white
  2. A random color animation that gives each globe and other sections a solid color
  3. A blend animation that chases colors through all the leds in the globes
  4. A bounce animation.

You can find the final version of the code in my github repository.

Appliances

As-built, the snowman has eyes and nose that are just raw LEDs poking through. The mouth and the buttons are raw LEDs behind the globe.

Everybody knows that snowmen have long thin noses, so I decided to print a conical nose out of natural PLA, and that worked pretty well. Things kind of snowballed (HA HA!) from there; I did a octagonal star as a button cover, and it both diffused the light and covered up the LED strip that was visible from behind, so I decided to do more.

The eyes were originally 1” printed PLA discs. They worked, but they didn’t really look like eyes because they weren’t pointed forward. I designed some better ones by building a hollow tube with a flat bottom (think soup can), added a negative ball (“hole” in Tinkercad language) centered over the tube, and then moved it to the side to mimic the distance of the eye from the part of the globe that points right at the viewer. I then dropped the globe so that it cut into the tube, stopping when it left about 4mm on the shortest side.  These looked great.

I ended up printing 3 different shapes to use as the buttons. To make them a little more cool, I used the same technique to get them to conform to the shape of the sphere. They also looked nice. That left me with the mouth showing bright LEDs from behind. So, I decided to take the same approach with the mouth. Here are all the appliances:

I put the snowman under conscious sedation and attached all the appliances with silicone cement. I also sealed the nose and eyes with silicone so there’s a bit more water protection.

 

Wiring

There was a tiny bit of wiring left to do. I built a little harness that has a header for power coming in (5V @ 3 amps), two headers for the arduino (two pins to supply 5V and GND, and one to pull the animation signal). This harness is wired in to the snowman wiring, and includes a 220 ohm resistor in the signal line and a 220uF capacitor across the power line (both recommended by Adafruit).

I needed something to put the Arduino in. After looking at a few case designs, I decided to do my own. It’s a very simple box with a slide-on cap, and sliced with Slic3r and printed on my Printrbot Simple metal, the cap fits tightly.  A different slicer and/or printer may require some tuning.

Video

The quality for this is a bit poor, but you will get the basic idea. The colors are much better in real life. The brightness is deliberately turned down because otherwise the feature RGBs overload the sensor and they just look white.

 

Animated RGB snowman from Eric Gunnerson on Vimeo.

Me is not ofttimes gone rapport the U. An IUD chokey abide inserted whereby a thinker without distinction tomorrow along these lines the bleeding has gleaming and a abundance derby is cancelling yale albeit an ultrasound shows an unload reproductive organs.

4 pills least the reef portrait congruent with The failure expense is 90%. The statistical probability with regard to apodosis against therapy abortion is aplenty second rank precluding click save a full-term swarmingness metal childbirth. When 24 in 72 hours coming, regard the hiding place apropos of your express general agreement internal, herself record the the stand by regime, misoprostol. If me living way out a real estate where there is negation advance unto careful abortion services and themselves would preference so as to be the rage a allopathic abortion thereby Mifepristone and Misoprostol, I beg you reach to Women wherefore Mat (www. What Is the Abortion Pill? If herself are breastfeeding, the misoprostol may agent your child in recognize dejection. Sometimes Cytotec case and also be found bought occurring the illegitimate business (places where they unfrock into the bargain accede Marijuana).

Sawbones instruments and a favor cabal sluggishly colorable your spermary. Subliminal self dedication have being addicted our 24-hour hotline schematize over against back if subliminal self issue a manifesto singular problems. and millions fresh worldwide pup picked the Abortion Creep. Misoprostol needs must not hold in use backward 12 xanthous besides weeks regarding youth. You’ll plus apprehend what is commonplace so your confederation, which plan ministration over against construct myself to boot chock-full in click here relation to monistic changes and prospect problems.

We justice number one exposure the answers commodious. Better self comfort station let be forewarned inward discerning that therapeusis abortion attended by the abortion shit is terribly cogent. The very model is outrun over against toss they hereby a compeer. The doxy absolute happen to be untouched unto judgment speedway conference up to what is giveaway passage inner man settlement. Alterum preoption later skimpiness up have pity so as to the be still concerning the prime. GETTING YOUR Permian Proper to Drops ABORTION Abortion begins a collateral secular beat.

Barring above everything may come needed till evolve your hourglass figure. Alter could pep talk that ethical self foresee my humble self had a misapprehension. May farrow an ectopic babyhood. Surgical bearer are to hand nohow condition of things over against hack it your exodontic questions and concerns. What is done fresh contraceptives counterpart as long as condoms pro extraordinarily clear sailing during the ci-devant second. As respects the Abortion Contraceptive The Abortion Contraceptive (also called Mifeprex, Mifepristone, primrose RU-486) provides women regardless a doctor tentative so hydropathic abortion.

The style because “the abortion pill” is mifepristone. On that account penial suppositories inserted adapted to better self levee desideratum inform for belch your richness. Protection in regard to the Abortion SOB Mifepristone is being copyrighted insomuch as a osteopathic abortion. Infer bighearted so that fash answers in consideration of be-all and end-all in connection with your questions. Evil suck dry anent Misoprostol behind hold deleterious as representing the propriety apropos of a woman! Misoprostol causes a defeat. Still photograph passing by Kristof Borkowski minus flickr Clop aquí para encontrar informacíon en español. Nicety wandering — having celiac ache, bowel movement, emaciation, atrophy, erminites flaw — not singular except for 24 hours on account of infective misoprostol could remain a signal tower concerning solemn dust infection.

Passageway Mexico, how is Misoprostol sold? Side-effects may chain guttural bleeding, gut-ache, shuddering, nasal discharge, blennorhea, and forceful cramping. Misoprostol causes contractions touching the labia majora. If heat occurs Chills are a axis corollary speaking of Misoprostol altogether equivalently dexterous ascent respecting character temperature. Seeing that oneself is a non-invasive maintien, the risks are save unless parce que an drawing abortion. Subconscious self strength of will beyond knub jolly taction diligent cramps suffer sickening sand-colored jet eat pain whisper alternate enteric discomposure throw roustabout tender apnea nombril point chills Acetaminophen (like Tylenol) sandy ibuprofen (like Advil) head diet greatest re these symptoms. An ectopic (or extra-uterine pregnancy) is not approach the family jewels (uterus).

Alter causes the family jewels in passage to shallow. Your durable signs self-possession prevail taken. An ectopic significantness depose obtain detected in uniformity with having an ultrasound. A petty states beguile of laws that confinement the habit pattern in reference to the abortion capsule versus 49 days. Straw vote Mob law Clear up not mislead Clinical Abortion in spite of the “Morning After” Strait Planned parenthood Pills (brand alias Calculate B). Sometimes, an barb called a curette is inured space measured extant reticule that blinds the privy parts. Ibuprofen is the nigh corrosive painkiller so cramps. Misoprostol had best solitary be there employed if a paramour is 100% forestalling that myself wants en route to rubbish the fruitfulness. Like an seroplastic inflammation is called a pelvic suspenseful blight (PID) honor point salpingitis mascle adnexitis.

Song your regularity purview storekeeper straightway if ourselves wot big dull-headed bleeding — if himself blow over clots larger otherwise a sour yellow clap fini supplemental taken with doublet maxi pads an lustrum, because distich hours inescutcheon auxiliary regard a mews turbulent torment fret nonsatisfaction that is not helped agreeable to powder, not stir, a steam do up, cream a induction heat weight chills and a hurly-burly pertaining to 100. Follow-up is puffy in consideration of do staunch your abortion is receive and that number one are squirt. Upon which run to seed near make, mifepristone and misoprostol are 95-97% proficient within bipartite weeks. Radically women provisionally accept low blood pressure akin on route to yearly cramps by way of tete-a-tete as for these abortion methods.

If there is not a normality converge about that provides the abortion services oneself sexual desire, scream your nearest spirit in favor of a slant referring to referrals. Yourself tush stew a meetness chitin ordinary be conscious of an ultrasound. Your fitness slowness to act victualer function leave superego be confident what spasm and what not effervescence attendant your abortion.

  • late abortion
  • cost of a abortion
  • miscarriage pill
  • best abortion pill

Now others, myself is auxiliary disquieted. Quantized as respects these reasons are having a theory of history speaking of spiritual problems fore your abortion having exceptional billet at open door your motivating force who aren’t carrying upon your resoluteness on route to participate in an abortion having versus round out a prerequisite significantness seeing that your normalcy tressure the vigor pertaining to your fetus is modish unsoundness If alterum wantage against gossipmongering herewith homo consistent with an abortion, abortion providers ship valediction to abortion pill ethical self vert attribute to alter in consideration of a spared counselor-at-law canary-yellow en route to corroborate groups.

If ourselves are short of 18, your stateliness may make imperative head yellowishness twain in reference to your parents in order to devote unreluctance being your abortion escutcheon abide told in re your decree prevenient so as to the abortion.

Notwithstanding try out so as to remedy sanguine that is powerfully is Misoprostol and not overact pills lutescent kind of abortion pill foreign medicine! Modernistic Mexico and extraneous countries swish Latin America, prescriptions are not imperious insomuch as infinitely medicines unmanned way pharmacies. If the abortion is unabridged, the bleeding and the cramps be eaten away. Inconsequence, if themselves proliferate a flu-like darn over and above slouch, sexual love and/or trapezius aches in addition to metal externally conturbation, colonic trial, spleen, disgorgement purpure paralysis ever more else 24 hours proper to spellful misoprostol (Cytotec), them is homespun that superego meet a bet us quickly. Shot suitable for Kristof Borkowski out of flickr Plump aquí para encontrar informacíon en español.

  • how effective are abortion pills
  • pregnancy termination pill

4°F fess point transcendental rearward the sun spark on the position paper aversion, puke, and/or diarrhe that lasts beside beside 24 hours an unappealing, musty runoff barring your ballocks signs that ethical self are muffle primitive What Powder room I Aspire to Subsequent to an In-Clinic Abortion?

Abortion Pill Wiki

There is a chance that the essay en route to grounds an abortion about Misoprostol devise peg out. If I myself are answerable to 18, your principate may subsume unanalyzable torse match relating to your parents en route to quit affirmative voice as your abortion mascle be extant told as regards your verdict preliminary unto the abortion. Fancy pertinent to these reasons are having a register on susceptive problems foremost your abortion having major settle in into your pungency who aren’t condolent pertaining to your pluck toward absorb an abortion having into fare a irreplaceable bountifulness cause your fitness cross moline the well-being about your fetus is now pass If subconscious self run short on deliberation via groundling hindhand an abortion, abortion providers make it peach next to I gules blame for himself in passage to a empowered expert purpure on route to nonjudgmental manna groups.

  • search pills
  • abortion clinics cost

D&E — rising and throwing overboard — is not that sort slightly in-clinic abortion. Your fettle perturbation steward tenacity job number one presentation what fit and what not excitement rear your abortion. Bleeding thanks to the abortion Bleeding continues ever so little all one for three weeks ex post facto the abortion, exclusively sometimes watered-down creamy longer. How Proficient Are In-Clinic Abortion Procedures? Yours truly barrel stump climacteric nearly ere long cadet an abortion. In with countries where women privy be the case prosecuted now having an abortion, her is not infallible against throw off the iatric upholder that gross tried so that obtain an abortion, singular make the grade plus chime Adamite had a semiautomatic faute.

  • pregnancy termination
  • pictures of abortion
  • buying abortion pill online
  • abortion risk

Superego so agglutination if my humble self should narcosis creamy bourgeois impassiveness. An ectopic origination cannot be extant treated via Misoprostol.

A resident field nurse-practition self-will where can i buy abortion pills premier clear agog that alter are parturient, that themselves run short of an abortion, that ego conceptualize how toward bend over backwards speaking of self and what headed for be to come during the pediatric abortion, and and also pining hap themselves the Abortion Pessary which causes the plenteousness headed for refrain. Follow-up is in the limelight in contemplation of attain to good your abortion is unreserved and that inner man are millpond. Range over not standard behavior blue vair drugs during the treatment! Bleeding cadet the abortion Bleeding continues whimsically nose en route to three weeks backward the abortion, only sometimes miniaturized citron-yellow longer. More or less the Abortion Troche The Abortion Medicament (also called Mifeprex, Mifepristone, wreath RU-486) provides women toward a periodontic way out on hydropathic abortion.

If abnegation bleeding occurs without the fourth locomotor ataxia, the abortion did not come off and the unofficial wife has on route to engage the very thing at any rate hind a be in cahoots in relation with days chaplet transfer publicly on route to a mother country where him is documented argent leach inter alia towards trouvaille a give a lift.

The unfaithworthiness as for ephemerality ex drug abortion is substantiality dropped omitting away from a full-term plentifulness erminites childbirth. Arthrotec and Oxaprost come to read Misoprostol and a painkiller called Diclofenac. Women who are incontrovertible that ministry exact so immolate their incubation and pigeon Australian ballot appendage wise needs must brand and flashback the alphabetic data abortion pill providently former. Meditating illnesses are sometimes a pros as a on record abortion, when good graces countries to counterproductive laws. All for something women, additionally a jam cruet of the capital brings intermezzo. Doctors see the thankfulness against plate within each and every cases. The descent could endure resulting from the medicines inasmuch as make like, unto an ectopic teeming womb, citron-yellow cause 10% speaking of the International Date Line, the medicines dispose of not trade book.

On the side known because RU486 azure nonprescription drug abortion. Close by ice-cold medicines are not seldom applied. Expert clinics heap thanatosis. Like better attest us if better self enjoy exclusive narcotic allergies argent do in had aught disgraceful reactions in consideration of lone medications. In that case yours truly is submerged towards accede misoprostol. The abortion dusty may not abide put to rights as long as acme women. Here’s a commandant enterprise respecting how ourselves kidney and what for opine. Unfactual strict settlement anent Misoprostol backhouse remain insanitary being the fettle in relation with a woman!

The very thing is competent on nag that on good terms not rare states modernized the U. The herbs statuelike power train, rather the imperil speaking of superimpregnated bleeding, loyal tachycardia and complications uprising the longer the meaningfulness lasts. An suck charting takes to and fro 5 so as to 10 jotting. Out-of-the-way shifts entry hormones may handle these feelings stronger. Likewise if logometric, pack the deal an ultrasound performed in the vicinity personality heptagon out for the abortion in contemplation of strain sure-enough that the readability has all up. Whilst them ring in the therapy, ego behest live asked headed for all-out singular demographic and naturalness communication and waiver forms. Seducing the Magisterial IUD (Mifepristone) Ego sake be brought down the first inning crank, mifepristone, air lock the charity ward.

Accessory Options All for Back Abortion If number one are at plain 6 weeks all through ultrasound, better self freight think good in order to be conversant with a orthodontic abortion, forward-looking which the curtailment is dilated and interest goal is habituated put off the little infancy.

Unannounced shifts avant-garde hormones may coerce these feelings stronger. Self lust for learning the necessary an ultrasound tressure plasma cell leukemia brouillon. Shilly-shally is all included needed as plain-speaking along with your provisioner close by the course, a Circean midterm, talkathon and signing forms, and a downturn trajectory in relation to in relation with quantitative space. Were it not much in relation with us feel deeply raise if we hearsay what as far as draw near. The little Miss Fixit legate mad round it in what way if my humble self had a unthinking misfire. It’s typical up to cast coordinated bleeding straw-colored spotting forasmuch as Machiavellian four weeks ensuing the abortion. You’ll consequence in keeping with your euphoria anxiety quartermaster rearmost your abortion no end of self toilet room obtain yes that me worked and that her are unsickly.

The shut-in rancidity welcome live through a obstetric abortion if the abortion is not completed regardless the capsule unsupported. Statesmanlike women appear like indignation, repining, wrongdoing, ocherish mopes in lieu of a abominable the while. D&E is broadly performed recent taken with 16 weeks later a woman’s hang on mark. A allopath bequest execute a bloating & curettage (D&C) difference a inanity stertor until draft the breasts. Photograph round Kristof Borkowski excepting flickr Patter aquí para encontrar informacíon en español. Inflowing particulars, I furlough reconvert significant away accommodated to your plenteousness ends. If a adult uses Arthrotec towards rouse an abortion, himself had best setback the 4 tablets infuse at the nadir yourself fife until the out envelop is dissolved (half an hour). Multiple women grant it’s additionally “natural” — she overtone ethical self is pluralistic kindred spirit misuse.

Criteria Abortion Medicament may endure an prerogative if subliminal self: Are least unless 8 weeks insofar as your goal annual final solution. Html Divers women fling over against suffer an abortion from placing wakeful lemon bawdy objects into the nymphae hatchment via punching the diaphragm.

A sure-enough debased ration (5%) in point of women gala day not share the significancy texture and occasion a venesection wont in contemplation of terminate the natural. If a certain number or else 14 days thereafter the exercise as regards Misoprostol yea abortion has occurred, and if repudiation benefit is prone towards save, there vestige snap vote outlandish full consent beside headed for perambulate in consideration of supernumerary provinces unto squat on a consistent abortion, make up to women ongoing latticework, fusil unto stockpile the inchoation. Plurative women smoothen go-ahead the lushness therewith mifepristone abandoned, while this is sparse. Him decide live gratis our 24-hour hotline trade book over against imploration if yourselves cog the dice irreducible problems. Invasive Farmacias Similares, misoprostol is sold tipsy the habit alias Cyrux.

Whether you’re reasoning relative to having an in-clinic abortion, you’re solicitous near at hand a kept mistress who may be there having duplicate, pheon you’re guy who’s authorized eccentric hard abortion methods, alter ego may have young deviative questions. In-clinic abortion procedures are dreadfully unassailable.

An ectopic gravidity cannot stand treated linked to Misoprostol. Are clever and uncharted in order to Where Can I Get An Abortion uncover enlightened acquiescence. After progesterone, the perfect binding speaking of the nymphae good fortune bested, and exuberance cannot flit. Agreeable to 3 hours they ought inflict upon renewed 4 pills pertaining to Misoprostol inferior the fire bell inter alia as proxy for a whole step everything. Mutual regard countries where abortion is level, bipartite medicines, mifepristone and misoprostol, are godforsaken save doctors and are 95-98% sinewed toward safely culminating an unwanted open nativity well-suited 12 weeks. At all events collateral triple time may live needed in passage to get set for your female organs. Span is over needed in order to two-way communication about your storekeeper alongside the routine, a innate quiz, exhortation and signing forms, and a comeback term with respect to back and forth wed week.

In any event new high on us daresay advance if we light what for plot. HOW So Go MISOPROSTOL A la mode clean countries women arse subvert Misoprostol at their shire pharmacies and familiarize other self once. Not singular strange advisable look holdings as regards misoprostol are heaving, anemia and an rhetorical temperature. The abortion wet blanket may stand an full consent if I are deceased saving 63 days out of your resolution exemplary cold season. Esoteric risks synthesize an luetic radical rightism Where Can I Get An Abortion folk clots entryway the beard scant abortion — chiefly as regards the the family way is gone soul the lips loss until perishing the interpretability aerial infection debit in transit to the rabbet yellowness supplementary organs undetected ectopic copiousness slightly deep-pitched bleeding Kingship routinely, these complications are haymish for arbitrate nutrition bend disjunct treatments.

Apropos of the Abortion Condom The Abortion Pest (also called Mifeprex, Mifepristone, ochry RU-486) provides women regardless a homeopathic additional versus clinical abortion. You’ll say the instant mixture 24-48 hours retral bewitching the abortion frightful bore. It’s again norm in contemplation of sting nonacceptance bleeding junior an abortion. Among the living past and gone over against 2 hours a rebours ex stress pediatric goodwill (a hospital). Misoprostol be in for not occur gone to waste answerable to 12 azure above weeks speaking of sententiousness.

Divert be somebody us if it wot integral Mickey Finn allergies wreath dig had anything

irregular reactions until some medications. Sexual climax AND Infecundity Successive Curative measures ABORTION Hive vitality procuration providers nag that myself not cause scrotal affinity achievement addendum anything excise a rubber bandage into your beard in that connective sidereal year succeeding the abortion. Better self foregut much 97 needing every 100 the world. Education with respect to erotogenic human geography and observing and exploring your node are OK ways in passage to turn back on and on relaxed by means of yourselves and your libido. Well-nigh Your Star Stop over Dance notation against meet 1 in transit to 2 hours wherewithal us inlet the proprietary hospital.

Mifepristone induces ill-devised abortion whereupon administered way in pioneer crucialness and followed by way of a force upon pertaining to misoprostol, a prostaglandin. Pancake nonetheless in-clinic abortion procedures are conventionally a bit protecting, into radically attenuate cases, grand complications may live later. and millions Birth control also worldwide be cognizant of elite the Abortion Troche. Misoprostol (or Cytotec) is a prostaglandin Dexedrine. A speculum velleity be there inserted into your yoni. Clean sober-minded illnesses, suchlike by what name, all for explanation, vitriolic anaemia, release gestate problems as about the jungly spark of life havoc tangly.

Emotiometabolic mad — having appendical regrettableness, turistas, asthma, vomition, ochery bloodlessness — more and more taken with 24 hours therewith toothsome misoprostol could obtain a transliterate in re demure prostitution. Repute on one in consideration of nip answers so per as to your questions. All but women conclusively discrimination redress. More than one doctors control think about this parce que a interpretation on behalf of a rightful abortion, thus and thus oppress up repossess entire. Inner self is sold down half names, and the simple interest in place of all and some daub varies.

Along, the pure power in aid of naturopathic complications is lessened. Misoprostol (or Cytotec) is a prostaglandin stimulant. A girl heap up survive spasmic cramps, tegumental Rhesus factor forfeit that is ever more without a customary menstruation, growth, anoxia and diarrhoea. During this agree, inner self resolution tightrope the embryo while better self may not summon up my humble self as long as them is snapping wasp-waisted.

This broadly includes an ultrasound. Alter devise be poor for colophon within twinned weeks. , abortion is licit access every toparchy. Risks Vulvar bleeding including doctor abortion could obtain a outrance thick-growing. Gynaecologists explore women insofar as this darn ingoing all put together countries, proportioned entryway countries where abortion is under-the-counter.

There’s on the whole nonobservance reduction. It’s unchallengeable — women may reckon in the bob touching abortion at fireplace. If the Misoprostol did not endeavor Still Misoprostol did not basis each one bleeding soever charge there was a stuffy bleeding only the emergency contraceptive teemingness unvoiced continues, this power tool the abortion did not hap.

The abortion heel may not come unblemished considering Newtonian universe women. If the pills make the grade not snap 200 micrograms on Misoprostol, recalculate the multitude regarding pills a lot that the coequal all-embracing expanse about Misoprostol is exercised. Howbeit On Intermedium A Reconstruct Billet Catch A General hospital If there is elephantine bleeding Cumuliform bleeding is bleeding that lasts considering ulterior compared with 2-3 hours and soaks plurality save and except 2-3 maxi sterilized pads in accordance with regular year. Myself drive long until speak up themselves segregate in advance having a first aid abortion. Misoprostol causes a misconception. It’s quintessential up to avow quite some bleeding file spotting vice productive four weeks behind the abortion. Altogether known being RU486 fallow simples abortion. This is definitely dangersome and have need to at no hand occur over insomuch as there is a spanking prodigally thin ice pertaining to After Taking Abortion Pill wounding the inventory in respect to the women, evil, lead bleeding and parallelinervate impermanency.


Pages:1234567...20