Asociación de resistencias en serie, en paralelo y mixtas. Ejercicios resueltos.

A continuación te voy a explicar cómo calcular la resistencia equivalente en circuitos con asociación de resistencias en serie, en paralelo y mixtas, es decir, en serie y en paralelo en el mismo circuito.

Resistencia equivalente o resistencia resultante

Antes de empezar a ver cómo calcular resistencias en serie y en paralelo, necesitas conocer el concepto de resistencia equivalente.

La resistencia equivalente, resistencia resultante o resistencia total de un circuito es una resistencia que es equivalente al resultado de asociar todas las resistencias de un circuito:


Con la resistencia equivalente, podemos calcular la intensidad total del circuito y la tensión total del circuito, aplicando la ley de Ohm.

Lo verás más claro conforme vayamos avanzando.


Cálculo de resistencias en serie


En un circuito, las resistencias están en serie cuando están conectadas una al lado de la otra, es decir, el punto de salida de una resistencia es el punto de entrada de la resistencia siguiente:

En un circuito con resistencias en serie, la intensidad que circula por cada una de las resistencias es la misma y es igual a la intensidad total del circuito:

Es decir, la resistencia es constante:

Por otro lado, la tensión total del generador es igual a la suma de cada una de las tensiones de las resistencias:

Si aplicamos la ley de Ohm a la tensión total, tenemos que es igual a la intensidad que circula por el circuito (común a todos los elementos) por la resistencia total del circuito (que más abajo te digo cómo calcularla):

La tensión en cada resistencia del circuito, aplicando la ley de Ohm, es igual a la intensidad del circuito, por el valor de cada resistencia:

Si escribimos la tensión total como la suma de cada una de las tensiones de cada resistencia, pero expresadas como la multiplicación de la intensidad por cada resistencia nos queda:

La suma de la intensidad por cada resistencia, será igual a la intensidad por la resistencia total, ya que ambas expresiones son iguales a la tensión total:

Sacamos factor común en el segundo miembro:

Y podemos eliminar la intensidad de cada miembro de la ecuación:

Quedando que la resistencia equivalente de la asociación de resistencias en serie es igual a la suma de los valores de cada una de las resistencias siendo ésta su fórmula:

Por tanto, podemos sustituir las resistencias en serie, por su resistencia equivalente en el circuito:

Una vez obtenida la resistencia equivalente, podemos calcular la intensidad del circuito y la tensión en los extremos de cada una de las resistencias.


Ejercicio resuelto con resistencias en serie

Vamos a ver un ejemplo de cómo calcular la resistencia equivalente de una asociación de resistencias en serie.

Dos resistencias de 40 y 70 ohmios se conectan en serie a una tensión de 220 V. Calcular la resistencia total o la resistencia equivalente, la intensidad que circula por cada una de las resistencias y la tensión en los extremos de cada resistencia.

Según los datos del enunciado, tenemos el siguiente circuito:

En primer lugar calculamos la resistencia equivalente del circuito, que como están en serie, es igual a la suma de cada resistencia:

Sustituimos cada resistencia por su valor y operamos:

Nos queda por tanto un circuito con una resistencia equivalente de 110 ohmios, que es el resultado de asociar las dos resistencias en serie:

Con este circuito, vamos  a calcular la intensidad del circuito, aplicando al ley de Ohm. La intensidad será igual a la tensión entre la resistencia equivalente:

Sustituimos valores y operamos:

La intensidad de circuito es igual a 2 A.

Una vez tenemos la intensidad, podemos calcular la tensión en los extremos de cada resistencia, multiplicando la intensidad por cada resistencia:

La tensión en la primera resistencia será:

Sustituimos la intensidad y la resistencia por sus valores y calculamos:

La tensión en la segunda resistencia es:

Sustituimos la intensidad y la resistencia por sus valores y calculamos:

Date cuenta como si sumamos la tensión en la primera resistencia y la tensión en la segunda resistencia, el resultado es igual a la tensión total:


