Sunday, June 13, 2021

The ANT PCB Maker - XXL conversion (WIP part1)

 To understand what i am building please take a look into the presentation of the ANT PCB Maker.


 I started building the original machine shortly after the release of the project as i like CNC machines and always wanted to make some small PCBs for some projects. For this first build the only changes i made was using Nema 17 instead of Nema 11 for X/Y Axis and later on i designed a custom electronics enclosure and added a cable chain. 
The main things i wanted to be improved for my bigger build where the following:
- A bigger working area as i want to create PCBs for keyboard style input devices.
- A better motor for the z axis. The one in the first version was way under powered and the current build of the Ant comes with a better solution (but still close to its limits).
- A better modularity of the CNC head to exchange with different tools.
- A less noisy spindle motor as i live for rent and don't want to anger my neighbors.
- Wood and possibly even metal engraving? Who knows...

I made some calculations on paper and came up with an aluminium profile length of 320mm for X and Y.
This way i wanted to achieve a working area that could work with 150x200mm PCBs. I also switched from the 10mm Makerbeam profiles to 20mm profiles.
In the next step i designed electronics enclosure, Nema 17 mounts for X/Y and added linear rails to my design.

The electronics enclosure was designed more closed than the original design to protect from dust. In the current state the top is open as i still have to design a mount for a cable chain. I have 2 connections for external power supplies so i could separate the power for spindle motor and the stepper motor electronics.

The second step was designing the Y carriers with X axis and the belt mounts on the front corners. I have chose 10mm rods instead of the 6mm rods for the X axis. The mounts for redirecting the belts with pulleys are designed more robust than the original ones.


The most complicated construction was the wagon mounted on the X axis. The design is close to the the original design except for the Z motor. All the mountings for the bearing were designed in a way that replacing/removing them is pretty easy. So if i want to make updates to the design i can remove them without using raw force.
I installed 4 end stops for X and Z and modeled cable canals inside the print to hide the cables. 
As i want a bigger motor and more flexibility in changing tools i went the classic CNC way and mounted the motor on top with its threaded rod between the Z axis rods (6mm).  

In case you miss the threaded rod in this picture. Like some other parts i just couldn't find correct models - so it only exists 'in my head'.

This construction also has mounts for a short cable chain on the left to hold the cables to the spindle motor.

The last step (so far) was adding an experimental mount for a Proxxon Micromot 50/E (Amazon) that i already have and that is super silent in hand operation.

Unfortunately the Micromot does not stay quiet when put into the mount. The machine acts as an resonance body and the noise at 20k rpm gets pretty close to the original ANT. While achieving a tiny bit less noise at much higher speed the downside is that the spindle is farther away from the X axis than it would be possible with a configuration like in the ANT.
What exactly causes the resonances is hard to tell. Using thicker rods than 6mm might help or printing with more infill instead of the 60% i used. But since reprinting or even redesigning would take a lot of time i probably won't have the answer soon.

The current state of my project compared to the (mostly) original ANT:

The next things i have to do are:
- Add end stops for the Y axis.
- Create create cable chain mount on electronics enclosure and on head.
- Create a mount for MDF board and put PCB mounts on it.
- Find a final solution for a spindle motor with less noise.



Wednesday, October 3, 2018

The most basic DIY selfdestruct-controller 101 for Star Citizen with Arduino Leonardo

The noises in the background are from my 3d-printer creating parts for my "real" controller...

Creating a simple DIY input controller with Arduino Leonardo is pretty easy.

First you need to setup the hardware:

Therefor you need a controller board like the Leonardo that is able to send keyboard commands via USB. Then you have to create a circuit between 2 pins (usually ground pin and a signal pin) that you can open and close. The most basic version is simply wiring and unwiring those pins by hand. So this was made to demonstrate this in the most basic way i could think of.
Last but not least you need to connect the Board via USB to you computer to finish the hardware setup. Now you are able to program the board with software like Arduino IDE. After that you will be able to send keyboard commands from board to PC.


Now you can program the board. I won't describe how to use the Arduino IDE in detail as there are many tutorials in the web already - like this official one on the Arduino website.

The Code:


/*
  Input Pull-up Serial

  This example demonstrates the use of pinMode(INPUT_PULLUP). It reads a digital
  input on pin 2 and prints the results to the Serial Monitor.

  The circuit:
  - momentary switch attached from pin 2 to ground
  - built-in LED on pin 13

  Unlike pinMode(INPUT), there is no pull-down resistor necessary. An internal
  20K-ohm resistor is pulled to 5V. This configuration causes the input to read
  HIGH when the switch is open, and LOW when it is closed.

  created 14 Mar 2012
  by Scott Fitzgerald

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/InputPullupSerial
*/

//include keyboard library for key commands
#include "Keyboard.h"

int lastVal = HIGH;

void setup() {
  //configure pin 2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);
}

void loop() {
  //read the pushbutton value into a variable
  int sensorVal = digitalRead(2);
  //print out the value of the pushbutton

  // Keep in mind the pull-up means the pushbutton's logic is inverted. It goes
  // HIGH when it's open, and LOW when it's pressed. Turn on pin 13 when the
  // button's pressed, and off when it's not:
  if (sensorVal == HIGH) {
    if (lastVal == LOW){
      Keyboard.release(KEY_BACKSPACE);
      delay(50);
    }
    lastVal = HIGH;
  } else {
    if (lastVal == HIGH){
      Keyboard.press(KEY_BACKSPACE);
      delay(50);
    }
    lastVal = LOW;
  }
}
 
This code is based on an tutorial on the Arduino website: https://www.arduino.cc/en/Tutorial/InputPullupSerial

What the code does is reading the signal on pin 2 and comparing it to its last value. This way we find out when the state of the signal changes. When the state changes from HIGH to LOW send the command that Backspace was pressed. When the state changes from LOW to HIGH we want the button to be released.
Now imagine to cut the wire into half and putting a push button in between and you have a complete Star Citizen controller once you put it into a box.

The Leonardo board with cable in pin 2 and the other end next to ground pin. Once it is put into ground the board immitates a pressed backspace button.

Friday, September 28, 2018

Hello World

Hello World!

This is my first post testing how this works. :)