upravljanje dc motorom pomocu mobilnog telefona

25
Projekat iz predmeta Digitalna upravljačka elektronika - Upravljanje DC motorom pomoću mobilnog telefona - FTN Novi Sad, januar 2010.

Upload: sunwheel

Post on 01-Dec-2014

126 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Upravljanje DC Motorom Pomocu Mobilnog Telefona

Projekat iz predmeta Digitalna upravljačka elektronika

- Upravljanje DC motorom pomoću mobilnog telefona -

Mentori: Studenti:Prof. Dr Miloš Živanov Branislav Tejić H257Vladimir Rajs Srđan Savić H267

FTN Novi Sad, januar 2010.

Page 2: Upravljanje DC Motorom Pomocu Mobilnog Telefona

Sadržaj

1. Zadatak…………...……………………………………………………………………...…22. Pregled mogućih rješenja...………………………………………………………………..33. Opis odabranog rješenja……………..………………………………………….………...4

3.1 Detaljan opis svih elemenata sistema……………………………………………...43.1.1 Drajver za motor…………………………………………..……………..43.1.2 Upravljačka elektronika……………………………………………….....7

4. Realizacija…………………………………………………………………………………105. Zaključak………………………………………………………………………………….116. Literatura………………………………………………………………………………….127. Dodatak……………………………………………………………………………………13

1

Page 3: Upravljanje DC Motorom Pomocu Mobilnog Telefona

1. Zadatak

Tema ovog projekta je upravljanje DC motorom pomoću mobilnog telefona. Izabrali smo ovu temu jer smo uvidjeli da su potencijali mobilnog telefona i pored široke rasprostranjenosti i upotrebe nedovoljno iskorišćeni. Glavna prednost našeg upravljanja u odnosu na druga standardna rješenja poput RF (Radio Frequency,eng) i IR (Infrared communication, eng) komunikacije je u mogućnostima koje pruža GSM komunikacija.

Predmet projekta je komunikacija mobilnog telefona i upravljačke jedinice, projektovanje i izrada upravljačke elektronike i izrada drajvera za motor. Projekat se sastoji iz više poglavlja kao što su pregled mogućih rješenja, opis odabranog rješenja projekta projekta, realizacije i zaključka.

U pregledu mogućih rješenja se govori o projektovanju i izradi drajvera za DC motor i upravljačke elektronike . Takođe se govori o načinu komunikacije i izboru kontrolera.

U opisu odabranog rješenja projekta dat je detaljan opis konkretnih izabranih komponenti i opisani su svi elementi sistema. Date su šeme svih djelova sistema i opisan je način njihovog rada.

U zaključku je dat kratak rezime projekta i ideje za moguća proširenja i poboljšanja.

2

Page 4: Upravljanje DC Motorom Pomocu Mobilnog Telefona

2. Pregled mogućih rješenja

Za upravljanje DC motorom potrebno je izabrati ili projektovati drajver. Mi smo se odlučili za projektovanje jer nam je potrebna strujna zaštita, da napon napajanja motora bude preko 25 V, da može da da struju do 2 A i da ima mogućnost upravljanja brzinom. Kao osnovu za drajver iskoristili smo integrisano kolo L298 koje ispunjava većinu naših zahtjeva i koga je lako proširiti. Odbacili smo mogućnost realizacije drajvera pomoću releja zbog lošeg upravljanja brzinom. Takođe smo odbacili ideju da sami projektujemo H – most sastavljen od tranzistora zbog temperaturne stabilnosti, zaštite i manje cijene integrisanog kola L298.

Da bismo povezali sve komponente u jednu cjelinu projektovali smo neophodnu upravljačku ektroniku. Mozak sistema čini Atmelov kontroler Tiny 2313. Kriterijum za izbor kontrolera bio je da posjeduje odgovarajući broj ulazno/izlaznih pinova, PWM (PulseWidthModulation, eng) izlaz i serijsku komunikaciju. Kontroler ATtiny 2313 pokazao se kao optimalan izbor.

