Solenoid Control Test - TLE92466ED ESP32-C6

Table of Contents

  1. Overview
  2. Purpose
  3. Hardware Requirements
  4. System Architecture
  5. Hardware Setup
  6. Configuration
  7. Building and Running
  8. Operation
  9. Real-Time Telemetry
  10. Control Algorithm
  11. Troubleshooting
  12. Performance Characteristics
  13. Safety Considerations
  14. Related Documentation

Overview

The Solenoid Control Test is a real hardware test application that demonstrates actual solenoid control using the TLE92466ED driver. This test uses ADC-based current control where an analog voltage input (0-3.3V) controls the current setpoint for two solenoids, with real-time telemetry monitoring.

Key Features

  • Real Hardware Testing: Tests actual solenoids, not just driver logic
  • ADC-Based Control: Analog voltage input (0-3.3V) maps to current percentage (0-100%)
  • Dual Solenoid Setup: One single channel, one parallel pair
  • Independent Current Ranges: Each solenoid has different min/max but same percentage mapping
  • Real-Time Telemetry: Monitoring every 1 second
  • Continuous Operation: Runs indefinitely until reset

Test Configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Solenoid Configuration                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Solenoid 1 (Single Channel):                               β”‚
β”‚    └─ Channel: CH0                                          β”‚
β”‚    └─ Mode: Single Channel (ICC)                           β”‚
β”‚    └─ Current Range: 200-1500 mA                            β”‚
β”‚    └─ Percentage Mapping: 0-100% β†’ 200-1500 mA             β”‚
β”‚                                                             β”‚
β”‚  Solenoid 2 (Parallel Pair):                                β”‚
β”‚    └─ Channels: CH1/CH2 (Parallel)                          β”‚
β”‚    └─ Mode: Parallel Pair (ICC)                             β”‚
β”‚    └─ Current Range: 400-3000 mA                             β”‚
β”‚    └─ Percentage Mapping: 0-100% β†’ 400-3000 mA              β”‚
β”‚                                                             β”‚
β”‚  Control Input:                                              β”‚
β”‚    └─ ADC Pin: GPIO0 (ADC1_CH0)                             β”‚
β”‚    └─ Voltage Range: 0-3.3V                                  β”‚
β”‚    └─ Maps to: 0-100% current for both solenoids            β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Purpose

This test serves multiple purposes:

  1. Real Hardware Validation: Tests actual solenoid operation with real loads
  2. Parallel Operation Verification: Validates parallel channel pairing works correctly
  3. Current Control Accuracy: Tests current regulation with real solenoids
  4. Telemetry Validation: Demonstrates real-time monitoring capabilities
  5. System Integration: Tests complete system from ADC input to solenoid output
  6. Performance Evaluation: Measures actual current regulation accuracy

Note: This test requires actual solenoids and proper power supplies. For driver-only testing without hardware, use the Driver Integration Test.


Hardware Requirements

Required Components

  • ESP32-C6-DevKitC-1 development board
  • TLE92466ED evaluation board or custom PCB
  • Two Solenoids with appropriate current ratings:
    • Solenoid 1: 200-1500mA range
    • Solenoid 2: 400-3000mA range (parallel pair)
  • 5.5-41V Power Supply for VBAT (5A+ recommended for parallel operation, typical: 12V or 24V automotive)
  • 3.0-5.5V Power Supply for VIO (I/O level supply for SPI, typical: 3.3V or 5.0V)
  • 5V Power Supply for VDD (internal logic supply) - Required for IC operation
  • ADC Control Source: Potentiometer, DAC, or voltage source (0-3.3V)
  • Current Sense Resistors (if using external current monitoring)
  • Oscilloscope/Logic Analyzer (optional, for signal analysis)
  • Connecting wires and appropriate connectors