Cálculo de resistencias en paralelo


En un circuito, las resistencias están en paralelo cuando se conectan en los mismos puntos de entrada y de salida:

En un circuito con las resistencias en paralelo, la tensión en los extremos de cada una de las resistencias es la misma y es igual a la tensión total del circuito:

Por otro lado, la intensidad total del circuito es igual a la suma de las intensidades que circulan por cada una de las resistencias:

Es decir, la tensión total se divide en tantas ramas como resistencias en paralelo haya en el circuito.

Aplicando ley de Ohm a la intensidad total del circuito, tenemos que es igual a la tensión total (común a todos los elementos) entre la resistencia total del circuito (que veremos más abajo cómo calcularla):

La intensidad que circula por cada resistencia es igual a la tensión total entre el valor de cada resistencia:

Que expresando la intensidad total como la suma de los cocientes entre la tensión total y cada resistencia, nos queda:

Y ahora sustituimos la intensidad total por su expresión de la tensón total entre la resistencia total:

Sacamos factor común a la tensión total en el segundo miembro:

Y eliminando la tensión total en cada miembro nos queda la fórmula para calcular resistencias en paralelo:

Podemos sustituir en el circuito las resistencias en paralelo por la resistencia equivalente calculada por la fórmula anterior:

Y sobre este circuito podemos calcular la tensión total, la intensidad total y la intensidad que circula por cada una de las resistencias.


Ejercicio resuelto con resistencias en paralelo


Vamos a ver un ejemplo de cómo calcular la resistencia equivalente de una asociación de resistencias en paralelo.

Tres resistencias de 9, 18 y 30 ohmios se conectan en paralelo a una tensión de 90 V. Calcular la resistencia total, la intensidad total y la intensidad que circula por cada resistencia.

Tenemos el siguiente circuito, donde las resistencias están conectadas en paralelo:

Vamos a calcular la resistencia equivalente de la asociación de resistencias en paralelo mediante su fórmula:

Sustituimos las resistencias por sus valores:

Obtenemos denominador común en el segundo miembro para poder sumar las fracciones:

Una vez tienen el mismo denominador, sumamos las fracciones:

Multiplicamos las fracciones en cruz, pasando el 90 multiplicando al primer miembro y Rt multiplicando al segundo miembro:

Ahora despejamos Rt, pasando el 18 dividiendo al segundo miembro y operamos:

La resistencia total o equivalente de las tres resistencias conectadas en paralelo es igual a 5 ohmios.

Nos queda el siguiente circuito equivalente:

A partir de este circuito podemos calcular la intensidad total, aplicando la ley de Ohm:

Sustituimos los valores de tensión y resistencia y operamos:

La intensidad que pasa por cada resistencia es igual a la tensión que hay entre sus extremos, que en este caso es la tensión total, dividido entre el valor de la resistencia:

La intensidad que circula por la primera resistencia es:

La intensidad que circula por la segunda resistencia es:

La intensidad que circula por la tercera resistencia es:

Si sumamos cada una de estas intensidades, el resultado es igual a la intensidad total:


Asociación mixta de resistencias (en serie y en paralelo)

Las resistencias también puedes conectarse en serie y en paralelo en el mismo circuito. En este caso, se denomina una asociación mixta de resistencias:

Para obtener la resistencia equivalente del circuito, en primer lugar se calcula la resistencia equivalente de las resistencias conectadas en paralelo con la fórmula vista anteriormente:

Nos queda entonces un circuito con todas las resistencias en serie:

Ahora, la resistencia equivalente total del circuito la obtenemos sumando los valores de las resistencias:

Quedándonos el siguiente circuito:

En un circuito con resistencias en serie y en paralelo, podemos obtener muchas magnitudes, como la tensión entre dos puntos determinados del circuito, la intensidad total o la intensidad que circula por alguna de las ramas.

