The Pick and Place machine’s main effectors are the vacuum nozzles that pick up components and place them on PCBs.
Unlike a CNC mill with a spindle, a Pick and Place machine uses:
This section covers how to configure and control these systems with Smoothieboard.
Pick and Place machines use vacuum to pick up and hold components during placement.
The vacuum system typically consists of:
Many Pick and Place machines use vacuum sensors to detect whether a component has been successfully picked up.
These sensors read vacuum pressure through ADCs (Analog to Digital Converters) on the Smoothieboard.
To read vacuum sensors, you can use the Temperature Control module configured to read ADC values directly, bypassing the thermistor math for linear reading.
Here is an example vacuum sensor configuration for a dual-nozzle setup:
# VACUUM SENSING
# LEFT Nozzle Vacuum configuration
temperature_control.vac_n1.enable true # Whether to activate this ( "hotend" ) module at all.
temperature_control.vac_n1.sensor ad8495 #
temperature_control.vac_n1.ad8495_pin 0.23 # Pin for the thermistor to read
temperature_control.vac_n1.ad8495_offset 0 #
temperature_control.vac_n1.heater_pin nc # Pin to controls the heater, nc if a read only thermistor.
temperature_control.vac_n1.readings_per_second 500 # How many times per second to read temperature from the sensor.
temperature_control.vac_n1.get_m_code 104 # Calling this M-code will return the current temperature.
temperature_control.vac_n1.designator VAC # Designator letter for this module
temperature_control.vac_n1.rt_curve 20.0,220,120,6000,220,120000
# RIGHT Nozzle Vacuum configuration
temperature_control.vac_n2.enable true # Whether to activate this ( "hotend" ) module at all.
temperature_control.vac_n2.sensor ad8495 #
temperature_control.vac_n2.ad8495_pin 0.24 # Pin for the thermistor to read
temperature_control.vac_n2.ad8495_offset 0 #
temperature_control.vac_n2.heater_pin nc # Pin to controls the heater, nc if a read only thermistor.
temperature_control.vac_n2.readings_per_second 500 # How many times per second to read temperature from the sensor.
temperature_control.vac_n2.get_m_code 105 # Calling this M-code will return the current temperature.
temperature_control.vac_n2.designator VAC # Designator letter for this module
temperature_control.vac_n2.rt_curve 20.0,220,120,6000,220,120000
Connect your vacuum sensor to one of the thermistor inputs on the Smoothieboard (T0-T3).
In the example above:
You can then read the vacuum level using the configured M-codes (
To control vacuum solenoids that turn vacuum on and off to each nozzle, you can use the Switch module.
Here’s an example configuration for controlling vacuum solenoids:
# Left nozzle vacuum solenoid
switch.vacuum_left.enable true #
switch.vacuum_left.input_on_command M42 # M42 with S parameter to control
switch.vacuum_left.input_off_command M43 # Or use M42 S0
switch.vacuum_left.output_pin 2.4 # Small mosfet output pin
switch.vacuum_left.output_type digital # Digital on/off control
# Right nozzle vacuum solenoid
switch.vacuum_right.enable true #
switch.vacuum_right.input_on_command M44 #
switch.vacuum_right.input_off_command M45 #
switch.vacuum_right.output_pin 2.5 # Small mosfet output pin
switch.vacuum_right.output_type digital #
Wire your solenoid valve to one of the small mosfet outputs on the Smoothieboard. Make sure to respect polarity and add a protection diode if not already present on newer boards.
On some Pick and Place machines, the nozzle head (Z axis) is controlled by a hobby servo motor rather than a stepper motor.
By default in Smoothie, hobby servos are controlled via the Switch module using M-codes such as M280.
This works, but that’s not how you usually address a Z axis.
If you want extra convenience by being able to talk to your hobby servo as if it was a Z axis (which means you will also be able to use it in places like homing or probing the way you typically use a Z axis), then you can use this special branch of Smoothie that implements this feature:
Once you compile this branch, you will be able to use your hobby servo as a Z axis (and other such switch <-> axis associations).
For standard servo control using M-codes, configure as follows:
# Servo control for nozzle Z axis
switch.servo_z.enable true #
switch.servo_z.input_on_command M280 # Standard servo control command
switch.servo_z.output_pin 2.5 # Servo signal pin
switch.servo_z.output_type hwpwm # Hardware PWM for servo
switch.servo_z.pwm_period_ms 20 # 20ms period for standard servos
Use M280 S90 to set the servo to 90 degrees, for example.
If your Pick and Place machine has multiple nozzles, you’ll need to configure:
Use the Switch module’s ability to create multiple named instances to control each nozzle independently.
Once configured, test your vacuum system:
Always test carefully with low-value components first before running production jobs.