simulation

[Pong] has joined an elite club of people who have designed and built their own computer – including a CPU created from discrete 7400 series logic. His computer is the Almost Simple As Possible Computer 3 (ASAP-3). ASAP-3 is not a completely new design. The architecture is based upon the SAP series of computers from Albert Malvino’s book, Digital Computer Electronics. [Pong] looked at quite a few of the “modern retro” computers such as Magic-1, Big Mess o’ Wires 1, and the Duo. These computers were beyond his skill levels back then, so he began to build his own system. His primary design goal was to be able to run a 4 function calculator program.

One thing that can’t be stressed enough is the fact that [Pong] made his design work much easier by using lots of simulation. His tool of choice was Proteus Design Suite. While simulation can’t solve every problem, it can often help in verifying that a given design is sound. The ASAP-3’s instruction set is microcode, based upon the 8085 series instruction set. The microcode itself is stored on Flash ROMS. Using microcode makes ASAP-3 very flexible. Don’t have a machine instruction you need? No problem – just write one up. When all was said and done, [Pong] had over 100 instructions spread over 3 Flash ROM chips.

The hardware was only half the battle – [Pong] found writing the software just as challenging. He wrote all the software by hand in his own machine code. This is where the simulation mentioned above really saved him some time. Even with simulation he still ran into some problems. The ASAP-1 is limited to a clock speed of around 500kHz. Above that, glitches from the ROM chips start triggering the asynchronous inputs in some of the registers. [Pong] doesn’t have a logic analyzer on hand, so he wasn’t able to track this one down further. He also found a (update simulation only) issue with the carry bit on the 74LS181 bit slice ALU. In certain circumstances the carry bit would not propagate correctly. [Pong] corrected this by using a ROM as a look up table replacement for certain ‘181 functions. Even with these limitations, this is still a great hack!

[Henrik] has been working on a program to design electronic circuits using evolutionary algorithms. It’s still very much a work in progress, but he’s gotten to the point of generating a decent BJT inverter after 78 generations (9 minutes of compute time), as shown in the .gif above.

To evolve these circuits, [Henrik] told a SPICE simulation to generate an inverter with a 5V power supply, 2N3904 and 2N3906 transistors, and whatever resistors were needed. The first dozen or so generations didn’t actually do anything, but after 2000 generations the algorithm produced a circuit nearly identical to the description of a CMOS inverter you’d find in a circuit textbook.

[Henrik] says his algorithm didn’t test for how much current goes through the transistors, so implementing this circuit outside of a simulation will destroy the transistors and emit a puff of blue smoke. If you’d like design your own circuits using evolution, [Henrik] put all the code in a git for your perusal. It’s damn cool as it stands now, and once [Henrik] includes checking current and voltage in each component his project may actually be useful.

Being a dedicated father, soccer coach, general tinkerer, and electrical engineer, [Dave] decided to build a soccer simulator video game for his son’s 6th birthday party. The concept behind the game is to put a soccer ball on a tee and have an eager line of six-year-olds kick the ball into the goal. A video of a goalie is projected behind the net, and sensors in the goal will determine if the player scored a goal or not.

The first part of [Dave]’s project was getting footage of a goalie diving for a soccer ball. Luckily, [Dave] is friends with [Mark Macdonald], a former NCAA goalie. After 10 minutes in the park with [Mark] and a 720p camera, [Dave] had all the footage needed to build his video game.

To detect where the soccer ball passed into the goal, [Dave] built a small soccer goal studded with infrared LEDs and infrared beam break sensors. Combined with a small switch underneath the ball tee, the software knows the time of flight and where the ball crossed into the goal. The game processes these two numbers to determine if it’s a goal, or was caught by the retired pro goalie.

The kids at the birthday party lined up to play [Dave]’s soccer game – a huge achievement getting 6-year-olds to wait their turn. We admit that we’d like to have a go at this game, although we’re pretty sure we saw an arcade version of this game years and years ago.

Simulators might have lost their cool for a lot of gamers, but [Fergo] is trying for a comeback. He built an electronic dashboard for a car racing simulator.

[Fergo] spends most of his track time on iRacing, an MMO racing simulator. Possibly due to a little bit of influence from Formula 1 steering wheels, he wanted to add to his dashboard that included Microsoft racing wheel. The dashboard includes RPM lights, a gear indicator, five general buttons, a rotary encoder, and a pit limiter, rev limiter and low fuel indicators.

The build is powered a VB.NET app that connects the iRacing API to an Arduino. To get all those buttons and LEDs talking to the Arduino, [Fergo] used an IO expander that communicates over an I2C bus. It’s a surprisingly simple design that should scale well if [Fergo] ever decides to expand his cockpit. We’re not sure if it could handle controlling a 737, but it would be more than sufficient for a Cessna 172 or Mercury capsule.

Check out [Fergo] tearing around the track with his buttonbox dashboard after the break.