Documente Academic
Documente Profesional
Documente Cultură
Codul sursa este programul principal scris in limbajul de programare C++ si care
este baza proiectului nostru in CodeVisionAVR.
77
Facultatea de Electrotehnica si Electroenergetica
A treia etapa este verificarea starii de afara, unde apar trei stari:
1) starea in care afara este zi insorita – aici se verifica starea soarelui pe bolta
cereasca si se misca panoul dupa Soare
2) starea in care afara este zi cu nori – aici panoul se pozitioneaza dupa o traiectorie
definita care misca panoul doar spre Vest, cu o perioada de 22min, cate un grad.
3) starea in care afara este noapte/crepuscul – aici panoul este pozitionat in punctul
de Est maxim, de unde va porni a doua zi de dimineata
78
Facultatea de Electrotehnica si Electroenergetica
79
Facultatea de Electrotehnica si Electroenergetica
#define prj_h
#ifdef prj_h
#define INPUT_SET 1
#define INPUT_RESET 0
#define OUTPUT_SET 1
#define OUTPUT_RESET 0
#define const_15_min 215
#define const_30_min 430
#define const_22_min 313
#define const_10_sec 613
#endif
#include <pic16f.h>
#include <cristian.h>
void main(void)
80
Facultatea de Electrotehnica si Electroenergetica
{
// Declare your local variables here
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 15.625 kHz
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
81
Facultatea de Electrotehnica si Electroenergetica
while (1)
{
// Place your code here
Senz_lum = PORTD.1<<1 + PORTD.0;
82
Facultatea de Electrotehnica si Electroenergetica
PORTB.2 = OUTPUT_RESET;
PORTB.3 = OUTPUT_RESET;
TCCR1B=0x00;
N_Max_flag = 0;
}
if(E1_flag == 1)
{
TCCR1B=0x00;
TCCR0=0x00;
E1_flag = 0;
E2_flag = 0;
}
if(E_Max_flag == 1)
{
E_Max_flag = 0;
TCCR1B=0x00;
}
83
Facultatea de Electrotehnica si Electroenergetica
//Miscare E
PORTB.0 = OUTPUT_SET;
PORTB.1 = OUTPUT_SET;
break;
case 0x01:
//Miscare W
PORTB.0 = OUTPUT_SET;
PORTB.1 = OUTPUT_RESET;
break;
default:
//Stationare
PORTB.0 = OUTPUT_RESET;
PORTB.1 = OUTPUT_RESET;
break;
};
switch (PORTC&0x0C)
{
case 0x02:
//Miscare N
PORTB.2 = OUTPUT_SET;
PORTB.3 = OUTPUT_SET;
break;
case 0x01:
//Miscare S
PORTB.2 = OUTPUT_SET;
PORTB.3 = OUTPUT_RESET;
break;
default:
//Stationare
PORTB.2 = OUTPUT_RESET;
PORTB.3 = OUTPUT_RESET;
break;
};
break;
if(E1_flag == 1)
{
TCCR1B=0x00;
TCCR0=0x00;
E1_flag = 0;
E2_flag = 0;
}
// Miscare E maxim
if(E_Max_flag == 0)
{
PORTB.0 = OUTPUT_SET;
PORTB.1 = OUTPUT_SET;
TCCR1B=0x05;
E_Max_flag = 1;
}
84
Facultatea de Electrotehnica si Electroenergetica
else
{
if(Tim1_cnt >= const_30_min)
{
PORTB.0 = OUTPUT_RESET;
PORTB.1 = OUTPUT_RESET;
TCCR1B=0x00;
}
};
break;
if(E_Max_flag == 1)
{
E_Max_flag = 0;
TCCR1B=0x00;
}
TCCR1B=0x00;
}
else
{
if(Tim0_cnt >= const_10_sec)
{
PORTB.0 = OUTPUT_RESET;
PORTB.1 = OUTPUT_RESET;
TCCR0=0x00;
E2_flag = 0;
E1_flag = 0;
}
}
}
};
break;
85
Facultatea de Electrotehnica si Electroenergetica
//Caz exclus
default:
PORTB.0 = OUTPUT_RESET;
PORTB.1 = OUTPUT_RESET;
PORTB.2 = OUTPUT_RESET;
PORTB.3 = OUTPUT_RESET;
break;
};
////////////////////////////////////////////////////////////////////////////////
};
};
}
Programul a fost utilizat strict pentru etapele de pozitionare E-V , N-S.Dorindu-se
simplificarea schemei de actionare s-a ales solutia motor-reductor,fapt ce determina o
viteza de pozitioarede 270 °/h (pentru pozitionarea de maxima deplasare E-V).Astfel s-a
eliminate modulul de electronicade putere (choper) si partea sa de control
Masina de current continuu ce actioneaza pozitionarea E-V se alimenteaza cu
tensiune construita.In acelasi timp,din probele practice s-a observat ca desi actuatorul
liniar rezolva problema de pozitionare N-S el este sensibil la socurile si vibratiile produse
de vant.Aria parabolei capteaza variatiile de viteza si directie ale vantului si o parte din
fortele generate de acestea ajung sa solicite axul actuatorului liniar .De asemenea ,mai
ales pentru directia E-V ,viteza de pozitionare (urmarire ),care este viteza relativ mica
este totusi prea mica pentru situatiile de aducere pe pozitie initiala a panoului .Tot
relative mica este aceasta viteza daca considera perioade mai mari de timp (ore),cand
cerul a fost innorat si cand trebuie o deplasare mai rapida pentru a avea o pozitie optima.
86
Facultatea de Electrotehnica si Electroenergetica
2- conector tip DB9M RS232 (port serial tip „tata”) – are rol de
comunicare cu alta placa (receptare si transmitere de date)
3- conector tip DB9F RS232 (port serial tip „mama”) – prin care se
transfera programul destinat microprocesorului din calculator cu
ajutorul unui cablu tip serial 1:1
4- punte de diode tip W10M – are rol de redresare a curentului
5- stabilizator de tensiune tip 7805 (5V;1A) – cu rol de stabilizare a
tensiunii la valoarea de 5V
6- LED – are rol de a indica prezenta-absenta tensiunii de alimentare
pe placa
7- buton de resetare – are rol de resetare a intregului circuit al placii
(reinitializeaza programul de pe microprocesor)
8- interconector – are rolul de a conecta la butonul de resetare un
filtru de 100nF
9- interconector – are rolul de a conecta LED-ul de nulul de lucru al
placii
10- 4 LED-uri – au rol de a indica prezenta-absenta de tensiune pe
urmatorii pini de iesire: PB0, PB1, PB2 se respectiv PB3
11- conector de tip CAN (optional)
12- soclul pentru miniplaca de tip Mega8 SBC (suportul
microprocesorului ATMega8)
13- oscilator cu quartz tip HC49-S de 4000Mhz – are rol de
producere de semnale treapta la frecventa foarte mare (semnal de
„clock”)
14- interconector – are rol de a conecta oscilatorul cu quartz tip HC49-
S de 4000MHz la circuit
15- controler tip MAX232 – are rol de a ajuta comunicarea prin portul
serial tip DB9M a placii cu o alta placa (receptarea si transmiterea
de date)
16- soclu tip DIP de 8 pini – pentru memorie tip I2C (protocol de
comunicare)
87
Facultatea de Electrotehnica si Electroenergetica
88
Facultatea de Electrotehnica si Electroenergetica
89
Facultatea de Electrotehnica si Electroenergetica
Toate placile din aceasta familie (megaAVR) sunt fabricate cu tehnologie la 0.35µ.
Ele avanseaza tehnologia revolutionara de memori care se programeaza singure si
capabilitatea de a citi pachetele de date in timpul scrierii lor, care sunt, in particular,
potrivite pentru aplicatii care necesita programarea prin infrarosu sau capabilitatea de a
reinnoi softul pe teren.
90