En cada caso, hay que utilizar la resistencia equivalente, la intensidad que circula por cada elemento o la tensión entre dos puntos más conveniente en cada caso, teniendo en cuenta que:

  • Para las resistencias en paralelo, la tensión en los extremos de cada una de las resistencias es la misma y la intensidad por cada una de las resistencias es distinta, dependiendo del valor de la resistencia y se calcula aplicando la ley de Ohm.
  • Para las resistencias en serie, la intensidad que circula por ellas es la misma y cada resistencia tiene una tensión distinta, que depende del valor de la resistencia y se calcula aplicando la ley de Ohm.


Ejercicio resuelto con resistencias en serie y en paralelo


Vamos a resolver un ejemplo paso a paso un circuito con resistencias en serie y en paralelo:

En el siguiente circuito con resistencias en serie y en paralelo calcular: La resistencia equivalente del circuito, la intensidad total del circuito, la tensión entre los puntos a y b (Vab), la tensión entre los puntos b y c (Vbc), la intensidad que circula por cada resistencia y la tensión entre los puntos b y d (Vbd).

Vamos a empezar calculando la resistencia equivalente del circuito. Para ello tenemos que ir reduciendo el circuito poco a poco calculando resistencias equivalentes en serie y en paralelo.

Empezamos calculando al resistencia equivalente de la rama b-e-c. Tenemos dos resistencias en serie, luego su resistencia equivalente, a la que llamamos por ejemplo Rt1, es:

Hacemos lo mismo en la rama b-d-c que también tenemos dos resistencias en serie. A esa resistencia equivalente la llamamos Rt2:

El circuito nos queda de la siguiente forma:

Seguimos calculando la resistencia equivalente de asociar las dos resistencias en paralelo Rt1 y Rt2, de 6 y 12 ohmios, a la que llamaremos Rt3. Su fórmula es la siguiente:

Sustituimos Rt1 y Rt2 por sus valores:

Ahora vamos a operar para obtener el valor de Rt3. Obtenemos denominador común en el segundo miembro:

Sumamos las fracciones:

Multiplicamos en cruz, pasando el 12 multiplicando al primer miembro y Rt3 multiplicando al segundo miembro:

Finalmente despejamos Rt3 pasando el 3 dividiendo al miembro contrario y operamos:

El resistencia equivalente Rt3, resultado de asociar las dos resistencias de 6 y 12 ohmios en paralelo tiene un valor de 4 ohmios. El circuito nos queda así:

Nos quedan 4 resistencias en serie, cuya resistencia equivalente, que es la resistencia equivalente del circuito la calculamos sumando los valores de las resistencias:

La resistencia equivalente del circuito es de 14 ohmios.

El circuito totalmente reducido es el siguiente:

Con este circuito, podemos calcular la intensidad total del circuito, aplicando la ley de Ohm con la tensión total y la resistencia equivalente del circuito:

Sustituimos Vt y Req por sus valores y operamos:

La intensidad total del circuito es de 12 amperios.

Vamos a calcular la tensión entre los puntos a y b. Para ello, necesitamos conocer la resistencia equivalente entre los puntos a y b y la intensidad que circula entre los puntos a y b. Utilizamos el siguiente circuito obtenido anteriormente:

La resistencia entre los puntos a y b la calculamos sumando los valores de las tres resistencias ya que se encuentran en serie, resistencia que llamaremos Rt4:

La intensidad que circula entre los puntos a y b es igual a la intensidad total del circuito.

Por tanto, para calcular la tensión entre a y b, aplicamos la ley de ohm con la intensidad total y la resistencia Rt4:

Sustituimos la intensidad y la resistencia por sus valores y operamos:

Para calcular la tensión entre los puntos b y c, necesitamos conocer la resistencia equivalente entre los puntos b y c y la intensidad que circula entre esos dos puntos.

La intensidad que circula entre esos dos puntos es la intensidad total y la resistencia tiene es Rt3, de un valor de 4 ohmios. Aplicamos la ley de ohm con esos datos:

Sustituimos los valores de la intensidad total y de Rt3 y operamos:

Observa como la suma de la tensión entre los puntos a y b y la tensión entre los puntos b y c es igual a la tensión total del circuito de 168 V:

Seguimos calculando las intensidades que circula por cada resistencia y para ello utilizaremos el siguiente circuito que obtuvimos anteriormente:

La intensidad que pasa por las resistencias de 5, 2 y 3 ohmios es la intensidad total, por lo que por esas resistencias circula una intensidad de 12 A.

Vamos a calcular la intensidad que pasa por la resistencia de 6 ohmios, Rt1, a la que llamaremos I1. Para ello, aplicamos la ley de ohm, teniendo en cuenta que la tensión entre los extremos de esa resistencia es la tensión Vbc:

Sustituyendo los valores de Vbc y Rt1, obtenemos el valor de I1:

Para calcular intensidad que pasa por la resistencia de 12 ohmios, Rt2, a la que llamaremos I2, aplicamos la ley de ohm teniendo en cuenta que la tensión entre los extremos de esa resistencia también es la tensión Vbc:

Sustituimos  los valores de Vbc y Rt2 y operamos:

Observa como la suma de estas dos intensidades es igual a la intensidad total:

Finalmente nos queda calcular la tensión entre los puntos b y d, para lo cual utilizaremos el circuito original, pero del que ya conocemos todas las tensiones e intensidades:

La tensión entre los puntos b y d, aplicando la ley de Ohm, es igual a la intensidad que pasa por la resistencia de 10 ohmios, es decir, I2, multiplicada por el valor de esa resistencia:

Sustituimos los valores de la intensidad y la resistencia y operamos:

Como ves, en circuitos de este tipo, previamente debes ir reduciendo el circuito paso a paso, para obtener la resistencia equivalente total y la intensidad total y luego, ir teniendo en cuenta la tensión entre dos puntos concreta o la intensidad que para por cada resistencia para calcular intensidades o tensiones concretas.






Los músculos de los robots

 

Los robots utilizan para moverse, sistemas eléctricos, neumáticos o bien hidráulicos. Los sistema hidráulicos son los más adecuados cuando se quieren transmitir grandes fuerzas. Piensa, por ejemplo, en las excavadoras o en los frenos de los coches, mediante los cuales a través de un pequeño esfuerxo en el pedal, podemos detener un vehículo que circula a gran velocidad y puede pesar varios miles de kilos.

Muchos brazos de robots utilizan cilindro hidráulicos para conseguir gran fuerza y mucha precisión. Esto es posible gracias a dos principios fisicos:

Los líquidos casi no pueden comprimirse.

Al aplicar presión a un líquido, ésta se transmite por igual en todas las direcciones.

Gracias a estos dos principios, si unimos dos jeringas idénticas mediante un tubo y las rellenamos de líquido, al apretar una, toda la fuerza aplicada se transmite a la otra. pero, si la otra es mayo, la fuerza que se transmite también será mayor.




Desplazamiento de los robots

 

Si nos limitamos a analizar cómo se desplazan los robots por tierra, comprobaremos que la mayoría de ellos disponen de ruedas, orugas o patas.



Cuando el desplazamiento se realiza mediante patas, es aconsejable que los robots tengan un mínimo de tres patas para garantizar su estabilidad. Algunos vehículos robotizados se han diseñado con un gran número de patas, al igual que muchos insectos, para aumentar su estabilidad  y que puedan desplazarse por terrenos muy abruptos.

Cuando el terreno presenta pequeños obstáculos o pendientes, las orugas son las más adecuadas, pero si el terreno es llano, resultan más apropiadas las ruedas.

Actualmente existen robots que pueden subir y bajar escaleras gracias a sensores de posición y ángulo que posibilitan que el robot equilibre su peso.

Los robots que tiene ruedas no emplean, para girar, el mismo sistema que los coches, en los que giran las ruedas delanterass. En los robots se hacen girar al ruedas laterales a distintas velocidades, tal como se representa en la figura correspondiente a un vehículo de tres ruedas.

