+353-1-416-8900REST OF WORLD
+44-20-3973-8888REST OF WORLD
1-917-300-0470EAST COAST U.S
1-800-526-8630U.S. (TOLL FREE)

Embedded Digital Control with Microcontrollers. Implementation with C and Python. Edition No. 1. IEEE Press

  • Book

  • 368 Pages
  • June 2021
  • John Wiley and Sons Ltd
  • ID: 5842163

EMBEDDED DIGITAL CONTROL WITH MICROCONTROLLERS

Explore a concise and practical introduction to implementation methods and the theory of digital control systems on microcontrollers

Embedded Digital Control with Microcontrollers delivers expert instruction in digital control system implementation techniques on the widely used ARM Cortex-M microcontroller. The accomplished authors present the included information in three phases. First, they describe how to implement prototype digital control systems via the Python programming language in order to help the reader better understand theoretical digital control concepts.

Second, the book offers readers direction on using the C programming language to implement digital control systems on actual microcontrollers. This will allow readers to solve real-life problems involving digital control, robotics, and mechatronics.

Finally, readers will learn how to merge the theoretical and practical issues discussed in the book by implementing digital control systems in real-life applications. Throughout the book, the application of digital control systems using the Python programming language ensures the reader can apply the theory contained within. Readers will also benefit from the inclusion of:

  • A thorough introduction to the hardware used in the book, including STM32 Nucleo Development Boards and motor drive expansion boards
  • An exploration of the software used in the book, including Python, MicroPython, and Mbed
  • Practical discussions of digital control basics, including discrete-time signals, discrete-time systems, linear and time-invariant systems, and constant coefficient difference equations
  • An examination of how to represent a continuous-time system in digital form, including analog-to-digital conversion and digital-to-analog conversion

Perfect for undergraduate students in electrical engineering, Embedded Digital Control with Microcontrollers will also earn a place in the libraries of professional engineers and hobbyists working on digital control and robotics systems seeking a one-stop reference for digital control systems on microcontrollers.

Table of Contents

Preface xvii

About the Companion Website xix

1 Introduction 1

1.1 What is a System? 1

1.2 What is a Control System? 1

1.3 About the Book 3

2 Hardware to be Used in the Book 5

2.1 The STM32 Board 5

2.1.1 General Information 6

2.1.2 Pin Layout 6

2.1.3 Powering and Programming the Board 8

2.2 The STM32 Microcontroller 8

2.2.1 Central Processing Unit 8

2.2.2 Memory 9

2.2.3 Input and Output Ports 10

2.2.4 Timer Modules 10

2.2.5 ADC and DAC Modules 11

2.2.6 Digital Communication Modules 11

2.3 System and Sensors to be Used Throughout the Book 12

2.3.1 The DC Motor 12

2.3.1.1 Properties of the DC Motor 12

2.3.1.2 Pin Layout 13

2.3.1.3 Power Settings 14

2.3.2 The DC Motor Drive Expansion Board 14

2.3.3 Encoder 15

2.3.4 The FT232 Module 17

2.4 Systems and Sensors to be Used in Advanced Applications 17

2.4.1 Systems 17

2.4.2 Sensors 19

2.5 Summary 19

Problems 20

3 Software to be Used in the Book 23

3.1 Python on PC 24

3.1.1 Basic Operations 24

3.1.2 Array and Matrix Operations 25

3.1.3 Loop Operations 26

3.1.4 Conditional Statements 27

3.1.5 Function Definition and Usage 27

3.1.6 File Operations 28

3.1.7 Python Control Systems Library 28

3.2 MicroPython on the STM32 Microcontroller 29

3.2.1 Setting up MicroPython 29

3.2.2 Running MicroPython 31

3.2.3 Reaching Microcontroller Hardware 34

3.2.3.1 Input and Output Ports 34

3.2.3.2 Timers 35

3.2.3.3 ADC 37

3.2.3.4 DAC 39

3.2.3.5 UART 41

3.2.4 MicroPython Control Systems Library 42

3.3 C on the STM32 Microcontroller 43

3.3.1 Creating a New Project in Mbed Studio 44

3.3.2 Building and Executing the Code 45

3.3.3 Reaching Microcontroller Hardware 45

3.3.3.1 Input and Output Ports 46

3.3.3.2 Timers 47

3.3.3.3 ADC 48

3.3.3.4 DAC 50

3.3.3.5 UART 51

