1. Taula de continguts del sistema de control
4. Sistema de control..................................................................................................................... 1
4.1 Estudi de mercat del sistema de control.............................................................................. 1
4.1.1 PLC .............................................................................................................................. 2
4.1.2 Arduino ........................................................................................................................ 3
4.1.3 Microcontrolador PIC .................................................................................................. 4
4.2 Criteris de selecció .............................................................................................................. 5
4.3 Valoració............................................................................................................................. 6
4.4 Elecció de la placa Genuino Mega 2560Rev3..................................................................... 7
4.4.1 Arduino Software (IDE)................................................................................................... 8
4.4.2 Programació ................................................................................................................. 9
4.5 Entrades/Sortides Digitals i analògiques........................................................................... 16
4.6 Desenvolupament del software ......................................................................................... 17
4. Sistema de control
4.1 Estudi de mercat del sistema de control
2. En aquest apartat s’escull el tipus de controlador que serveix per poder adquirir las dades dels
sensors i actuar sobre els actuadors.
Un cop feta la recerca dels diferents sistemes de control al mercat, escollim els tres que més
s’adapten a l’aplicació per estudiar-los una mica mes a fons.
• PLC
• Arduino
• Microcontrolador PIC
Els criteris a comparar entre els següents controladors corresponen a:
• Econòmic
• Quantitat de entrades/sortides
• Facilitat d’instal·lació.
4.1.1 PLC
Controlador lògic programable o PLC (Programable Logic Controller). Són dispositius
electrònics molt utilitzats en l’automatització industrial.
EntradasAlimentació
3. Fig. 4.1. Estructura PLC i programa per diagrama de contactes
Perquè un PLC compleixi amb la seva funció a controlar, es necessari programar-lo tenint en
compte les entrades/sortides i el funcionament desitjat .
AVANTATGES INCONVENIENTS
• Fiabilitat
• Consum
• Preu elevat
• Complexitat de programació
• Dissenyat per a processos industrials
Fig. 4.2. Taula avantatges PLC
4.1.2 Arduino
Arduino és una plataforma de hardware lliure, que consisteix en una placa amb
microcontrolador Atmel i AVR i un entorn de desenvolupament que implementa el llenguatge
de programació Prcocessing/Wiring i el carregador d’ arrencada (boot loader) que corra a la
placa, dissenyat per facilitar l’ us de l’ electrònica en projectes multidisciplinaris.
Sortides
4. Es ideal per utilitzar en projectes basats en la educació degut al seu baix preu. Hi ha diferents
tipus de plaques arduino, Es diferencien en el nombre i tipus d’ entrades/sortides, en la
memòria, en la freqüència de treball, en la potencia i en el preu .
Fig.4.3. Arduino UNO i Arduino MEGA
AVANTATGES INCONVENIENTS
• Baix cost
• Compatibilitat d’ entorns
• Consum
• Codi obert
• Poc fiable
• Complexitat de programació
Fig.4.4. Taula avantatges Arduino
4.1.3 Microcontrolador PIC
Els PIC ( Peripheral Interface Controller) són una família de microcontroladores de tipus RISC
fabricats per Microchip Technology Inc., originalment desenvolupats per a la divisió de
microelectrònica de General Instrument.
Es consideren petits ordinadors, en un sol circuit que inclouen, una CPU, una memòria RAM,
una memòria ROM i una quantitat d’ entrades/sortides.
5. Fig. 4.5. Microcontrolador PIC18F4550 i estructura interna
Aquests microcontroladors, es troben a molts de dispositius electrònics, tant domèstics com
industrials. Podem trobar diferents tipus de chips, des de 8 pins fins a més de 100. La funció de
cada pin es diferent i aquesta ve relaxada en el data sheet del dispositiu.
La programació en aquest cas, es molt variada. Pot ser des de llenguatge ensamblador fins a C.
AVANTATGES INCONVENIENTS
• Baix cost
• Compatibilitat d’ entorns
• Consum
• Codi obert
• Poc fiable
• Complexitat de programació
Fig.4.6. Taula avantatges Arduino
4.2 Criteris de selecció
Per realitzar la comparació d’ alternatives per la implementació del sistema de control,
utilitzarem un estudi multi criteri amb mitges ponderades.
CRITERIS DEL CLIENT PES PERCENTATGE
Cost 45 %
Consum 10%
Complexitat 15 %
Temps disseny, muntatge i programació 10 %
6. Nombre entrades/sortides 20%
Fig. 4.7. Taula criteris sistema de control
En la següent taula s’ avaluarà amb una puntuació del 0 al 10, cada una de les tres opcions. Cal
destacar que en les 3 opcions podem arribar a tenir el nombre d’entrades desitjat. Degut a que El
PLC te mòduls d’ampliació entrades/sortides, els pins del PIC varien en funció del model , i de
la mateix manera l’ arduino en funció del que s’adquireixi, es disposen de més o menys
entrades. Els altres criteris d’ avaluació estan explicats en l’ apartat 2.3.
OPCIÓ/
CRITERI
Cost CONSUM Complexitat TEMPS Num.
Entrades/s
ortides
PLC 3 9 5 6 10
Arduino
8 9 7 6 10
Microcontrolador
PIC 9 9 3 6
10
Fig. 4.8. Taula criteris opcions control
La següent taula ens mostra el resultat final aplicant la ponderació de cada criteri a cada opció
per tal de determinar la opció més adequada.
OPCIÓ PUNTUACIÓ PONDERADA
PLC 5.6
Arduino 8.15
Microcontrolador PIC 8
Fig. 4.9. taula ponderació control
4.3 Valoració
Basant-nos en els criteris de selecció del apartat anterior, s’ observa que la millor opció segons
els requeriments de la instal·lació i els criteris del client. Es realitza el sistema de control
mitjançant arduino.
L’ opció d’ utilitzar un PLC d’entrada sembla molt atractiva degut a la potencia del sistema. Per
cal tenir en compte que aquests dispositius, estan dissenyats principalment per aplicacions
industrials.
L’opció de implementar un sistema de control mitjançant PIC no es mala idea, tal com
s’observa a la taula de ponderació de control. La principal desavantatge es que en el cas de voler
7. ampliar l’ instal·lació seria més complicat que en qualsevol de les dues opcions, a part s’ hauria
de dissenyar una placa per poder fer-ne us
Per tant l’opció més adient es la d’implementar un sistema de control mitjançant Arduino Tot i
no ser l’opció més econòmica, es un dels dispositius programables més barats del mercat. Degut
a que tenim un temps concret a l’hora de realitzar el projecte, Aquesta opció ens permet
estalviar molt de temps ja que es tracta d’ una disposició immediata i no a cal fer moltes
adaptacions.
4.4 Elecció de la placa Genuino Mega 2560Rev3
Per determinar quina placa arduino necessitem, es contempla la demanda del projecte,
començant per les entrades/sortides de la placa.
Entre sensors i actuadors, tal i com s’ observa en l’apartat 4.5.1, necessitem 40 entrades. Entre
altres motius esmentats en l’ altre part del projecte, es per això que es fa servir la placa Genuino
MEGA 2560 Rev3.
Aquesta placa disposa de 50 pins, que es poden assignar com entrades o sortides digitals, dels
quals 15 poden ser utilitzats com a sortides de PWM, 16 com a entrades analògiques. La placa
disposa de port sèrie, connexió USB, Power jack i boto de reset. A traves d’ un ordinador es fa
la transferència del software.
8. Característiques tècniques de la placa
Microcontrolador ATmega2560
Tensió d’ operació 7-12V
Tensió d’entrada recomanada 7-12V
Tensió d’entrada límit 6-20V
Entrades/Sortides digitals 54 (15 amb sortides PWM)
Pins d’entrades analògiques 16
Pin d’entrada/sortida de corrent 20mA
Pin de corren per 3.3V 50mA
Memòria flash 256KB dels quals 8 s’utilitzen per arrencar
SRAM 8KB
EEPROM 4KB
Velocitat de rellotge 16MHZ
Longitud 101.52mm
Amplada 53.2mm
Pes 37g
Fig. 4.10. Característiques Placa Arduino
4.5 Arduino Software (IDE)
La placa del projecte treballa a través d’un software anomenat IDE (Integrated Development
Environment).
Aquest Software s’obté a través de la pagina oficial d’arduino. En aquesta pagina es troba la
descripció pas a pas sobre com descarregar e instal·lar-lo al PC.
Aquest software conté un editor de text on s’escriu el codi, un àrea de missatges, una consola de
test on veurem les sortides de test inclosos els missatges d’errors i altres dades, una barra
d’eines amb botons per funcions comuns, com comprovar i carregar programes, obrir o guardar
programes.
9. Fig. 4.11. sketch_jun18a Arduino 1.6.9
Seguidament s’observen algunes icones amb la seva funció descrita.
Compilació (comprova que no hi hagin errors en el codi).
Carrega (Complia i carrega el codi a la placa).
Crear un nou codi.
/ / Obre / Guarda / Monitor serie.
4.5.1 Programació
Introducció
Tal y com es pot observar a la figura 4.3, l’estructura de programació d’arduino necessita com a
mínim dues parts perquè s’executi el programa.
• set up() la qual, s’ executarà només una vegada al començar el programa.
Aquesta part s’encarrega de la configuració inicial i contindrà la declaració de
variables.
• Loop() tal i com indica la paraula, es tracta d’un bucle. Aquesta part
s’executarà contínuament, encarregant-se de la lectura de les entrades, i de
l’escriptura de les sortides.
10. Variables
Declarar una variable en Arduino es assignar-li un nom, un tipus i un valor. En el següent
exemple, es crea una variable tel tipus enter, anomenada Tev1 i se l´hi assigna un valor 0
int Tev1 = 0 ; //Declaració de la variable Tev1 del tipus enter se li asigna un valor
0
La següent taula, recull el tipus, mesura, rang i algunes observacions que ajuden a entendre la
utilitat de les variables.
Tipus Byte Rang Observacions
boolean 0.125 Verdader o fals (0 o 1) Nomes te 2 estats
char 1 -128 a 128
Utilitzades per
representar un codi de
caràcter ASCII
11. byte 1 0 a 255
Emmagatzemar poc
espai
int 2 -32.768 a 32.767
Doble que un byte, pot
emmagatzemar valors
negatius
unsigned int 2 0 a 65.536
Es més precís que un int
però no disposa de valors
negatius
long 4 -2.147483648 a 2.147483647
Per representar nombres
molt grans
unsigned long 4 0 a 4.294967295
Més precisió que l’
anterior però nomes
Abarca valors positius
float 4 -3.4028235E+38 a3.4028235E+38
Emmagatzema valors
amb coma flotant
double 8 El doble que del tipus float
Emmagatzemar valors
molt grans
Fig. 4.13. Taula variables
Funcions
Per dissenyar el programa s’utilitzen funcions. Les funcions son blocs de codi que contenen un
conjunt d’estaments que s’executen quan el fil del programa passa per aquesta.
Les funcions es declaren associades a un tipus dels mencionats a la taula 4.13. La funció
retornarà un valor del tipus que ha estat assignada. Si es desitja que la funció no retorni ningun
valor, cal posar davant void, “tipus buida”.
Un cop declarat el tipus que es desitja que et retorni la funció, s’ escriu el nom de la funció i
entre parèntesis els paràmetres que s’han de complir per que aquesta s’executi.
Al costat de cara línia de codi, podem adjuntar un comentari posant davant des barres que
impediran que el fil del programa passi a través d’elles.
Seguidament tenim un exemple de l’estructura del codi d’una funció.
type NomDeLaFuncio (Parametres amb condicions) { // nota
Tasca a realitzar
}
12. En aquesta memòria s’explica les funcions utilitzades al projecte. En el cas que es desitgi
profunditzar en aquest tema, en el següent enllaç trobarem informació gratuïta.
https://www.arduino.cc/en/Tutorial/BuiltInExamples
Entrades/sortides Digitals
pinMode (pin,mode)
Pin: S’assigna el número de pin de la placa
Mode: S’ordena si desitgem que treballi com a entrada o com a sortida
(INPUT/OUTPUT).
Seguidament al exemple on s’assigna el pin 4 com entrada.
pinMode (4,INPUT); // Pin nº4 es una entrada
Condició IF
Aquesta funció consisteix en que si es compleix una condició s’executa una part del programa.
Per exemple:
Tenint en compte que prèvia ment s’ han declarat les variables utilitzades, en el següent
exemple s’observa com condiciona la funció.
If (variable1 = HIGH) // si la variable1 esta en valor alt
{
Valor = 10; // la variable valor es = 0
}
else // si no
{
Valor = 0; // la variable valor serà igul a 0
}
13. Escriure i llegir pins digitals
En el següent exemple llegim el valor de la entrada numero 0 i l’emmagatzemem a la variable
plus.
Plus = digitalRead(0);
En el següent exemple escrivim un 1 lògic a la sortida 2 declarada prèviament.
DigitalWrite (2,HIGH);
Escriure valors a pins PWM i la condició FOR
Alguns dels pins de la placa arduino estan marcats amb el text PWM (Pulse-width modulation)
modulació d’amplada de pols. Això el que fa es regular el temps que esta encès i apagat molt
ràpidament de manera que aconseguim valors entremitjos.
Si escrivim un valor analògic tenim que tindre en compte que a 255 el pin donarà la màxima
tensió y a 0 deixarà de donar.
El següent exemple ajuda a la comprensió
Cons tint led = 2; // avisem que connectarem un led al pin 2
Int intensitat;
Void set up ()
{
pinMode (led, OUTPUT); // declarem el pin 2 com a sortida
}
Void loop ()
{
14. Fig. 4.1. Estructura PLC i programa per diagrama de contactes
Perquè un PLC compleixi amb la seva funció a controlar, es necessari programar-lo tenint en
compte les entrades/sortides i el funcionament desitjat .
AVANTATGES INCONVENIENTS
• Fiabilitat
• Consum
• Preu elevat
• Complexitat de programació
• Dissenyat per a processos industrials
Fig. 4.2. Taula avantatges PLC
4.1.2 Arduino
Arduino és una plataforma de hardware lliure, que consisteix en una placa amb
microcontrolador Atmel i AVR i un entorn de desenvolupament que implementa el llenguatge
de programació Prcocessing/Wiring i el carregador d’ arrencada (boot loader) que corra a la
placa, dissenyat per facilitar l’ us de l’ electrònica en projectes multidisciplinaris.
Sortides
15. Temps
Per poder treballar amb el temps real es necessari que ens descarreguem la llibreria Time.
Descarregar-la e instal·larla es molt senzill, a la pagina oficial de Arduino explica com
descarregar e instal·lar llibreries. El següent esquema ajuda a entendre el funcionament de la
llibreria.
#include <Time.h> // Incloem la llibreria al programa
int hora = 0; // Servirà per guardar el valor de les hores
int minut = 0; // Servirà per guardar el valor de les minuts
int segon = 0; // Servirà per guardar el valor de les segons
void setup() {
setTime (00,00,00,03,8,2016); // Arduino en hora (hores, minuts, segons, mesos, anys)
}
Void loop() {
time_t t = now(); //la variable t tipus time_t pren l'hora actual
hora = hour(t); // la variable hora pren el valor de la hora actual utilitzant la funció
minut = minute(); // la variable minut pren el valor del minut actual
segon = second(); // la variable segon pren el valor del segon actual
}
Inclou la llibreria, creem variables destinades a enmagatzemanr el valor de les hores, minuts i
segons en variables del tipus enter, posem en hora l’Arduino. Dins el void loop crem una
variable tipus time_t a la qual li assignem el valor actual del temps a traves de la funció de la
llibreria. Després a les hores, als minuts i als segons els hi assignem el valor a trabes de la
funció.
Interrupció
A mesura que vagin sortint, les explico
16. 4.6 Entrades/Sortides Digitals i analògiques
Cadascun dels pins digitals, es poden assignar com a entrada o sortida. Cada pin pot
proporcionar o rebre, un màxim de 40mA. Disposa d’ una resistència de pull-up ( desconnectat
per defecte de 20 a 50Kohm.
En les següents taules es pot apreciar cada una de les entrades/sortides utilitzades en aquesta
part del projecte.
Entrades Sistema de reg
1- Sonda humitat
2- Sonda situada a la part de baix del dipòsit 1
3- Sonda situada a la part de baix del dipòsit 2
4- Sonda situada a la part de baix del dipòsit 3
5- Sonda situada a la part de baix del dipòsit 4
6- Sonda situada a la meitat del dipòsit 1
7- Sonda situada a la meitat del dipòsit 2
8- Sonda situada a la meitat del dipòsit 3
9- Sonda situada a la meitat del dipòsit 4
10- Sonda situada a la part de dal del dipòsit 1
11- Sonda situada a la part de dal del dipòsit 2
12- Sonda situada a la part de dal del dipòsit 3
13- Sonda situada a la part de dal del dipòsit 4
14- Polsador reg manual zona 1
15- Polsador reg manual zona 2
16- Polsador reg manual zona 3
17- Polsador reg manual zona 4
18- Selector manual o automàtic
Sortides sistema de reg
19- Electrovàlvula zona 1
20- Electrovàlvula zona 2
21- Electrovàlvula zona 3
22- Electrovàlvula zona 4
23- Indicador verd (dipòsit ple) zona 1
24- Indicador groc (dipòsit a la meitat) zona 1
25- Indicador vermell (dipòsit amb baix nivell) zona 1
26- Indicador verd (dipòsit ple) zona 2
27- Indicador groc (dipòsit a la meitat) zona 2
28- Indicador vermell (dipòsit amb baix nivell) zona 2
29- Indicador verd (dipòsit ple) zona 3
30- Indicador groc (dipòsit a la meitat) zona 3
31- Indicador vermell (dipòsit amb baix nivell) zona 3
32- Indicador verd (dipòsit ple) zona 4
33- Indicador groc (dipòsit a la meitat) zona 4
34- Indicador vermell (dipòsit amb baix nivell) zona 4
Fig. 4.14. Taula Entrades/Sortides Sistema de reg
Entrades Sistema d’alarma
35- Sensor infraroig 1
17. 36- Sensor infraroig 2
Fig. 4.15. Taula Entrades/Sortides Sistema d’alarma
Sortides Sistema d’alarma
37- Sirena
4.6 Desenvolupament del software
En aquesta part es troba el codi del programa realitzat per el sistema d’alarma i el sistema de
reg.
Abans de començar a llegir el desenvolupament del software a la part 4.4.2, si no es disposen de
coneixements de programació en arruïno es aconsellable
19. Seguidament es troba la taula de mapeig dels pins i les característiques de la placa
Número de pin Nom del pin Nom del pin mapejat
1 PG5 ( OC0B ) Digital pin 4 (PWM)
2 PE0 ( RXD0/PCINT8 ) Digital pin 0 (RX0)
3 PE1 ( TXD0 ) Digital pin 1 (TX0)
4 PE2 ( XCK0/AIN0 )
5 PE3 ( OC3A/AIN1 ) Digital pin 5 (PWM)
6 PE4 ( OC3B/INT4 ) Digital pin 2 (PWM)
7 PE5 ( OC3C/INT5 ) Digital pin 3 (PWM)