Za komunikaciju između korisnika i upravljačke elektronike koristili smo dva telefona. Jedan kao predajnik, a drugi kao prijemnik. Idealno rješenje za prijemni uređaj bio bi GSM modul zbog pouzdanijeg rada, lakšeg povezivanja sa upravljačkom pločom, kompaktnosti finalnog uređaja i postojanja standardizovanog seta AT komandi za određeni tip modema. Zbog niže cijene, rasprostranjenosti u društvu i dodatnog potencijala za buduća proširenja projekta odlučili smo se za mobilni telefon kao prijemnik. Glavni kriterijum za izbor telefona je bio da posjeduje serijsku (RS232) komunikaciju sa internim modemom i da podržava osnovni set AT komandi.

Prilikom izrade projekta, probali smo komunikaciju sa više modela mobilnih telefona. Prvi koji smo probali bio je Siemens C35. Njegova mana je što su mu naponski nivoi različiti od nivoa upravljačke elektronike, pa bi bilo neophodno projektovati translator nivoa. Drugi telefon je bio Nokia 6120. Njegova mana je sto nema standardnu dvožičnu RS232 komunikaciju, već koristi Fbus (Fastbus) komunikaciju koja zahtjeva da baudrate bude 115 200 bps, pri čemu kontroler pravi grešku baudrate-a od 7,8 %. Poslednji telefon koji smo probali i na kraju koristili u izradi projekta je SonyEricsson k300i. On posjeduje standardnu dvožičnu serijsku komunikaciju i naponski nivoi su mu isti kao i na upravljačkoj elektronici, od 0 do 5 V.

3

Page 5: Upravljanje DC Motorom Pomocu Mobilnog Telefona

3. Opis odabranog rješenja projekta

3.1 Detaljan opis svih elemenata uređaja

3.1.1 Drajver za motor

Kao osnovu za drajver iskoristili smo integrisamo kolo L298. Ovo kolo predstavlja dupli H – most realizovan sa bipolarnim tranzstorima. Karakteristike kola L298 su:

Napon napajanja motora do 46 V Maksimalna struja motora 4 A Nizak napon saturacije Integrisana temperaturna zaštita Napon logičke „0“ do 1.5 V (velika imunost na smetnje)

Kolo se proizvodi u dva tipa kućišta, Multiwatt 15 i PowerSO20. Radi boljeg hlađenja i većih strujnih mogućnosti odabrali smo kolo L298 u Multiwatt 15 kućištu.

Slika 1. Multiwatt 15 kućište [ 7 ]

Ukoliko je potrebno da se obezbjedi nesmetano proticanje veće struje kroz drajver, do skoro 4 A, moguće je paraleno vezeti dva mosta. To je veoma lako uraditi sa ovim kolom jer su u jednom kućištu integrisana dva odvojena H – mosta.

Slika 2. Paraleno vezivanje dva H – mosta [ 7 ]

Na slici 10. je data osnovna šema drajvera sa L298 kolom. Sa njim se upravlja sa tri logička signala koji se dovode na ulaze Ven ( Enable, eng ) , C i D. Dok je enable ulaz na logičkoj „ 0 “ H – most je isključen bez obzira na stanja na ulazima C i D. Ako je enable ulaz na logičkoj „ 1 “ tada smjer obrtanja motora određujemo kombinacijom logičkih stanja na ulazima C i D. Za kombinaciju C=1, D=0 motor se vrti u jednom smjeru, dok za kombinaciju C=0, D=1 motor se vrti u kontra smjeru. Takođe je moguće motor brzo zakočiti ukoliko su ulazi C=D=1. Razlikujemo stanje kada je motor zakočen i aktivan i stanje kada je motor ugašen što se postiže dovođenjem logičke „ 0 “ na enable ulaz.

4

Page 6: Upravljanje DC Motorom Pomocu Mobilnog Telefona

Slika 3. Osnovna šema drajvera sa kolom L298 [ 7 ]