3.3.4 C Control Systems Library 53

3.4 Application: Running the DC Motor 53

3.4.1 Hardware Setup 54

3.4.2 Procedure 54

3.4.3 C Code for the System 54

3.4.4 Python Code for the System 57

3.4.5 Observing Outputs 59

3.5 Summary 59

Problems 60

4 Fundamentals of Digital Control 63

4.1 Digital Signals 63

4.1.1 Mathematical Definition 64

4.1.2 Representing Digital Signals in Code 64

4.1.2.1 Representation in Python 65

4.1.2.2 Representation in C 65

4.1.3 Standard Digital Signals 65

4.1.3.1 Unit Pulse Signal 66

4.1.3.2 Step Signal 67

4.1.3.3 Ramp Signal 68

4.1.3.4 Parabolic Signal 68

4.1.3.5 Exponential Signal 69

4.1.3.6 Sinusoidal Signal 71

4.1.3.7 Damped Sinusoidal Signal 71

4.1.3.8 Rectangular Signal 72

4.1.3.9 Sum of Sinusoids Signal 73

4.1.3.10 Sweep Signal 75

4.1.3.11 Random Signal 76

4.2 Digital Systems 77

4.2.1 Mathematical Definition 77

4.2.2 Representing Digital Systems in Code 78

4.2.2.1 Representation in Python 78

4.2.2.2 Representation in C 79

4.2.3 Digital System Properties 79

4.2.3.1 Stability 79

4.2.3.2 Linearity 80

4.2.3.3 Time-Invariance 81

4.3 Linear and Time-Invariant Systems 81

4.3.1 Mathematical Definition 81

4.3.2 LTI Systems and Constant-Coefficient Difference Equations 82

4.3.3 Representing LTI Systems in Code 82

4.3.3.1 MicroPython Control Systems Library Usage 83

4.3.3.2 C Control Systems Library Usage 84

4.3.3.3 Python Control Systems Library Usage 85

4.3.4 Connecting LTI Systems 87

4.3.4.1 Series Connection 87

4.3.4.2 Parallel Connection 88

4.3.4.3 Feedback Connection 89

4.4 The z-Transform and Its Inverse 90

4.4.1 Definition of the z-Transform 90

4.4.2 Calculating the z-Transform in Python 92

4.4.3 Definition of the Inverse z-Transform 92

4.4.4 Calculating the Inverse z-Transform in Python 92

4.5 The z-Transform and LTI Systems 93

4.5.1 Associating Difference Equation and Impulse Response of an LTI System 93

4.5.2 Stability Analysis of an LTI System using z-Transform 95

4.5.3 Stability Analysis of an LTI System in Code 95

4.6 Application I: Acquiring Digital Signals from the Microcontroller, Processing Offline Data 96

4.6.1 Hardware Setup 97

4.6.2 Procedure 97

4.6.3 C Code for the System 97

4.6.4 Python Code for the System 99

4.6.5 Observing Outputs 101

4.7 Application II: Acquiring Digital Signals from the Microcontroller, Processing Real-Time Data 103

4.7.1 Hardware Setup 103

4.7.2 Procedure 103

4.7.3 C Code for the System 104

4.7.4 Python Code for the System 106

4.7.5 Observing Outputs 109

4.8 Summary 109

Problems 109

5 Conversion Between Analog and Digital Forms 111

5.1 Converting an Analog Signal to Digital Form 112

5.1.1 Mathematical Derivation of ADC 112

5.1.2 ADC in Code 114

5.2 Converting a Digital Signal to Analog Form 117

5.2.1 Mathematical Derivation of DAC 117

5.2.2 DAC in Code 118

5.3 Representing an Analog System in Digital Form 120

5.3.1 Pole-Zero Matching Method 121

5.3.2 Zero-Order Hold Equivalent 122

5.3.3 Bilinear Transformation 123

5.4 Application: Exciting and Simulating the RC Filter 124

5.4.1 Hardware Setup 125

5.4.2 Procedure 125

5.4.3 C Code for the System 125

5.4.4 Python Code for the System 127

5.4.5 Observing Outputs 129

5.5 Summary 129

Problems 129

6 Constructing Transfer Function of a System 131

6.1 Transfer Function from Mathematical Modeling 131

6.1.1 Fundamental Electrical and Mechanical Components 132

6.1.2 Constructing the Differential Equation Representing the System 133