Power Supply Requirements

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Power Supply Specifications                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  VDD (Internal Logic Supply):                               β”‚
β”‚    └─ Voltage: 5V input to TLE92466ED                       β”‚
β”‚    └─ Purpose: Powers central logic of the IC               β”‚
β”‚    └─ Required: YES (for IC operation)                      β”‚
β”‚                                                             β”‚
β”‚  VIO (I/O Level Supply):                                    β”‚
β”‚    └─ Voltage: 3.0V to 5.5V (input)                          β”‚
β”‚    └─ Purpose: Sets I/O voltage levels for SPI              β”‚
β”‚    └─ Typical: 3.3V or 5.0V                                 β”‚
β”‚    └─ Current: 10-20mA                                       β”‚
β”‚    └─ Required: YES (for SPI communication)                 β”‚
β”‚                                                             β”‚
β”‚  VBAT (Load Supply):                                       β”‚
β”‚    └─ Voltage: 5.5V to 41V (recommended operating)          β”‚
β”‚    └─ Typical: 12V or 24V automotive                        β”‚
β”‚    └─ Current: 5A+ (for parallel operation)                  β”‚
β”‚    └─ Required: YES (for solenoid operation)                β”‚
β”‚    └─ Note: Must be capable of supplying peak currents       β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Solenoid Specifications

Solenoid 1 (Single Channel):

  • Recommended current range: 200-1500mA
  • Typical resistance: 6-120Ξ©
  • Power rating: 2.4-18W at 12V
  • Must be rated for continuous operation

Solenoid 2 (Parallel Pair):

  • Recommended current range: 400-3000mA
  • Typical resistance: 3-60Ξ© (combined)
  • Power rating: 4.8-36W at 12V
  • Must be rated for continuous operation
  • Requires proper current sharing between CH1 and CH2

System Architecture

Block Diagram

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        System Architecture                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚
β”‚  β”‚   Control    β”‚         β”‚   ESP32-C6        β”‚                   β”‚
β”‚  β”‚   Source     β”‚         β”‚                   β”‚                   β”‚
β”‚  β”‚              β”‚         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚                   β”‚
β”‚  β”‚  Pot/DAC    │────────>β”‚  β”‚ ADC (GPIO0)  β”‚ β”‚                   β”‚
β”‚  β”‚  0-3.3V     β”‚         β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚                   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚         β”‚         β”‚                   β”‚
β”‚                            β”‚         β–Ό         β”‚                   β”‚
β”‚                            β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚                   β”‚
β”‚                            β”‚  β”‚   Control    β”‚ β”‚                   β”‚
β”‚                            β”‚  β”‚   Logic      β”‚ β”‚                   β”‚
β”‚                            β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚                   β”‚
β”‚                            β”‚         β”‚         β”‚                   β”‚
β”‚                            β”‚         β–Ό         β”‚                   β”‚
β”‚                            β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚                   β”‚
β”‚                            β”‚  β”‚   TLE92466ED β”‚ β”‚                   β”‚
β”‚                            β”‚  β”‚   Driver     β”‚ β”‚                   β”‚
β”‚                            β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚                   β”‚
β”‚                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚
β”‚                                      β”‚                               β”‚
β”‚                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚
β”‚                            β”‚                    β”‚                    β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚                    β”‚  TLE92466ED   β”‚  β”‚  TLE92466ED   β”‚            β”‚
β”‚                    β”‚     IC        β”‚  β”‚     IC        β”‚            β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚                            β”‚                   β”‚                    β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚                    β”‚  Solenoid 1   β”‚  β”‚  Solenoid 2   β”‚            β”‚
β”‚                    β”‚  (CH0)        β”‚  β”‚  (CH1/CH2)    β”‚            β”‚
β”‚                    β”‚  200-1500mA   β”‚  β”‚  400-3000mA   β”‚            β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚                                                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Control Flow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Control Flow Diagram                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  1. ADC Reading (100ms)                                        β”‚
β”‚     └─> Read GPIO0 voltage (0-3.3V)                            β”‚
β”‚     └─> Convert to percentage (0-100%)                           β”‚
β”‚                                                                 β”‚
β”‚  2. Current Calculation                                         β”‚
β”‚     └─> Solenoid 1: percentage β†’ 200-1500mA                    β”‚
β”‚     └─> Solenoid 2: percentage β†’ 400-3000mA                     β”‚
β”‚                                                                 β”‚
β”‚  3. Current Update                                              β”‚
β”‚     └─> SetCurrentSetpoint(Solenoid 1)                          β”‚
β”‚     └─> SetCurrentSetpoint(Solenoid 2)                           β”‚
β”‚                                                                 β”‚
β”‚  4. Telemetry Collection (1 second)                             β”‚
β”‚     └─> Read device status                                       β”‚
β”‚     └─> Read channel diagnostics                                 β”‚
β”‚     └─> Read voltages (VBAT, VIO)                                β”‚
β”‚     └─> Read currents (setpoint, actual)                          β”‚
β”‚     └─> Read duty cycles                                         β”‚
β”‚     └─> Check faults and warnings                                β”‚
β”‚                                                                 β”‚
β”‚  5. Display Telemetry                                           β”‚
β”‚     └─> Format and print status                                  β”‚
β”‚                                                                 β”‚
β”‚  Loop: Steps 1-5 repeat continuously                            β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Hardware Setup

