Skip to main content

Analog In

Hardware

The AutomatePro comes with 14x Analog inputs for measuring a range of different analog sensors types, such as automotive or industral sensors.

Connector Pinout

Analog Input Specifications

ParameterValue
Voltage Input Range0-10V (optional 4-20mA input or integrated automotive 5V pullup on request)
Sample Rate30Hz
Measurement Resolution2.4414mV/increment (12bit)
Number of Inputs14

ROS API

Publishers

TopicTypeDescription
/io/ainautomatepro_interfaces/msg/AnalogInContains the states of the analog inputs. AutomatePro supports 14 analog input pins. Each input pin is referred to as ain_XX, where XX is the pin number, ranging from 01 to 14.

Input Pins: ain_01 - ain_14
DataType: uint16
Unit: mV
Min: 0 in mV
Max: 10000 in mV
Sample Rate: 30Hz
tip

Each message includes a timestamp in the header, indicating when the IO-Controller collected the data. It is recommended to use this timestamp for any time-sensitive data processing, as it ensures that transport delays are accounted for, providing accurate timing for downstream operations.

Example

Example code snippet prints the states of the analog inputs by subscribing to the /io/ain topic.

import rclpy
from rclpy.node import Node
from automatepro_interfaces.msg import AnalogIn

class AnalogInSubscriber(Node):

def __init__(self):
super().__init__('analog_in_subscriber')
self.subscription = self.create_subscription(
AnalogIn,
'/io/analog_in',
self.subscriber_callback,
10)

def subscriber_callback(self, msg):
self.get_logger().info(
f'Received AnalogIn message:\n'
f'AIN_01: {msg.ain_01}\nAIN_02: {msg.ain_02}\nAIN_03: {msg.ain_03}\n'
f'AIN_04: {msg.ain_04}\nAIN_05: {msg.ain_05}\nAIN_06: {msg.ain_06}\n'
f'AIN_07: {msg.ain_07}\nAIN_08: {msg.ain_08}\nAIN_09: {msg.ain_09}\n'
f'AIN_10: {msg.ain_10}\nAIN_11: {msg.ain_11}\nAIN_12: {msg.ain_12}\n'
f'AIN_13: {msg.ain_13}\nAIN_14: {msg.ain_14}'
)

def main(args=None):
rclpy.init(args=args)
node = AnalogInSubscriber()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()

if __name__ == '__main__':
main()

Run the node using the following command:

ros2 run automatepro_python_tutorials analog_in_node