Prilikom projektovanja drajvera morali smo izmjeniti osnovnu šemu. Nama nije potrebna funkcija brzog kočenja motora pa smo na ulaz C doveli neinvertovan, a na ulaz D invertovan upravljački signal. Time smo postigli da sa samo jednim signalom određujemo smjer obrtanja motora. Pošto smo na te ulaze doveli generisan signal sa PWM izlaza mikrokontrolera, ostvarili smo upravljanje brzinom motora. Promjenom vrijednosti faktora ispune PWM signala mjenja se srednja vrijednost signala što direktno utiče na promjenu brzine motora. Za faktor ispune od 0 – 50 % motor se obrće u jednom smjeru, od 50 – 100 % u drugom, dok je za vrijednost od 50 % motor zakočen.

Takođe smo trebali da ugradimo hardversku strujnu zaštitu. Za nju smo iskoristili struju koja protiče kroz senzorski otpornik Rsens. Napon sa otpornika Rsens smo doveli na invertujući ulaz operacionog pojačavača LM358, a na neinvertujuću ulaz smo doveli podešljivi napon sa potenciometra P1, pomoću kojeg određujemo prag komparacije. Operacioni pojačavač LM358 smo koristili kao invertujući komparator čiji je izlaz preko pull – up otpornika povezan na +5 V. Poenta u korišćenju komparatora je da u slučaju porasta napona na otporniku Rsens, srazmjernog struji koja kroz njega protiče, preko dozvoljene vrijednosti određene pragom promjeni stanje na izlazu. Ta promjena stanja dovodi do ukidanja enable signala i gašenja motora. Zbog smanjenja dimenzija same pločice drajvera umjesto dva integrisana kola, I kola i NE kola, koristili smo samo jedno NI kolo koje u jednom čipu sadrži četiri NI kapije. Za napajanje logike driver – a potrebno je stabilnih 5 V. Njih smo dobili korišćenjem integrisanog stabilizatora 7805. Radi bezbjednosti prilikom testiranja, montaže i puštanja u rad eneble signal smo pomoću pull – down otpornika spojili na masu. Time smo izbjegli mogućnost pokretanja motora u neželjenim slučajevima, a to su : prekid kabla između upravljačke jedinice i drajvera i promjena stanja enable signala prilikom programiranja kotrolera na upravljačkoj pločici.

Slika 4. Izgled izrađenog drajvera

5

Page 7: Upravljanje DC Motorom Pomocu Mobilnog Telefona

Slika 5. Šema drajvera za motor

6

Page 8: Upravljanje DC Motorom Pomocu Mobilnog Telefona

3.1.2 Upravljačka elektronika

Upravljačka elekronika predstavlja modul koji povezuje sve ulazno/izlazne uređaje. Mozak upravljačke elektronike je kontrole AVR ATtiny 2313 koji ima sledeće karakteristike:

RISC arhitektura, visoke preformanse i mala potrošnja 2KB programske fleš memorije 128 B EEPROM memorije 8 – bitni tajmer/brojač 16 – bitni tajmer/brojač Četiri PWM izlaza Dvosmjerna serijska komunikacija (USART) Interni oscilator ISP programiranje 18 ulazno/izlaznih pinova Napon napajanja od 2.7 do 5.5 V

Slika 6. AVR ATtiny 2313 [ 5]

Vezu između kontrolera i mobilnog telefona ostvarili smo pomoću serijske RS232 komunikacije. Sa telefonom komuniciramo pomocu AT komadi. Pri uključenju uređaja potrebno je izvršiti podešavanje prijemnog telefona. Za tu svrhu napisali smo funkciju Inicijalizacija(). Prvo provjeravamo da li je uspostavljena veza između kontrolera i telefona. Kontroler salje telefonu komandu AT na taj način što se svaki karakter AT – komande prevodi u njegovu heksadecimalnu vrijednost, a zatim odgovor telefona smješta u niz RX. Iz formiranog niza RX kontroler izdvaja dio od značaja i poredi ga sa unapred poznatim očekivanim odgovorom telefona. Poslije komande AT šaljemo komandu AT+CLIP=1; koja treba da omogući identifikaciju poziva i time je završena inicijalizacija. U memoriju kontrolera se unose brojevi koji imaju dozvolu za pokretanje motora. Po završetku inicijalizacije počinje izvršavanje main() funkcije. Kontroler se tada nalazi u beskonačnoj petlji i čeka poziv korisnika. Čim kontroler registruje dolazni poziv, šalje telefonu komandu ATH koja služi za prekid poziva tako da se ne troše sredstva korisnika na komunikaciju. Informaciju o dolaznom pozivu kontroler prima u vidu niza heksadecimalnih karaktera koje smješta u niz RX, čije članove poredi sa brojevima unjetim u memoriju kontrolera. Ukoliko dođe do pozitivne identifikacije primljenog poziva kontoler šalje signal za pokretanje motora u jednu ili drugu stranu, zavisno od stanja u kom se predhodno nalazio.

