Basic 8 step sequencer – upgrade your Atari Punk Console

The sequencer is an (mostly) electronic device which triggers sounds in steps in a continuously repeating sequence. The origin of such a machine is dating back several hundreds of years, since music machines were constructed. The one which resembles most to the modern computer based sequencing softwares are the barrel organs which were using long sheet of paper for programming. The actual format basically is a paper based version of what DAWs (Digital Audio Workstation) are mostly using.

This sequencer is a so called analog sequencer, because, well, because it is using analog electronic components and two ICs. This is very similar to the first electronic sequencers, except they used much more components. In this, no microcontrollers or any sort of software programming involved. It is a very simple device, but like the Atari Punk Console, it makes an excellent learning project and it can nicely control the console.

8 step sequencer with Atari Punk Console

8 step sequencer with Atari Punk Console

The machine uses a CD4017 decade counter IC. It is a chip which can output 10 electronic signals on different pins, one after each other. However, we only going to use 8 steps as it is more practical musically. Many sequencers have 16 or 32 steps, it is possible to chain several CD4017 together, but I did not do that in this project. (Basically, there are much better and more sophisticated sequencer designs out there, it is more recommendable to use one of those if you are more serious).

The signals (steps) are generated by making one pin on the IC continuously high-low-high-low and so on by using a “clock” to do that for us. It can be achieved using different design clocks, but one of the simplest one is a 555 in astable mode.

8 step sequencer components

8 step sequencer components

That is the same as it was used in the console, so if you have built that, it is already familiar.

This circuit was designed by me, based on several other designs freely available on the internet.

8 step sequencer schematic

8 step sequencer schematic

Features of the sequencer:

  • Variable speed control: It can control the length of each step thus the speed of the cycle
  • On/Off switch for each step
  • Variable voltage on each step, to control tone of steps
  • CV out to connect it to the tone generator
  • Standard DC power socket (9V-12V)
  • LEDs for showing speed and each active step

I have designed a 3d printable box for it, which you are welcome to use.

8 step sequencer 3d printed box

8 step sequencer 3d printed box

BOM

8 step sequencer BOM

8 step sequencer BOM

  • LEDs (any color of your choice) – 9
  • 500K variable resistor (pots) – 9
  • 100K resistor – 1
  • 1K resistor – 3
  • 1N4148 diode – 17
  • SW-DPDT, on/off switch – 9
  • 0.01 uf ceramic capacitor – 2
  • 4,7 uf ceramic or electrolytic capacitor – 1
  • CV jack of your choice, I am using 7.5mm audio jacks (same as for guitars)
  • DC power outlet of your choice
8 step sequencer + Atari Punk Console + reverb

8 step sequencer + Atari Punk Console + reverb

 

 

 

 

Z axis, hotend nozzle offset in Marlin, explained

I aim these posts for those whom has very little or no experience in setting up a DIY 3d printer. However, the information might help more experienced builders as well.

Marlin is the most popular open source control software, designed to run 3d printers and in some cases other type of CNC machines.

One of the tasks during a DIY 3D printer build, is setting correctly the Z axis offset.

DIY I3 3d Printer

My DIY I3 3d Printer

What is the Z Axis offset and why is it important? 

In order for the software ” to know” where the hotend nozzle is positioned at, we have to pre-set the dimensions of the work space of the machine. The printer uses three on-off momentary switches – with the help of the control board – to let the software to interact with the physical world. When a switch is triggered, using the preset known dimensions, Marlin can calculate any desired position of the print head.

In the case of the Z axis or extruder nozzle offset, we only concerned about one of these three switches.

This particular switch can have a few variations, but in regards of the process of setting the offset, it is irrelevant which solution we are using. However for the sake of the article here are two of the most used conventional Z axis switches:

  • Mechanical momentary on-off switch
  • Electromagnetic or inductive (metal detecting) switch

and a couple of less conventional

Currently, I am using an inductive switch with my present set up.