Complete Wiring Diagram

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         Complete Wiring                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                      β”‚
β”‚  ESP32-C6                    TLE92466ED                             β”‚
β”‚  ────────                    ──────────                             β”‚
β”‚                                                                      β”‚
β”‚  GPIO2  ───────────────────> MISO                                   β”‚
β”‚  GPIO7  ───────────────────> MOSI                                    β”‚
β”‚  GPIO6  ───────────────────> SCLK                                   β”‚
β”‚  GPIO18 ───────────────────> CS                                     β”‚
β”‚  GPIO21 ───────────────────> RESN                                    β”‚
β”‚  GPIO20 ───────────────────> EN                                     β”‚
β”‚  GPIO19 <─────────────────── FAULTN                                 β”‚
β”‚  GPIO0  <─────────────────── [ADC Input]                            β”‚
β”‚                                                                      β”‚
β”‚  5V     ───────────────────> VDD                                    β”‚
β”‚  3.3V   ───────────────────> VIO                                    β”‚
β”‚  GND    ───────────────────> GND                                     β”‚
β”‚                                                                      β”‚
β”‚  External Supply            TLE92466ED                             β”‚
β”‚  ───────────────            ──────────                             β”‚
β”‚                                                                      β”‚
β”‚  5.5-41V (12-24V typical) ──> VBAT                                    β”‚
β”‚  GND    ───────────────────> GND                                     β”‚
β”‚                                                                      β”‚
β”‚  Solenoid 1                TLE92466ED                             β”‚
β”‚  ──────────                ──────────                             β”‚
β”‚                                                                      β”‚
β”‚  Solenoid+ ────────────────> OUT0 (CH0)                             β”‚
β”‚  Solenoid- ────────────────> GND (via sense)                        β”‚
β”‚                                                                      β”‚
β”‚  Solenoid 2                TLE92466ED                             β”‚
β”‚  ──────────                ──────────                             β”‚
β”‚                                                                      β”‚
β”‚  Solenoid+ ────────────────> OUT1 (CH1) ──┐                        β”‚
β”‚                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€> OUT2 (CH2)         β”‚
β”‚                          β”‚                 β”‚                        β”‚
β”‚  Solenoid- ──────────────┴─────────────────┴──> GND (via sense)   β”‚
β”‚                                                                      β”‚
β”‚  Control Source          ESP32-C6                                  β”‚
β”‚  ──────────────          ────────                                    β”‚
β”‚                                                                      β”‚
β”‚  Potentiometer:                                                     β”‚
β”‚    3.3V ──[R1]─── GPIO0 ──[R2]─── GND                              β”‚
β”‚    (or DAC, voltage source, etc.)                                   β”‚
β”‚                                                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Pin Assignment Table

Function ESP32-C6 GPIO TLE92466ED Pin Direction Notes
SPI MISO GPIO2 MISO Input Data from TLE92466ED
SPI MOSI GPIO7 MOSI Output Data to TLE92466ED
SPI SCLK GPIO6 SCLK Output 1MHz SPI Clock
SPI CS GPIO18 CS Output Active Low
RESN GPIO21 RESN Output Reset pin (active low, must be HIGH)
EN GPIO20 EN Output Enable pin (active high)
FAULTN GPIO19 FAULTN Input Fault pin (active low)
ADC Input GPIO0 - Input Control voltage (0-3.3V)
VDD Supply 5V VDD Power 5V (Required)
VIO Supply 3.3V/5V VIO Power 3.0-5.5V (Required)
Load Supply 12-24V typical VBAT Power 5.5-41V, 5A+ recommended (Required)
Ground GND GND Ground Common reference