Za napajanje upravljačke elektronike potreban je stabilan napon od 5 V. Njega smo dobili pomoću integrisanog stabilizatora 7805 na čiji ulaz dovodimo napon akumulatora od 12 V. Takođe smo predvidjeli da se obezbedi stalno napajanje telefona sa upravljačke elektronike ali na maketi to nismo realizovali.

Odlučili smo se da napajanje realizujemo sa dva akumulatora. Jedan akumulator od 12 V koristimo za napajanje upravljačke elektronike i logike drajvera. Drugi akumulator od 12 V koristimo za napajanje motora. Za akumulatorsko napajanje smo se odlučili da bismo i u slučaju nestanka napajanja sa gradske mreže mogli da upravljamo motorom. Ovo rješenje je

7

Page 9: Upravljanje DC Motorom Pomocu Mobilnog Telefona

dobro ukoliko napajanje gradske mreže nije isključeno na duži vremenski period. Da bi sistem bio potpuno nezavisan od napajanja gradske mreže postoji mogućnost dopunjavanja akumulatora pomoću solarnih panela. To predstavlja skuplju investiciju ali je isplativa na duži vremenski period. Takođe, ukoliko se punjenje akumulatora vrši pomoći napajanja gradske mreže potrebno je projektovati automatske punjače akumulatora. U dalje razmatranje problematike dopunjavanja akumulatora nećemo zalaziti jer to nije predmet ovog projekta.

Slika 7. Izgled gotove upravljačke pločice povezane sa telefonom

8

Page 10: Upravljanje DC Motorom Pomocu Mobilnog Telefona

Slika 8. Šema upravljačke elektronike

9

Page 11: Upravljanje DC Motorom Pomocu Mobilnog Telefona

4. Realizacija

Da bismo testirali idejno rješenje našeg projekta napravili smo funkcionalni model. Kao aktuator smo koristili jednosmjerni motor sa reduktorom tzv. „ kinez “ od 12 V.

Slika 9. Blok dijagram implementiranog koda u kontroleru

Slika 10. Izgled funkcionalnog modela

10

Page 12: Upravljanje DC Motorom Pomocu Mobilnog Telefona

5. Zaključak

U ovom projektu je urađeno sve što je bilo definisano projektnim zadatkom. Urađena je detaljna analiza problematike projektnog zadatka i svih segmenata sistema. Takođe su data idejna i praktična rješenja za realizaciju zadatka. Radi testiranja i prezentacije projekta napravili smo funkcionalni model. Prilikom izrade projekta proširili smo naša teorijska znanja i stekli dragocjeno praktično iskustvo iz oblasti elektronike i programiranja. Potrudili smo se da u što većoj mjeri sagledamo problem kao cjelinu i nađemo optimalno rješenje sa aspekta više naučnih disciplina, kao što su elektronika, mehanika, upravljanje i programiranje, što i čini suštinu mehatronike.

Tokom izrade projekta javile su nam se ideje za proširenja i buduća unapređenja. Da bismo iskoristili potencijal koji pružaju nove tehnologije mobilne tehnologije zamislili smo korišćenje mobilnog telefona sa video pozivom (3G) kao prijemnog uređaja. Time bismo korisniku , na njegov zahtjev, omogućili vizuelno nadgledanje sistema. Ovaj način upravljanja može biti implementiran u raznim sistemima, npr. za otvaranje garažnih vrata, kućne kapije, rampe ili upravljanje DC motorima i pumpama u industrijskim procesima. Ovo može imati i sigurnosnu funkciju. Korisno bi bilo kada bi se projektovao alarm koji bi detektovao nasilan ulazak u garažu ili drugi objekat, kao i alarmiranje u slučaju prekoračenja vrijednosti koju očitava senzor na udaljenom sistemu. Alamiranje bi se moglo izvesti zvučnom, svjetlosnom signalizacijom, pozivanjem korisnika i slanjem SMS poruke.