6.1.3 From Differential Equation to Transfer Function 133

6.2 Transfer Function from System Identification in Time Domain 134

6.2.1 Theoretical Background 135

6.2.2 The Procedure 135

6.2.3 Data Acquisition by the STM32 Microcontroller 136

6.2.4 System Identification in Time Domain by MATLAB 137

6.3 Transfer Function from System Identification in Frequency Domain 142

6.3.1 Theoretical Background 142

6.3.2 The Procedure 142

6.3.3 System Identification in Frequency Domain by MATLAB 143

6.4 Application: Obtaining Transfer Function of the DC Motor 143

6.4.1 Mathematical Modeling 143

6.4.2 System Identification in Time Domain 146

6.4.3 System Identification in Frequency Domain 147

6.5 Summary 148

Problems 148

7 Transfer Function Based Control System Analysis 151

7.1 Analyzing System Performance 151

7.1.1 Time Domain Analysis 151

7.1.1.1 Transient Response 152

7.1.1.2 Steady-State Error 156

7.1.2 Frequency Domain Analysis 156

7.1.3 Complex Plane Analysis 159

7.1.3.1 Root-Locus Plot 160

7.1.3.2 Nyquist Plot 160

7.2 The Effect of Open-Loop Control on System Performance 163

7.2.1 What is Open-Loop Control? 163

7.2.2 Improving the System Performance by Open-Loop Control 164

7.3 The Effect of Closed-Loop Control on System Performance 167

7.3.1 What is Closed-Loop Control? 167

7.3.2 Improving the System Performance by Closed-Loop Control 170

7.4 Application: Adding Open-Loop Digital Controller to the DC Motor 174

7.4.1 Hardware Setup 175

7.4.2 Procedure 175

7.4.3 C Code for the System 175

7.4.4 Python Code for the System 177

7.4.5 Observing Outputs 178

7.5 Summary 178

Problems 180

8 Transfer Function Based Controller Design 183

8.1 PID Controller Structure 183

8.1.1 The P Controller 184

8.1.2 The PI Controller 184

8.1.3 The PID Controller 185

8.1.4 Parameter Tuning Methods 185

8.1.4.1 The Ziegler-Nichols Method 186

8.1.4.2 The Cohen-Coon Method 186

8.1.4.3 The Chien-Hrones-Reswick Method 186

8.2 PID Controller Design in Python 187

8.2.1 Parameter Tuning 188

8.2.2 Controller Design 188

8.2.2.1 P Controller 188

8.2.2.2 PI Controller 191

8.2.2.3 PID Controller 194

8.2.3 Comparison of the Designed P, PI, and PID Controllers 197

8.3 Lag-Lead Controller Structure 199

8.3.1 Lag Controller 199

8.3.2 Lead Controller 200

8.3.3 Lag-Lead Controller 200

8.4 Lag-Lead Controller Design in MATLAB 201

8.4.1 Control System Designer Tool 201

8.4.2 Controller Design in Complex Plane 203

8.4.2.1 Lag Controller 204

8.4.2.2 Lead Controller 206

8.4.2.3 Lag-Lead Controller 207

8.4.2.4 Comparison of the Designed Lag, Lead, and Lag-Lead Controllers 210

8.4.3 Controller Design in Frequency Domain 211

8.4.3.1 Lag Controller 211

8.4.3.2 Lead Controller 213

8.4.3.3 Lag-Lead Controller 213

8.4.3.4 Comparison of the Designed Lag, Lead, and Lag-Lead Controllers 217

8.5 Application: Adding Closed-Loop Digital Controller to the DC Motor 217

8.5.1 Hardware Setup 217

8.5.2 Procedure 217

8.5.3 C Code for the System 218

8.5.4 Python Code for the System 219

8.5.5 Observing Outputs 220

8.6 Summary 223

Problems 224

9 State-space Based Control System Analysis 227

9.1 State-space Approach 227

9.1.1 Definition of the State 227

9.1.2 Why State-space Representation? 228

9.2 State-space Equations Representing an LTI System 228

9.2.1 Continuous-time State-space Equations 229

9.2.2 Discrete-time State-space Equations 231

9.2.3 Representing Discrete-time State-space Equations in Code Form 231

9.3 Conversion Between State-space and Transfer Function Representations 233

9.3.1 From Transfer Function to State-space Equations 233

9.3.2 From State-space Equations to Transfer Function 235

9.4 Properties of the System from its State-space Representation 236