Solenoid Connections

Solenoid 1 (Single Channel - CH0):

1
2
Solenoid Terminal+ ────> TLE92466ED OUT0
Solenoid Terminal- ────> GND (via current sense resistor if used)

Solenoid 2 (Parallel Pair - CH1/CH2):

1
2
3
Solenoid Terminal+ ────┬───> TLE92466ED OUT1 (CH1)
                       └───> TLE92466ED OUT2 (CH2)
Solenoid Terminal- ────> GND (via current sense resistor if used)

Important Notes:

  • Both channels in parallel pair must be connected to the same solenoid
  • Ensure proper current sharing between CH1 and CH2
  • Use appropriate wire gauge for high currents (parallel operation)
  • Add current sense resistors if external current monitoring is desired

ADC Control Input Setup

Option 1: Potentiometer

1
2
3
3.3V ──[10kΞ© Pot]── GPIO0
              β”‚
             GND

Option 2: DAC Output

1
DAC Output (0-3.3V) ──> GPIO0

Option 3: Voltage Source

1
Variable Voltage Source (0-3.3V) ──> GPIO0

ADC Configuration:

  • Pin: GPIO0 (ADC1_CH0)
  • Range: 0-3.3V
  • Resolution: 12-bit (0-4095)
  • Attenuation: 12dB (full range)
  • Sampling: 1kHz

Configuration

Solenoid Configuration (main/SolenoidControlTest.cpp)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * @brief Solenoid 1 Configuration (Single Channel)
 */
struct Solenoid1Config {
    static constexpr Channel CHANNEL = Channel::CH0;        // Single channel
    static constexpr uint16_t MIN_CURRENT_MA = 200;          // Minimum current (mA)
    static constexpr uint16_t MAX_CURRENT_MA = 1500;         // Maximum current (mA)
    static constexpr bool PARALLEL_MODE = false;             // Single channel mode
};

/**
 * @brief Solenoid 2 Configuration (Parallel Pair)
 */
struct Solenoid2Config {
    static constexpr ParallelPair PAIR = ParallelPair::CH1_CH2; // Parallel pair
    static constexpr Channel PRIMARY_CHANNEL = Channel::CH1;     // Primary channel
    static constexpr uint16_t MIN_CURRENT_MA = 400;              // Minimum current (mA)
    static constexpr uint16_t MAX_CURRENT_MA = 3000;             // Maximum current (mA)
    static constexpr bool PARALLEL_MODE = true;                  // Parallel mode
};

To modify solenoid configuration: Edit these structs in main/SolenoidControlTest.cpp

ADC Configuration

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * @brief ADC Configuration
 */
struct ADCConfig {
    static constexpr adc_unit_t UNIT = ADC_UNIT_1;           // ADC unit (ADC1)
    static constexpr adc_channel_t CHANNEL = ADC_CHANNEL_0;  // ADC channel (GPIO0)
    static constexpr adc_atten_t ATTEN = ADC_ATTEN_DB_12;    // 0-3.3V range
    static constexpr adc_bitwidth_t BITWIDTH = ADC_BITWIDTH_12; // 12-bit resolution
    static constexpr float VREF_MV = 3300.0f;                 // Reference voltage (3.3V)
    static constexpr float ADC_MAX = 4095.0f;                 // Maximum ADC value
    static constexpr int GPIO_PIN = 0;                        // GPIO pin number
};

To change ADC pin: Modify CHANNEL and GPIO_PIN (ensure GPIO supports ADC)

Control Loop Timing

1
2
const TickType_t update_interval = pdMS_TO_TICKS(100);      // 100ms current update
const TickType_t telemetry_interval = pdMS_TO_TICKS(1000);   // 1 second telemetry

To modify timing: Edit these constants in main/SolenoidControlTest.cpp


Building and Running

Quick Start

1
2
3
4
5
6
7
8
9
10
cd examples/esp32

# Build the solenoid control test
./scripts/build_app.sh solenoid_control_test Debug

# Flash to ESP32-C6
./scripts/flash_app.sh solenoid_control_test Debug

# Monitor output
./scripts/monitor_app.sh solenoid_control_test

Manual Build