11

Page 13: Upravljanje DC Motorom Pomocu Mobilnog Telefona

6. Literatura

[ 1 ] Ljiljana Živanov, Primena senzora i aktuatora, FTN, Novi Sad, 2008.[ 2 ] Laslo Nađ, Materijal za pripremu ispita iz predmeta Impulsna elektronika, FTN, Novi Sad, 2009.[ 3 ] Laslo Nađ, Materijal za pripremu ispita iz predmeta Mikrosenzori i aktuatori, FTN, Novi Sad, 2002.[ 4] Laslo Kraus, Programski jezik C, Akademska misao, Beograd, 2004.[ 5 ] -, datasheet for ATtiny 2313, Atmel, www.alldatasheet.com[ 6 ] -, datasheet for PC817 , www.alldatasheet.com [ 7 ] -, datasheet for L298, www.alldatasheet.com [ 8 ] -, datasheet for 74HCT00, www.alldatasheet.com [ 9 ] -, datasheet for LM358 , www.alldatasheet.com [ 10 ] -, datasheet for NE555 , www.alldatasheet.com[ 11 ] -, datasheet for μA741 , www.alldatasheet.com[ 12 ] -, datasheet for LM393 , www.alldatasheet.com[ 13 ] -, AT command set for Nokia GSM and WCDMA product, -

12

Page 14: Upravljanje DC Motorom Pomocu Mobilnog Telefona

7. Dodatak

Ovdje je dat C – kod programa smještenog u kontroler

/*****************************************************Chip type : ATtiny2313Clock frequency : 8,000000 MHzMemory model : TinyExternal RAM size : 0Data Stack size : 32*****************************************************/

#include <tiny2313.h>#include <delay.h>#include <stdio.h>

// Izlazi #define enable PORTD.4 #define dioda PORTD.6 #define direction OCR0A //PWM komande #define napred 0xff //radi kad je 0x4c #define nazad 0x00 //radi kad je 0x9a ali treba i promjeniti tccr0b=0x04 #define stop enable=0 char rx[45]; int i=0,j=0,k=0,n=0,p=0,q=0,r=0; bit smjer;

//FLASH PROMJENLJIVE char flash tx_at[3]={0x61,0x74,0x0d}; char flash tx_clip[10]={0x61,0x74,0x2b,0x63,0x6c,0x69,0x70,0x3d,0x31,0x0d}; char flash tx_ath[4]={0x61,0x74,0x68,0x0d}; char flash broj[2][7]={{0x35,0x30,0x36,0x31,0x32,0x33,0x36},{0x31,0x30,0x35,0x34,0x36,0x36,0x39}} ; void inicijalizacija(void); void dioda_blinka(void);

#define RXB8 1#define TXB8 0#define UPE 2#define OVR 3#define FE 4#define UDRE 5#define RXC 7

13

Page 15: Upravljanje DC Motorom Pomocu Mobilnog Telefona

#define FRAMING_ERROR (1<<FE)#define PARITY_ERROR (1<<UPE)#define DATA_OVERRUN (1<<OVR)#define DATA_REGISTER_EMPTY (1<<UDRE)#define RX_COMPLETE (1<<RXC)

// USART Receiver buffer#define RX_BUFFER_SIZE 8char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE<256unsigned char rx_wr_index,rx_rd_index,rx_counter;#elseunsigned int rx_wr_index,rx_rd_index,rx_counter;#endif

// This flag is set on USART Receiver buffer overflowbit rx_buffer_overflow;

// USART Receiver interrupt service routineinterrupt [USART_RXC] void usart_rx_isr(void){char status,data;status=UCSRA;data=UDR; rx[i]=data; i++;if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index]=data; if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; rx_buffer_overflow=1; }; };}

