Imatge del circuit a relitzar.
Aquest circuit porta els següents components electrònics o maquinari, i el següent software o programari:
Un espectrofotòetrepermet fer dues coses: saber quina substància obtenim gràcies a la longitud d'onamàxima i saber quanta substància tenim gràcies a la recta patró o també anomenada corba de calibratge
El nostre objectiu és mesurar colorants i el primer que farem serà busca la longitud d'ona màxima de cada colorant: FCF, luteina i àcid carminic. Compades del Mercadona de la Casa Vahine
Calcular longitud d'ona màxima dels colorant
La concentració d'una substància és prporcional a la seva absorvancia
El procediment per construïr un espectofotòmentre consta les següents parts:
Latin name of herbal substance | Botanical name of plant | English common name of herbal substance | Combination | Use | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nom | Carmín | Luteina | FCF | Font |
---|---|---|---|---|
Raquel Albarrán | 612nm (1) | 650nm | 630nm (3) | 1. Autores=Dayana Donneys-Victori,Cristian Camilo Ospina-Toro,Mónica Vanesa Zapata-Villegas, Nilson Marriaga-Cabrales,Fiderman Machuca-Martínez, Juan M. Peralta-Hérnandez, Carlos A. Martínez-Huitle Titulo= DYNA. Electrocoagulación de soluciones de índigo carmín empleando ánodos de magnesio y de aleación AZ31. Vol.85. Sept. 2018 https://www.scielo.cl/scielo.php?script=sci_arttext&pid=S0718-34292015000300004 2. https://grupofranja.net/danos-oculares-que-produce-la-luz-azul-y-mecanismos-fisiologicos-de-defensa/ 3. Autores=? Orange Country Biothecnology Education Collavorative Titulo: 1.6 Espectofotometría. Libre Texts Español (MindTouch) https://espanol.libretexts.org/Biologia/Biotecnolog%C3%ADa/Manual_de_Laboratorio%3A_Introducci%C3%B3n_a_la_Biotecnolog%C3%ADa/01%3A_T%C3%A9cnicas/1.06%3A_Espectrofotometr%C3%ADaibre Texts Español |
Manal El Morabit | 494 nm (4) | 455 nm (5) | 630 nm (6) | Carmín: Tello V, Vargas J Efecto de la luz artificial a diferentes fotoperiodos sobre dos variables productivas de la grana cochinilla, Dactylopius coccus Costa (Hemiptera: Dactylopiidae) para su cultivo bajo condiciones controladas VOLUMEN:33 no.3 Arica ago. 2015 Luteína: FCF: |
Alexis Álvarez | 494 nm | 445 nm | 620 nm | Àcid Carmínic: https://dialnet.unirioja.es/servlet/articulo?codigo=9252159 FCF: Luteina: https://digital.csic.es/bitstream/10261/172392/1/biomarocuhuman.pdf Luteína: https://digital.csic.es/bitstream/10261/172392/1/biomarocuhuman.pdf |
Bassim Lyamani | 535nm (4) | 422-445nm (5) | 560nm (6) | 4: Ocampo, C. Informe de pràctica de laboratorio, Universidad Peruana Union, Volumen nro. 5 pagines (9) (2006) (DOC) caracterizacion de colorantes | claudia ocampo - Academia.edu 5: Burgos J.T y Calderon F.R DETERMINACION DEL CONTENIDO DE CAROTENOIDES TOTALES EN OCHO ESPECIES DE FRUTAS Y VERDURAS COMERCIALIZADAS EN LA ZONA METROPOLITANA DE SAN SALVADOR |
494nm | 535nm | 623nm | ÀCID CARMÍNIC: Luteina: FCF: |
|
Joel Cano | 490-499 nm | 440 nm | 630 nm | (7B) Àcid Carmínic: Salazar,KG et al Extracción de ácido carmínico como colorante natural a partir de la cochinilla Pol.Con 8 : 583-605 (2023) https://dialnet.unirioja.es/servlet/articulo?codi go=9252159 (7D) FCF: Rodriguez,RF et al Evaluación de colorantes sintéticos en bebidas comercializadas en la ciudad de Trujillo en el periodo 2018 - 2019 Alpha Centauri 2 : 124-139 (2021) https://dialnet.unirioja.es/servlet/articulo?codigo=8092600 (7C) Luteína: Odorrisi, AA et al DESENVOLVIMENTO E VALIDAÇÃO DE MÉTODO ESPECTROFOTOMÉTRICO PARA DETERMINAÇÃO DE CORANTE À BASE DE LUTEÍNA ADICIONADO EM IOGURTE DESNATADO Quim. Nova 35 : 2057-2062 (2012) https://www.scielo.br/j/qn/a/6qfQpCHJ8jn8rH8RYyrVXSK/?lang=pt# |
Alex Roca | 495 nm | 445 nm | 620 - 630 nm | Carmín: Luteina: Estèvez, R. Biomarcadores de luteína, zeaxantina y otros carotenoides en la relación dieta y salud ocular humana (Tesis Doctoral) Universidad Complutense de Madrid. (2016) https://digital.csic.es/bitstream/10261/172392/1/biomarocuhuman.pdf FCF: Rodríguez, M.C. et al. Cuantificación simultánea de colorantes en bebidas deportivas utilizando espectroscopia visible y PLS–1. Revista FABICIB. volumen 17. PÁGS. 74 - 84. (2013) https://www.researchgate.net/publication/282977677_Cuantificacion_simultanea_de_colorantes_en_bebidas_deportivas_utilizando_espectroscopia_visible_y_PLS-1 |
Daniel Solis | 494 nm | 445 nm | 482 nm | (7B) Àcid Carmínic: Salazar,KG et al Extracción de ácido carmínico como colorante natural a partir de la cochinilla Pol.Con 8 583-605 (2023) file:///C:/Users/DanielSol%C3%ADsArteaga/Downloads/Dialnet-ExtraccionDeAcidoCarminicoComoColoranteNaturalAPar-9252159%20(1).pdf Luteina: https://www.boe.es/buscar/pdf/2009/BOE-A-2009-16021-consolidado.pdf FCF: https://www.argentina.gob.ar/normativa/recurso/86181/dto202-2003-12/htm |
Ariadna Arcas | 495 nm | 455 nm | 630 nm | Carmín:https://www.scielo.cl/scielo.php?script=sci_arttext&pid=S0718-34292015000300004 Luteína:https://grupofranja.net/danos-oculares-que-produce-la-luz-azul-y-mecanismos-fisiologicos-de-defensa/ FCF:https://espanol.libretexts.org/Biologia/Biotecnolog%C3%ADa/Manual_de_Laboratorio%3A_Introducci%C3%B3n_a_la_Biotecnolog%C3%ADa/01%3A_T%C3%A9cnicas/1.06%3A_Espectrofotometr%C3%ADa Orange Country Biothecnology Education Collaborative Titulo: 1.6 Espectofotometría. Libre Texts Español (MindTouch) |
Mariana Velasco | 494nm | 445nm | 630nm | https://docs.google.com/document/d/17PXOVwkcxc__sNLeHLdus3zdZb38olWlQAy8A463YLM/edit?usp=sharing |
Mateo Pérez | 494nm | 440nm | 630nm | Carmín: Luteína: https://dialnet.unirioja.es/servlet/articulo?codigo=8092600 FCF: |
Utilitzarem codis que faràn un escaneig o un scan, de forma que encendràn els llums red, green and blue del led RGB de forma que generarem longituds d'ona que van se 380 nanaomètes a 780 nanòmetres
Escriu la longitud d'ona en nanòmetres i converteix-la en RGB en la segúent línea
A la figura 1 podem visualitzar la relació que té la longitud d'ona i el color
< input type="number" id="wavelength" value="550" min="380" max="780" >
El codi anterior que transforma la longitud d'ona en valor RGB funciona de la següent manera: "Longitud d'ona" té una etiqueta o tag anomenada label
L'etiqueta input permet introudïr qualsevol tipus de valor pel teclat, però la propietat o atribut de input anomenat type està definida com a number i només permet introduïr números. El value és una propietat o atribut de input que fa que surti com a valor predeterminat, mín i màx sés els valors mínim i màxim. No s'acceptaràn valors fora del marge. La Id és una propietat molt important perquèés com el DNI i el cridarem en getElementByID
< button onclick="convertWavelength()" > Converteix a RGB < /button >
La paraula button crea un botó de forma automàtica que té una propietat o atribut anomenada onlick que està esperant ser clickada o no. Altres que poden existir onmouseover (quan estic a sobre), onkeydown (quan pressiono una tecla), onload (quan es carrega una pàgina o un element), onsubmit (quan envío un formulari).
El contigut del botó s'escriu abans de final de button.
Quan detecti que onclick és igual a true s'executarà una funció que no té cap paràmetre ni argument perquè té dos parèntesis buits. La funció s'anomena convertWavelenght i està definida més endevant amb la paraula function convertWavelenght(){...instruccions aquí...}. Això vol dir que quan clicko a un botó creat amb html crido a una funció creada en javaScript més endevant que convertirà la longitud d'ona que escric en RGB.
<div id="result"></div>
Un div és un divisor que és com un paràgraf en aquest cas buit que té un identificador anoomenat resul que només es veurà i s'executarà desprès, és a dir, quan es carrega la pàgina està buit u quan clickem el botó de convertir farà la seva funció.
function convertWavelength() {
const wavelength = document.getElementById("wavelength").value;
const R = Math.round(getRGBValue(wavelength, 'R'));
const G = Math.round(getRGBValue(wavelength, 'G'));
const B = Math.round(getRGBValue(wavelength, 'B'));
const result = `RGB values: (${R}, ${G}, ${B})`;
document.getElementById("result").textContent = result;
}
Una funció és una manera que tenim de transfomar un valor que donem nosaltres inicialment, en un altre diferent. En aquest cas volem transformar el valor de la longitud d'ona en tres valors: RGB.
Sempre que escric la paraula function, per crear una funció, he de posar al costat el nom de la funció, en anglés, que expliqui el que fa, en aquest cas convertir la longitud d'ona i poso convertWaveLength(), en camelCase, i posem un parentesis buit perquè no depen de paràmetres o arguments.
Dins de la funció tenim diverses instruccions agrupades en una clau
Les primeres 5 línies de la funció defineixen constants locals perquè s'apliquen dins de la funció i no afecten a tot el codi, a diferència de les constants globals que es posen fora de les funcions i afecten a tot el codi(const PI = 3,14;).
function getRGBValue(wavelength, color) {
const gamma = 0.8;
const factor = 0.1;
let R, G, B;
const nm = parseFloat(wavelength);
if (nm < 380 || nm > 780) {
return 0;
}
parseFloat transforma qualsevol variable en un float o número decimal i posteriorment en una altra funció Math round el transformarà en un numero sencer o integer. Si el número introduït com a nm està fora de marges no facis res que vol dir return 0
if (nm >= 380 && nm < 440) {
R = -(nm - 440) / (440 - 380);
G = 0;
B = 1;
} else if (nm >= 440 && nm < 490) {
R = 0;
G = (nm - 440) / (490 - 440);
B = 1;
} else if (nm >= 490 && nm < 510) {
R = 0;
G = 1;
B = -(nm - 510) / (510 - 490);
} else if (nm >= 510 && nm < 580) {
R = (nm - 510) / (580 - 510);
G = 1;
B = 0;
} else if (nm >= 580 && nm < 645) {
R = 1;
G = -(nm - 645) / (645 - 580);
B = 0.0;
} else if (nm >= 645 && nm < 781) {
R = 1;
G = 0;
B = 0;
}
if (color === 'R') {
return 255 * Math.pow(R, gamma);
} else if (color === 'G') {
return 255 * Math.pow(G, gamma);
} else if (color === 'B') {
return 255 * Math.pow(B, gamma);
}
}
En el cas de R
El codi d'Arduino és el segúent
//creem 6 varibles de tipus integer(int), vol dir que els pins del 12 al 17, els hi donem noms per identificarlos perquè és més fàcil
//entendre pinLedR que 12 que vol dir que al pin en el que es conecta la pota R del Led RGB. Aquestes definicions ajuden a entendre el codi als humans
//i tenir ordenat el codi.
int pinLedR = 12; // Pin per al LED vermell (RGB)
int pinLedG = 13; // Pin per al LED verd (RGB)
int pinLedB = 14; // Pin per al LED blau (RGB)
int pinLedUV = 15; // Pin per al LED ultraviolat
int pinLedIR = 16; // Pin per al LED infraroig
int pinLDR = 17; // Pin per al sensor LDR
//setup és una funció de configuració que es obligatori de aclarar on diem que els pinMode que és el mode de conexió de cada pin, que por ser sortida
//(OUPUT) perquè el lumm surt cap a fora. En el cas del pinLedR, pinLedG, pinLedB, pinLeDuv, pinLedIR. en el cas del sensor LDR és un INPUT vol dir qu entra informació, en aquest cas la llum exterior.
void setup() {
pinMode(pinLedR, OUTPUT);
pinMode(pinLedG, OUTPUT);
pinMode(pinLedB, OUTPUT);
pinMode(pinLedUV, OUTPUT);
pinMode(pinLedIR, OUTPUT);
pinMode(pinLDR, INPUT);
//serial està en majúscula perquè és una classe que controla la comunicació en sèrie entre elarduino i l'ordinador.
Serial.begin(9600); // Inicia la comunicació sèrie a 9600 bauds
}
void loop() {
if (Serial.available() > 0) {
//La comunicació sèrie és a traves d'un cable que antigament s'anomenaba sèrie o RS232 que tenía 9 pins, d'aquest alguns eran d'alimentació i d'altres de transsmició de tipus duplex. És a dir, que envía informació dese l'ordinador a l'Arduino i a l'inreves. Internament a l'Arduino i altres microcontroladors hi tenen actualment connexions físiques i protocols de sofware RS232. L'USB té 4 pins, els de la vora són d'alimentació, per donar corrent( un dona càrrega positiva i l'altre el terra,negativa). Els 2 pins del centre, una circula l'informació capa a dintre e l'ordinador i l'altre capa a fora.Serial.available és un mètode avaiable que significa disponible, que apiliquem en la sintaxi del punt en una classe anomenada Serial(en altres llengüatges hauríem de crear un objecte, és a dir, Serial serial; o Serial=new Serial();). El mètode available només admet 2 resultas, major a 0(significa que és capaz de rebre un caràcter ASCII) o igual a 0(significa que no esta conncectat al cable o hi ha un error).
char comanda = Serial.read(); // Llegeix la comanda enviada pel port sèrie
//La comanda és uun caracter, perquè el port sèrial o USB envía caracters ASCII. El serial.rea(); està rebent pel mètode read caracters que esta llegint.
switch(comanda) {
case ‘I’: // Encén o apaga el LED infraroig i llegeix el sensor LDR
digitalWrite(pinLedIR, !digitalRead(pinLedIR));
llegirLDR();
break;
case ‘U’: // Encén o apaga el LED ultraviolat i llegeix el sensor LDR
digitalWrite(pinLedUV, !digitalRead(pinLedUV));
llegirLDR();
break;
//Si pressiono la tecla 'I' envira el caràcter I a traves del cable mitjançant les instruccions serialavalabel i serialread, i quan arribi la I a l'Arduino anirà al prsoccessador de l'Arduino AVR i torbarà aquest codi que diu case I que significa que si es produeix apretant una I ha de fer un digitalwrite o encendre el LED infraroig. Passarà el mateix amb la tecla 'U', però en contes de encendre el LED infraroig encendrà el LED ultraviolat. Amés de encendre els LED els apagarà si estan encessos amb l'instrucció !, per últim en els dos casos també llegirà els LDR perquè hem cridat la funció llegirLDR();.
case ‘R’: // Controla el LED RGB i llegeix el sensor LDR
int r = Serial.parseInt();
int g = Serial.parseInt();
int b = Serial.parseInt();
//El LED RGB no es pot encendre com els LEDs anteriors perquè té 16 milions de combinacions, perquè són 255 vermells multiplicats per 255 blaus. Hem de posar un valor concret que pot ser introduït per l'usuari i amb SerialparceInt agafa el valor introduït per l'usuari i si és un caracter o un número decimal el transforma en un número int o integer o numero cencee, i amb Serial l'envia a l'Arduino i emmagatzema cada número en una variable sencera nomenada r, g o b.
analogWrite(pinLedR, r); // Controla el LED vermell
analogWrite(pinLedG, g); // Controla el LED verd
analogWrite(pinLedB, b); // Controla el LED blau
//La variable emmmagatzemada r, g i b correspón a un valor entre 0 i 255 que introduint en las 3 intrsuccions anteriors amb analogWrite per encendre cada LED. La diferència entre digitalWrite que utilitzaven per el LED ultraviolat e infraroig anterior i analogWrite que estem utilitzant en LED RGB és que el digitalWrite és una funció digital que només es possible fer 2 funcions( 0 o 1), o LOW i HIGH. En canvi analogWrite permet fer 255 valors. Les dues funcions tenen en comú que tenen dos paràmetres o arguments entre parentesis, el primer paràmetre és el número de pin on esta conectat, per exemple el LED vermell (pota vermella del LedRGB) és pinLedr que és el mateix que escriure el número 12 i el segon paràmetre és r que pot ser 0 o 1, o 0 a 255 i és introduït per l'usuari que ens diu l'intensitat en que sencendrà. De 0 a 255 és una tecnología que realment no és analógica, sino, PWM. Per exemple quan escric 127 esta a la meitat de la intensitat màxima, perquè? Realment el que observo és el LEED menys intens, però el que esta pasant es que la meitat del temps s'esta apagant i l'altre meitat s'esta encenen de forma molt ràpida 01010101. Per exemple quan escrivim 64 es representaria com una quarta part de la intensitat màxima, aleshores seria 0001000100010001 a tota velocitat i no veiem que s'apaga, perquè l'orde de temps és milisegons i el nostre ull no l'observa. Per últim amb 190 seria tres quarts encesos 1110111011101110. El valor 0 analógic seria 000000000 i e valor 255 seria 111111...
llegirLDR();
break;
}
}
// Altres parts de la teva lògica del programa
}
void llegirLDR() {
int valorLDR = analogRead(pinLDR);
Serial.print(“Valor LDR: “);
Serial.println(valorLDR);
}
//AnalogRead