1
2
3
4
5
6
7
8
9
10
11
12
13
cd examples/esp32

# Set target
idf.py set-target esp32c6

# Build with APP_TYPE=solenoid_control_test
idf.py -DAPP_TYPE=solenoid_control_test build

# Flash
idf.py -p /dev/ttyUSB0 flash

# Monitor
idf.py -p /dev/ttyUSB0 monitor

Build Requirements

The solenoid control test requires the esp_adc component, which is automatically added by CMake when APP_TYPE=solenoid_control_test.


Operation

Startup Sequence

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Startup Sequence                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. Initialize HAL                                          β”‚
β”‚     └─> Create Esp32TleCommInterface                       β”‚
β”‚     └─> Initialize SPI bus                                  β”‚
β”‚     └─> Configure GPIO pins                                  β”‚
β”‚                                                             β”‚
β”‚  2. Initialize Driver                                       β”‚
β”‚     └─> Create tle92466ed::Driver instance                  β”‚
β”‚     └─> Call Init() (resets device, verifies communication) β”‚
β”‚                                                             β”‚
β”‚  3. Initialize ADC                                          β”‚
β”‚     └─> Configure ADC1 channel 0 (GPIO0)                   β”‚
β”‚     └─> Set attenuation for 0-3.3V range                    β”‚
β”‚     └─> Enable calibration (if available)                    β”‚
β”‚                                                             β”‚
β”‚  4. Configure Solenoids                                     β”‚
β”‚     └─> Enter Config Mode                                   β”‚
β”‚     └─> Set Solenoid 1 to ICC mode (CH0)                    β”‚
β”‚     └─> Enable parallel operation for Solenoid 2 (CH1/CH2)  β”‚
β”‚     └─> Set Solenoid 2 to ICC mode (CH1)                    β”‚
β”‚     └─> Enter Mission Mode                                  β”‚
β”‚     └─> Enable outputs (EN pin)                             β”‚
β”‚                                                             β”‚
β”‚  5. Enable Solenoids                                        β”‚
β”‚     └─> Enable CH0 (Solenoid 1)                             β”‚
β”‚     └─> Enable CH1 (Solenoid 2, enables both in parallel)   β”‚
β”‚                                                             β”‚
β”‚  6. Start Control Loop                                      β”‚
β”‚     └─> Continuous operation begins                         β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Control Loop Operation

The control loop runs continuously with the following timing:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Control Loop Timing                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Every 100ms:                                               β”‚
β”‚    └─> Read ADC voltage (GPIO0)                             β”‚
β”‚    └─> Convert to percentage (0-100%)                       β”‚
β”‚    └─> Calculate currents for both solenoids                β”‚
β”‚    └─> Update current setpoints                             β”‚
β”‚                                                             β”‚
β”‚  Every 1 second:                                            β”‚
β”‚    └─> Collect telemetry                                    β”‚
β”‚    └─> Display formatted telemetry report                   β”‚
β”‚                                                             β”‚
β”‚  Continuous:                                                β”‚
β”‚    └─> Monitor for faults                                    β”‚
β”‚    └─> Update currents based on ADC                         β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Current Calculation

The ADC reading (0-3.3V) is mapped to a percentage (0-100%), which is then used to calculate the current for each solenoid:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Current Calculation Formula                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Step 1: ADC to Percentage                                  β”‚
β”‚    percentage = (ADC_voltage / 3.3V) Γ— 100%                 β”‚
β”‚                                                             β”‚
β”‚  Step 2: Percentage to Current                               β”‚
β”‚    Solenoid 1:                                               β”‚
β”‚      current = 200mA + (1500mA - 200mA) Γ— (percentage/100)  β”‚
β”‚      Range: 200-1500mA                                      β”‚
β”‚                                                             β”‚
β”‚    Solenoid 2:                                               β”‚
β”‚      current = 400mA + (3000mA - 400mA) Γ— (percentage/100)  β”‚
β”‚      Range: 400-3000mA                                     β”‚
β”‚                                                             β”‚
β”‚  Example:                                                    β”‚
β”‚    ADC = 1.65V (50%)                                        β”‚
β”‚    Solenoid 1: 200 + (1500-200)Γ—0.5 = 850mA                 β”‚
β”‚    Solenoid 2: 400 + (3000-400)Γ—0.5 = 1700mA                β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Real-Time Telemetry

