Ki jan yo reyalize kontwòl pid pa mikrokontroleur

Jun 25, 2025 Kite yon mesaj

Algorithm kontwòl PID se yon algorithm kontwòl lajman itilize, kontwòl PID gen avantaj ki genyen nan paramèt reglabl, pakèt aplikasyon, presizyon kontwòl segondè. Nan jeni pratik, algorithm PID ka aplike nan kontwòl elektwomekanik, automatisation endistriyèl, kontwòl robo, kontwòl mikropwosesè ak anpil lòt jaden.


Twa paramèt algorithm PID yo ajiste: pwopòsyonalite konstan Kp, entegral tan konstan Ti, diferans tan konstan Td. Diferan sistèm bezwen mete diferan paramèt PID, epi li jeneralman nesesè pou jwenn paramèt optimal yo atravè eksperyans ak debogaj. Konstan pwopòsyonèl Kp ajiste pwopòsyon an, ajiste rapò pwodiksyon ak erè fidbak nan sistèm kontwòl la; konstan tan entegral Ti ajiste entegral la, ajiste akimilasyon erè nan sistèm kontwòl la; diferans lan tan konstan Td ajiste diferans lan, ajiste pousantaj chanjman erè nan sistèm kontwòl la.


Ki lide pou reyalize algorithm pid ak mikrokontroleur


Pou reyalize algorithm kontwòl PID sou yon mikrokontwolè, sa ki annapre yo se lide jeneral nan realizasyon:


1. **Detèmine paramèt PID yo**:


- Dapre karakteristik ak bezwen objè kontwòl aktyèl la, chwazi koyefisyan pwopòsyonèl apwopriye (Kp), tan entegrasyon (Ti) ak tan diferansyasyon (Td).


2. **Akizisyon done Capteur**:


- Sèvi ak detèktè apwopriye (egzanp, detèktè tanperati, detèktè pozisyon, elatriye) pou kolekte done fidbak nan objè kontwòl la an tan reyèl.


3. **Mete valè ak konparezon valè fidbak**:


- Konpare valè a mete (valè vle) ak valè fidbak la epi kalkile valè erè a (Erè).


4. **Kalkil PID**:


- Kantite kontwòl la (pwodiksyon) kalkile dapre fòmil algorithm PID la: PID=Kp * Erè + Ki * ∫ Erè dt + Kd * d(Erè)/dt.


- Kp, Ki ak Kd se paramèt PID yo, Erè se valè erè a, ∫ Erè dt vle di tèm entegral la epi d(Erè)/dt vle di tèm diferans lan.


5. **Manitasyon Limit** (si ou vle):


- Pou kèk aplikasyon, li ka nesesè pou limite ranje valè pwodiksyon an pou evite depase ranje akseptab objè kontwòl la.


6. **Siyal kontwòl pwodiksyon**:


- Kantite kontwòl kalkile a se pwodiksyon kòm yon siyal kontwòl nan actuator la (egzanp motè, valv, elatriye) reyalize règleman an ak kontwòl nan objè kontwòl la.


7. **Mete frekans kontwòl**:


- Dapre bezwen aplikasyon espesifik yo, mete frekans kontwòl apwopriye pou kontwole sik ekzekisyon algorithm la.


8. **Sik ekzekisyon algorithm PID**:


- Nan sik tan reyèl-, etap ki anwo yo yo egzekite repete pou kontwole valè fidbak la, kalkile kantite kontwòl la, ak pwodiksyon siyal kontwòl la pou reyalize kontwòl ki estab nan objè a.


Nan pwogramasyon mikrokontwolè aktyèl la, ou ka chwazi zouti devlopman apwopriye ak langaj pwogramasyon (tankou C oswa langaj asanble) dapre modèl espesifik mikrokontroleur ak platfòm devlopman. Li ta dwe remake ke nan aplikasyon pratik, pral gen anpil teknik pou optimize ak amelyore algorithm PID la, tankou separasyon entegral, adaptasyon PID, elatriye, ki ka plis rechèch ak aplike selon bezwen espesifik.


PID kontwolè prensip ak workflow


Kontwolè PID a konsiste de twa pati: pwopòsyonèl (P), entegral (I) ak diferans (D), ak jenere pwodiksyon kontwòl la pa trete erè, devyasyon ak pousantaj chanjman nan sistèm nan. Flux travay li gen ladan etap sa yo:


- Jwenn valè sib ak fidbak

- Kalkile erè a

- Kalkile pwodiksyon kontwòl la baze sou koyefisyan pwopòsyonalite, tèm entegral ak tèm diferans.

- Mete ajou paramèt kontwolè yo

- Pwodiksyon siyal kontwòl yo

 


STM32 kòd aplikasyon


Sa ki anba la a se echantiyon kòd pou konsepsyon ak aplike yon kontwolè PID lè l sèvi avèk yon mikrokontroleur STM32:


```c

#include "stm32f4xx.h"

// Defini paramèt kontwolè PID yo

flote Kp=0.5; // echèl faktè

flote Ki=0.2; // Koyefisyan entegral

flote Kd=0.1; // Koefisyan diferans

// Defini varyab depo

flote setpoint=50.0; // sib valè

flote fidbak=0.0; // valè fidbak

erè flote=0.0; // erè

flote dènye_erè=0.0; // dènye erè

flote entegral=0.0; // Tèm entegral

// PID kontwolè pwodiksyon fonksyon kalkil

float pidController (float dt)

float pidController(float dt) {

// Kalkile erè a

erè=fikse - fidbak; // Kalkile tèm entegral la.

// Kalkile tèm entegral la

entegral += erè * dt; // kalkile tèm diferans lan

// Kalkile diferans lan

flote derive=(erè - dènye_erè) / dt; // kalkile pwodiksyon kontwòl la.

// Kalkile pwodiksyon kontwòl la

flote pwodiksyon=Kp * erè + Ki * entegral + Kd * derive; // Kalkile pwodiksyon kontwòl la.

// Mete ajou dènye erè

last_error=erè; // mete ajou dènye erè.

last_error=erè; retounen pwodiksyon; // Kalkile pwodiksyon kontwòl la.

}

int prensipal (anile)

{

pandan (1)

{

// Jwenn valè fidbak la

// Jwenn entèval tan an

// Kalkile pwodiksyon PID la

flote dt=0.01; // 0.01s kòm entèval tan nan egzanp lan

float control_output=pidController(dt); // pwodiksyon siyal kontwòl la.

// Sortie siyal kontwòl la

// Reta siyal kontwòl la pou yon sèten peryòd tan

pou (int mwen=0; mwen 《 10000;i++).

}

retounen 0; }

}

Voye rechèch

whatsapp

Telefòn

Mel

Rechèch