¿Qué es la robótica?

 

El término robótica es dado por Isaac Asimov para describir la tecnología de los robots. Él mismo predijo hace años el aumento de una poderosa industria robótica, predicción que ya se ha hecho realidad.
El término robótica se definen desde diversos puntos de vista:

Las definiciones son tan dispares como se demuestra en la siguiente relación:

  • Ingenio mecánico controlado electrónicamente, capaz de moverse y ejecutar de forma automática acciones diversas, siguiendo un programa establecido.
  • Máquina de apariencia o comportamiento imita a las personas y sus acciones, por ejemplo en el movimiento de sus extremidades.
  • Es una máquina que hace algo automáticamente en respuesta a su entorno.
  • Esta compuesto de motores controlados por un programa de ordenador.
  • Es un ordenador con músculos.

Es cierto, como acabamos de observar, que los robots son difíciles de definir. Sin embargo, no es necesariamente un problema el que no esté todo el mundo de acuerdo sobre su definición. Quizás, Joseph Engelberg (padre de la robótica industrial) lo resumió inmejorablemente cuando dijo: “Puede que no se capaz de definirlo, pero sé cuándo veo uno”.

En definitiva cuando hablamos de robots imaginamos una maquina con características propias a  la del ser humano, sin embargo esta es solo una parte de la robotica.

Sketch Robot seguidor de líneas

int VelocidadMotor1 = 5; //ENA

int VelocidadMotor2 = 9; //ENB

int Motor1A = 6; //IN2

int Motor1B = 7; //IN1

int Motor2C = 8; //IN4

int Motor2D = 10; //IN3

int infraPin = 1; // izquierdo - pin del infrarrojos utilizado como entrada digital

int infraPin1=4; // derecho

int valorInfra = 0; // Valor inicial de la lectura digital del infrarrojos izquierdo

int valorInfra1 = 0; // derecho

void setup() {

delay(5000);

pinMode(infraPin, INPUT);

pinMode(infraPin1, INPUT);

pinMode(Motor1A,OUTPUT);

pinMode(Motor1B,OUTPUT);

pinMode(Motor2C,OUTPUT);

pinMode(Motor2D,OUTPUT);

pinMode(VelocidadMotor1, OUTPUT);

pinMode(VelocidadMotor2, OUTPUT);

analogWrite(VelocidadMotor1, 250); //motor izquierdo

analogWrite(VelocidadMotor2, 250); //motor derecho

digitalWrite(Motor1A, LOW);

digitalWrite(Motor1B, LOW);

digitalWrite(Motor2C, LOW);

digitalWrite(Motor2D, LOW);

}

void loop() {

valorInfra = digitalRead(infraPin); // valor de la entrada que lee el infrarrojo izquierdo

valorInfra1 = digitalRead(infraPin1); // derecho

// 0 = blanco / 1 = negro

if(valorInfra == 0 && valorInfra1 == 0){ // Hacia delante

digitalWrite(Motor1A, HIGH);

digitalWrite(Motor2D, HIGH);

delay(20); // Tiempo para control de velocidad

digitalWrite(Motor1A, LOW);

digitalWrite(Motor2D,LOW);

delay(20); // Tiempo para control de velocidad

}

if(valorInfra == 0 && valorInfra1 == 1){ // Giro derecha

digitalWrite(Motor1A, LOW);

digitalWrite(Motor2D,LOW);

delay(25);

digitalWrite(Motor1A, LOW);

digitalWrite(Motor2D,HIGH);

delay(20);

}

if(valorInfra == 1 && valorInfra1 == 0){ // Giro izquierda

digitalWrite(Motor1A,LOW);

digitalWrite(Motor2D, LOW);

delay(25);

digitalWrite(Motor1A,HIGH);

digitalWrite(Motor2D, LOW);

delay(20);

}

if(valorInfra == 1 && valorInfra1 == 1){ // STOP

digitalWrite(Motor1A, LOW);

digitalWrite(Motor1B, LOW);

digitalWrite(Motor2C, LOW);

digitalWrite(Motor2D, LOW);

}

}