Telemetry Display Format

Every 1 second, the system displays telemetry:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
╔══════════════════════════════════════════════════════════════════════════════╗
β•‘                        REAL-TIME TELEMETRY                                    β•‘
╠══════════════════════════════════════════════════════════════════════════════╣
  ADC Input: 1650.0 mV (50.0%)
  Target Currents: Solenoid 1=850 mA, Solenoid 2=1700 mA

  Device Status:
    Mode: Mission | Init: Done | Fault Pin: OK
    VBAT: 12000 mV | VIO: 3300 mV

  Solenoid 1 (CH0):
    Setpoint: 850 mA | Actual: 845 mA | Duty: 16384 (0x4000)
    Current Error: -5 mA (-0.6%)
    βœ… Status: Normal

  Solenoid 2 (CH1):
    Setpoint: 1700 mA | Actual: 1695 mA | Duty: 32768 (0x8000)
    Current Error: -5 mA (-0.3%)
    βœ… Status: Normal
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

Telemetry Data Explained

Device-Level Telemetry

  • Mode: Current device mode (Config or Mission)
  • Init: Initialization status (Done or Pending)
  • Fault Pin: Hardware fault pin state (OK or FAULT)
  • VBAT: VBAT supply voltage in millivolts
  • VIO: VIO supply voltage in millivolts
  • Device Faults: Any global fault conditions (UV/OV, temperature, clock, etc.)

Per-Solenoid Telemetry

  • Setpoint: Target current in milliamperes
  • Actual: Measured average current in milliamperes
  • Duty: PWM duty cycle (raw 16-bit value and hex)
  • Current Error: Difference between setpoint and actual (mA and percentage)
  • Faults: Channel-specific fault conditions
  • Warnings: Channel-specific warning conditions
  • Status: Overall channel status (Normal or with faults/warnings)

Telemetry Interpretation

Normal Operation

1
βœ… Status: Normal
  • No faults or warnings detected
  • Current regulation working correctly
  • All systems operational

Current Error Analysis

1
Current Error: -5 mA (-0.6%)
  • Negative error: Actual current is less than setpoint
  • Positive error: Actual current is greater than setpoint
  • Small errors (<5%): Normal for current regulation
  • Large errors (>10%): May indicate load mismatch or regulation issues

Fault Conditions

1
2
3
4
⚠️  Faults:
  - Over-current
  - Short to Ground
  - Open Load
  • Over-current: Load drawing more than expected
  • Short to Ground: Load or wiring shorted
  • Open Load: No load connected or connection issue
  • Over-temperature: IC or load overheating

Warning Conditions

1
2
3
⚠️  Warnings:
  - Current Regulation Warning
  - PWM Regulation Warning
  • Current Regulation Warning: Current regulation may be at limits
  • PWM Regulation Warning: PWM may be saturated
  • OT Warning: Approaching temperature limits

Control Algorithm

Current Control Flow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Current Control Algorithm                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. ADC Reading                                             β”‚
β”‚     Input: GPIO0 voltage (0-3.3V)                           β”‚
β”‚     Process: 12-bit ADC conversion                          β”‚
β”‚     Output: Raw ADC value (0-4095)                          β”‚
β”‚                                                             β”‚
β”‚  2. Voltage Calculation                                      β”‚
β”‚     Input: Raw ADC value                                    β”‚
β”‚     Process: Convert to voltage (with calibration)          β”‚
β”‚     Output: Voltage in millivolts (0-3300mV)                β”‚
β”‚                                                             β”‚
β”‚  3. Percentage Calculation                                   β”‚
β”‚     Input: Voltage (mV)                                      β”‚
β”‚     Process: percentage = (voltage / 3300) Γ— 100              β”‚
β”‚     Output: Percentage (0.0-100.0%)                         β”‚
β”‚                                                             β”‚
β”‚  4. Current Calculation (Per Solenoid)                       β”‚
β”‚     Input: Percentage                                        β”‚
β”‚     Process:                                                 β”‚
β”‚       current = min + (max - min) Γ— (percentage / 100)      β”‚
β”‚     Output: Current in milliamperes                         β”‚
β”‚                                                             β”‚
β”‚  5. Current Update                                           β”‚
β”‚     Input: Calculated current                                β”‚
β”‚     Process: SetCurrentSetpoint(channel, current)            β”‚
β”‚     Output: Current setpoint updated in TLE92466ED           β”‚
β”‚                                                             β”‚
β”‚  6. Current Regulation (TLE92466ED)                          β”‚
β”‚     Input: Current setpoint                                  β”‚
β”‚     Process: ICC (Integrated Current Control)                β”‚
β”‚     Output: Regulated current to solenoid                    β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Parallel Operation

