• Welcome CableEnable Labs

    Dima Matasov06/07/2024 at 17:48 0 comments

    I'm thrilled to announce the launch of the CableEnable Labs YouTube channel, where I'll be documenting our journey in creating my game console with a punch screen. The name 'Punch!' captures the essence of punch cards, punches in retro fighting games, punchlines in jokes, and, of course, the physical punches of the screen itself.

    Hall Sensors and Initial Setbacks

    First off, I received some Hall sensors for testing. Unfortunately, I was misled by the numbers on the permanent magnets and ended up with sensors that are too sensitive. Placing them on the other side of the board might cause them to pick up signals from neighboring cells. Despite this setback, the scale is roughly correct, so not all is lost.

    Assembling the First PCB

    All the components have finally arrived, and I managed to assemble the first version of the PCB. Soldering controllers is surprisingly satisfying—flux really is magic!

    Observations and Adjustments

    1. Diodes: While I could manually solder 1.5x1.5mm diodes, the 1x1mm ones proved too challenging. I’ll be using the PCB assembled on the factory for those.
    2. Capacitors: SMD 0603 capacitors soldered without any issues.
    3. Resistor Arrays: The SMD resistor arrays for pull-downs are problematic; I couldn’t tell if they were soldered correctly or if they were shorting the tracks. I’ll likely avoid them in future iterations.
    4. Solenoid Contacts: I made a mistake with the vias instead of pads for the solenoid contacts, resulting in filled holes that can’t be soldered. This will be fixed in the next iteration, but for now, I’ll test on a makeshift diode matrix.
    5. Triple Diodes: The triple diodes lacked side markings, requiring me to manually test them before soldering. I've opted for paired diodes with higher current limits for solenoids and single diodes for limit switches in the next version.

    It’s Alive!

    Despite the hiccups, the basic setup works! A few more takeaways:

    • The resistor arrays were indeed poorly soldered and need to be replaced with something more reliable.
    • The extra pin for clearing shift registers was confusing during testing and likely unnecessary.
    • Using exposed contacts on the board didn’t work as expected for grounding; Hall sensors and buttons are more reliable.

    New Components and Testing

    The last few weeks have been intense:

    1. LED Cells: My LED cells from PCBWay arrived and they work! I still need to figure out how to make diffusers for more even lighting and redesign the voxel supports to better accommodate the wires. There was one defective pixel, but luckily I ordered spares.
    2. Sketching Words: I wrote a small sketch to display words using a 4-bit font (will showcase this later).

    Control Scheme and Solenoids

    I tested 60 types of limit switches and a dozen Hall sensors, finally selecting the best ones and redesigning the control scheme to include control buttons. This will be sent for printing this week. Additionally, my new solenoids and holders printed well with the SLA printer, needing only minor adjustments for component heights.

    New Workspace and YouTube Channel

    I’ve also set up a proper workspace and filmed the material for our first YouTube video. It will be out soon, and you can expect videos on solenoids and LEDs next. Subscribe to the channel to stay updated!

    YouTube Channel: CableEnable Labs

    Shoutout to Our Sponsor

    A huge thank you to PCBWay for sponsoring the LED PCB print and assembly. Their support has been crucial in moving this project forward. They were super helpful and transparent throughout the ordering and production, so if you need high-quality PCB manufacturing and assembly service, I highly recommend checking out PCBWay!

    pcbway - logo - Maker Faire NoVa

    Stay tuned for more updates, and thank you for your support!

  • Solenoids, please

    Dima Matasov05/09/2024 at 03:34 0 comments

    The last couple of days I spent in a war with solenoids and I must say, I was completely losing to them :)

    I tried several designs: with one and two coils, with different magnets, and with springs/rubber bands. Eventually, I think I've found a working solution, but I was on the verge of giving up to the damned physics and throwing in the towel haha. Along the way, I remembered how to solder steel using aspirin: it smells quite strongly...

    So, conclusions:

    • Magnetic conductivity is a serious matter. Not all iron pieces are magnetized equally: stainless steel magnetizes poorly, steel for nails and bolts is passable, but special ferrite rods for solenoids are the best. Moreover, they are much lighter than iron pieces and turn out to be more efficient.
    • Neodymium magnets are just magic! This tiny thing is very strong for its volume.
    • Simply wrapping a coil around a rod is not enough, you need to close the magnetic circuit (or understand at which point you intend to attract/repel something.
    • Rubber bands and springs are not friends of miniature constructions - they are often very stiff. I can't imagine how various wristwatches are made so precise. Also, finding the right spring in the states is harder and more expensive than ordering a microchip lol.

    I also experimented with the number of turns of the solenoid and came across an amusing paradox:

    1. The magnetic field strength of a solenoid B = u(N/L)I where u is the relative magnetic permeability, N is the number of turns, L is the length of the solenoid, I is the current.
    2. I = V/R according to Ohm's law, and R is directly proportional to the length of the wire, that is, the number of turns. I ~ V/N

    we get that B ~ u(N/L)(V/N) = u(V/L) basically, no matter how much you wind - it’s all the same hahaha whether 1 turn or 1000. When I came with this question to GPT and asked it to draw a graph of the optimal number of turns for my parameters, it reasoned in the same way and drew me a constant :D

    Fortunately, good old googling threw me this wonderful post on Reddit: https://www.reddit.com/r/ElectricalEngineering/comments/5rc0y4/calculating_the_ideal_number_of_turns_to_maximize/

    In short, we forget about 2 important assumptions:

    1. Actually, we forgot about the internal resistance of the power source in this equation: B ~= N/(Rinternal + kN). okay, we already get a curve asymptotically converging to a constant - at least intuitively understandable
    2. And while we're winding, we're increasing the diameter of the circles. that is, the resistance per circle grows faster than the strength of the magnet and the curve actually has an extremum.

    Another funny conclusion from the first equation - winding the coil lengthwise seems useless! (doubling the number of turns wound one on top of the other, we double the length of the solenoid, the twos cancel out, hehe) the most effective strategy - winding a single wire thickness spiral! but the problem with that is that such a spiral will have a very very low resistance and a hellishly huge current will flow through it (if found) and burn it :) so the length of the coil actually regulates its energy consumption. All other things being equal, a long coil with higher resistance and a smaller current is more efficient than a single-wire spiral.

    Here's a solenoid force calculator I made :)

    I put together a working prototype of one voxel. At 24V power, it manages with quite short current pulses, but if you jerk it back and forth, it heats up significantly. Perhaps it's worth considering temperature control.

    Also, I learned about PCB solenoids / PCB motors while figuring all this out. Perhaps this is a decent way to further miniaturize the entire construction https://www.youtube.com/@CarlBugeja

    And one more: I recently stumbled upon a project very similar to mine on hackaday: https://hackaday.io/project/191181-electromechanical-refreshable-braille-module

    Amazing tiny stuff here, kudos!

  • One step back

    Dima Matasov05/09/2024 at 03:03 0 comments

    So, a bit of background:

    When I was a kid, one of my favorite games was a very geeky DOS game - Snake Battle (Змеиный Бой) by Gamos (You can play it here through DosBox right in the browser!). The essence of the game was that you had to program a snake and send it into the arena to compete with other snakes in biting off each other's tails :) 

    Over time, it had a couple of reincarnations like this one, and it was clearly inspired by one of the oldest games for programmers — CRobots.

    But Snake Battle was actually brilliant compared to them because of its visual language used for writing the "brains" of the snakes: you were limited to just 9 slots of 7x7 cells, in which you "drew" game situations that the snake tried to apply on the field sequentially. This provided quite strict game frameworks, which fueled the excitement, and even as a child, you understood that the best champion snake also had only 9 "brains" in its head, and if you tried hard, you could approach or outsmart it. In purely programming games with full Turing-complete languages, the best snakes/agents are monstrous neural networks that sweaty nerdy researchers write over long months — the motivation to compete with them is significantly more phantom.

    It should look something like this:

    • A physical board of 21x21 (in the original game it was 25x25, but we programmers love everything to divide by 8, and 25 divides by 8 very wastefully)
    • Each cell of the board is a small bistable plunger on a solenoid that can rise up and lower down: usually, the field is lowered, but the snake's body protrudes above it
    • On the cap of each such plunger, there are 9 RGB LEDs to draw snakes and other objects
    • Optionally, a phone app that pairs with the field via BLE and can launch games on the field. Or acts as a joystick, if you decided to run a regular snake game and eat apples
    • All this is quite small, say no more than 15x15 cm, and runs on a battery.

    But then I realized that there you could launch quite a large class of retro toys like puzzles, city builders, platformers, and other minesweepers. Especially if you make each plunger also a button (that is, you can press it with your finger or—possibly—by touching it in the lowered position—raise it.

    For now, the question of what exactly would be interesting to launch there is open, we'll come back to it later.