Sketch para el control de un robot mediante del bluetooth

//Sketch para controlar el funcionamiento de un robot móvil mediante un teléfono móvil y utilizando la señal de bluetooth

#include <SoftwareSerial.h>
int pinE1=10;
int pinI1=9;
int pinI2=8;
int pinE2=11;
int pinI3=12;
int pinI4=13;
//Pin para el LED

SoftwareSerial ModuloHC05 (5, 6); //pin TX, pin RX
 

void adelante(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
}
void atras(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI4,HIGH);
}
void girarDerecha(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI4,HIGH);
}
void girarIzquierda(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
}

void parar(){
digitalWrite(pinE1,LOW);
digitalWrite(pinI1,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinE2,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
}
void setup() {

Serial.begin(9600);
ModuloHC05.begin(9600);
pinMode(pinE1,OUTPUT);
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(pinE2,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
}

void loop() {
char dato;
if (ModuloHC05.available()) { //Llega algo por bluetooth?
dato=ModuloHC05.read(); //Leer el dato recibido
Serial.write(dato); //Mostrar el dato por el monitor serie

if (dato=='1') adelante(); //Si el dato recibido es "1", el robot avanza adelante
if (dato=='0') atras(); //Si el dato recibido es "0", el robot retrocede
if (dato=='3') girarDerecha(); //Si el dato recibido es "3" el robot gira a la derecha
if (dato=='2') girarIzquierda(); // Si el dato recibido es "2" el robot gira a la izquierda
if(dato=='5') parar(); //Si el dato recibido es "5", el robot se detiene
}


}

Sketch para el control de un robot seguidor de luz

// Sketch de para el robot seguidor de luz

//El robot incorpora dos ldrs

int E1=12;

int I1=11;

int I2=10;

int E2=7;

int I3=8;

int I4=9;

int ldr1=0;

int nivelLuz1=0;

int nivelLuz2=0;

int ldr2=1;

void setup()

{

Serial.begin(9600);

pinMode(E1, OUTPUT);

pinMode(I1, OUTPUT);

pinMode(I2, OUTPUT);

pinMode(E2, OUTPUT);

pinMode(I3, OUTPUT);

pinMode(I4, OUTPUT);

}

void loop()

{

nivelLuz1=analogRead(ldr1);

Serial.println(nivelLuz1);

nivelLuz2=analogRead(ldr2);

Serial.println(nivelLuz2);

if (nivelLuz1>450 && nivelLuz2>450)

{

adelanteMotor1();

adelanteMotor2();

}

if (nivelLuz1<450 && nivelLuz2<450)

{

pararMotor1();

pararMotor2();

}

if (nivelLuz1<450 && nivelLuz2>450)

{

derechaMotor1();

pararMotor2();

}

if (nivelLuz1>450 && nivelLuz2<450)

{

pararMotor1();

izquierdaMotor2();

}

}

void adelanteMotor1()

{

digitalWrite(E1, HIGH);

digitalWrite(I1, HIGH);

digitalWrite(I2, LOW);

}

void adelanteMotor2()

{

digitalWrite(E2, HIGH);

digitalWrite(I3, HIGH);

digitalWrite(I4, LOW);

}

void pararMotor1()

{

digitalWrite(E1, LOW);

}

void pararMotor2()

{

digitalWrite(E2, LOW);

}

void atrasMotor1()

{

digitalWrite(E1, HIGH);

digitalWrite(I1, LOW);

digitalWrite(I2, HIGH);

}

void atrasMotor2()

{

digitalWrite(E2, HIGH);

digitalWrite(I3, LOW);

digitalWrite(I4, HIGH);

}

void derechaMotor1()

{

digitalWrite(E1, HIGH);

digitalWrite(I1, HIGH);

digitalWrite(I2, LOW);

}

void derechaMotor2()

{

digitalWrite(E2, LOW);

digitalWrite(I3, LOW);

digitalWrite(I4, LOW);

}

void izquierdaMotor1()

{

digitalWrite(E1, LOW);

digitalWrite(I1, LOW);

digitalWrite(I2, LOW);

}

void izquierdaMotor2()

{

digitalWrite(E2, HbIGH);

digitalWrite(I3, HIGH);

digitalWrite(I4, LOW);

}

Sketch para el control del robot polilla

/*Robot que incorpora como sensor una ldr*/

int E1=12;
int I1=11;
int I2=10;
int E2=7;
int I3=8;
int I4=9;
int ldr=0;
int nivelLuz=0;

void setup()
{
Serial.begin(9600);
pinMode(E1, OUTPUT);
pinMode(I1, OUTPUT);
pinMode(I2, OUTPUT);
pinMode(E2, OUTPUT);
pinMode(I3, OUTPUT);
pinMode(I4, OUTPUT);
}

void loop()
{
nivelLuz=analogRead(ldr);
Serial.println(nivelLuz);

if (nivelLuz>50 && nivelLuz<338)
{
adelante();
delay(1000);
}
if (nivelLuz>338 && nivelLuz<679)
{
atras();
delay(1000);
}
if (nivelLuz<50)
{
parar();
delay(1000);
}
}

void adelante()
{
digitalWrite(E1, HIGH);
digitalWrite(I1, HIGH);
digitalWrite(I2, LOW);
digitalWrite(E2, HIGH);
digitalWrite(I3, HIGH);
digitalWrite(I4, LOW);
}

void parar()
{
digitalWrite(E1, LOW);
delay(1000);
digitalWrite(E2, LOW);
delay(1000);
}

void atras()
{
digitalWrite(E1, HIGH);
digitalWrite(I1, LOW);
digitalWrite(I2, HIGH);
digitalWrite(E2, HIGH);
digitalWrite(I3, LOW);
digitalWrite(I4, HIGH);
}

Sketch para el control de robot controlado por ultrasonidos

#include <Servo.h>

Servo servoMotor;
int pinE1=13;
int pinI1=12;
int pinI2=11;
int pinE2=7;
int pinI3=6;
int pinI4=5;
const int PinTrig=10;
const int PinEcho=9;
const float VelSon=34000.0;
float distancia;
int distancia_45;
int distancia_90;
int distancia_135;

void setup(){
pinMode(pinE1,OUTPUT);
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(pinE2,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
Serial.begin(9600);
pinMode(PinEcho,INPUT);
pinMode(PinTrig,OUTPUT);
Serial.begin(9600);
servoMotor.attach(3);
}

void adelante(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
}

void atras(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI4,HIGH);
}

void girarDerecha(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI4,HIGH);
}

void girarIzquierda(){
digitalWrite(pinE1,HIGH);
digitalWrite(pinI1,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinE2,HIGH);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
}

void parar(){
digitalWrite(pinE1,LOW);
digitalWrite(pinI1,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinE2,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI4,LOW);
}

long iniciarTrigger(){
digitalWrite(PinTrig,LOW);
delayMicroseconds(200);
digitalWrite(PinTrig,HIGH);
delayMicroseconds(100);
digitalWrite(PinTrig,LOW);
unsigned long tiempo= pulseIn(PinEcho,HIGH);
distancia=tiempo*0.000001*VelSon/2.0;
return(distancia);
}

void loop() {

distancia_90=iniciarTrigger();
servoMotor.write(90);
Serial.print(distancia);
Serial.print("cm");
Serial.println();

delay(100);
while(distancia_90>20)

{
adelante();
distancia_90=iniciarTrigger();
}
if(distancia_90<40)

{
delay(100);
parar();
delay(1000);
servoMotor.write(45);
distancia_45=iniciarTrigger();
delay(500);
servoMotor.write(135);
distancia_135=iniciarTrigger();
delay(500);
if(distancia_45>distancia_135)

{
girarDerecha();
delay(350);
}
else

{
girarIzquierda();
delay(350);
}
}
}

Sketch para leer la distancia de un sensor de ultrasonidos

Sketch para leer la distancia a un objeto obtenida en el sensor de ultrasonidos. Se ha creado una función la la intención de ahorrar código dado que vamos a utilizar este sensor en un robot móvil y así conseguimos simplificar el código.

#define EchoPin 2
#define TriggerPin 3

long distancia;

long tiempo;

void setup(){

Serial.begin(9600);

pinMode(TriggerPin, OUTPUT); /*activación del pin 9 como salida: para el pulso de ultrasonido*/

pinMode(EchoPin, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/

}


void loop(){

distancia=medirDistancia();
}

//Función que nos devuelve la distancia al objeto

long medirDistancia()
{
digitalWrite(TriggerPin,LOW); /* Por cuestión de estabilización del sensor*/

delayMicroseconds(5);

digitalWrite(TriggerPin, HIGH); /* envío del pulso ultrasónico*/

delayMicroseconds(10);

tiempo=pulseIn(EchoPin, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que deja de hacerlo, LOW, la longitud del pulso entrante*/

distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/

/*Monitorización en centímetros por el monitor serial*/

Serial.println("Distancia ");

Serial.println(distancia);

Serial.println(" cm");

delay(100);
}

Sketch para controlar el movimiento de un servomotor

En este articulo voy a ir incluyendo sketch para controlar el funcionamiento de un servomotor

Código para girar el servomotor de 0º a 180º (0-90º-180º)

// Incluímos la librería para poder controlar el servo

#include <Servo.h>

// Declaramos la variable para controlar el servo
Servo servoMotor;

void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);

// Iniciamos el servo para que empiece a trabajar con el pin 9
servoMotor.attach(9);
}

void loop() {

// Desplazamos a la posición 0º
servoMotor.write(0);
// Esperamos 1 segundo
delay(1000);

// Desplazamos a la posición 90º
servoMotor.write(90);
// Esperamos 1 segundo
delay(1000);

// Desplazamos a la posición 180º
servoMotor.write(180);
// Esperamos 1 segundo
delay(1000);
}

Girando grado a grado el servomotor

Para ello incrementa el ángulo de 0 a 180º a razón de 1º cada 15ms, posteriormente realiza la operación contraria de 180º a 0º, para finalmente reiniciar el bucle.

#include <Servo.h>

Servo myservo; // crea el objeto servo

int pos = 0; // posición del servo

void setup() {
myservo.attach(9); // vincula el servo al pin digital 9
}

void loop() {
//varia la posición de 0 a 180, con esperas de 15ms
for (pos = 0; pos <= 180; pos += 1)
{
myservo.write(pos);
delay(15);
}

//varia la posicion de 0 a 180, con esperas de 15ms
for (pos = 180; pos <= 0; pos -= 1)
{
myservo.write(pos);
delay(15);
}
}

Movimiento del servomotor 0º-45º-90, movimiento pensado para colocar un sensor de ultrasonidos en el servomotor y así poder controlar el movimiento de un robot móvil

// Incluímos la librería para poder controlar el servo
#include <Servo.h>

// Declaramos la variable para controlar el servo
Servo servoMotor;

void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);

// Iniciamos el servo para que empiece a trabajar con el pin 9
servoMotor.attach(9);
}

void loop() {

// Desplazamos a la posición 0º
servoMotor.write(00);
//Esperamos 1 segundo
delay(1000);

// Desplazamos a la posición 90º
servoMotor.write(45);
// Esperamos 1 segundo
delay(1000);

// Desplazamos a la posición 180º
servoMotor.write(90);
// Esperamos 1 segundo
delay(1000);
// Desplazamos a la posición 90º
servoMotor.write(45);
// Esperamos 1 segundo
delay(1000);

}