matlab naslovna uvod automatika rsMatlab poseduje mogućnost komuniciranja sa spoljnjim uređajima putem serijskog porta na računaru. Ovaj projekat će prikazati način uspostavljanja dvosmerne veze između programa Matlab i PIC mikrokontrolera. Primer je osmišljen tako da se trenutna vrednost napona na potenciometru, pomoću AD konverzije koja se vrši u mikrokontroleru, prosledi putem serijskog porta računaru , odnosno Matlabu, kada iz njega pozovemo mikrokontroler slanjem stringa ”AU”.

 Matlab iscrtava grafik u realnom vremenu koji prikazuje promenu napona. Na kraju merenja kreira matricu „Očitavanje“ kao i izlaznu datoteku Izlaz.dat u kojima su smešteni rezultati. Ovu datoteku možemo otvoriti u bilo kojem tekstualnom editoru.

serijska komunikacija matlab rs232 projekti automatika.rs
Slika 1. Grafik promene napona u toku vremena

Hardver

 Sam hardver je vrlo jednostavan i pristupačan. Pored mikrokontrolera PIC 16F887 postoje još tri bitne komponente. Potenciometar od 10 kΩ, koji je povezan na analogni ulaz mikrokontrolera i čiji izlazni napon merimo, MAX232N kolo koje omogućava vezu između računara i mikrokontrolera i ženski DB-9 konektor putem kojeg spajamo našu štampanu ploču sa računarom. Opciono se može prikačiti i displej (LCD 2×16) na kojem bi se prikazivala trenutna vrednost napona.

serijska komunikacija matlab rs232 projekti automatika.rs 2Slika 2. Šematski dijagram uređaja za merenje napona sa serijskom komunikacijom

U slučaju da kreiranje štampane ploče kreće od praznog lista papira, poželjno je predvideti 5-pinski konektor putem kojeg bi se vršilo programiranje mikrokontrolera u samom uređaju.

Ova funkcija se naziva ICSP (In-Circuit Serial Programming) i ostvaruje se dovođenjem potrebnih napona iz programatora na pomenuti konektor. Ako ovako dovedeni naponi remete ostalu elektroniku uređaja, potrebno je ostvariti njihovo odvajanje tokom programiranja otpornicima ili kratkospojnicima.

Za povezivanje uređaja i računara koristi se standardni muško-ženski DB-9 kabl. Treba obezbediti i izvor stabilisanog jednosmernog napona od +5 volti kojim će se napajati kompletan hardver na štampanoj ploči odnosno uređaj. 

1 serijska komunikacija matlab rs232 projekti automatika.rs
Slika 3. ISCP (In-Circuit Serial Programming)

Softver

 Mikrokontroler. Ideja programa je da po uključenju mikrokontroler čeka na string „AU“ koji mu treba poslati sa računara putem serijske komunikacije da bi započeo merenje napona. Merena vrednost se potom šalje računaru kao brojčani podatak tipa reč (Word), veličine 16 bita. Ovo je bitan detalj jer se kasnije, u Matlabu, podatak koji se prima definiše kao celobrojna pozitivna vrednost veličine 16 bita (Uint16). Dalja obrada vrednosti se izvodi u Matlabu.

Serijska komunikacija se ostvaruje pomoću RS-232-C standarda. Potrebno je definisati brzinu prenosa podataka, koja za ovaj primer iznosi 9600 bitova u sekundi (baud rate). Format podataka koji se prima i šalje je podešen kao 8N1 (8 bitova za podatke, bez bita za parnost i jedan stop bit).

Dobar način da se testira kod odnosno serijska komunikacija sa računarom jeste pomoću serijskog komunikatora (Serial communicator) koji se nalazi u kompajleru Proton IDE (Proton Basic compiler). Pre bilo kakvog izvršavanja koda proveriti da li su zatvoreni svi programi koji pristupaju serijskom portu kako ne bi prijavljivao grešku.

serijska komunikacija matlab rs232 projekti automatika.rs 4
Slika 4. Serijski komunikator u Protonu

 Matlab. Na početku skripta neophodno je definisati parametre serijske komunikacije. Bitno je da su ti parametri identični onim koji su uneti u mikrokontroler da ne bi dolazilo do greške u razmeni podataka.

serijska komunikacija matlab rs232 projekti automatika.rs 5
Slika 5. Dijagram toka programa


Mikrokontroler PIC 16F887 vrši desetobitnu AD konverziju što znači da ima skalu od 1024 podeoka na osnovu kojih poredi ulazni napon. Naponska vrednost jednog podeoka dobija se deljenjem punog naponskog opsega sa brojem podeoka, odnosno 5/1024.

Pošto mikrokontroler šalje trenutni broj podeoka, da bi se dobila vrednost očitanog napona, neophodno je primljeni podatak pomnožiti sa  5/1024 i tek tada se dobija tačan rezultat u voltima.

Sam skript zbog razumevanja je upotpunjen komentarima, ipak nije loše iskoristiti Matlabov help sistem u slučaju nejasnoća. Njegovo efikasno korišćenje se postiže kucanjem u komandnom prozoru: >> help ”ime funkcije” (čije želimo objašnjenje).

U slučaju da Matlab ne zatvori i ne obriše serijski port zbog neke greške, ukucavanjem komande, prikazane ispod, u komandni prozor Matlaba to se može naknadno postići.

delete(instrfind)

Kod za PIC možete preuzeti ovde.

POSTAVI ODGOVOR

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.