For Solenoid 2 (parallel pair), the current is set on the primary channel (CH1), and the TLE92466ED automatically shares the current between CH1 and CH2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            Parallel Channel Current Sharing                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Setpoint: 1700mA (on CH1)                                  β”‚
β”‚                                                             β”‚
β”‚  TLE92466ED automatically:                                  β”‚
β”‚    └─> Shares current between CH1 and CH2                   β”‚
β”‚    └─> Each channel: ~850mA                                 β”‚
β”‚    └─> Total: ~1700mA to solenoid                          β”‚
β”‚                                                             β”‚
β”‚  Current Sharing:                                           β”‚
β”‚    └─> Automatic balancing by TLE92466ED                    β”‚
β”‚    └─> No manual current splitting required                  β”‚
β”‚    └─> Both channels must be enabled                        β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Troubleshooting

Common Issues

1. Solenoids Not Responding ❌

Symptom: No current flow, solenoids not activating

Root Causes:

  • VBAT not connected or insufficient voltage
  • EN pin not enabled
  • Channels not enabled
  • Device not in Mission Mode
  • Solenoid wiring incorrect

Solutions:

1
2
3
4
5
6
7
Checklist:
β–‘ VBAT: 5.5-41V connected (typical 12-24V) and sufficient current capacity
β–‘ EN pin: HIGH (outputs enabled)
β–‘ Channels: Enabled via EnableChannel()
β–‘ Mode: Mission Mode (EnterMissionMode())
β–‘ Wiring: Solenoid+ to OUT, Solenoid- to GND
β–‘ RESN: HIGH (not in reset)

2. Current Not Regulating Correctly ⚠️

Symptom: Actual current doesn’t match setpoint

Root Causes:

  • Load resistance mismatch
  • Power supply voltage too low
  • Current limits exceeded
  • Solenoid resistance out of range

Solutions:

1
2
3
4
5
6
7
8
9
10
11
1. Check load resistance:
   - Solenoid 1: R = VBAT / I_max = 12V / 1.5A = 8Ξ© minimum
   - Solenoid 2: R = VBAT / I_max = 12V / 3.0A = 4Ξ© minimum

2. Verify power supply:
   - VBAT voltage: 5.5V to 41V (typical 12-24V)
   - Current capacity: 5A+ for parallel operation

3. Check telemetry:
   - Current error should be <5% for good regulation
   - Duty cycle should be <90% for headroom

3. ADC Reading Incorrect ⚠️

Symptom: ADC voltage doesn’t match control source

Root Causes:

  • ADC pin not connected correctly
  • Control source voltage out of range
  • ADC calibration issue
  • GPIO pin conflict

Solutions:

1
2
3
4
5
6
7
8
9
10
11
1. Verify connections:
   - Control source connected to GPIO0
   - Ground reference common

2. Check voltage range:
   - Must be 0-3.3V
   - Use voltage divider if needed

3. Verify ADC configuration:
   - GPIO0 supports ADC1_CH0
   - Attenuation set to 12dB (full range)

4. Parallel Operation Not Working ❌

Symptom: Solenoid 2 not working or current not shared

Root Causes:

  • Parallel operation not enabled
  • Only one channel enabled
  • Wiring incorrect
  • Current sharing imbalance

Solutions:

1
2
3
4
5
6
7
8
9
10
11
12
13
1. Verify configuration:
   - SetParallelOperation(CH1_CH2, true) called
   - Both CH1 and CH2 enabled (enabling CH1 enables both)
   - Device in Config Mode when configuring

2. Check wiring:
   - Solenoid+ connected to BOTH OUT1 and OUT2
   - Solenoid- connected to GND
   - Proper wire gauge for high current