When we talk about the offset, we mean the physical (vertical) distance between the tip of the nozzle at the point where the Z axis switch being triggered (called “zero” or home position) and the surface of the print bed. The offset distance is important for accurately starting our print`s first layer deposition. This is also one of the important factors for ensuring proper adhesion of the molten filament and the fabricated object to the print bed.

Hotend designs have a wide variation, it is important to understand the process of setting this attribute as accurately as possible, according to your needs. Especially if you plan to use various hotends or would like to design your own.

Hotend Assembly

Hotend nozzle and inductive switch

Different switches have different trigger points, usually measured from the surface of the printer bed. This distance is not important in relation of the process of setting the offset, however – along with the position of the switch (sensor) – it has an effect on the value of the offset. A perfect design would be, where the offset is zero, i.e. the trigger point is exactly where the nozzle would touch the bed. In reality, that is quite difficult to achieve.

The first layer of our print is usually between 0.1 mm-0.3mm, therefore to keep accuracy as tight as possible, it is good practice to use hotends where the required offset is not greater than 4 mm.

Setting or fine tuning the offset in Marlin:

To determine the required value for setting the offset, a combination of control mechanisms can be used.

A smart LCD control panel makes the process easier. This allows you to make changes in the printer set up by saving the attributes into the RAMPS or MKS board`s (or any Arduino Mega based control boards) EPROM.  This is a very easy way to change most settings and to move the print head without using G-code commands. However, using a software based console/ serial monitor is still necessary.

I3 DIY printer

Smart LCD control

You can use software based control solutions, such as the console panel of most slicers (Slic3r, Repetier, etc)  or an Octopi.

I prefer to use the Arduino IDE serial monitor.

The touch screen which are often supplied with cheap Chinese kits are not suitable for the process described below.

It is advisable to get familiar with Marvin, if you want to make eg. the offset changes permanent. Besides, during an initial set up of a DIY printer, the builder has to configure the Vanilla Marvin according to the built printer. A very good source of information can be found on Marlin`s own website. Most commercial DIY kits would have their own version supplied with the kit, ready to be uploaded onto the control board.

The Process of determining the accurate offset value

  1. Set the current offset value to zero; LCD navigation “Control> Motion> Probe Z offs” or typing “M851 Z0” in the serial monitor – This will help us to easily measure the desired accurate value of it.
  2. Home your printer head; LCD navigation “Prepare> Auto home” or typing the “G28” command in the serial monitor. – This will move the nozzle to “home” or “zero” position, which means that, because at the moment the offset set to zero, the machine “thinks” that the nozzle is touching the print bed (which in reality most likely is above the print bed by a few millimeters). Make sure that the nozzle is clean and free of residue filament. It is a good idea to pre-heat the bed and the hotend for the process, although in my experience it is not absolutely necessary. If you want to be super accurate, you can move the nozzle to the position where the sensor (switch) is. For that, you need to know the exact coordinates of that position.  At this occasion, I assume that our print bed is reasonably flat.
  3. Switch the Z axis sensor off; Type “M211 S0″ on the serial monitor. There is no option in the LCD menu for that – This will allow you to move the nozzle to “negative direction”, because bare in mind, at this point the machine “thinks” the nozzle could not go any lower as it is in Zero position and would not go “under” the print bed.
  4. Move the nozzle down to level of the print bed; LCD navigation: “Prepare> Move axis> Move Z> Move minus 0.1mm increment” and make a note of the value or type “G1  Z-0.5, G1 Z-0.6″, so on, in to the serial monitor, until the nozzle is at the desired position and make a note of the correct value (the value of Z) – A good practice is to put a piece of paper under the nozzle and move it (the nozzle) down till it touches the paper. You still need to be able to pull the paper without much effort. The offset value will always be negative, because of the physical attributes of the hotend assembly.
  5. Move the Z axis back up. LCD navigation “Prepare> Move axis> Move Z> Plus increment” or  type e.g. “G1 Z3” in the serial monitor. Be careful not to move to negative direction (downwards) as this might damage your hotend assembly and/or print bed
  6. Switch the Z axis sensor back on typing “M211 S1″ in the serial monitor.
  7. Set the determined value as the offset; LCD Navigation “Control> Motion> Probe Z Offs or typing “M851 Z<value of the offset>” in the serial monitor

    Z_offset_set_marlin

    Serial Console in the Arduino IDE

  8. Save that value in the EPROM of your controller board; LCD navigation: “Store Settings” or type “M500” in the serial monitor.
  9. Test by printing your favorite calibration print. I like to print Marvins from Thingiverse. (I have an army of Marvins). What you are looking for is good adhesion and a slight “squash” of the first layer of the print. In my experience, sometimes minor adjustments are needed in the pre-determined offset value to have it just right.
    I3 hotend assembly

    First layer and hotend assembly

  10. Consider to make your work “permanent” by updating the copy of Marlin which is running on your board. That requires to change your firmware and upload the updated one. The command is around line ~781 at the “Configuration.h” tab. Search for “#define Z_PROBE_OFFSET_FROM_EXTRUDER” and change the value.

That is it. Congratulation, you have successfully set the correct Z axis offset value on your 3D printer.