Está en la página 1de 25

Instrumentación electrónica

industrial clase 14
OPAMP mmultiplicador/divisor, control led RGB Arduino
OPAMP MULTIPLICADOR DIVISOR
APLICACIÓN MULTIPLICAR LOS VALORES DE PRESION A
Y B, DIVIDIRLO POR UN VALOR FIJO Y ACTIVAR UNA
CARGA
CIRCUITO REALIZADO EN TINKERCAD
WA NWFATIVO EL FINAL VT PORQUE
ES INVERSOR
LED RGB CONTROL CON
POTENCIOMETRO
• int Rojo = 11;
• int Verde = 10;
• int Azul = 9;

• int pot0 = A0;


• int pot1 = A1;
• int pot2 = A2;

• int valorsensor0 = 0;
• int valorsensor1 = 0;
• int valorsensor2 = 0;

• float divisionR; //la constante float enviara al led Rojo


• float divisionV; //la constante float enviara al led Verde
• float divisionA; //la constante float enviara al led Azul
• void setup()
•{
• pinMode(Rojo, OUTPUT);
• pinMode(Verde, OUTPUT);
• pinMode(Azul, OUTPUT);
• Serial.begin(9600);
•}

• void loop()
•{
• float Constante = (float) 255 / 1023; //salidas digitales 0 a 255, 5v/255=19.6mv hay una variacion digital los datos de float dependeran de las variaciones del
potencioometro, a las salidas digitales
• valorsensor0 = analogRead(pot2); //
• valorsensor1 = analogRead(pot1);
• valorsensor2 = analogRead(pot0);

• divisionR = Constante * valorsensor0;
• divisionV = Constante * valorsensor1;
• divisionA = Constante * valorsensor2;

• color(divisionR,divisionV, divisionA);
•}

• void color(int rojo, int verde, int azul)


•{
• analogWrite(Rojo, 255-rojo);
• analogWrite(Verde, 255-verde);
• analogWrite(Azul, 255-azul);
•}
VISUALIZACIÓN DEL CODIGO DEL
CONTROL REMOTO EN HEX Y
ENCENDIDO DE LED RGB
Es necesario en programación usar un sistema hexadecimal
debido a que se usa un sistema de bits de 8, 16 u 32 bits.
• #include <IRremote.h> //incluimos la libreria para el control remoto
• int red=9; // led rojo pin 9
• int green=13; //led verde pin 13
• int blue=10; //led azul pin 10
• int RECV_PIN = 11; //Recibir los datos en el pin 11

• IRrecv irrecv(RECV_PIN); //creamos un objeto llamado RECV_PIN que va a leer los datos del
terminal 11

• decode_results results; //se crea otro objeto llamado results donde se van a almacenar los
datos que nosotros enviamos

• void setup()
•{
• pinMode(red,OUTPUT); //se establecen los pines de salida rojo,
• pinMode(blue,OUTPUT); //azul y
• pinMode(green,OUTPUT); //verde como salida

• Serial.begin(9600); //comunicación serial


• irrecv.enableIRIn(); // Empieza la recepción dle sensor inflarrojo
•}

• void loop() {
• if (irrecv.decode(&results)) { //devuelve verdadero si reciben datos y falso si no
• Serial.println(results.value, HEX); // si se reciben datos se almacenan en codigo IR en hexadecimal
• irrecv.resume(); // Recibe los nuevos valores

• if(results.value==0xFD08F7){ //este es el numero uno
• digitalWrite(red,HIGH);
• digitalWrite(green,LOW);
• digitalWrite(blue,LOW);
• }
• else if(results.value==0xFD48B7){ //este es el numero 3
• digitalWrite(red,LOW);
• digitalWrite(green,LOW);
• digitalWrite(blue,HIGH);
• }
• else if(results.value==0xFD8877){ //este es el numero 2
• digitalWrite(red,LOW);
• digitalWrite(green,HIGH);
• digitalWrite(blue,LOW);
• }
• }
• delay(100);
•}
SENSOR INFLARROJO IR CONTROL DE
CARRO ROBOT
Conexión del CI L293D
• /**
• Se selecciona el boton por hexadecimal
• y luego se establece una Funcion por cada Boton
• **/

