{"product_id":"embedded-digital-control-with-microcontrollers-implementation-with-c-and-python-hardback-9781119576525","title":"Embedded Digital Control with Microcontrollers; Implementation with C and Python (Hardback) 9781119576525","description":"\u003cfont face=\"Georgia\"\u003e\r\n\u003cp\u003e\u003cfont size=\"6\"\u003eEmbedded Digital Control with Microcontrollers\u003c\/font\u003e\u003cbr\u003e\r\n\u003cfont size=\"5\"\u003eImplementation with C and Python\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\u003cp\u003e\u003cfont size=\"4\"\u003eCem Unsalan (Author), Duygun E. Barkana (Author), H. Deniz Gurhan (Author)\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e9781119576525, Wiley\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eHardback, published 15 June 2021\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e368 pages\u003cbr\u003e1 x 1 x 1 cm, 0.454 kg\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003cp align=\"justify\"\u003e\u003cstrong\u003e\u003cfont size=\"3\"\u003e\u003cp\u003e\u003cb\u003eEMBEDDED DIGITAL CONTROL WITH MICROCONTROLLERS\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eExplore a concise and practical introduction to implementation methods and the theory of digital control systems on microcontrollers\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003ci\u003eEmbedded Digital Control with Microcontrollers\u003c\/i\u003e 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.\u003c\/p\u003e \u003cp\u003eSecond, 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.\u003c\/p\u003e \u003cp\u003eFinally, 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:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eA thorough introduction to the hardware used in the book, including STM32 Nucleo Development Boards and motor drive expansion boards\u003c\/li\u003e \u003cli\u003eAn exploration of the software used in the book, including Python, MicroPython, and Mbed\u003c\/li\u003e \u003cli\u003ePractical discussions of digital control basics, including discrete-time signals, discrete-time systems, linear and time-invariant systems, and constant coefficient difference equations\u003c\/li\u003e \u003cli\u003eAn examination of how to represent a continuous-time system in digital form, including analog-to-digital conversion and digital-to-analog conversion\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003ePerfect for undergraduate students in electrical engineering, \u003ci\u003eEmbedded Digital Control with Microcontrollers\u003c\/i\u003e 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.\u003c\/p\u003e\u003c\/font\u003e\u003c\/strong\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e\u003cp\u003ePreface xvii\u003c\/p\u003e \u003cp\u003eAbout the Companion Website xix\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Introduction \u003c\/b\u003e\u003cb\u003e1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 What is a System? 1\u003c\/p\u003e \u003cp\u003e1.2 What is a Control System? 1\u003c\/p\u003e \u003cp\u003e1.3 About the Book 3\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Hardware to be Used in the Book \u003c\/b\u003e\u003cb\u003e5\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 The STM32 Board 5\u003c\/p\u003e \u003cp\u003e2.1.1 General Information 6\u003c\/p\u003e \u003cp\u003e2.1.2 Pin Layout 6\u003c\/p\u003e \u003cp\u003e2.1.3 Powering and Programming the Board 8\u003c\/p\u003e \u003cp\u003e2.2 The STM32 Microcontroller 8\u003c\/p\u003e \u003cp\u003e2.2.1 Central Processing Unit 8\u003c\/p\u003e \u003cp\u003e2.2.2 Memory 9\u003c\/p\u003e \u003cp\u003e2.2.3 Input and Output Ports 10\u003c\/p\u003e \u003cp\u003e2.2.4 Timer Modules 10\u003c\/p\u003e \u003cp\u003e2.2.5 ADC and DAC Modules 11\u003c\/p\u003e \u003cp\u003e2.2.6 Digital Communication Modules 11\u003c\/p\u003e \u003cp\u003e2.3 System and Sensors to be Used Throughout the Book 12\u003c\/p\u003e \u003cp\u003e2.3.1 The DC Motor 12\u003c\/p\u003e \u003cp\u003e2.3.1.1 Properties of the DC Motor 12\u003c\/p\u003e \u003cp\u003e2.3.1.2 Pin Layout 13\u003c\/p\u003e \u003cp\u003e2.3.1.3 Power Settings 14\u003c\/p\u003e \u003cp\u003e2.3.2 The DC Motor Drive Expansion Board 14\u003c\/p\u003e \u003cp\u003e2.3.3 Encoder 15\u003c\/p\u003e \u003cp\u003e2.3.4 The FT232 Module 17\u003c\/p\u003e \u003cp\u003e2.4 Systems and Sensors to be Used in Advanced Applications 17\u003c\/p\u003e \u003cp\u003e2.4.1 Systems 17\u003c\/p\u003e \u003cp\u003e2.4.2 Sensors 19\u003c\/p\u003e \u003cp\u003e2.5 Summary 19\u003c\/p\u003e \u003cp\u003eProblems 20\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Software to be Used in the Book \u003c\/b\u003e\u003cb\u003e23\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Python on PC 24\u003c\/p\u003e \u003cp\u003e3.1.1 Basic Operations 24\u003c\/p\u003e \u003cp\u003e3.1.2 Array and Matrix Operations 25\u003c\/p\u003e \u003cp\u003e3.1.3 Loop Operations 26\u003c\/p\u003e \u003cp\u003e3.1.4 Conditional Statements 27\u003c\/p\u003e \u003cp\u003e3.1.5 Function Definition and Usage 27\u003c\/p\u003e \u003cp\u003e3.1.6 File Operations 28\u003c\/p\u003e \u003cp\u003e3.1.7 Python Control Systems Library 28\u003c\/p\u003e \u003cp\u003e3.2 MicroPython on the STM32 Microcontroller 29\u003c\/p\u003e \u003cp\u003e3.2.1 Setting up MicroPython 29\u003c\/p\u003e \u003cp\u003e3.2.2 Running MicroPython 31\u003c\/p\u003e \u003cp\u003e3.2.3 Reaching Microcontroller Hardware 34\u003c\/p\u003e \u003cp\u003e3.2.3.1 Input and Output Ports 34\u003c\/p\u003e \u003cp\u003e3.2.3.2 Timers 35\u003c\/p\u003e \u003cp\u003e3.2.3.3 ADC 37\u003c\/p\u003e \u003cp\u003e3.2.3.4 DAC 39\u003c\/p\u003e \u003cp\u003e3.2.3.5 UART 41\u003c\/p\u003e \u003cp\u003e3.2.4 MicroPython Control Systems Library 42\u003c\/p\u003e \u003cp\u003e3.3 C on the STM32 Microcontroller 43\u003c\/p\u003e \u003cp\u003e3.3.1 Creating a New Project in Mbed Studio 44\u003c\/p\u003e \u003cp\u003e3.3.2 Building and Executing the Code 45\u003c\/p\u003e \u003cp\u003e3.3.3 Reaching Microcontroller Hardware 45\u003c\/p\u003e \u003cp\u003e3.3.3.1 Input and Output Ports 46\u003c\/p\u003e \u003cp\u003e3.3.3.2 Timers 47\u003c\/p\u003e \u003cp\u003e3.3.3.3 ADC 48\u003c\/p\u003e \u003cp\u003e3.3.3.4 DAC 50\u003c\/p\u003e \u003cp\u003e3.3.3.5 UART 51\u003c\/p\u003e \u003cp\u003e3.3.4 C Control Systems Library 53\u003c\/p\u003e \u003cp\u003e3.4 Application: Running the DC Motor 53\u003c\/p\u003e \u003cp\u003e3.4.1 Hardware Setup 54\u003c\/p\u003e \u003cp\u003e3.4.2 Procedure 54\u003c\/p\u003e \u003cp\u003e3.4.3 C Code for the System 54\u003c\/p\u003e \u003cp\u003e3.4.4 Python Code for the System 57\u003c\/p\u003e \u003cp\u003e3.4.5 Observing Outputs 59\u003c\/p\u003e \u003cp\u003e3.5 Summary 59\u003c\/p\u003e \u003cp\u003eProblems 60\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Fundamentals of Digital Control \u003c\/b\u003e\u003cb\u003e63\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 Digital Signals 63\u003c\/p\u003e \u003cp\u003e4.1.1 Mathematical Definition 64\u003c\/p\u003e \u003cp\u003e4.1.2 Representing Digital Signals in Code 64\u003c\/p\u003e \u003cp\u003e4.1.2.1 Representation in Python 65\u003c\/p\u003e \u003cp\u003e4.1.2.2 Representation in C 65\u003c\/p\u003e \u003cp\u003e4.1.3 Standard Digital Signals 65\u003c\/p\u003e \u003cp\u003e4.1.3.1 Unit Pulse Signal 66\u003c\/p\u003e \u003cp\u003e4.1.3.2 Step Signal 67\u003c\/p\u003e \u003cp\u003e4.1.3.3 Ramp Signal 68\u003c\/p\u003e \u003cp\u003e4.1.3.4 Parabolic Signal 68\u003c\/p\u003e \u003cp\u003e4.1.3.5 Exponential Signal 69\u003c\/p\u003e \u003cp\u003e4.1.3.6 Sinusoidal Signal 71\u003c\/p\u003e \u003cp\u003e4.1.3.7 Damped Sinusoidal Signal 71\u003c\/p\u003e \u003cp\u003e4.1.3.8 Rectangular Signal 72\u003c\/p\u003e \u003cp\u003e4.1.3.9 Sum of Sinusoids Signal 73\u003c\/p\u003e \u003cp\u003e4.1.3.10 Sweep Signal 75\u003c\/p\u003e \u003cp\u003e4.1.3.11 Random Signal 76\u003c\/p\u003e \u003cp\u003e4.2 Digital Systems 77\u003c\/p\u003e \u003cp\u003e4.2.1 Mathematical Definition 77\u003c\/p\u003e \u003cp\u003e4.2.2 Representing Digital Systems in Code 78\u003c\/p\u003e \u003cp\u003e4.2.2.1 Representation in Python 78\u003c\/p\u003e \u003cp\u003e4.2.2.2 Representation in C 79\u003c\/p\u003e \u003cp\u003e4.2.3 Digital System Properties 79\u003c\/p\u003e \u003cp\u003e4.2.3.1 Stability 79\u003c\/p\u003e \u003cp\u003e4.2.3.2 Linearity 80\u003c\/p\u003e \u003cp\u003e4.2.3.3 Time-Invariance 81\u003c\/p\u003e \u003cp\u003e4.3 Linear and Time-Invariant Systems 81\u003c\/p\u003e \u003cp\u003e4.3.1 Mathematical Definition 81\u003c\/p\u003e \u003cp\u003e4.3.2 LTI Systems and Constant-Coefficient Difference Equations 82\u003c\/p\u003e \u003cp\u003e4.3.3 Representing LTI Systems in Code 82\u003c\/p\u003e \u003cp\u003e4.3.3.1 MicroPython Control Systems Library Usage 83\u003c\/p\u003e \u003cp\u003e4.3.3.2 C Control Systems Library Usage 84\u003c\/p\u003e \u003cp\u003e4.3.3.3 Python Control Systems Library Usage 85\u003c\/p\u003e \u003cp\u003e4.3.4 Connecting LTI Systems 87\u003c\/p\u003e \u003cp\u003e4.3.4.1 Series Connection 87\u003c\/p\u003e \u003cp\u003e4.3.4.2 Parallel Connection 88\u003c\/p\u003e \u003cp\u003e4.3.4.3 Feedback Connection 89\u003c\/p\u003e \u003cp\u003e4.4 The \u003ci\u003ez\u003c\/i\u003e-Transform and Its Inverse 90\u003c\/p\u003e \u003cp\u003e4.4.1 Definition of the \u003ci\u003ez\u003c\/i\u003e-Transform 90\u003c\/p\u003e \u003cp\u003e4.4.2 Calculating the \u003ci\u003ez\u003c\/i\u003e-Transform in Python 92\u003c\/p\u003e \u003cp\u003e4.4.3 Definition of the Inverse \u003ci\u003ez\u003c\/i\u003e-Transform 92\u003c\/p\u003e \u003cp\u003e4.4.4 Calculating the Inverse \u003ci\u003ez\u003c\/i\u003e-Transform in Python 92\u003c\/p\u003e \u003cp\u003e4.5 The \u003ci\u003ez\u003c\/i\u003e-Transform and LTI Systems 93\u003c\/p\u003e \u003cp\u003e4.5.1 Associating Difference Equation and Impulse Response of an LTI System 93\u003c\/p\u003e \u003cp\u003e4.5.2 Stability Analysis of an LTI System using \u003ci\u003ez\u003c\/i\u003e-Transform 95\u003c\/p\u003e \u003cp\u003e4.5.3 Stability Analysis of an LTI System in Code 95\u003c\/p\u003e \u003cp\u003e4.6 Application I: Acquiring Digital Signals from the Microcontroller, Processing Offline Data 96\u003c\/p\u003e \u003cp\u003e4.6.1 Hardware Setup 97\u003c\/p\u003e \u003cp\u003e4.6.2 Procedure 97\u003c\/p\u003e \u003cp\u003e4.6.3 C Code for the System 97\u003c\/p\u003e \u003cp\u003e4.6.4 Python Code for the System 99\u003c\/p\u003e \u003cp\u003e4.6.5 Observing Outputs 101\u003c\/p\u003e \u003cp\u003e4.7 Application II: Acquiring Digital Signals from the Microcontroller, Processing Real-Time Data 103\u003c\/p\u003e \u003cp\u003e4.7.1 Hardware Setup 103\u003c\/p\u003e \u003cp\u003e4.7.2 Procedure 103\u003c\/p\u003e \u003cp\u003e4.7.3 C Code for the System 104\u003c\/p\u003e \u003cp\u003e4.7.4 Python Code for the System 106\u003c\/p\u003e \u003cp\u003e4.7.5 Observing Outputs 109\u003c\/p\u003e \u003cp\u003e4.8 Summary 109\u003c\/p\u003e \u003cp\u003eProblems 109\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Conversion Between Analog and Digital Forms \u003c\/b\u003e\u003cb\u003e111\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Converting an Analog Signal to Digital Form 112\u003c\/p\u003e \u003cp\u003e5.1.1 Mathematical Derivation of ADC 112\u003c\/p\u003e \u003cp\u003e5.1.2 ADC in Code 114\u003c\/p\u003e \u003cp\u003e5.2 Converting a Digital Signal to Analog Form 117\u003c\/p\u003e \u003cp\u003e5.2.1 Mathematical Derivation of DAC 117\u003c\/p\u003e \u003cp\u003e5.2.2 DAC in Code 118\u003c\/p\u003e \u003cp\u003e5.3 Representing an Analog System in Digital Form 120\u003c\/p\u003e \u003cp\u003e5.3.1 Pole-Zero Matching Method 121\u003c\/p\u003e \u003cp\u003e5.3.2 Zero-Order Hold Equivalent 122\u003c\/p\u003e \u003cp\u003e5.3.3 Bilinear Transformation 123\u003c\/p\u003e \u003cp\u003e5.4 Application: Exciting and Simulating the RC Filter 124\u003c\/p\u003e \u003cp\u003e5.4.1 Hardware Setup 125\u003c\/p\u003e \u003cp\u003e5.4.2 Procedure 125\u003c\/p\u003e \u003cp\u003e5.4.3 C Code for the System 125\u003c\/p\u003e \u003cp\u003e5.4.4 Python Code for the System 127\u003c\/p\u003e \u003cp\u003e5.4.5 Observing Outputs 129\u003c\/p\u003e \u003cp\u003e5.5 Summary 129\u003c\/p\u003e \u003cp\u003eProblems 129\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Constructing Transfer Function of a System \u003c\/b\u003e\u003cb\u003e131\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Transfer Function from Mathematical Modeling 131\u003c\/p\u003e \u003cp\u003e6.1.1 Fundamental Electrical and Mechanical Components 132\u003c\/p\u003e \u003cp\u003e6.1.2 Constructing the Differential Equation Representing the System 133\u003c\/p\u003e \u003cp\u003e6.1.3 From Differential Equation to Transfer Function 133\u003c\/p\u003e \u003cp\u003e6.2 Transfer Function from System Identification in Time Domain 134\u003c\/p\u003e \u003cp\u003e6.2.1 Theoretical Background 135\u003c\/p\u003e \u003cp\u003e6.2.2 The Procedure 135\u003c\/p\u003e \u003cp\u003e6.2.3 Data Acquisition by the STM32 Microcontroller 136\u003c\/p\u003e \u003cp\u003e6.2.4 System Identification in Time Domain by MATLAB 137\u003c\/p\u003e \u003cp\u003e6.3 Transfer Function from System Identification in Frequency Domain 142\u003c\/p\u003e \u003cp\u003e6.3.1 Theoretical Background 142\u003c\/p\u003e \u003cp\u003e6.3.2 The Procedure 142\u003c\/p\u003e \u003cp\u003e6.3.3 System Identification in Frequency Domain by MATLAB 143\u003c\/p\u003e \u003cp\u003e6.4 Application: Obtaining Transfer Function of the DC Motor 143\u003c\/p\u003e \u003cp\u003e6.4.1 Mathematical Modeling 143\u003c\/p\u003e \u003cp\u003e6.4.2 System Identification in Time Domain 146\u003c\/p\u003e \u003cp\u003e6.4.3 System Identification in Frequency Domain 147\u003c\/p\u003e \u003cp\u003e6.5 Summary 148\u003c\/p\u003e \u003cp\u003eProblems 148\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Transfer Function Based Control System Analysis \u003c\/b\u003e\u003cb\u003e151\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Analyzing System Performance 151\u003c\/p\u003e \u003cp\u003e7.1.1 Time Domain Analysis 151\u003c\/p\u003e \u003cp\u003e7.1.1.1 Transient Response 152\u003c\/p\u003e \u003cp\u003e7.1.1.2 Steady-State Error 156\u003c\/p\u003e \u003cp\u003e7.1.2 Frequency Domain Analysis 156\u003c\/p\u003e \u003cp\u003e7.1.3 Complex Plane Analysis 159\u003c\/p\u003e \u003cp\u003e7.1.3.1 Root-Locus Plot 160\u003c\/p\u003e \u003cp\u003e7.1.3.2 Nyquist Plot 160\u003c\/p\u003e \u003cp\u003e7.2 The Effect of Open-Loop Control on System Performance 163\u003c\/p\u003e \u003cp\u003e7.2.1 What is Open-Loop Control? 163\u003c\/p\u003e \u003cp\u003e7.2.2 Improving the System Performance by Open-Loop Control 164\u003c\/p\u003e \u003cp\u003e7.3 The Effect of Closed-Loop Control on System Performance 167\u003c\/p\u003e \u003cp\u003e7.3.1 What is Closed-Loop Control? 167\u003c\/p\u003e \u003cp\u003e7.3.2 Improving the System Performance by Closed-Loop Control 170\u003c\/p\u003e \u003cp\u003e7.4 Application: Adding Open-Loop Digital Controller to the DC Motor 174\u003c\/p\u003e \u003cp\u003e7.4.1 Hardware Setup 175\u003c\/p\u003e \u003cp\u003e7.4.2 Procedure 175\u003c\/p\u003e \u003cp\u003e7.4.3 C Code for the System 175\u003c\/p\u003e \u003cp\u003e7.4.4 Python Code for the System 177\u003c\/p\u003e \u003cp\u003e7.4.5 Observing Outputs 178\u003c\/p\u003e \u003cp\u003e7.5 Summary 178\u003c\/p\u003e \u003cp\u003eProblems 180\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Transfer Function Based Controller Design \u003c\/b\u003e\u003cb\u003e183\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 PID Controller Structure 183\u003c\/p\u003e \u003cp\u003e8.1.1 The P Controller 184\u003c\/p\u003e \u003cp\u003e8.1.2 The PI Controller 184\u003c\/p\u003e \u003cp\u003e8.1.3 The PID Controller 185\u003c\/p\u003e \u003cp\u003e8.1.4 Parameter Tuning Methods 185\u003c\/p\u003e \u003cp\u003e8.1.4.1 The Ziegler–Nichols Method 186\u003c\/p\u003e \u003cp\u003e8.1.4.2 The Cohen–Coon Method 186\u003c\/p\u003e \u003cp\u003e8.1.4.3 The Chien–Hrones–Reswick Method 186\u003c\/p\u003e \u003cp\u003e8.2 PID Controller Design in Python 187\u003c\/p\u003e \u003cp\u003e8.2.1 Parameter Tuning 188\u003c\/p\u003e \u003cp\u003e8.2.2 Controller Design 188\u003c\/p\u003e \u003cp\u003e8.2.2.1 P Controller 188\u003c\/p\u003e \u003cp\u003e8.2.2.2 PI Controller 191\u003c\/p\u003e \u003cp\u003e8.2.2.3 PID Controller 194\u003c\/p\u003e \u003cp\u003e8.2.3 Comparison of the Designed P, PI, and PID Controllers 197\u003c\/p\u003e \u003cp\u003e8.3 Lag–Lead Controller Structure 199\u003c\/p\u003e \u003cp\u003e8.3.1 Lag Controller 199\u003c\/p\u003e \u003cp\u003e8.3.2 Lead Controller 200\u003c\/p\u003e \u003cp\u003e8.3.3 Lag–Lead Controller 200\u003c\/p\u003e \u003cp\u003e8.4 Lag–Lead Controller Design in MATLAB 201\u003c\/p\u003e \u003cp\u003e8.4.1 Control System Designer Tool 201\u003c\/p\u003e \u003cp\u003e8.4.2 Controller Design in Complex Plane 203\u003c\/p\u003e \u003cp\u003e8.4.2.1 Lag Controller 204\u003c\/p\u003e \u003cp\u003e8.4.2.2 Lead Controller 206\u003c\/p\u003e \u003cp\u003e8.4.2.3 Lag–Lead Controller 207\u003c\/p\u003e \u003cp\u003e8.4.2.4 Comparison of the Designed Lag, Lead, and Lag–Lead Controllers 210\u003c\/p\u003e \u003cp\u003e8.4.3 Controller Design in Frequency Domain 211\u003c\/p\u003e \u003cp\u003e8.4.3.1 Lag Controller 211\u003c\/p\u003e \u003cp\u003e8.4.3.2 Lead Controller 213\u003c\/p\u003e \u003cp\u003e8.4.3.3 Lag–Lead Controller 213\u003c\/p\u003e \u003cp\u003e8.4.3.4 Comparison of the Designed Lag, Lead, and Lag–Lead Controllers 217\u003c\/p\u003e \u003cp\u003e8.5 Application: Adding Closed-Loop Digital Controller to the DC Motor 217\u003c\/p\u003e \u003cp\u003e8.5.1 Hardware Setup 217\u003c\/p\u003e \u003cp\u003e8.5.2 Procedure 217\u003c\/p\u003e \u003cp\u003e8.5.3 C Code for the System 218\u003c\/p\u003e \u003cp\u003e8.5.4 Python Code for the System 219\u003c\/p\u003e \u003cp\u003e8.5.5 Observing Outputs 220\u003c\/p\u003e \u003cp\u003e8.6 Summary 223\u003c\/p\u003e \u003cp\u003eProblems 224\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 State-space Based Control System Analysis \u003c\/b\u003e\u003cb\u003e227\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 State-space Approach 227\u003c\/p\u003e \u003cp\u003e9.1.1 Definition of the State 227\u003c\/p\u003e \u003cp\u003e9.1.2 Why State-space Representation? 228\u003c\/p\u003e \u003cp\u003e9.2 State-space Equations Representing an LTI System 228\u003c\/p\u003e \u003cp\u003e9.2.1 Continuous-time State-space Equations 229\u003c\/p\u003e \u003cp\u003e9.2.2 Discrete-time State-space Equations 231\u003c\/p\u003e \u003cp\u003e9.2.3 Representing Discrete-time State-space Equations in Code Form 231\u003c\/p\u003e \u003cp\u003e9.3 Conversion Between State-space and Transfer Function Representations 233\u003c\/p\u003e \u003cp\u003e9.3.1 From Transfer Function to State-space Equations 233\u003c\/p\u003e \u003cp\u003e9.3.2 From State-space Equations to Transfer Function 235\u003c\/p\u003e \u003cp\u003e9.4 Properties of the System from its State-space Representation 236\u003c\/p\u003e \u003cp\u003e9.4.1 Time Domain Analysis 236\u003c\/p\u003e \u003cp\u003e9.4.2 Stability 237\u003c\/p\u003e \u003cp\u003e9.4.3 Controllability 238\u003c\/p\u003e \u003cp\u003e9.4.4 Observability 239\u003c\/p\u003e \u003cp\u003e9.5 Application: Observing States of the DC Motor in Time 240\u003c\/p\u003e \u003cp\u003e9.5.1 Hardware Setup 240\u003c\/p\u003e \u003cp\u003e9.5.2 Procedure 240\u003c\/p\u003e \u003cp\u003e9.5.3 C Code for the System 240\u003c\/p\u003e \u003cp\u003e9.5.4 Python Code for the System 242\u003c\/p\u003e \u003cp\u003e9.5.5 Observing Outputs 243\u003c\/p\u003e \u003cp\u003e9.6 Summary 243\u003c\/p\u003e \u003cp\u003eProblems 244\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 State-space Based Controller Design \u003c\/b\u003e\u003cb\u003e247\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 General Layout 247\u003c\/p\u003e \u003cp\u003e10.1.1 Control Based on State Values 248\u003c\/p\u003e \u003cp\u003e10.1.2 Regulator Structure 249\u003c\/p\u003e \u003cp\u003e10.1.3 Controller Structure 249\u003c\/p\u003e \u003cp\u003e10.1.4 What if States Cannot be Measured Directly? 250\u003c\/p\u003e \u003cp\u003e10.2 Regulator and Controller Design via Pole Placement 250\u003c\/p\u003e \u003cp\u003e10.2.1 Pole Placement 251\u003c\/p\u003e \u003cp\u003e10.2.2 Regulator Design 251\u003c\/p\u003e \u003cp\u003e10.2.3 Ackermann’s Formula for the Regulator Gain 251\u003c\/p\u003e \u003cp\u003e10.2.4 Controller Design 252\u003c\/p\u003e \u003cp\u003e10.2.5 Ackermann’s Formula for the Controller Gain 253\u003c\/p\u003e \u003cp\u003e10.3 Regulator and Controller Design in Python 253\u003c\/p\u003e \u003cp\u003e10.3.1 Regulator Design 253\u003c\/p\u003e \u003cp\u003e10.3.2 Controller Design 256\u003c\/p\u003e \u003cp\u003e10.4 State Observer Design 260\u003c\/p\u003e \u003cp\u003e10.4.1 Mathematical Derivation 261\u003c\/p\u003e \u003cp\u003e10.4.2 Ackermann’s Formula for the Observer Gain 262\u003c\/p\u003e \u003cp\u003e10.5 Regulator and Controller Design in Python using Observers 263\u003c\/p\u003e \u003cp\u003e10.5.1 Observer Design 263\u003c\/p\u003e \u003cp\u003e10.5.2 Observer-Based Regulator Design 264\u003c\/p\u003e \u003cp\u003e10.5.3 Observer-Based Controller Design 266\u003c\/p\u003e \u003cp\u003e10.6 Application: State-space based Control of the DC Motor 270\u003c\/p\u003e \u003cp\u003e10.6.1 Hardware Setup 270\u003c\/p\u003e \u003cp\u003e10.6.2 Procedure 271\u003c\/p\u003e \u003cp\u003e10.6.3 C Code for the System 271\u003c\/p\u003e \u003cp\u003e10.6.4 Python Code for the System 273\u003c\/p\u003e \u003cp\u003e10.6.5 Observing Outputs 274\u003c\/p\u003e \u003cp\u003e10.7 Summary 275\u003c\/p\u003e \u003cp\u003eProblems 275\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Adaptive Control \u003c\/b\u003e\u003cb\u003e279\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 What is Adaptive Control? 279\u003c\/p\u003e \u003cp\u003e11.2 Parameter Estimation 280\u003c\/p\u003e \u003cp\u003e11.3 Indirect Self-Tuning Regulator 283\u003c\/p\u003e \u003cp\u003e11.3.1 Feedback ISTR Design 283\u003c\/p\u003e \u003cp\u003e11.3.2 Feedback and Feedforward ISTR Design 287\u003c\/p\u003e \u003cp\u003e11.4 Model-Reference Adaptive Control 288\u003c\/p\u003e \u003cp\u003e11.5 Application: Real-Time Parameter Estimation of the DC Motor 290\u003c\/p\u003e \u003cp\u003e11.5.1 Hardware Setup 290\u003c\/p\u003e \u003cp\u003e11.5.2 Procedure 291\u003c\/p\u003e \u003cp\u003e11.5.3 C Code for the System 291\u003c\/p\u003e \u003cp\u003e11.5.4 Observing Outputs 293\u003c\/p\u003e \u003cp\u003e11.6 Summary 297\u003c\/p\u003e \u003cp\u003eProblems 297\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Advanced Applications \u003c\/b\u003e\u003cb\u003e299\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Nonlinear Control 299\u003c\/p\u003e \u003cp\u003e12.1.1 Nonlinear System Identification by MATLAB 299\u003c\/p\u003e \u003cp\u003e12.1.2 Nonlinear System Input–Output Example 301\u003c\/p\u003e \u003cp\u003e12.1.3 Gain Scheduling Example 302\u003c\/p\u003e \u003cp\u003e12.1.4 Flat Systems Example 302\u003c\/p\u003e \u003cp\u003e12.1.5 Phase Portraits Example 302\u003c\/p\u003e \u003cp\u003e12.2 Optimal Control 302\u003c\/p\u003e \u003cp\u003e12.2.1 The Linear Quadratic Regulator 303\u003c\/p\u003e \u003cp\u003e12.2.2 Continuous-Time LQR Example 304\u003c\/p\u003e \u003cp\u003e12.2.3 LQR for the DC Motor 304\u003c\/p\u003e \u003cp\u003e12.3 Robust Control 305\u003c\/p\u003e \u003cp\u003e12.4 Distributed Control 306\u003c\/p\u003e \u003cp\u003e12.4.1 Hardware and Software Setup 306\u003c\/p\u003e \u003cp\u003e12.4.2 Procedure 307\u003c\/p\u003e \u003cp\u003e12.5 Auto Dimmer 308\u003c\/p\u003e \u003cp\u003e12.5.1 Hardware Setup 308\u003c\/p\u003e \u003cp\u003e12.5.2 Procedure 309\u003c\/p\u003e \u003cp\u003e12.6 Constructing a Servo Motor from DC Motor 309\u003c\/p\u003e \u003cp\u003e12.6.1 Hardware Setup 309\u003c\/p\u003e \u003cp\u003e12.6.2 Procedure 310\u003c\/p\u003e \u003cp\u003e12.7 Visual Servoing 311\u003c\/p\u003e \u003cp\u003e12.7.1 Hardware Setup 312\u003c\/p\u003e \u003cp\u003e12.7.2 Procedure 312\u003c\/p\u003e \u003cp\u003e12.8 Smart Balance Hoverboard 313\u003c\/p\u003e \u003cp\u003e12.8.1 Hardware Setup 313\u003c\/p\u003e \u003cp\u003e12.8.2 Procedure 314\u003c\/p\u003e \u003cp\u003e12.9 Line Following Robot 314\u003c\/p\u003e \u003cp\u003e12.9.1 Hardware Setup 314\u003c\/p\u003e \u003cp\u003e12.9.2 Procedure 314\u003c\/p\u003e \u003cp\u003e12.10 Active Noise Cancellation 315\u003c\/p\u003e \u003cp\u003e12.10.1 Hardware Setup 315\u003c\/p\u003e \u003cp\u003e12.10.2 Procedure 316\u003c\/p\u003e \u003cp\u003e12.11 Sun Tracking Solar Panel 317\u003c\/p\u003e \u003cp\u003e12.11.1 Hardware Setup 317\u003c\/p\u003e \u003cp\u003e12.11.2 Procedure 317\u003c\/p\u003e \u003cp\u003e12.12 System Identification of a Speaker 318\u003c\/p\u003e \u003cp\u003e12.12.1 Hardware Setup 319\u003c\/p\u003e \u003cp\u003e12.12.2 Procedure 319\u003c\/p\u003e \u003cp\u003e12.13 Peltier Based Water Cooler 321\u003c\/p\u003e \u003cp\u003e12.13.1 Hardware Setup 321\u003c\/p\u003e \u003cp\u003e12.13.2 Procedure 322\u003c\/p\u003e \u003cp\u003e12.14 Controlling a Permanent Magnet Synchronous Motor 322\u003c\/p\u003e \u003cp\u003e12.14.1 Hardware Setup 322\u003c\/p\u003e \u003cp\u003e12.14.2 Procedure 323\u003c\/p\u003e \u003cp\u003eAppendix A STM32 Board Pin Usage Tables 329\u003c\/p\u003e \u003cp\u003eBibliography 335\u003c\/p\u003e \u003cp\u003eIndex 339\u003c\/p\u003e\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eSubject Areas: Electronics \u0026amp; communications engineering [\u003ca title=\"See our other books on Electronics \u0026amp; communications engineering\" href=\"https:\/\/freshlyprintedbooks.co.uk\/search?q=%22Electronics%20\u0026amp;%20communications%20engineering%20%5BTJ%5D%22\"\u003eTJ\u003c\/a\u003e]\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\u003c\/font\u003e","brand":"Wiley-IEEE Press","offers":[{"title":"Brand New","offer_id":52428626100504,"sku":"9781119576525","price":90.89,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0730\/2037\/5320\/files\/9781119576525.jpg?v=1784682247","url":"https:\/\/freshlyprintedbooks.co.uk\/products\/embedded-digital-control-with-microcontrollers-implementation-with-c-and-python-hardback-9781119576525","provider":"Freshly Printed Books","version":"1.0","type":"link"}