25/03/2021
proiectul monitorizare alge educate care papa CO2 la greu...
Elevii vor studia eco-sistemul creat, si vor realiza montaje folosind senzori si componente + Arduin
25/03/2021
proiectul monitorizare alge educate care papa CO2 la greu...
25/03/2021
Cer senin tuturor... captura de captura. NOOA 19.
19/03/2021
... de final, insa va continua acest proiect
18/03/2021
16/03/2021
... din vremurile bune, când scriam code cu cei mici pitici...
14/03/2021
14/03/2021
Impactul proiectului asupra procesului de predare/învățare în cazul științelor exacte.
. Codul sursa din acest document
poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari.Controller PID cu Arduino
Prezentare generala.
In acest tutorial vei descoperi cm se poate realiza un controller PID avand o placa Arduino,
cum functioneaza metoda PID si ce putem realiza cu aceasta metoda.
Controlul PID (proportional, integral, derivativ) este o metoda utilizata la scara larga in reglarea
proceselor, cm ar fi reglarea temperaturii, reglarea nivelului de apa intr-o incinta, controlul vitezei unui
motor electric sau pozitionarea capului de imprimanta cu jet de cerneala. Acestea sunt doar cateva
exemple.
Desi aplicatiile difera intre ele, metoda de abordare folosind controlul PID este asemanatoare.
Ecuatia care descrie comportamentul unui controller PID exista sub diverse forme, dar forma generala
este urmatoarea:
Control = kP*Eroare + kI*Σ Eroare + kD * dP/dT
Eroarea reprezinta diferenta dintre valoarea actuala a procesului (sa presupunem ca reglam
viteza de rotatie a unui motor) si valoarea pe care ne-o dorim sa o atingem (referinta).
Intr-un limbaj de programare, eroarea se poate exprima astfel:
Eroare = Valoare – Referinta
Σ Eroare reprezinta suma erorilor anterioare iar dP/dT - rata de schimb a valorii procesului in
raport cu timpul. Nu vei insista foarte mult asupra ecuatiilor, deoarece vei descoperi mai tarziu cm
functioneaza algoritmul direct intr-un sketch Arduino.
Coeficientul proportional kP, integral kI si derivativ kD sunt responsabili cu reglarea
controllerului PID corespunzator procesului pe care il regleaza. Cu alte cuvinte, in cazul unui robot,
daca reglezi corect PID-ul, atunci robotul va fi foarte rapid si foarte precis.
Control este o valoare de tensiune sau curent pe care o vei utiliza atunci cand vrei sa controlezi
elementele de executie. In cazul unui robot, vei utiliza valoarea Control pentru a regla tensiunea de
alimentare a motoarelor (elementul de executie).
http://www.robofun.ro/forumAlgoritmul controllerului PID.
Iti propun urmatorul pseudocod care iti va arata ca metoda PID nu este foarte complicata.
PID:
Eroare = Referinta – Eroare_Actuala
Integral = Integral + (Eroare*dt)
Derivativ = (Eroare - Eroare_anterioara)/dt
Control = (Eroare*kP) + (Integral*kI) + (Derivativ*kD)
Eroare_anterioara = Eroare
Asteapta(dt)
GOTO PID
Pseudocodul iti arata pasii pe care ii urmeaza un controller PID atunci cand se afla in functiune.
Poate fi util atunci cand vrei sa programezi un controller PID, intr-un limbaj diferit de catre cel folosit
in Arduino.
Mai jos poti observa un controller PID realizat in Arduino. Programul nu este orientat catre un
exemplu anume, ci este unul general. Ramane la decizia ta sa alegi cm citesti valoarea Pozitie si cum
realizezi comanda motorului.
Actual = analogRead(Pozitie);
Eroare = Referinta - Actual;
if (abs(Eroare) < PragIntegral){ // previne saturatia integralei
Integral = Integral + Eroare; // acumuleaza
}
else {
Integral=0; // trece in 0 daca a depasit limita
}
P = Eroare*kP; // termenul proportional
I = Integral*kI; // termenul integrativ
D = (Eroare_anterioara-Actual)*kD; // termenul derivativ
Drive = P + I + D; // Control total = P+I+D
Drive = Drive*FactorScalare; // scaleaza Drive in domeniul 0-255
if (Drive < 0){ // Verifica directia
digitalWrite (Direction,LOW); // schimba directia
}
else { // schimba directia
digitalWrite (Direction,HIGH);
}
if (abs(Drive)>255) {
Drive=255;
}
http://www.robofun.ro/forum analogWrite (Motor,Drive); // transmite un semnal PWM catre Motor
Eroare_anterioara = Actual; // pastreaza valoarea actuala
}
Comanda PWM.
In exemplul de mai sus s-a utilizat o iesire PWM pentru a controla tensiunea de alimentare a
unui motor. Valoarea din interiorul functiei analogWrite() trebuie sa fie de tip intreg si cuprinsa intre 0 si
255. Valoarea Drive este redimensionata pentru acest interval.
Reglarea PID-ului.
Partea de reglare a controllerului PID nu este foarte simpla. Ea se realizeaza din coeficientii kP,
kI si kD.
Se procedeaza astfel:
• Initial coeficientii kI si kD se egaleaza cu 0 si se va utiliza numai coeficientul kP.
• Se va creste valoarea coeficientului kP pana cand raspunsul controllerului incepe si oscileaza. Cu
alte cuvinte, daca incerci sa reglezi un robot urmaritor de linie, se va mari valoarea kP pana cand
robotul incepe si „se plimba“ in jurul liniei, adica oscileaza. In acest moment s-a ajuns intr-un
punct in care robotul nu se comporta corect, asa ca trebuie sa miscorezi putin valoarea kP pana
cand robotul tinde sa oscileze dar nu foarte mult.
• Se va mari valoarea coeficientul kD care se comporta ca si cm ar anticipa inceputul unei
oscilatii.
• In final, se va mari foarte putin coeficientul kI care imbunatateste timpul de raspuns al
robotului.
Concluzie.
Scopul acestui tutorial este de a-ti realiza o scurta introducere in ceea ce se numeste Regulator
PID. Tutorialul acopera aspectele importante de functionare si este util atunci cand doresti sa realizezi o
comanda cat mai buna a unui proces. Ca exemplu, poti sa reglezi temperatura intr-o incinta sau a unui
recipient (dar nu este absolut necesar sa utilizezi metoda PID), poti sa reglezi viteza de rotatie a unui
motor sau poti mentine in echilibru un pendul invers.
http://www.robofun.ro/forumhttp://www.robofun.ro/foru
05/03/2021
Acest senzor optic poate detecta particule foarte fine cm ar fi fumul de asemenea este efectiv si des folosit in sistemele de purificare a aer. Acest senzor are un consum de mic de curent(pana la 20mA, 11mA in general) si poate duce un senzor de pana la 7V DC. Iesirea este analogica cu un voltaj proportional cu concentratia de praf masurata si cu sensibilitatea de 0.5V/0.1mg/m3.
Senzorul optic de praf Sharp are o dioda infrarosu interna si un fototranzistor amplasate diagonal. Dioda proiecteaza lumina si fototranzistorul detecteaza punctele negre cauzate de particulele fine care trec prin fata acestuia. Aditional, depinzand de voltajul aratat poti vedea daca este fum sau praf in mediul dorit.
Temperatura de lucru: -10 la 60 grade Celsius
Temperatura de depozitare: -20 la 60 grade Celsius
Detecteaza particule mai mari de 0.8 microni
Consum total de curent: 20 mA maxim, 11mA de obicei
Iesirea este analogica cu un voltaj proportional cu concentratia de praf masurata si cu sensibilitatea de 0.5V/0.1mg/m3.
Tensiunea necesara pentru operare: 5-7 V
Durata de viata: 5 ani
Dimensiuni: 46mm * 30mm * 17.6mm
1x Senzor optic pentru particule fine
1x Rezistor 150 Ω
1x Capacitor 220uF
Diagrama de conectare la Arduino
STEMA College CNNS
25 februarie la 08:25 ·
.. in urma cu un an
Fundatia Comunitara Prahova
25 februarie 2020 ·
Juriul a decis: avem 7 proiecte câștigătoare din județul Prahova la cea de-a doua ediție a Fondului Științescu Prahova.
Mulțumim tuturor celor 19 aplicanți pentru proiectele trimise. … Vezi mai mult
05/03/2021
... dispozitiv cu sensor de temperatura, si alarma 105 dB ... urmeaza cu senzori pt gaze si particule 0.8 microni, senzor de presiune, temperatura, umiditate, ...
25/02/2021
Un shield pentru începători, folositor pentru a exersa folosirea câtorva componente de bază fără a mai folosi breadboard-uri și fire.
Este compatibil cu Arduino Uno si Mega.
Conține următoarele:
- display 4x7 led legate la doua shift-registere 74HC595
- 4 leduri
- potențiometru 10k
- 3 butoane
- buzzer piezoelectric
Exemple cod
Arduino Multi-function Shield Projects - Hackatronics Start here with the Hackatronics projects series and the Arduino multi-function shield; great for beginners to get introduced to coding and electronics.
| Monday | 09:00 - 17:00 |
| Tuesday | 09:00 - 17:00 |
| Wednesday | 09:00 - 17:00 |
| Thursday | 09:00 - 17:00 |
| Friday | 09:00 - 17:00 |
| Saturday | 09:00 - 17:00 |