Sunteți pe pagina 1din 8

PROGRAMAREA APLICAȚIILOR DE TIMP REAL

-PROIECT-

Student: Sava Vasile-Silviu


Grupa: 1402B
Îndrumător: Ș.l.Dr.Ing. Cătălin Brăescu
Facultatea de Automatică și Calculatoare din cadrul universității „Gheorghe Asachi” din Iași

2
Facultatea de Automatică și Calculatoare din cadrul universității „Gheorghe Asachi” din Iași

Cuprins

TEMA PROIECT.............................................................................................................................3
DEZVOLTAREA PROIECTULUI..................................................................................................4
DESCRIEREA TASK-URILOR......................................................................................................4
Taskul T1......................................................................................................................................4
INT0.............................................................................................................................................4
prvSetupHardware(void)..............................................................................................................4
Taskul T2......................................................................................................................................4
Taskul T3......................................................................................................................................5
Taskul T4......................................................................................................................................5
CONFIGURAREA PINILOR MICROCONTROLLER-ULUI......................................................5
CONECTAREA PERIFERICELOR EXTERNE............................................................................6
Conectarea senzorului digital de temperatură DS18S20/DS18B20.............................................6
LCD-ul DEM 20486 SYH/LY.....................................................................................................6
Conectarea potențiometrului........................................................................................................6

3
Facultatea de Automatică și Calculatoare din cadrul universității „Gheorghe Asachi” din Iași

TEMA PROIECT

Să se proiecteze și să se realizeze o aplicație încorporată bazată pe sistemul de operare


FreeRTOS și microcontroller-ul dsPIC33FJ128MC802. Aplicația va comanda o trapă prin
intermediul unui servomotor, pe baza informației de temperatură achiziționate prin intermediul
unui senzor de temperatură digital DS18S20/DS18B20.

Aplicația va respecta următoarele detalii de implementare:

1. va fi pornită respectiv oprită prin intermediul butonului SW1 de pe plăcuță. Starea


aplicației va fi indicată de un LED conectat la pinul RB0. LED-ul va fi aprins atunci când
aplicația este pornită și va fi aprins intermitent când aplicația este oprită.

2. temperatura va fi achiziționată de senzorul DS18S20 sau DS18B20, deschiderea


trapei fiind controlată prin servomotor. Temperaturii de 25°C îi va corespunde poziția
centrală a servomotorului. Servomotorul se va deplasa între pozițiile extreme pentru
limitele de temperatură (20°C-30°C). Senzorul de temperatură va fi conectat la pinul RB2
al microcontroller-ului.

3. aplicația va pune la dispoziție pe lângă modul automat de comandă a


servomotorului și un mod manual de control prin intermediul unei tensiuni externe
aplicate pe pinul RB3. Trecerea dintr-un mod de lucru în altul se face prin intermediul
meniului de comenzi implementat pe PC. În modul de lucru manual servomotorul va fi
poziționat pe mijloc pentru o tensiune de 2V și se va deplasa în pozițiile extreme pentru
valorile limită de 1V și 3V. Modul de lucru va fi indicat vizual prin intermediul unui LED
conectat la pinul RB1. LED-ul va fi aprins în modul de lucru automat și stins în modul de
lucru manual.

4. aplicația va permite comunicația prin interfața serială cu PC-ul. Placa cu dsPIC va


recepționa comenzi sub forma unor caractere și va transmite drept răspuns șiruri de
caractere.

5. pe un ecran LCD vor fi afișate informații privind temperatura, modul de lucru,


tensiunea achiziționată de la pinul RB3 precum și ultima comandă primită.

6. aplicația va pune la dispoziția utilizatorului un meniu cu următoarele comenzi:

o interogare mod de lucru;

o comutare mod de lucru automat/manual (modul de lucru predefinit este cel


automat);

o interogare temperatură.
4
Facultatea de Automatică și Calculatoare din cadrul universității „Gheorghe Asachi” din Iași

Modul de implementare al proiectului (numărul de task-uri, sarcinile acestora, modul de


implementare al accesului la resurse precum și celelalte obiecte ale sistemului de operare
definite) este la alegerea studentului și va fi prezentat în proiectul prezentat în ultima ședință de
proiect.

5
Facultatea de Automatică și Calculatoare din cadrul universității „Gheorghe Asachi” din Iași

DEZVOLTAREA PROIECTULUI

Proiectul este realizat in mediul de dezvoltare MPLAB IDE V8.43. Comunicația serială
este monitorizată cu ajutorul terminalului CoolTerm. Aplicația este implementata in jurul
microcontroller-ului dsPIC33FJ128MC802/dsPIC33FJ64MC802. Pentru programarea
microcntroller-ului se folosește programatorul PICkit 3.
Pentru realizarea aplicației este folosit sistemul de opereare FreeRTOS.
Pentru utilizarea perifericelor, este nevoie de un set de drivere. Pentru comunicarea cu
LCD-ul sunt puse la dispoziție fișierele new_lcd.c si new_lcd.h. Funcțiile necesare utilizării
interfeței seriale se găsesc in fișierele new_serial.c si new_serial.h. Fișierele care conțin funcțiile
de comunicare cu senzorul digital de temperatură sunt ds18s20.h respectiv ds18s20.c.