#ifndef _DEBUG_TERMINAL_IO_// Get a character from the USART Receiver buffer#define _ALTERNATE_GETCHAR_#pragma used+char getchar(void){char data;while (rx_counter==0);data=rx_buffer[rx_rd_index];if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;#asm("cli")--rx_counter;#asm("sei")

14

Page 16: Upravljanje DC Motorom Pomocu Mobilnog Telefona

return data;}#pragma used-#endif

// USART Transmitter buffer#define TX_BUFFER_SIZE 8char tx_buffer[TX_BUFFER_SIZE];

#if TX_BUFFER_SIZE<256unsigned char tx_wr_index,tx_rd_index,tx_counter;#elseunsigned int tx_wr_index,tx_rd_index,tx_counter;#endif

// USART Transmitter interrupt service routineinterrupt [USART_TXC] void usart_tx_isr(void){if (tx_counter) { --tx_counter; UDR=tx_buffer[tx_rd_index]; if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; };}

#ifndef _DEBUG_TERMINAL_IO_// Write a character to the USART Transmitter buffer#define _ALTERNATE_PUTCHAR_#pragma used+void putchar(char c){while (tx_counter == TX_BUFFER_SIZE);#asm("cli")if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) { tx_buffer[tx_wr_index]=c; if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; ++tx_counter; }else UDR=c;#asm("sei")}#pragma used-#endif

void dioda_blinka(void){ dioda=1; delay_ms(50); dioda=0;

15

Page 17: Upravljanje DC Motorom Pomocu Mobilnog Telefona

delay_ms(50); }

void inicijalizacija(void){ dioda=1; delay_ms(2000); dioda=0; k=0; delay_ms(500); i=0; for(j=0;j<3;j++) putchar(tx_at[j]); while (i<8) { dioda_blinka(); } i=0;

if ((rx[5]==0x4f) && (rx[6]==0x4b)) { delay_ms(50); for(k=0;k<10;k++) putchar(tx_clip[k]); while (i<15); if ((rx[13]==0x4f) && (rx[14]==0x4b)) { dioda=1; delay_ms(1000); dioda=0; i=0; delay_ms(100); } else { delay_ms(1000); } } else { delay_ms(1000); dioda_blinka(); delay_ms(1000);

16

Page 18: Upravljanje DC Motorom Pomocu Mobilnog Telefona

dioda_blinka(); } }

void main(void){

// Crystal Oscillator division factor: 1#pragma optsize-CLKPR=0x80;CLKPR=0x00;#ifdef _OPTIMIZE_SIZE_#pragma optsize+#endif

PORTA=0x00;DDRA=0x00; PORTB=0x00;DDRB=0x04; PORTD=0x00;DDRD=0x50;

TCCR0A=0x83;TCCR0B=0x04;TCNT0=0x00;OCR0A=0x23;OCR0B=0x00;

TCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;

GIMSK=0x00;MCUCR=0x00;

TIMSK=0x00;

USICR=0x00;

// USART initialization// Communication Parameters: 8 Data, 1 Stop, No Parity// USART Receiver: On

17

Page 19: Upravljanje DC Motorom Pomocu Mobilnog Telefona

// USART Transmitter: On// USART Mode: Asynchronous// USART Baud Rate: 600UCSRA=0x00;UCSRB=0xD8;UCSRC=0x06;UBRRH=0x03;UBRRL=0x40;

ACSR=0x80;

// Global enable interrupts#asm("sei")

inicijalizacija(); i=0;

while (1) { dioda=1; delay_ms(50); dioda=0; delay_ms(50); if (i>41) { for (p=0;p<4;p++) putchar(tx_ath[p]); i=0; p=0; for (n=0;n<2;n++) { r=0; for (q=0;q<7;q++) { if (broj[n][q]==rx[24+q]) r++; if (r==7) { if (smjer) { direction=napred; enable=1; smjer=0; delay_ms(10000); enable=0; } else { direction=nazad; enable=1; smjer=1; delay_ms(10000);

18

Page 20: Upravljanje DC Motorom Pomocu Mobilnog Telefona

enable=0; } } } } delay_ms(500); i=0; p=0; delay_ms(300);

} }}

19