Reading values from digital Vacuum Pressure sensors
-
@dc42, @T3P3Tony ,
i have Vacuum Pressure sensors that have connected to DUET 3 6XD and 3HC boards. I need help in reading them correctly using both Duet 3 6XD web console and OpenPnP. Below is what i have done so far .- 6 x SMC Vacuum Pressure Sensors (ZSE30A-01-N-L ) -- 3 Wire (Brown(DC+) , Blue(DC-), Black(signal OUT 1) )
ZSE30A-01-N-L Datasheet pdf for the digital Nozzle pressure
Connections of each SMC Digital Vacuum Pressure Sensors (ZSE30A-01-N-L ) to Duet3 6XD & 3HC
( Only 3 Wire cable available )Brown Wire ===> ( DC+) ===> 3HC --- 24V from B+
Blue Wire ===> (GND ) ===> 3HC --- 0V from B-
Black Wire ===> (signal OUT 1) ===> 3HC --- IOx.In on IO3.In to IO5.In
White Wire ===> Not Connected
Orange Wire ===> Not Connected- 6 x Solenoid Valve Vacuum Sensors ( 5 Wires - Brown(DC+) , Blue(DC-), Black(NPN signal OUT 1), White(DC 1-5V Analog Output 1 ) , Orange (DC 1-5V Analog Output 2 ) ) -- LINGERA CM85-10-A-6S-P04 (integrated solenoid valve -- i think this is a local chinese market version of SMC type CM85 Vacuum Generators ) LINGERA_CM85_10_A_6S_P04_Vacuum_generator_operating_instructions.pdf
lingera_cm85_10_a_6s_p04_vacuum_generator_operating_instructions.pdf
Connections of each CM85 Vacuum Generator Pressure Sensors to Duet3 6XD & 3HC
( Only 5 Wire cable available )PLC Used: Mitsubishi FX3U-48MR/ES
Brown Wire ===> ( DC+) ===> 6XD --- 24V from V_OUTLC1 of the OUTx
Blue Wire ===> (GND ) ===> 6XD --- 0V from GND of the OUTx
Black Wire ===> (NPN signal OUT 1) ===> 6XD --- IOx.In on IO3.In to IO8 ( Connected to PLC X-inputs X1 to X6 inputs via Relay Ports )
White Wire ===> Analog Output 1 ===> Connected to PLC Y-output Y0, Y2, Y4, Y6, Y10, Y12 for ( VG1, VG2, VG3, VG4, VG5, VG6 Open(ON) ) via Relay Ports
Orange Wire ===> Analog Output 2 ===> Connected to PLC Y-output Y1, Y3, Y5, Y7, Y11, Y13 for ( VG1, VG2, VG3, VG4, VG5, VG6 Closed(OFF) ) via Relay PortsNOTE: All Duet3 6XD and all the 3HC connections share a Common Ground to avoid any loops
ON DUET3 6XD config.g file i have :
MY CONFIGS IN DUET3 6XD for Digital Vacuum Pressure sensors
;***Inputs ; SMC NPN Vacuum Pressure Digital Sensors -ZSE30A-01-N-L (Not Z-Probe) M950 J1 C"!2.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 1 M950 J2 C"!2.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 2 M950 J3 C"!2.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 3 M950 J4 C"!3.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 4 M950 J5 C"!3.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 5 M950 J6 C"!3.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 6 ;M950 J7 C"!4.io1.in" ; Duet 3 3HC CAN_ID 4 Port 1- Vacuum Sensor for Compressed Air Storage Tank ; Integrated SMC Vacuum Generators (Negative pressure) IO pins for the Nozzles to pickup SMT parts . M950 J8 C"!0.io3.in" ; Duet 3 3HC CAN_ID 0 Port 3- VG1 - Vacuum Sensor Nozzle 1 M950 J9 C"!0.io4.in" ; Duet 3 3HC CAN_ID 0 Port 4- VG2 - Vacuum Sensor Nozzle 2 M950 J10 C"!0.io5.in" ; Duet 3 3HC CAN_ID 0 Port 5- VG3 - Vacuum Sensor Nozzle 3 M950 J11 C"!0.io6.in" ; Duet 3 3HC CAN_ID 0 Port 6- VG4 - Vacuum Sensor Nozzle 4 M950 J12 C"!0.io7.in" ; Duet 3 3HC CAN_ID 0 Port 7- VG5 - Vacuum Sensor Nozzle 5 M950 J13 C"!0.io8.in" ; Duet 3 3HC CAN_ID 0 Port 8- VG6 - Vacuum Sensor Nozzle 6 ;***Outputs ; The VGs Discrete digital inputs therefore triggered with following commands to ON / OFF M950 P0 C"!0.out3" Q500 ; Duet 3 6XD (V_OUTLC1 , GND ) to Phoenix Contact 24V Relay 1 ( A1+, A2- ). Allocate OUT3 to Relay 1 M42 P0 S1 ; set 100% PWM on OUT3 out3 pin ( OFF or CLOSE VG1 == X6(R1) is OFF) -- Start in a Closed VG status ;M42 P0 S0 ; set 0% PWM on OUT3 out3 pin ( ON or OPEN VG1 == X6(R1) is ON) M950 P1 C"!0.out4" Q500 ; Duet 3 6XD (V_OUTLC1 , GND ) to Phoenix Contact 24V Relay 1 ( A1+, A2- ). Allocate OUT4 to Relay 2 M42 P1 S1 ; set 100% PWM on OUT3 out3 pin ( OFF or CLOSE VG2 == X7(R2) is OFF) -- Start in a Closed VG status ;M42 P1 S0 ; set 0% PWM on OUT3 out3 pin ( ON or OPEN VG2 == X7(R2) is ON) M950 P2 C"!0.out5" Q500 ; Duet 3 6XD (V_OUTLC1 , GND ) to Phoenix Contact 24V Relay 1 ( A1+, A2- ). Allocate OUT5 to Relay 3 M42 P2 S1 ; set 100% PWM on OUT3 out3 pin ( OFF or CLOSE VG3 == X10(R3) is OFF) -- Start in a Closed VG status ;M42 P2 S0 ; set 0% PWM on OUT3 out3 pin ( ON or OPEN VG3 == X10(R3) is ON) M950 P3 C"!0.out6" Q500 ; Duet 3 6XD (V_OUTLC1 , GND ) to Phoenix Contact 24V Relay 1 ( A1+, A2- ). Allocate OUT6 to Relay 4 M42 P3 S1 ; set 100% PWM on OUT3 out3 pin ( OFF or CLOSE VG4 == X11(R4) is OFF) -- Start in a Closed VG status ;M42 P3 S0 ; set 0% PWM on OUT3 out3 pin ( ON or OPEN VG4 == X11(R4) is ON) M950 P4 C"!0.out7" Q500 ; Duet 3 6XD (V_OUTLC1 , GND ) to Phoenix Contact 24V Relay 1 ( A1+, A2- ). Allocate OUT7 to Relay 5 M42 P4 S1 ; set 100% PWM on OUT3 out3 pin ( OFF or CLOSE VG5 == X12(R5) is OFF) -- Start in a Closed VG status ;M42 P4 S0 ; set 0% PWM on OUT3 out3 pin ( ON or OPEN VG5 == X12(R5) is ON) M950 P5 C"!0.out8" Q500 ; Duet 3 6XD (V_OUTLC1 , GND ) to Phoenix Contact 24V Relay 1 ( A1+, A2- ). Allocate OUT8 to Relay 6 M42 P5 S1 ; set 100% PWM on OUT3 out3 pin ( OFF or CLOSE VG6 == X13(R6) is OFF) -- Start in a Closed VG status ;M42 P5 S0 ; set 0% PWM on OUT3 out3 pin ( ON or OPEN VG6 == X13(R6) is ON)
On OpenPnP Configuration i have :
For each Vacuum Pressure sensor, i have ACTUATE_READ_COMMAND and ACTAUATE_READ_REGEX in the following formats depending on each J[x] pin assigned
ACTUATOR_READ_COMMAND M409 K"sensors.gpIn[0].value" ACTUATOR_READ_REGEX .*\"result\":(?<Value>\d+).* OR .*"result"[ \t]*:[ \t]*(?<Value>\d+).* OR .*(?<Value>\d+).*
i.e
ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[0].value" ------------> SMC 1 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[1].value" ------------> SMC 2 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[2].value" ------------> SMC 3 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[3].value" ------------> SMC 4 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[4].value" ------------> SMC 5 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[5].value" ------------> SMC 6 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[8].value" ------------> VG 1 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[9].value" ------------> VG 2 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[10].value" ------------> VG 3 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[11].value" ------------> VG 4 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[12].value" ------------> VG 5 ACTUATOR_READ_COMMAND ==> M409 K"sensors.gpIn[13].value" ------------> VG 6 ACTUATOR_READ_REGEX ==> .*\"result\":(?<Value>\d+).* ------------> Same for all Vacuum Pressure Sensors
But when i try to read the Vacuum Pressure Sensors i don't get the correct reading :
SMC Digital Pressure Sensors and Vacuum Generators with Digital Pressure Sensor
reading from OpenPnP
NOTE: i get same thing even from Duet3 6XD web consoleACTUATE_READ_COMMAND: M409 K"sensors.gpIn[8].value" ACTUATE_READ_REGEX: .*\"result"[\t]*:[\t]*(?<Value>\d+).* 2024-09-12 22:01:53.707 ReferenceActuator DEBUG: PSensorVG1.actuate(true) 2024-09-12 22:09:06.041 GcodeAsyncDriver DEBUG: [GcodeAsyncDriver:COM3] commandQueue offer >> M409 K"sensors.gpIn[8].value" 2024-09-12 22:09:06.042 GcodeAsyncDriver$WriterThread TRACE: [GcodeAsyncDriver:COM3] >> M409 K"sensors.gpIn[8].value" 2024-09-12 22:09:06.044 GcodeDriver$ReaderThread TRACE: [GcodeAsyncDriver:COM3] << {"key":"sensors.gpIn[8].value","flags":"","result":0} 2024-09-12 22:09:06.044 GcodeDriver$ReaderThread TRACE: [GcodeAsyncDriver:COM3] << ok 2024-09-12 22:09:06.044 GcodeDriver TRACE: GcodeAsyncDriver got response matching "^ok.*" after 2ms
my question is a simple one: is there a reason when i try to read the Vacuum Pressures i get either 0 result even though right now when i look at the pressure gauge it read -0.5 or -0.3 . The default & Minimum display resolution is 0.1 . Not sure if it only return integers without decimals
- 6 x SMC Vacuum Pressure Sensors (ZSE30A-01-N-L ) -- 3 Wire (Brown(DC+) , Blue(DC-), Black(signal OUT 1) )
-
@developeralgo222 from the datasheet it appears to me that the digital output turns on when the pressure is within a certain range. You can't use it to measure the pressure, only to determine whether it is in the programmed range.
The ways to connect NPN and PNP output sensors to a Duet are documented in the page about connecting Z probes. NPN outputs are preferred.
If you want to get a digital measurement of pressure that the Duet can read then I suggest you get a sensor that has a Modbus RTU interface. This is supported on Duet 3 boards in RRF 3.6.
The sensors you have with 0-5V analog outputs could be read by connecting them to analog capable IO_IN pins and configuring a Linear Analog Sensor on those ports.
Sorry if I've missed some of the detail you gave - I'm using a smartphone and it's very frustrating that I can't read your post while composing my reply.
-
@dc42
I managed to modify the config.g to accomodate the SMC Pressure Digital Sensors -ZSE30A-01-N-L analog outputs (0 ~ 5V ) to Duet Analog Capable IOx.In inputs ( 0 ~ 3.3V);***Analog Inputs ( Sensor Analog Outputs ( 0~ 5V) ----> Duet3 Analog Capable IOx.In Inputs (0 ~3.3V) ) ; SMC NPN Vacuum Pressure Digital Sensors -ZSE30A-01-N-L (Not Z-Probe) -- Analog Output (White wires (Output 2) for reading Pressure values). M308 S1 P"!4.io0.in" Y"linear-analog" A"VG1 Pressure" F0 ; Duet 3 3HC CAN_ID 3 Port 1- Vacuum Sensor Nozzle 1 M308 S2 P"!4.io1.in" Y"linear-analog" A"VG2 Pressure" F0 ; Duet 3 3HC CAN_ID 3 Port 2- Vacuum Sensor Nozzle 2 M308 S3 P"!4.io2.in" Y"linear-analog" A"VG3 Pressure" F0 ; Duet 3 3HC CAN_ID 3 Port 3- Vacuum Sensor Nozzle 3 M308 S4 P"!4.io5.in" Y"linear-analog" A"VG6 Pressure" F0 ; Duet 3 3HC CAN_ID 3 Port 6- Vacuum Sensor Nozzle 6
Console test results:
9/16/2024, 9:55:42 AM M308 S4 Sensor 4 (VG6 Pressure) type Linear analog using pin !4.io5.in, last error ok, reading 0.0, unfiltered, range 0.0 to 100.0 9/16/2024, 9:55:39 AM M308 S3 Sensor 3 (VG3 Pressure) type Linear analog using pin !4.io2.in, last error ok, reading 0.3, unfiltered, range 0.0 to 100.0 9/16/2024, 9:55:36 AM M308 S2 Sensor 2 (VG2 Pressure) type Linear analog using pin !4.io1.in, last error ok, reading 0.5, unfiltered, range 0.0 to 100.0 9/16/2024, 9:55:31 AM M308 S1 Sensor 1 (VG1 Pressure) type Linear analog using pin !4.io0.in, last error ok, reading 0.6, unfiltered, range 0.0 to 100.0
The
SMC NPN Vacuum Pressure Digital Sensors -ZSE30A-01-N-L with Analog outputs ( Sensor Analog Outputs ( 0~ 5V) <----> Duet3 Analog Capable IOx.In Inputs (0 ~3.3V) ) with range of 0 ~ -101kPa But looking at the range is says "range 0 to 100 ". Even though physically i see that the values on the SMC sensors are negative ( -0.0, -0.4 , -0.1, -0.3 ) . Is there a reason? going back to another older previous reply from you . There was a mention that i might need a Voltage Divider to be able to read the Full range . Can you elaborate ? What affordable Voltage divider would you recommend to be used that is safe and does not cause issues with Duet3 3HC & 6XD ? -
@developeralgo222 I suggest you remove the leading ! from the analog pin names in your M308 commands, and add B and C parameters to those commands to define the reading range.
You only need to use voltage dividers if you want to take readings when the sensor output exceeds 3.3V. If you don't then you will likely get the same reading as an input of about 3.3V would. A voltage divider is just 2 resistors so you can make one yourself, e.g. 2K from the input pin to ground and 1K from the input pin to the sensor output.
-
@dc42 Thanks , was on a 2-week Vacation just got back today. so will modify that and test it. But i can't seem to find the B and C values for SMC ZSE30A-01-N-L Digital Pressure Sensors documentation SMC_Vacuum_Sensors_PSxx-OML0003-I.pdf . Does B & C in this case refer to the range (e.g B = 0 to C= -101 kpa ) or as per explanation in the GCode Reference for M308 ?
Additional parameters for thermistors Tnnn (for thermistor sensors) Thermistor resistance at 25°C Bnnn Beta value, or the reciprocal of the Steinhart-Hart thermistor model B coefficient Cnnn Steinhart-Hart C coefficient, default 0
e.g
M308 S1 P"4.io0.in" Y"linear-analog" B4725 C7.06e-8 A"VG1 Pressure" F0
-
@dc42 , Not sure how this additional parameters are supposed to be used for Vacuum Pressure sensors reading .
My Assumption is that :
The voltage output is proportional to the pressure the sensor is measuring and
In a 1-5V output sensor as the SMC ZSE30A-01-N-L Digital Vacuum Pressure Sensor with a 0 to - 101 kPa range1V ===> Corresponds to ==> 0.0 kPa
5V ===> Corresponds to ==> -101.0 kPaAs per the documentation of the SMC digital pressure sensor on Pg 58 of the manual SMC_Vacuum_Sensors_PSxx-OML0003-I.pdf
Or
NOTE :
If analogue voltage output is selected, the analogue current output cannot be selected.Rated Vacuum pressure range = 0.0 to -101.0 kPa
B == 0 kPa
C == -101 kPaOutput Voltage:
Output Voltage (rated pressure range) == 1 to 5 V ± 2.5% F.S
Linearity == ±1% F.S
Output impedance == approx. 1k OhmsOutput Current:
Output Current (rated pressure range) == 4 to 20 mA ±2.5% F.S
Linearity == ±1% F.S
Load Impedance == 600 Ohms (at power supply voltage of 24 VDC) and Min. load impedance: 50 OhmsAdditional parameters for linear analog sensors Fn F0 = unfiltered (fast response), F1 = filtered (slower response, but noise reduced and ADC oversampling used to increase resolution). F1 is only available when using a port intended for thermistors, not when using a general input port. Bnnn The temperature or other value when the ADC output is zero Cnnn The temperature or other value when the ADC output is full scale
M308 command does not seem to work for reading Vacuum Pressure sensors . When i tested them today with Air Compressor turned ON . The actual visual reading was -72 kPa on SMC Vacuum Pressure Sensor while the reading was around -1.0 to 0.0 . What am i missing here ?
;***Analog Inputs ( Sensor Analog Outputs ( 0~ 5V) ----> Duet3 Analog Capable IOx.In Inputs (0 ~3.3V) ) . Rated Vacuum range 0.0 to -101.0 kPa ; SMC NPN Vacuum Pressure Digital Sensors -ZSE30A-01-N-L (Not Z-Probe) -- Analog Output (White wires (Output 2) for reading Pressure values). ;***Analog Inputs ; SMC NPN Vacuum Pressure Digital Sensors -ZSE30A-01-N-L (Not Z-Probe) -- Analog Output (White wires (Output 2) for reading Analog Vacuum Pressure sensor values). M308 S1 P"4.io0.in" Y"linear-analog" B0.0 C-101.0 A"VG1 Pressure" F0 ; Duet 3 3HC CAN_ID 4 Port IO0- Vacuum Sensor Nozzle 1-PSensorSMC1 M308 S2 P"4.io1.in" Y"linear-analog" B0.0 C-101.0 A"VG2 Pressure" F0 ; Duet 3 3HC CAN_ID 4 Port IO1- Vacuum Sensor Nozzle 2-PSensorSMC2 M308 S3 P"4.io2.in" Y"linear-analog" B0.0 C-101.0 A"VG3 Pressure" F0 ; Duet 3 3HC CAN_ID 4 Port IO2- Vacuum Sensor Nozzle 3-PSensorSMC3 M308 S4 P"4.io5.in" Y"linear-analog" B0.0 C-101.0 A"VG4 Pressure" F0 ; Duet 3 3HC CAN_ID 3 Port IO5- Vacuum Sensor Nozzle 4-PSensorSMC4 M308 S5 P"3.io5.in" Y"linear-analog" B0.0 C-101.0 A"VG5 Pressure" F0 ; Duet 3 3HC CAN_ID 3 IO5- Vacuum Sensor Nozzle 5-PSensorSMC5 M308 S6 P"2.io5.in" Y"linear-analog" B0.0 C-101.0 A"VG6 Pressure" F0 ; Duet 3 3HC CAN_ID 2 IO5- Vacuum Sensor Nozzle 6-PSensorSMC6 Results: 10/15/2024, 8:27:33 PM: M308 S1: Sensor 1 (VG1 Pressure) type Linear analog using pin 4.io0.in, last error ok, reading -101.0, unfiltered, range 0.0 to -101.0 10/15/2024, 8:27:36 PM: M308 S2: Sensor 2 (VG2 Pressure) type Linear analog using pin 4.io1.in, last error ok, reading -101.0, unfiltered, range 0.0 to -101.0 10/15/2024, 8:27:39 PM: M308 S3: Sensor 3 (VG3 Pressure) type Linear analog using pin 4.io2.in, last error ok, reading -101.0, unfiltered, range 0.0 to -101.0 10/15/2024, 8:27:42 PM: M308 S4: Sensor 4 (VG4 Pressure) type Linear analog using pin 4.io5.in, last error ok, reading -100.7, unfiltered, range 0.0 to -101.0 10/15/2024, 8:27:45 PM: M308 S5: Sensor 5 (VG5 Pressure) type Linear analog using pin 3.io5.in, last error ok, reading -100.2, unfiltered, range 0.0 to -101.0 10/15/2024, 8:27:54 PM: M308 S6: Sensor 6 (VG6 Pressure) type Linear analog using pin 2.io5.in, last error ok, reading -100.3, unfiltered, range 0.0 to -101.0 Actual reading at the moment: S1: Sensor 1 = 0.1 kPa S2: Sensor 2 = -0.2 kPa S3: Sensor 3 = 0.0 kPa S4: Sensor 4 = 0.0 kPa S5: Sensor 5 = 0.1 kPa S6: Sensor 6 = -0.1 kPa
-
i think i might have figured out the issue . ZSE30A-01-N Model has only 1 NPN Open Collector output . According to internal wiring of this sensor model it seems i can't use the white wire (Analog Output ) since that is not activated or enabled in this model .
Unless otherwise and there is a way to enable it and connect the analog white wire to Duet's analog port