9.4.1 Time Domain Analysis 236

9.4.2 Stability 237

9.4.3 Controllability 238

9.4.4 Observability 239

9.5 Application: Observing States of the DC Motor in Time 240

9.5.1 Hardware Setup 240

9.5.2 Procedure 240

9.5.3 C Code for the System 240

9.5.4 Python Code for the System 242

9.5.5 Observing Outputs 243

9.6 Summary 243

Problems 244

10 State-space Based Controller Design 247

10.1 General Layout 247

10.1.1 Control Based on State Values 248

10.1.2 Regulator Structure 249

10.1.3 Controller Structure 249

10.1.4 What if States Cannot be Measured Directly? 250

10.2 Regulator and Controller Design via Pole Placement 250

10.2.1 Pole Placement 251

10.2.2 Regulator Design 251

10.2.3 Ackermann’s Formula for the Regulator Gain 251

10.2.4 Controller Design 252

10.2.5 Ackermann’s Formula for the Controller Gain 253

10.3 Regulator and Controller Design in Python 253

10.3.1 Regulator Design 253

10.3.2 Controller Design 256

10.4 State Observer Design 260

10.4.1 Mathematical Derivation 261

10.4.2 Ackermann’s Formula for the Observer Gain 262

10.5 Regulator and Controller Design in Python using Observers 263

10.5.1 Observer Design 263

10.5.2 Observer-Based Regulator Design 264

10.5.3 Observer-Based Controller Design 266

10.6 Application: State-space based Control of the DC Motor 270

10.6.1 Hardware Setup 270

10.6.2 Procedure 271

10.6.3 C Code for the System 271

10.6.4 Python Code for the System 273

10.6.5 Observing Outputs 274

10.7 Summary 275

Problems 275

11 Adaptive Control 279

11.1 What is Adaptive Control? 279

11.2 Parameter Estimation 280

11.3 Indirect Self-Tuning Regulator 283

11.3.1 Feedback ISTR Design 283

11.3.2 Feedback and Feedforward ISTR Design 287

11.4 Model-Reference Adaptive Control 288

11.5 Application: Real-Time Parameter Estimation of the DC Motor 290

11.5.1 Hardware Setup 290

11.5.2 Procedure 291

11.5.3 C Code for the System 291

11.5.4 Observing Outputs 293

11.6 Summary 297

Problems 297

12 Advanced Applications 299

12.1 Nonlinear Control 299

12.1.1 Nonlinear System Identification by MATLAB 299

12.1.2 Nonlinear System Input-Output Example 301

12.1.3 Gain Scheduling Example 302

12.1.4 Flat Systems Example 302

12.1.5 Phase Portraits Example 302

12.2 Optimal Control 302

12.2.1 The Linear Quadratic Regulator 303

12.2.2 Continuous-Time LQR Example 304

12.2.3 LQR for the DC Motor 304

12.3 Robust Control 305

12.4 Distributed Control 306

12.4.1 Hardware and Software Setup 306

12.4.2 Procedure 307

12.5 Auto Dimmer 308

12.5.1 Hardware Setup 308

12.5.2 Procedure 309

12.6 Constructing a Servo Motor from DC Motor 309

12.6.1 Hardware Setup 309

12.6.2 Procedure 310

12.7 Visual Servoing 311

12.7.1 Hardware Setup 312

12.7.2 Procedure 312

12.8 Smart Balance Hoverboard 313

12.8.1 Hardware Setup 313

12.8.2 Procedure 314

12.9 Line Following Robot 314

12.9.1 Hardware Setup 314

12.9.2 Procedure 314

12.10 Active Noise Cancellation 315

12.10.1 Hardware Setup 315

12.10.2 Procedure 316

12.11 Sun Tracking Solar Panel 317

12.11.1 Hardware Setup 317

12.11.2 Procedure 317

12.12 System Identification of a Speaker 318

12.12.1 Hardware Setup 319

12.12.2 Procedure 319

12.13 Peltier Based Water Cooler 321

12.13.1 Hardware Setup 321

12.13.2 Procedure 322

12.14 Controlling a Permanent Magnet Synchronous Motor 322

12.14.1 Hardware Setup 322

12.14.2 Procedure 323

Appendix A STM32 Board Pin Usage Tables 329

Bibliography 335

Index 339

Authors

Cem Unsalan Duygun E. Barkana H. Deniz Gurhan