Post on 28-Jan-2016
description
Màquina expenedora de productes
Índex
1. Introducció al projecte Tècnic
1.1 Objectius del treball........................................................................ 3
1.2 Inquietuds i motivacions personals................................................. 3
1.3 Introducció al treball....................................................................... 3
1.4 Abans de començar......................................................................... 4
2. Construcció
2.1 Mecànica
2.1.1 Estructura metàl·lica ....................................................... 5
2.1.2 Discriminador de monedes...............................................7
2.1.3 Tubs de recorregut i d’emmagatzematge......................... 8
2.1.4 Actuadors electromecànics (timbres)..............................10
2.1.5 Guies de metacrilat......................................................... 11
2.1.6 motors de productes amb finals de carrera..................... 12
2.1.7 dipòsit de productes........................................................ 13
2.1.8 Ranura d’inserció............................................................ 14
2.2 Electrònica
2.2.1 PIC, el cervell................................................................. 15
2.2.2 Codi font ........................................................................ 16
2.2.3 Programació del microcontrolador................................. 17
2.2.4 Mòdul del pic.................................................................. 18
2.2.5 Parell fotodíode-fototransistor........................................ 19
2.2.6 Motors, electrònica......................................................... 19
2.2.7 Mòdul de relés i electrònica dels actuadors.................... 20
2.2.8 Testejadors dels actuadors.............................................. 21
2.2.9 Pantalla........................................................................... 21
2.10 Font d’alimentació.......................................................... 22
1
Màquina expenedora de productes
3. Recerca i preu del material .............................................................................22
4. Conclusió i valoració personal........................................................................23
5. Propostes de millora........................................................................................23
6. Programes utilitzats.........................................................................................23
7. Agraïments......................................................................................................24
8. Bibliografia.....................................................................................................24
9. Annexos
9.1 Codi font del programa “la maquina expenedora”...........................25
2
Màquina expenedora de productes
1. Introducció al projecte tècnic
1.1 Objectius del treball
L’objectiu del projecte es arribar a construir una màquina expenedora de productes que
faci pràcticament les funcions principals d’una comercial, però evidentment amb un cost
molt més reduït i aprofitant tant material reciclat com sigui possible. Crec que aquest
treball suposa un gran repte per mi, te aspectes relacionats amb la programació i
l’electrònica i tinc intenció de dedicar-me en cos i anima a acabar aquest projecte.
1.2 Inquietuds i motivacions personals
Des de sempre he volgut crear aquells programes que veia a l’ordinador.
Fa uns quants anys vaig començar a documentar-me sobre llenguatges de programació.
En comptes d’iniciar-me a picar codi en un llenguatge mes proper al humà (d’alt nivell)
vaig començar per un una mica més intricat, C, un llenguatge de nivell mitja.
El llibre amb el que vaig començar s’anomena Programación estructurada en C, de
l’editorial Prentice Hall.
Aquesta passió per la programació i els aspectes informàtics i la meva atracció cap a la
tecnologia m’han fet decidir crear un projecte que inclogui la programació com a part
fonamental, en aquest cas, en el control.
1.3 Introducció al treball
El treball es divideix en dues parts, una mecànica formada pel conjunt d’elements físics
i d’actuació (tornar monedes, donar productes) , i una electrònica encarregada del
control i l’alimentació.
Com veureu més endavant aquest dossier no és una memòria detallada de la construcció
sinó més aviat un apropament a tots els aspectes de la màquina.
Per acompanyar a aquest dossier tinc realitzades també simulacions del funcionament
mecànic i elèctric utilitzant diferents programes (Proteus, Isis, Ares).
3
Màquina expenedora de productes
1.4 Abans de començar
Cal remarcar que aquest projecte no s’ha fet seguint la construcció d’un model existent,
sinó que ha estat dissenyat a partir de l’observació del funcionament d’un.
Primer fem un recompte inicial de quants elements componen la màquina.
Una vegada sapiguem el nombre exacte i la funció de cadascun (Separar,
emmagatzemar, tornar el canvi) passem a analitzar-los i construir-los.
El mètode a seguir es pot veure en aquest diagrama (fig.1).
Fig.1
4
Màquina expenedora de productes
2. Construcció
Un cop analitzat cada element i fet el disseny podem començar la construcció.
2.1 Mecànica
2.1.1 Estructura metàl·lica
L’esquelet de la màquina esta fet integrament amb planxes de metall foradades, unides
entre si mitjançant cargols, femelles i algun petit escaire foradat. L’estructura final (fig.
3) va partir d’una més petita (fig. 2) que va anar creixent a mesura que avançava la
construcció i sortien nous reptes a suplir.
Aquesta estructura s’encarrega de suportar tota la resta de components que formen la
màquina, en un conjunt ordenat de forma funcional 1
Fig. 2 (el abans i el després) Fig. 3
1 Això es, de forma que l’ordre dels components facilitin el correcte funcionament de la màquina, per exemple, deixant espais entre els actuadors (encarregats de tornar el canvi) i els tubs d’emmagatzematge, de forma que un element no obstaculitzi a l’altre.
5
Màquina expenedora de productes
Des de el principi, tenia clar que es necessitaria un bloc capaç d’integrar la resta
d’elements, i que aquest hauria d’esser rígid i resistent, per això vaig optar per l’acer, a
més, així aprofitava el material del taller d’altres anys.
Per a la construcció vaig utilitzar 5 peces de metall rectangulars (fig. 4) i, acollant-les
amb els corresponents cargols i femelles, va sortir el primer bloc capaç de mantenir, de
moment, els dos o tres primers elements de la màquina, la qual es mantindria així, fins
al moment de l’adició de la resta de components, arribant poc a poc a l’estructura final
(fig. 3, pàg. anterior).
Femella
Fig. 4, peça X cargol de cap cilíndric
Vaig haver d’augmentar un “pis” per tal d’integrar per una banda, la font d’alimentació i
la part de control, i per l’altra, la cambra on es dipositarà el canvi i els productes.
Posteriorment vaig obrir un espai entre la base de sota i els plafons del damunt amb uns
petits escaires foradats per tal de deixar pas entre els actuadors i els tubs de recorregut.
Els últims canvis van ser, per un costat, l’adició d’un plafó abatible gracies a unes
frontisses que serveix per integrar els motors i els dipòsits que donin els productes, i per
l’altra, una peça rectangular amb dos abraçadores al costat que serveix per a què tant les
monedes com els productes rebotin i acabin al mateix lloc. S’aprofundirà en aquests
elements més endavant.1
1 Per a una referència més gràfica de com queden integrats aquests element a l’estructura metàl·lica podeu veure la fig.17 a la pàg. 13.
6
Màquina expenedora de productes
2.1.2 Discriminador de monedes
Necessitem separar cada tipus de moneda que entra a la màquina per posteriorment
comptar i emmagatzemar els diners.
D’aquesta tasca s’encarrega el discriminador, un escaire de PVC foradat amb el
diàmetre de cada moneda de forma gradual ascendent1 (Fig. 5).
2 €
0 . 5 0 €
1 €
0 . 2 0 €
0 . 0 5 €
0 . 1 0 €
Al poc temps de començar el disseny de la maquina va sortir el repte de discriminar les
monedes.
Diferents possibilitats em sortien del cap, de forma magnètica, selecció per pes, per
mida; però necessitava una forma que estigues dintre de les possibilitats de construcció i
que fos poc voluminosa. Vaig estar algun temps ideant amb ajuda del tutor la forma de
fer-ho, fins que al final vam acabar per tenir la idea del escaire foradat.
La construcció va ser laboriosa, com la resta del treball. Vaig tallar de forma rectangular
un tros de plàstic sobrant d’altres projectes del taller. Amb la plegadora vaig doblegar el
tros de plàstic per la meitat, de forma que es formava un escaire.
Les mides dels forats les vaig fer prenent de model el diàmetre de les diferents monedes
existents, i el tall amb una petita Dremel amb eina fresadora de tipus diamant.
1 Es a dir, de més petit a més gran.
7
Fig. 5
Màquina expenedora de productes
Aquest escaire s’instal·la a la part mes alta de l’estructura metàl·lica amb una petita
inclinació cap a baix. (fig. 6).
El funcionament es senzill, al ficar una moneda, aquesta baixa pel discriminador fins
que cau al seu dipòsit. L´escaire no forma un angle recte sinó que està a un angle
inferior, d´uns 85º aproximadament per tal de facilitar que les monedes rellisquin sense
caure.
2.1.3 Tubs de recorregut i d’emmagatzematge
Els tubs de recorregut s’encarreguen de portar les monedes del discriminador cap als
tubs d’emmagatzematge, i aquests, com el seu nom indica, s’encarreguen d’acumular-
les. Són tubs de metacrilat i estan posats de forma que omplin tota l’amplada de la
màquina (fig. 7)
8
Fig. 6
Fig. 7
Màquina expenedora de productes
Vaig comprar dos tubs grans de metacrilat, un amb l’amplada suficient per a les
monedes de 5 a 20 cèntims i l’altre des dels 50 cèntims fins als 2 euros.
Els tubs d’emmagatzematge els vaig tallar de forma que arribessin des de la part mes
alta de l’ultima planxa fins al fons..
Els tubs de recorregut els vaig tallar amb la mesura adient per a que poguessin arribar
fins als d’emmagatzematge. Vaig haver de tallar seguint un angle en una de les dues
parts del tub per tal de que quedessin de forma rasant just a sota del discriminador (fig.
8). A més una petita distància hauria de separar els tubs per tal de poder ficar-hi
posteriorment uns fotodíodes, el muntatge dels quals explicaré mes endavant.
2 €
0 . 5 0 €
1 €
0 . 2 0 €
0 . 0 5 €
0 . 1 0 €
M i d a d e l ' u l t i m a p l a n x a
F o t o d í o d e s
9
Mateix angle~= 45º
Fig. 8
Màquina expenedora de productes
2.1.4 Actuadors electromecànics (timbres)
Els actuadors electromecànics es componen d’un solenoide1 (fig. 9) travessats per una
tija 2.
Al alimentar el solenoide per cadascun del seus extrems produeix un camp
electromagnètic que fa desplaçar la tija. Aquest moviment d’anada i tornada
l’aprofitarem per retornar les diferents monedes.
Solenoideα (Fig. 9).
Aquest tipus d’inductors amb un nucli es poden trobar en infinitats de elements, tals
com vàlvules electròniques, timbres, etc. Vaig veure que em sortia més a compte
comprar els solenoides ensamblats en timbres, ja que el cost de la fabricació “casolana”
pràcticament era igual o superior, amb l’afegit de que els industrials ja venen totalment
muntats i acoblats a un suport.
Una vegada comprats els vaig desmuntar i li vaig treure les parts que no eren
necessàries.. Vaig tallar les arestes que em sobraven per tal de poder-les col·locar a la
part que em restava pel darrera de l’esquelet de metall, amb dos cargols per peça.
Per acabar vaig acollar un rectangle de cartó a la tija amb una junta de plàstic per que
empenti les monedes dels tubs d’emmagatzematge (fig. 10, pàg. següent).
1 Molla de material fèrric esmaltat.2 Cilindre de metall. Fotografia presa per Jef Harris, lliurada sota llicència creative commons
10
Màquina expenedora de productes
L l e n ç a l a m o n e d a
C a p a l ' a l i m e n t a c i ó
2.1.5 Guies de metacrilat
Una vegada provats els actuadors vaig veure
que les monedes a vegades sortien en
direccions no desitjades, per això aconsellat
pel tutor, vaig construir unes guies que
conduirien la moneda de forma recta una
vegada engegat el inductor (fig. 11).
Amb plàstic sobrant d’altres anys vaig fer 3
rectangles per actuador i els vaig foradar.
11
Fig. 10
G u i e s
Fig.11
Màquina expenedora de productes
dos més petits que anirien a cada costat del tub (fig. 12). i un que aniria just a sobre
d’aquest dos (fig. 13), fent així un petit canal, el qual vaig ajustar a la mida de les
monedes gracies a un nombre determinat de volanderes.
Fig. 12 Fig. 13
2.1.6 motors de productes amb finals de carrera
Tres motors amb pales, alimentats a cinc volts i amb els seus respectius finals de carrera
són els encarregats d’expendre els productes (fig.14 ).
Fig. 14
Els tres motors són reciclats de projectes d’altres anys i porten una reducció amb relació
de transmissió 1/27. Com que van encapsulats aprofitem les osques dels mòduls per tal
d’acollar els motors a la planxa abatible.
12
M o t o r D C 5 V
B a r r a d ' a c e r
O s q u e s p e r a n c l a r
C o n j u n t d ' e n g r a n a t g e s r e d u c t o r s
P a l a f o r a d a d a
Màquina expenedora de productes
Per poder empènyer els productes necessitem instal·lar una pala al motor, la qual a més
s’encarrega de prémer el final de carrera a cada passada.
Les pales estan fetes amb trossos rectangulars de metall foradat. Els finals de carrera
també s’instal·len al mòdul de forma que toquin amb les pales.
2.1.7 dipòsit de productes
Uns dipòsits rectangulars amb una obertura s’encarreguen d’acumular els productes per
que els motors puguin expendre’ls, de forma semblant als tubs d’emmagatzematge
(fig.15)
Per a la construcció dels dipòsits he utilitzat plàstic sobrant d’altres anys. Vaig tallar un
rectangle de 18x15cm i vaig plegar l’amplada de 18 centímetres en 5 parts. Tres de 5 cm
i dos de 4, restant-me així per tant 2cm d’obertura.
13
Fig.15
Màquina expenedora de productes
Fig.
16 : Conjunt de motors amb pales i dipòsits de productes.
2.1.8 Ranura d’inserció
L’últim element construït de la maquinà ha estat la ranura per a la inserció de monedes
(fig.17), fent així més confortable la tasca de ficar-les.
Fig.17
Per construir la ranura d’inserció vaig utilitzar un rectangle de metacrilat doblegat en
forma d’u i vaig fer-li una osca al costat on cauen les monedes.
Vaig fer dos forats a l’extrem i amb dos cargols el vaig acollar.
14
Màquina expenedora de productes
2.2 Electrònica
2.2.1 PIC, el cervell
Promagable Intelligent Computer, o, en català, computador programable inteligent, es
un microcontrolador que funciona com un ordinador a petita escala.
Consta dels següents elements:
1. Memòria de lectura (rom): és la memòria del microchip on s’emmagatzema el
codi que donarà les instruccions a seguir.
El contingut de la memòria no pot variar en calent1.
2. Memòria d’accés aleatori (ram): és la memòria on s’emmagatzemen les
variables i els estats de les instruccions. A diferència de la rom aquesta si que
pot variar en calent.
3. Rellotge de procés (clock): un oscil·lador extern (en aquest cas un cristall de
quars) s’encarrega d’executar les instruccions seguint una freqüència (a més
freqüència menys temps d’execució per instrucció).
4. Conjunt d’entrades i sortides digitals i analògiques (inputs/outputs):
El pic consta d’un conjunt de “potes” que es poden assignar com entrades o
sortides, el PIC rep diversos estímuls a les entrades (si es digital només un 1 ó
0, depenent de la senyal) amb els quals seguint las instruccions del codi actua
per exemple donant diferents sortides o canviant el valor de les variables.
Fig.18β
1 Es a dir, quan està operatiu.β Fotografia presa per Acdx (sobrenom), lliurada sota llicencia creative commons.
15
Màquina expenedora de productes
En aquest projecte el PIC es omnipresent, controla tots els processos amb les
instruccions preestablertes en la ROM, des de comptar les monedes i mostrar el valor
per pantalla fins a tornar el canvi.
He utilitzat un PIC model 18F452. El vaig escollir perquè necessitava un gran nombre
d’entrades i sortides , així com una gran quantitat de ram (a causa d’una funció del codi
que ocupa molta) i aquest model satisfeia la meva demanda.
2.2.2 Codi font
Com heu vist abans, el PIC per si mateix no te cap funció si no hi ha un programa a la
memòria que li doni instruccions. Aquestes instruccions s’emmagatzemen en un tipus
de codi anomenat “llenguatge màquina” (uns i ceros) que es l’únic que pot interpretar.
Com que per a un humà es pràcticament impossible fer un programa elaborat en aquest
codi s’utilitzen diferents tipus de llenguatges de programació, amb els quals una vegada
escrits els podem passar a llenguatge màquina mitjançant un compilador específic.
En aquest cas he utilitzat el que vaig aprendre l’any passat, en la optativa d´electrònica
de primer curs de batxillerat sobre programació de PICs, i el meu coneixement del
llenguatge “C” per elaborar el codi, compilar-lo i programar el microcontrolador.
L’escriptura del programa m’ha portat moltes hores de reflexió, així com modificacions
i proves en el PIC a la placa de proves (protoboard)1.
Per escriure i compilar el programa vaig utilitzar el software MikroC, en la seva versió
de demostració.
Als annexos podeu trobar el codi final amb comentaris detallats a cada instrucció, a més
en el diagrama de la pàgina següent podeu veure el funcionament de les instruccions del
codi i l’execució del PIC (fig.19).
1 Es tracta d’una placa on es poden construir prototips de circuits electrònics sense soldadura.
16
Màquina expenedora de productes
Fig.19
2.2.3 Programació del microcontrolador
Per passar el codi una vegada compilat al PIC
vaig utilitzar un gravador del tipus JDM (fig.20)
que és dotació del centre i el programa IC-Prog.
El gravador es connecta a l’ordinador pel port
COM i amb el software de gravació es programa
el microcontrolador.
Fig.20
2.2.4 Mòdul del pic
17
Màquina expenedora de productes
El pic i els elements passius adjacents van inserits en una placa REPRO, aquí podeu
veure totes les connexions del mòdul i les seves sortides (fig.21).
Fig.21
Els sòculs1 de 16 potes que es veuen són per inserir uns integrats denominats uln2003a
que es componen d’un parell de díodes en Darlington. S’utilitza per obrir o tancar
circuits donant un 1 lògic a l’entrada de cada parell de díodes. En aquest cas com podeu
veure els utilitzo per alimentar les bobines del mòdul de relés per un costat i els motors
per l’altre.
Totes les resistències que es veuen a la imatge són per evitar rebots en les entrades.
Es pot veure els espasins2 que controlen la pantalla a la dreta de la imatge.
L’oscil·lador com hem vist abans serveix per executar els programes de forma cíclica i
els condensadors regulen la senyal.
2.2.5 Parell fotodíode-fototransistor
1 En castellà “Zócalo”, son uns petit acoblaments amb espasins que serveixen per inserir circuits integrats.2 Pins de metall que serveixen per conectar un cable extern.
18
Màquina expenedora de productes
Com hem vist a la part mecànica, en el pas entre tubs s’instal·len uns parells fotodíode-
fototransistor que fan de detectors de presència.
El circuit de forma simbòlica es aquest (fig.22)
Fig.22
Aquest circuit es l’encarregat de detectar les monedes. Quan hi ha una interrupció del
senyal entre el fotodíode i el fototransistor (quan cau la moneda) es produeix una sortida
d’1 lògic (5v) cap al PIC. Aquest, seguint les instruccions, comptabilitza la moneda i
ens mostra la quantitat. A més la quantitat queda emmagatzemada a la memòria per un
us posterior (demanar producte, tornar el canvi, etc).
2.2.6 Motors, electrònica
Com ja sabem, el microcontrolador s’encarrega d’accionar els motors. En aquest cas,
com en el de les bobines, utilitzem un uln2003a per evitar pujades en la intensitat del
corrent i rebots al PIC. Els finals de cursa indiquen al microcontrolador cada volta que
fa el motor per tal de donar la quantitat de productes correcte.
2.2.7 Mòdul de relés i electrònica dels actuadors
19
Màquina expenedora de productes
Com els actuadors funcionen a 220 volts i el PIC funciona i dona sortides a 5V
necessitem uns relés que obrin i tanquin de forma independent els circuits.
Aquest mòdul en concret és un conjunt de 6 relés muntats en una placa REPRO (fig 23).
Fig.23
L’accionament de la bobina de cada relé esta controlat pel PIC mitjançant un uln2003a,
així evitem rebots i possibles pujades de corrent al microcontrolador.
Quan el pic dona una sortida de 5v (com ja sabem, un 1 lògic) s’obre el circuit
independent de 220V i l’actuador s’acciona, donant així la moneda adient en aquest cas.
2.2.8 Testejadors dels actuadors
20
Màquina expenedora de productes
Un conjunt de polsadors
(fig.24) connectats per un
costat en paral·lel amb la
sortida de cada relé, i per
l’altra, al corrent altern,
serveixen tant per provar els
actuadors com per netejar de
canvi la màquina.
Fig.24
2.2.9 Pantalla
Una pantalla LCD de 20x4 caràcters (fig.25) controlada pel PIC s’encarrega de mostrar-
nos la informació de la venda.
Fig.25 (vistu es el meu sobrenom)
La pantalla te diferents connexions, 4 van al pic i s’encarreguen d’escriure a la pantalla i
esborrar-la. Un conjunt de quatre , van dos a dos cap a l’alimentació, un per als
caràcters i l’altre per la retroiluminació i funciona també a cinc volts. La resta dels
contactes van directament a massa (0v) tret d’un que també va a massa però amb un
potenciòmetre i serveix per regular el contrast.
2.10 Font d’alimentació
21
Màquina expenedora de productes
Per alimentar els elements que funcionen a 5 volts
(tots tret dels actuadors) utilitzo una font
d’alimentació reciclada d’un vell ordinador (fig.26).
Per que la font s’engegui faig un pont entre el cable
verd del molex1 de 16 pins i un negre qualsevol de
la font que son els de massa. Els cables vermells de
la font donen tots 5 volts.
Fig.26
3. Recerca i preu del material
Part Mecànica: Tot el material és reciclat o dotació del centre tret dels tubs de
metacrilat que van ser comprats a una botiga especialitzada.
Part Electrònica: Tot el material és reciclat o dotació del centre excepte dels actuadors
(timbres), que són comprats a Leroy Merlin, i el PIC i la Pantalla, comprats a Ebay al
venedor hein2312.
Taula amb el preu aproximat (només material no reciclat) :
Nom Quantitat Preu aproximat
unitari (€)
Preu aproximat
total (€)PIC 18f452 1 5,26 € 5,26 €*
Actuador 6 8,16 € 49 €*
ULN2003A 2 3 € 6 €
Motor DC 5V 3 3 € 9 €LCD 1 9,85 € 9,85 €*
Tubs de metacrilat 2 15 € 30 €
Resta de material
no reciclat
30 €
Total 138€
4. Conclusió i valoració personal
1 Tipus de connector que es troba en les fonts d’alimentació dels ordinadors.* Preu exacte
22
Màquina expenedora de productes
El projecte ha finalitzat amb moltes hores al damunt . Segurament en aquest dossier no
es veu reflectit tot el treball que m’ha portat no sols la construcció de la maqueta, sinó
també l´autoaprenentatge en temes d’electrònica i programació, el disseny i els plànols,
les diferents simulacions i proves realitzades, així com el haver-m’hi buscat la vida per
trobar molts del elements que ara es poden veure.
La construcció ha sigut complicada per que no he tingut màniga llarga per obtenir
aparells capaços de fer les funcions que jo requeria, i he agut d’utilitzar molt enginy per
donar-li funcions noves a elements que per si mateixos no eren capaços de realitzar.
Crec que aquest treball m’ha realitzat mòlt i he aconseguit veure algunes de les meves
possibilitats quan hem plantejo alguna cosa, que sol ser molt poques vegades.
5. Propostes de millora
Algunes de les millores que se m’hi ocorreixen són, per un costat, una millora
substancial en la quantitat d’informació extreta per pantalla, per exemple, mostrant en
tot moment la quantitat de diners que falta per a pagar un producte concret, i per altre
banda les millores que es podrien trobar en la substitució del materials utilitzats per
altres més cars i eficients, creats amb una finalitat especifica.
6. Programes utilitzats
• MikroC – Per a la escriptura i compilació del codi
• IC-prog – Per gravar el codi al PIC
• Proteus – Per simular el circuit
• Autoscketch – Per construir els plànols
• Microsoft Word – Per escriure aquest dossier
7. Agraïments
23
Màquina expenedora de productes
• Daniel Cueva, professor d’electrotècnia. IES Can Mas, Ripollet.
• Jordi Polo, professor de tecnologia. IES Can Mas, Ripollet.
• Als meus companys de taller Diego i Sergio, per la seva ajuda en moments
puntuals.
• A les institucion Wikimedia Fundation i Creative Commons.
8. Bibliografia
• Consulta dels datasheets1 <http://www.alldatasheet.com>
• Consulta sobre aspectes de programació i electrònica de PICs
<http://www.jvmbots.com/viewtopic.php?t=18>
• Recerca d’imatges <http://flickrcc.com>
• Recerca d’imatges <http://search.creativecommons.org>
• Recerca d’informació <http://en.wikipedia.org> i <http://es.wikipedia.org>
• Creació i consulta dels diagrames <http://www.drawanywhere.com>
9. Annexos
1 Full amb dades sobre un aparell especific.
24
Màquina expenedora de productes
9.1 Codi font del programa “la maquina expenedora”
void devolucion(void); Prototip de funció que no torna cap valor
char *text = "Benvingut" ; Cadenes de caràcterschar *textt = "a la Maquina";char *texttt= "expenedora";char *textv = "***Vistu***";char text2[40];char *euro = " euros";char *texti = "cantidad introduida";
char *textp1 = "introdueixi" ;char *textp11 = "mes diners (0,55)" ;char *textp2 = "mes diners (1,20)";char *textp3 = "mes diners (2,50)";char *textpro = "Processant comanda";char *textdev = "La devolucio es de";
long cantidad = 0; Variable de tipus enter llarg float contador = 0.00; Variable de tipus real
void main() Funció principal{
ADCON1=0xFF; Tots els ports com entrades i sortides digitalsTRISC = 0xFF; Port C com entradaPORTE.F2 = 1; Port E pin 2 com entradaTRISD = 0; Port D com sortida PORTD = 0;
TRISA.F0 = 0; Pin 0 al 3 de port A sortidesTRISA.F1 = 0;TRISA.F2 = 0;TRISA.F3 = 0;TRISA.F4 = 1; Pin 4 y 5 del port A entradesTRISA.F5 = 1;TRISE.F0 = 1; Pin 0 i 1 del port E entradesTRISE.F1 = 1;TRISB.F0 = 1;TRISB.F1 = 1; PORTA.F0 = 0; Reset de tots els pinsPORTA.F1 = 0;PORTA.F2 = 0;
25
Màquina expenedora de productes
PORTA.F3 = 0;PORTA.F4 = 0;PORTA.F5 = 0;PORTE.F0 = 0;PORTE.F1 = 0; Lcd_Init(&PORTB); Inicia el LCD en el port BLcd_Cmd(LCD_CLEAR); Neteja el displayLcd_Cmd(LCD_CURSOR_OFF); Apaga cursorLcd_Out(1,6, text); Imprimeix el text, primera línea, primera columnaLcd_Out(2,5, textt);Lcd_Out(3,6, texttt);Lcd_Out(4,6, textv);
while (1){ Bucle infinit
//Entrada de monedes
if (PORTC.F2){ Si el fototransistor de 5 cèntims dona senyal Delay_ms(100); Retràs d’1 dècima de segon contador += 0.05; Adició de 0,05 a la variable real contador. cantidad += 5; Adició de 5 a la variable enter cantidad. sprintf(text2, "%2.2f", contador) ; Pas de tipus “float” a “string” Lcd_Cmd(LCD_CLEAR) ; strcat(text2, euro); Concatenació de text2 i euro Lcd_Out(1,1, texti); Lcd_Out(2,6, text2);}
else if (PORTC.F3){ Delay_ms(100); contador += 0.10; cantidad += 10; sprintf(text2, "%2.2f", contador) ; Lcd_Cmd(LCD_CLEAR) ; strcat(text2, euro); Lcd_Out(1,1, texti); Lcd_Out(2,6, text2);} else if (PORTC.F4){ Delay_ms(100); contador += 0.20; cantidad += 20; sprintf(text2, "%2.2f", contador) ;
26
Màquina expenedora de productes
Lcd_Cmd(LCD_CLEAR) ; strcat(text2, euro); Lcd_Out(1,1, texti); Lcd_Out(2,6, text2);} else if (PORTC.F5){ Delay_ms(100); contador += 0.50; cantidad += 50; sprintf(text2, "%2.2f", contador) ; Lcd_Cmd(LCD_CLEAR) ; strcat(text2, euro); Lcd_Out(1,1, texti); Lcd_Out(2,6, text2);} else if (PORTC.F6){ Delay_ms(100); contador += 1.00; cantidad += 100; sprintf(text2, "%2.2f", contador) ; Lcd_Cmd(LCD_CLEAR) ; strcat(text2, euro); Lcd_Out(1,1, texti); Lcd_Out(2,6, text2);} else if (PORTC.F7){ Delay_ms(100); contador += 2.00; cantidad += 200; sprintf(text2, "%2.2f", contador) ; Lcd_Cmd(LCD_CLEAR) ; strcat(text2, euro); Lcd_Out(1,1, texti); Lcd_Out(2,6, text2);}
//Canvi else if (PORTE.F2) devolucion(); Si prems polsador de devolució
//Comandes else if (PORTE.F1){ Si prems producte 1
if(cantidad == 0){ Si la quantitat es 0 Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,4, textp1); Lcd_Out(2,1, textp11); Mostra el preu del producte Delay_ms(2000); Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,6, text);
27
Màquina expenedora de productes
Lcd_Out(2,5, textt); Lcd_Out(3,6, texttt); Lcd_Out(4,6, textv); }
else if(cantidad < 55){ Si la quantitat és mes baixa de 55 Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,4, textp1); Lcd_Out(2,1, textp11); Delay_ms(2000); Lcd_Cmd(LCD_CLEAR); Mostra el preu del producte Lcd_Out(1,1, texti); Lcd_Out(2, 6, text2);}
else if(cantidad >= 55) { Si la quantitat es major o igual a 55 Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,1, textpro); cantidad -= 55; contador -= 0.55; Resta 0,55 i 55 a les variables PORTA.F0 = 1; Engega el motor 250 milisegons Delay_ms(250); PORTA.F0 = 0; while(PORTA.F4 == 0){ Mentre no es premi el final de cursa PORTA.F0 = 1;} El motor segueix girant. PORTA.F0 = 0; Delay_ms(1000); devolucion();}} Truca a la funció devolució else if (PORTE.F0){ Producte 2
if(cantidad == 0){ Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,4, textp1); Lcd_Out(2,1, textp2); Delay_ms(2000); Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,6, text); Lcd_Out(2,5, textt); Lcd_Out(3,6, texttt); Lcd_Out(4,6, textv); } else if(cantidad < 120){ Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,4, textp1); Lcd_Out(2,1, textp2); Delay_ms(2000); Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1, texti); Lcd_Out(2, 6, text2);} else if(cantidad >= 120) {
28
Màquina expenedora de productes
Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,1, textpro); cantidad -= 120; contador -= 1.20; PORTA.F1 = 1; Delay_ms(250); PORTA.F1 = 0; while(PORTB.F0 == 0){ PORTA.F1 = 1;} PORTA.F0 = 0; Delay_ms(1000); devolucion();}}
else if (PORTA.F5){ Producte 3
if(cantidad == 0){ Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,4, textp1); Lcd_Out(2,1, textp3); Delay_ms(2000); Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,6, text); Lcd_Out(2,5, textt); Lcd_Out(3,6, texttt); Lcd_Out(4,6, textv); }
else if(cantidad < 250){ Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,4, textp1); Lcd_Out(2,1, textp3); Delay_ms(2000); Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1, texti); Lcd_Out(2, 6, text2);} else if(cantidad >= 250) { Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,1, textpro); cantidad -= 250; contador -= 2.50; PORTA.F2 = 1; Delay_ms(250); PORTA.F2 = 0; while(PORTB.F1 == 0){ PORTA.F2 = 1;} PORTA.F2 = 0; Delay_ms(1000); devolucion();} }
29
Màquina expenedora de productes
} } void devolucion(void) { Funció devolució (si es truca ve aquí)
while(cantidad > 0){ Bucle mentre hi hagi diners
Lcd_Cmd(LCD_CLEAR) ; sprintf(text2, "%2.2f", contador) ; strcat(text2, euro); Lcd_Out(1,1, textdev); Lcd_Out(2,6, text2);
if(cantidad >= 200){ Tornar 2 € while(cantidad >= 200){ PORTD.F7 = 1; Delay_ms(500) ; //0.5 sec PORTD.F7 = 0; Delay_ms(500); cantidad -= 200;} }
else if(cantidad >= 100){ Tornar 1 € while(cantidad >= 100){ PORTD.F6 = 1; Delay_ms(500); PORTD.F6 = 0; Delay_ms(500); cantidad -= 100; }}
else if(cantidad >= 50){ Tornar 0.50 € while(cantidad >= 50){ PORTD.F5 = 1; Delay_ms(500) ; //0.1 sec PORTD.F5 = 0; Delay_ms(500); cantidad -= 50; }}
else if(cantidad >= 20){ Tornar 0.20 € while(cantidad >= 20){ PORTD.F4 = 1; Delay_ms(500) ; //0.1 sec PORTD.F4 = 0; Delay_ms(500); cantidad -= 20; }}
30
Màquina expenedora de productes
else if(cantidad >= 10){ Tornar 0.10 € while(cantidad >= 10){ PORTD.F3 = 1; Delay_ms(500) ; //0.1 sec PORTD.F3 = 0; Delay_ms(500); cantidad -= 10; }}
else if(cantidad >= 5){ Tornar 0.05 € while(cantidad >= 5){ PORTD.F2 = 1; Delay_ms(500) ; //0.1 sec PORTD.F2 = 0; Delay_ms(500); cantidad -= 5; }} } Lcd_Cmd(LCD_CLEAR) ; Lcd_Out(1,6, text); Lcd_Out(2,5, textt); Lcd_Out(3,6, texttt); Lcd_Out(4,6, textv); contador = 0.00; Contador torna a 0 }
31