• #include <IRremote.h>

• IRrecv rc(11); //creamos un objeto llamado RECV_PIN que va a leer los datos del terminal 11

• decode_results results; //recibe los datos decodificados


• //Inicio de Motores

• const int PWM_M1 = 5; //salida pwm conectada al pin 1 del L293D


• const int IN1_M1 = 2; //control de sentido de giro
• const int IN2_M1 = 3; //cotrol de sentido de giro
• const int PWM_M2 = 6;
• const int IN1_M2 = 8; //segundo motor
• const int IN2_M2 = 9;

• int speed = 100;

• void setup(){
• Serial.begin(9600);
• rc.enableIRIn(); //empieza la recepción

• pinMode(PWM_M1,OUTPUT);
• pinMode(PWM_M2,OUTPUT);

• pinMode(IN1_M1,OUTPUT);
• pinMode(IN2_M1,OUTPUT);

• pinMode(IN1_M2,OUTPUT);
• pinMode(IN2_M2,OUTPUT);
•}

• void loop(){
• if (rc.decode(&results)){


• switch(results.value){
• case 0xFD00FF://Boton Rojo de Power
• break;
• case 0xFD807F://Boton vol+
• forward(); //instrucción para indicar a un motor que avance
• break; // break es la palabra usada para salir del bucle.
• case 0xFD40BF:// Boton func/stop
• break;
• case 0xFD20DF://Boton |<<
• turnLeft(); //instrucción para girar a la izquierda
• break;
• case 0xFDA05F://Boton >||
• stop(); //instrucción para detenerse
• break ;
• case 0xFD609F://Boton >>|
• turnRight(); //doblar a la derecha
• break ;
• case 0xFD10EF://Boton down arrow
• speedDown(); //reduce la velocidad
• break ;
• case 0xFD906F://Boton vol-
• backward(); //instrucción para girar hacia atras
• break ;
• case 0xFD50AF://Boton up arrow
• speedUp(); //instrucción para acelerar
• break ;


• }
• rc.resume();
• }
•}
• void forward(){
• Serial.println("Adelante");
• analogWrite(PWM_M1, speed);
• analogWrite(PWM_M2, speed);

• digitalWrite(IN1_M1, HIGH);
• digitalWrite(IN2_M1, LOW);

• digitalWrite(IN1_M2, HIGH);
• digitalWrite(IN2_M2, LOW);
•}

• void backward(){
• Serial.println("Atras");
• analogWrite(PWM_M1, speed);
• analogWrite(PWM_M2, speed);

• digitalWrite(IN1_M1, LOW);
• digitalWrite(IN2_M1, HIGH);

• digitalWrite(IN1_M2, LOW);
• digitalWrite(IN2_M2, HIGH);
•}

• void turnLeft(){
• Serial.println("Girar a la Izquierda");
• analogWrite(PWM_M1, 0);
• analogWrite(PWM_M2, speed);

• digitalWrite(IN1_M1, HIGH);
• digitalWrite(IN2_M1, LOW);

• digitalWrite(IN1_M2, HIGH);
• digitalWrite(IN2_M2, LOW);
•}

• void turnRight(){
• Serial.println("Girar a la Derecha");
• analogWrite(PWM_M1, speed);
• analogWrite(PWM_M2, 0);

•}
• digitalWrite(IN1_M1, HIGH);
• digitalWrite(IN2_M1, LOW);

• digitalWrite(IN1_M2, HIGH);
• digitalWrite(IN2_M2, LOW);
•}

• void stop(){
• Serial.println("Parar");
• digitalWrite(IN1_M1, LOW);
• digitalWrite(IN2_M1, LOW);

• digitalWrite(IN1_M2, LOW);
• digitalWrite(IN2_M2, LOW);
•}

• void speedUp(){
• Serial.println("Aumentar Velocidad");
• speed+=10;
• if(speed>255) speed =255;
• analogWrite(PWM_M1, speed);
• analogWrite(PWM_M2, speed);
•}

• void speedDown(){
• Serial.println("Disminuir Velocidad");
• speed-=10;
• if(speed<0) speed =0;
• analogWrite(PWM_M1, speed);
• analogWrite(PWM_M2, speed);

También podría gustarte