DESCRIEREA TASK-URILOR

Taskul T1
Acesta este taskul de prioritate cea mai mare. Când plăcuța este pusă sub alimentare,
acesta va fi primul task lansat. Acest task va afișa pe LCD modul „oprit” și ledul conectat la
portul _RB va fi aprins intermitent. La prima apăsare a butonului SW1 de pe plăcuță apare o
întrerupere (INT0). Atunci taskul este suspendat și aplicația va rula in modul „automat”. La
următoarea apăsare taskul intră înapoi in execuție. La intrarea in execuție taskul T1 suspenda
toate celelalte task-uri.

INT0
Rutina de tratare a întreruperii INT0 este apelată la apăsarea butonului SW1. Daca in
momentul apăsării butonului SW1 variabila globală prin care se modelează starea aplicației
„ON”/ „OFF”, „flag”, are valoarea 1 (aplicația este in stare „OFF”),atunci singurul task care
rulează, taskul T1, va fi suspendat, iar restul task-urilor vor fi puse in starea de așteptare, de unde
pot intra pe rând in execuție, în funcție de priorități.

prvSetupHardware(void)
În cadrul acestei funcții se realizează toate inițializările necesare: este pornit prescaller-ul,
este pornita conversia AD, este pornita modulația semnalului PWM, achiziția de valori de la
senzorul de temperatură, este inițializat LCD-ul este inițializat timer-ul Timer3, sunt setați pinii
conform tabelului 1.

Taskul T2
Acest task se ocupă de funcționarea in modul automat al aplicației. În cadrul acestui task
se realizează achiziția valorilor de temperatură de la senzorul de temperatură digital
DS18S20/DS18B20.Vlorile sunt afișate pe LCD și in funcție de acestea este modificat semnalul
PWM pentru poziționarea servomotorului, adică închiderea sau deschiderea trapei.
6
Facultatea de Automatică și Calculatoare din cadrul universității „Gheorghe Asachi” din Iași

Taskul T3
Taskul T3 acoperă funcționarea in modul manual al aplicației. În modul manual, poziția
trapei este determinată în funcție de valoarea tensiunii citite la pinul RB3.Aaceasta, la rândul ei,
este afișată pe LCD.

Taskul T4
Rolul acestui task este de a selecta modul de funcționare al aplicației. Taskul citește
valoarea pinului RB1.Dacă valoarea citita este 0 aplicația rulează in modul automat, pentru
valoarea 1, aplicația rulează in modul automat.

CONFIGURAREA PINILOR MICROCONTROLLER-ULUI

Tabelul 1
La pinii RB15, RB14, RB12, RB1, setați ca pini digitali de ieșire sunt conectați pinii D7,
D6, D5, D4,pinii de date ai LCD-ului.
La pinul RB7 este conectat butonul SW1, la apăsarea căruia se generează întreruperea
INT0.
La pinii RB6, RB5, RB4 sunt conectați pinii RS, RW, E sunt pinii de comunicare ai
LCD-ului.
Pinul RB3 este setat ca pin analogic de intrare si este folosit pentru citirea tensiunii de la
cursorul unui potențiometru.
La pinul RB2 se face recepția valorilor primite de la senzorul digital de temperatură,
acesta fiind setat ca intrare digitală.
Pinul RB1 este setat ca intrare digitală si este folosit pentru schimbarea modului de
operare al aplicației. Când acesta este pus la masa, variabila globala „flagmod” ia valoarea 0,
daca pinul este pus la 3.3V variabila ia valoarea 1;
Pinul RB0 este setat ca ieșire digitală, fiind folosit pentru a indica starea aplicației.

CONECTAREA PERIFERICELOR EXTERNE

7
Facultatea de Automatică și Calculatoare din cadrul universității „Gheorghe Asachi” din Iași

Conectarea senzorului digital de temperatură DS18S20/DS18B20


Acesta este un senzor digital cu comunicare pe un singur pin, pinul 2
DQ. Este necesar ca acest pin să fie conectat la un pin de intrare digitală al
microcontroler-ului.
În cazul nostru:
-Pinul1-GND este conectat la un pin de masă de pe plăcuță;
-Pinul2-DQ este conectat la pinul RB2 al microcontrolle-ului, setat
corespunzător după cum se poate vedea in capitolul anterior;
-Pinul3-VDD este conectat la un pin cu tensiune de 3,3V de pe placă.

LCD-ul DEM 20486 SYH/LY


Nr. pin LCD Simbol Funcție Conexiune
1 VSS Pin de masă GND placă
2 VDD Pin de alimentare 5V placă
3 V0 Pin pentru reglarea contrastului GND-Prin rezistență
4 RS Selectare registru(0-instrucțiuni, 1-date) RB6
5 R/W Selecție citire=1/scriere=0 RB5
6 E activare RB4
11 DB4 Pini bidirecționale utilizați pentru RB12
12 DB5 transferul de date RB13
13 DB6 RB14
14 DB7 RB15
Tabelul 2

Conectarea potențiometrului
Potențiometrul este conectat cu un capăt la un pin cu tensiunea de 5V de pe placă, celălalt capăt
la un pin de masă, iar cursorul este conectat la pinul RB3 al microcontroller-ului.

S-ar putea să vă placă și