3. Monitor telemetry:
   - Check diagnostics for both channels
   - Verify current is being shared

5. Faults Detected ⚠️

Symptom: Telemetry shows faults or warnings

Over-current:

  • Load drawing too much current
  • Reduce setpoint or check load resistance
  • Verify power supply can deliver required current

Short to Ground:

  • Load or wiring shorted
  • Check continuity
  • Inspect for solder bridges or damaged wiring

Open Load:

  • No load connected (expected if testing without solenoid)
  • Loose connection
  • Load resistance too high

Over-temperature:

  • IC or load overheating
  • Add heatsink
  • Reduce duty cycle
  • Lower ambient temperature
  • Check for adequate airflow

Performance Characteristics

Control Loop Performance

Parameter Value Notes
Current Update Rate 10 Hz (100ms) Fast enough for smooth control
Telemetry Update Rate 1 Hz (1 second) Status display
ADC Sampling Rate 1 kHz 12-bit resolution
Current Regulation Response <100ms TLE92466ED ICC response time
Telemetry Latency <50ms Time to read all telemetry

Current Regulation Accuracy

Condition Typical Error Maximum Error
Normal Operation Β±2-5% Β±10%
Low Current (<500mA) Β±5-10% Β±15%
High Current (>1000mA) Β±2-5% Β±10%
Parallel Operation Β±3-7% Β±12%

Note: Accuracy depends on load characteristics, power supply stability, and temperature.

Power Consumption

Component Typical Current Notes
ESP32-C6 (Idle) 20-30mA Without WiFi/BLE
ESP32-C6 (Active) 50-80mA During operation
TLE92466ED (VDD) - 5V input (powers central logic)
TLE92466ED (VIO) 10-20mA I/O level supply (for SPI)
Solenoid 1 (Max) 1500mA At maximum setpoint
Solenoid 2 (Max) 3000mA At maximum setpoint (parallel)

Safety Considerations

Electrical Safety

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Safety Guidelines                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  ⚠️  HIGH VOLTAGE WARNING                                   β”‚
β”‚    └─> VBAT can be up to 41V (recommended operating)        β”‚
β”‚    └─> Use appropriate safety measures                      β”‚
β”‚    └─> Ensure proper grounding                              β”‚
β”‚                                                             β”‚
β”‚  ⚠️  HIGH CURRENT WARNING                                   β”‚
β”‚    └─> Parallel operation can draw 3A+                       β”‚
β”‚    └─> Use appropriate wire gauge                           β”‚
β”‚    └─> Ensure connectors are rated for current             β”‚
β”‚                                                             β”‚
β”‚  ⚠️  THERMAL CONSIDERATIONS                                 β”‚
β”‚    └─> TLE92466ED can get hot during operation              β”‚
β”‚    └─> Add heatsink if needed                               β”‚
β”‚    └─> Monitor temperature via telemetry                   β”‚
β”‚                                                             β”‚
β”‚  ⚠️  SHORT CIRCUIT PROTECTION                               β”‚
β”‚    └─> TLE92466ED has built-in protection                   β”‚
β”‚    └─> Monitor FAULTN pin                                    β”‚
β”‚    └─> Check telemetry for fault conditions                 β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Operational Safety

  1. Start with Low Currents: Begin testing at minimum current setpoints
  2. Monitor Telemetry: Watch for faults and warnings
  3. Check Temperatures: Ensure adequate cooling
  4. Verify Wiring: Double-check all connections before powering on
  5. Use Fuses: Add appropriate fuses in power supply lines
  6. Emergency Stop: Have a way to quickly disable power (EN pin or power supply)

ESP32 Examples

Driver Documentation

Hardware Documentation


Notes

  • This test requires actual solenoids and proper power supplies
  • VBAT is required for solenoid operation (unlike driver integration test)
  • Both solenoids use the same ADC percentage but different current ranges
  • Parallel operation automatically shares current between channels
  • Telemetry updates every 1 second
  • Control loop updates every 100ms for responsive current control
  • The test runs continuously until reset or power cycle

Example: Solenoid Control Test
Platform: ESP32-C6
Framework: FreeRTOS
Status: βœ… Production Ready
Hardware Required: TLE92466ED IC + Two Solenoids + Power Supplies