Muutke küpsiste eelistusi

E-raamat: Embedded Digital Control with Microcontrollers: Implementation with C and Python

  • Formaat: PDF+DRM
  • Sari: IEEE Press
  • Ilmumisaeg: 19-Mar-2021
  • Kirjastus: Wiley-IEEE Press
  • Keel: eng
  • ISBN-13: 9781119576587
Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 134,55 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Raamatukogudele
  • Formaat: PDF+DRM
  • Sari: IEEE Press
  • Ilmumisaeg: 19-Mar-2021
  • Kirjastus: Wiley-IEEE Press
  • Keel: eng
  • ISBN-13: 9781119576587
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

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

Embedded Digital Control: Implementation on ARM Cortex-M 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 MicroPython, Keil uVision, 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: Implementation on ARM Cortex-M 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. 

Preface xvii
About the Companion Website xix
1 Introduction
1(4)
1.1 What is a System?
1(1)
1.2 What is a Control System?
1(2)
1.3 About the Book
3(2)
2 Hardware to be Used in the Book
5(18)
2.1 The STM32 Board
5(3)
2.1.1 General Information
6(1)
2.1.2 Pin Layout
6(2)
2.1.3 Powering and Programming the Board
8(1)
2.2 The STM32 Microcontroller
8(4)
2.2.1 Central Processing Unit
8(1)
2.2.2 Memory
9(1)
2.2.3 Input and Output Ports
10(1)
2.2.4 Timer Modules
10(1)
2.2.5 ADC and DAC Modules
11(1)
2.2.6 Digital Communication Modules
11(1)
2.3 System and Sensors to be Used Throughout the Book
12(5)
2.3.1 The DC Motor
12(1)
2.3.1.1 Properties of the DC Motor
12(1)
2.3.1.2 Pin Layout
13(1)
2.3.1.3 Power Settings
14(1)
2.3.2 The DC Motor Drive Expansion Board
14(1)
2.3.3 Encoder
15(2)
2.3.4 The FT232 Module
17(1)
2.4 Systems and Sensors to be Used in Advanced Applications
17(2)
2.4.1 Systems
17(2)
2.4.2 Sensors
19(1)
2.5 Summary
19(4)
Problems
20(3)
3 Software to be Used in the Book
23(40)
3.1 Python on PC
24(5)
3.1.1 Basic Operations
24(1)
3.1.2 Array and Matrix Operations
25(1)
3.1.3 Loop Operations
26(1)
3.1.4 Conditional Statements
27(1)
3.1.5 Function Definition and Usage
27(1)
3.1.6 File Operations
28(1)
3.1.7 Python Control Systems Library
28(1)
3.2 MicroPython on the STM32 Microcontroller
29(14)
3.2.1 Setting up MicroPython
29(2)
3.2.2 Running MicroPython
31(3)
3.2.3 Reaching Microcontroller Hardware
34(1)
3.2.3.1 Input and Output Ports
34(1)
3.2.3.2 Timers
35(2)
3.2.3.3 ADC
37(2)
3.2.3.4 DAC
39(2)
3.2.3.5 UART
41(1)
3.2.4 MicroPython Control Systems Library
42(1)
3.3 C on the STM32 Microcontroller
43(10)
3.3.1 Creating a New Project in Mbed Studio
44(1)
3.3.2 Building and Executing the Code
45(1)
3.3.3 Reaching Microcontroller Hardware
45(1)
3.3.3.1 Input and Output Ports
46(1)
3.3.3.2 Timers
47(1)
3.3.3.3 ADC
48(2)
3.3.3.4 DAC
50(1)
3.3.3.5 UART
51(2)
3.3.4 C Control Systems Library
53(1)
3.4 Application: Running the DC Motor
53(6)
3.4.1 Hardware Setup
54(1)
3.4.2 Procedure
54(1)
3.4.3 C Code for the System
54(3)
3.4.4 Python Code for the System
57(2)
3.4.5 Observing Outputs
59(1)
3.5 Summary
59(4)
Problems
60(3)
4 Fundamentals of Digital Control
63(48)
4.1 Digital Signals
63(14)
4.1.1 Mathematical Definition
64(1)
4.1.2 Representing Digital Signals in Code
64(1)
4.1.2.1 Representation in Python
65(1)
4.1.2.2 Representation in C
65(1)
4.1.3 Standard Digital Signals
65(1)
4.1.3.1 Unit Pulse Signal
66(1)
4.1.3.2 Step Signal
67(1)
4.1.3.3 Ramp Signal
68(1)
4.1.3.4 Parabolic Signal
68(1)
4.1.3.5 Exponential Signal
69(2)
4.1.3.6 Sinusoidal Signal
71(1)
4.1.3.7 Damped Sinusoidal Signal
71(1)
4.1.3.8 Rectangular Signal
72(1)
4.1.3.9 Sum of Sinusoids Signal
73(2)
4.1.3.10 Sweep Signal
75(1)
4.1.3.11 Random Signal
76(1)
4.2 Digital Systems
77(4)
4.2.1 Mathematical Definition
77(1)
4.2.2 Representing Digital Systems in Code
78(1)
4.2.2.1 Representation in Python
78(1)
4.2.2.2 Representation in C
79(1)
4.2.3 Digital System Properties
79(1)
4.2.3.1 Stability
79(1)
4.2.3.2 Linearity
80(1)
4.2.3.3 Time-Invariance
81(1)
4.3 Linear and Time-Invariant Systems
81(9)
4.3.1 Mathematical Definition
81(1)
4.3.2 LTI Systems and Constant-Coefficient Difference Equations
82(1)
4.3.3 Representing LTI Systems in Code
82(1)
4.3.3.1 MicroPython Control Systems Library Usage
83(1)
4.3.3.2 C Control Systems Library Usage
84(1)
4.3.3.3 Python Control Systems Library Usage
85(2)
4.3.4 Connecting LTI Systems
87(1)
4.3.4.1 Series Connection
87(1)
4.3.4.2 Parallel Connection
88(1)
4.3.4.3 Feedback Connection
89(1)
4.4 The z-Transform and Its Inverse
90(3)
4.4.1 Definition of the z-Transform
90(2)
4.4.2 Calculating the z-Transform in Python
92(1)
4.4.3 Definition of the Inverse z-Transform
92(1)
AAA Calculating the Inverse z-Transform in Python
92(1)
4.5 The z-Transform and LTI Systems
93(3)
4.5.1 Associating Difference Equation and Impulse Response of an LTI System
93(2)
4.5.2 Stability Analysis of an LTI System using z-Transform
95(1)
4.5.3 Stability Analysis of an LTI System in Code
95(1)
4.6 Application I: Acquiring Digital Signals from the Microcontroller, Processing Offline Data
96(7)
4.6.1 Hardware Setup
97(1)
4.6.2 Procedure
97(1)
4.6.3 C Code for the System
97(2)
4.6.4 Python Code for the System
99(2)
4.6.5 Observing Outputs
101(2)
4.7 Application II: Acquiring Digital Signals from the Microcontroller, Processing Real-Time Data
103(3)
4.7.1 Hardware Setup
103(1)
4.7.2 Procedure
103(1)
4.7.3 C Code for the System
104(2)
4.7 A Python Code for the System
106(3)
4.7.5 Observing Outputs
109(1)
4.8 Summary
109(2)
Problems
109(2)
5 Conversion Between Analog and Digital Forms
111(20)
5.1 Converting an Analog Signal to Digital Form
112(5)
5.1.1 Mathematical Derivation of ADC
112(2)
5.1.2 ADC in Code
114(3)
5.2 Converting a Digital Signal to Analog Form
117(3)
5.2.1 Mathematical Derivation of DAC
117(1)
5.2.2 DAC in Code
118(2)
5.3 Representing an Analog System in Digital Form
120(4)
5.3.1 Pole-Zero Matching Method
121(1)
5.3.2 Zero-Order Hold Equivalent
122(1)
5.3.3 Bilinear Transformation
123(1)
5.4 Application: Exciting and Simulating the RC Filter
124(5)
5.4.1 Hardware Setup
125(1)
5.4.2 Procedure
125(1)
5.4.3 C Code for the System
125(2)
5.4.4 Python Code for the System
127(2)
5.4.5 Observing Outputs
129(1)
5.5 Summary
129(2)
Problems
129(2)
6 Constructing Transfer Function of a System
131(20)
6.1 Transfer Function from Mathematical Modeling
131(3)
6.1.1 Fundamental Electrical and Mechanical Components
132(1)
6.1.2 Constructing the Differential Equation Representing the System
133(1)
6.1.3 From Differential Equation to Transfer Function
133(1)
6.2 Transfer Function from System Identification in Time Domain
134(8)
6.2.1 Theoretical Background
135(1)
6.2.2 The Procedure
135(1)
6.2.3 Data Acquisition by the STM32 Microcontroller
136(1)
6.2.4 System Identification in Time Domain by MATLAB
137(5)
6.3 Transfer Function from System Identification in Frequency Domain
142(1)
6.3.1 Theoretical Background
142(1)
6.3.2 The Procedure
142(1)
6.3.3 System Identification in Frequency Domain by MATLAB
143(1)
6.4 Application: Obtaining Transfer Function of the DC Motor
143(5)
6.4.1 Mathematical Modeling
143(3)
6.4.2 System Identification in Time Domain
146(1)
6.4.3 System Identification in Frequency Domain
147(1)
6.5 Summary
148(3)
Problems
148(3)
7 Transfer Function Based Control System Analysis
151(32)
7.1 Analyzing System Performance
151(12)
7.1.1 Time Domain Analysis
151(1)
7.1.1.1 Transient Response
152(4)
7.1.1.2 Steady-State Error
156(1)
7.1.2 Frequency Domain Analysis
156(3)
7.1.3 Complex Plane Analysis
159(1)
7.1.3.1 Root-Locus Plot
160(1)
7.1.3.2 Nyquist Plot
160(3)
7.2 The Effect of Open-Loop Control on System Performance
163(4)
7.2.1 What is Open-Loop Control?
163(1)
7.2.2 Improving the System Performance by Open-Loop Control
164(3)
7.3 The Effect of Closed-Loop Control on System Performance
167(7)
7.3.1 What is Closed-Loop Control?
167(3)
7.3.2 Improving the System Performance by Closed-Loop Control
170(4)
7.4 Application: Adding Open-Loop Digital Controller to the DC Motor
174(4)
7.4.1 Hardware Setup
175(1)
7.4.2 Procedure
175(1)
7.4.3 C Code for the System
175(2)
7.4.4 Python Code for the System
177(1)
7.4.5 Observing Outputs
178(1)
7.5 Summary
178(5)
Problems
180(3)
8 Transfer Function Based Controller Design
183(44)
8.1 PID Controller Structure
183(4)
8.1.1 The P Controller
184(1)
8.1.2 The PI Controller
184(1)
8.1.3 The PID Controller
185(1)
8.1.4 Parameter Tuning Methods
185(1)
8.1.4.1 The Ziegler-Nichols Method
186(1)
8.1.4.2 The Cohen-Coon Method
186(1)
8.1.4.3 The Chien-Hrones-Reswick Method
186(1)
8.2 PID Controller Design in Python
187(12)
8.2.1 Parameter Tuning
188(1)
8.2.2 Controller Design
188(1)
8.2.2.1 P Controller
188(3)
8.2.2.2 PI Controller
191(3)
8.2.2.3 PID Controller
194(3)
8.2.3 Comparison of the Designed P, PI, and PID Controllers
197(2)
8.3 Lag-Lead Controller Structure
199(2)
8.3.1 Lag Controller
199(1)
8.3.2 Lead Controller
200(1)
8.3.3 Lag-Lead Controller
200(1)
8.4 Lag-Lead Controller Design in MATLAB
201(16)
8.4.1 Control System Designer Tool
201(2)
8.4.2 Controller Design in Complex Plane
203(1)
8.4.2.1 Lag Controller
204(2)
8.4.2.2 Lead Controller
206(1)
8.4.2.3 Lag-Lead Controller
207(3)
8.4.2.4 Comparison of the Designed Lag, Lead, and Lag-Lead Controllers
210(1)
8.4.3 Controller Design in Frequency Domain
211(1)
8.4.3.1 Lag Controller
211(2)
8.4.3.2 Lead Controller
213(1)
8.4.3.3 Lag-Lead Controller
213(4)
8.4.3.4 Comparison of the Designed Lag, Lead, and Lag-Lead Controllers
217(1)
8.5 Application: Adding Closed-Loop Digital Controller to the DC Motor
217(6)
8.5.1 Hardware Setup
217(1)
8.5.2 Procedure
217(1)
8.5.3 C Code for the System
218(1)
8.5.4 Python Code for the System
219(1)
8.5.5 Observing Outputs
220(3)
8.6 Summary
223(4)
Problems
224(3)
9 State-space Based Control System Analysis
227(20)
9.1 State-space Approach
227(1)
9.1.1 Definition of the State
227(1)
9.1.2 Why State-space Representation?
228(1)
9.2 State-space Equations Representing an LTI System
228(5)
9.2.1 Continuous-time State-space Equations
229(2)
9.2.2 Discrete-time State-space Equations
231(1)
9.2.3 Representing Discrete-time State-space Equations in Code Form
231(2)
9.3 Conversion Between State-space and Transfer Function Representations
233(3)
9.3.1 From Transfer Function to State-space Equations
233(2)
9.3.2 From State-space Equations to Transfer Function
235(1)
9.4 Properties of the System from its State-space Representation
236(4)
9.4.1 Time Domain Analysis
236(1)
9.4.2 Stability
237(1)
9.4.3 Controllability
238(1)
9.4.4 Observability
239(1)
9.5 Application: Observing States of the DC Motor in Time
240(3)
9.5.1 Hardware Setup
240(1)
9.5.2 Procedure
240(1)
9.5.3 C Code for the System
240(2)
9.5.4 Python Code for the System
242(1)
9.5.5 Observing Outputs
243(1)
9.6 Summary
243(4)
Problems
244(3)
10 State-space Based Controller Design
247(32)
10.1 General Layout
247(3)
10.1.1 Control Based on State Values
248(1)
10.1.2 Regulator Structure
249(1)
10.1.3 Controller Structure
249(1)
10.1.4 What if States Cannot be Measured Directly?
250(1)
10.2 Regulator and Controller Design via Pole Placement
250(3)
10.2.1 Pole Placement
251(1)
10.2.2 Regulator Design
251(1)
10.2.3 Ackermann's Formula for the Regulator Gain
251(1)
10.2.4 Controller Design
252(1)
10.2.5 Ackermann's Formula for the Controller Gain
253(1)
10.3 Regulator and Controller Design in Python
253(7)
10.3.1 Regulator Design
253(3)
10.3.2 Controller Design
256(4)
10.4 State Observer Design
260(3)
10.4.1 Mathematical Derivation
261(1)
10.4.2 Ackermann's Formula for the Observer Gain
262(1)
10.5 Regulator and Controller Design in Python using Observers
263(7)
10.5.1 Observer Design
263(1)
10.5.2 Observer-Based Regulator Design
264(2)
10.5.3 Observer-Based Controller Design
266(4)
10.6 Application: State-space based Control of the DC Motor
270(5)
10.6.1 Hardware Setup
270(1)
10.6.2 Procedure
271(1)
10.6.3 C Code for the System
271(2)
10.6.4 Python Code for the System
273(1)
10.6.5 Observing Outputs
274(1)
10.7 Summary
275(4)
Problems
275(4)
11 Adaptive Control
279(20)
11.1 What is Adaptive Control?
279(1)
11.2 Parameter Estimation
280(3)
11.3 Indirect Self-Tuning Regulator
283(5)
11.3.1 Feedback ISTR Design
283(4)
11.3.2 Feedback and Feedforward ISTR Design
287(1)
11.4 Model-Reference Adaptive Control
288(2)
11.5 Application: Real-Time Parameter Estimation of the DC Motor
290(7)
11.5.1 Hardware Setup
290(1)
11.5.2 Procedure
291(1)
11.5.3 C Code for the System
291(2)
11.5.4 Observing Outputs
293(4)
11.6 Summary
297(2)
Problems
297(2)
12 Advanced Applications
299(30)
12.1 Nonlinear Control
299(3)
12.1.1 Nonlinear System Identification by MATLAB
299(2)
12.1.2 Nonlinear System Input-Output Example
301(1)
12.1.3 Gain Scheduling Example
302(1)
12.1.4 Flat Systems Example
302(1)
12.1.5 Phase Portraits Example
302(1)
12.2 Optimal Control
302(3)
12.2.1 The Linear Quadratic Regulator
303(1)
12.2.2 Continuous-Time LQR Example
304(1)
12.2.3 LQR for the DC Motor
304(1)
12.3 Robust Control
305(1)
12.4 Distributed Control
306(2)
12.4.1 Hardware and Software Setup
306(1)
12.4.2 Procedure
307(1)
12.5 Auto Dimmer
308(1)
12.5.1 Hardware Setup
308(1)
12.5.2 Procedure
309(1)
12.6 Constructing a Servo Motor from DC Motor
309(2)
12.6.1 Hardware Setup
309(1)
12.6.2 Procedure
310(1)
12.7 Visual Servoing
311(2)
12.7.1 Hardware Setup
312(1)
12.7.2 Procedure
312(1)
12.8 Smart Balance Hoverboard
313(1)
12.8.1 Hardware Setup
313(1)
12.8.2 Procedure
314(1)
12.9 Line Following Robot
314(1)
12.9.1 Hardware Setup
314(1)
12.9.2 Procedure
314(1)
12.10 Active Noise Cancellation
315(2)
12.10.1 Hardware Setup
315(1)
12.10.2 Procedure
316(1)
12.11 Sun Tracking Solar Panel
317(1)
12.11.1 Hardware Setup
317(1)
12.11.2 Procedure
317(1)
12.12 System Identification of a Speaker
318(3)
12.12.1 Hardware Setup
319(1)
12.12.2 Procedure
319(2)
12.13 Peltier Based Water Cooler
321(1)
12.13.1 Hardware Setup
321(1)
12.13.2 Procedure
322(1)
12.14 Controlling a Permanent Magnet Synchronous Motor
322(7)
12.14.1 Hardware Setup
322(1)
12.14.2 Procedure
323(6)
Appendix A STM32 Board Pin Usage Tables 329(6)
Bibliography 335(4)
Index 339
Cem Ünsalan, PhD, has over 20 years of experience working on signal processing and embedded systems. He received his doctorate from Ohio State University in 2003. He has published 23 papers in scientific journals and eight international books.

Duygun E. Barkana, PhD, has over 16 years of experience working on control and robotic systems. She received her doctorate from Vanderbilt University in 2007. She has published 22 papers in scientific journals and six international book chapters.

H. Deniz Gürhan is pursuing a PhD at Yeditepe University, where he received his BSc degree. He has over six years of experience working with guided microprocessors and digital signal processing.