Vous êtes sur la page 1sur 38

Practicas de potencia para

Arduino
JUEVES
CONTROL DE MOTORES DE CD
USO DEL PUENTE H
CONTROL DE MOTORES A PASOS
CONTROL DE POTENCIA.
OPTOACOPLADORES
RELEVADORES
TRANSISTORES
CREACION DE LIBRERIAS PARA USO ESPECIFICO
EVALUACION
PRACTICA 1: CONTROL DE MOTOR DE CD. USANDO
LD293
PRACTICA 1: CONTROL DE MOTOR DE CD. USANDO LD293

int botonPin = 2; // Boton al pin digital 2 // El resto, como SALIDA


int motorPin1 = 3; // Pata 1 del motor al pin pinMode(motorPin2 , OUTPUT);
digital 3
pinMode(speedPin, OUTPUT);
int motorPin2 = 4; // Pata 2 del motor al pin
digital 4 pinMode(ledPin, OUTPUT);

int speedPin = 9; // Habilitamos el pin 1 del LD293 digitalWrite(speedPin, HIGH);


y va al PWM 9 // Arrancamos el motor desde el principio
int ledPin = 13; // LED // Si el led parpadea 3 veces despus de arrancar
void setup() { el motor, quiere

pinMode(botonPin, INPUT); // Botn como // decir que Arduino se ha reiniciado debido a un


ENTRADA cortocircuito

pinMode(motorPin1 , OUTPUT); blinkLED(ledPin, 3, 100);}


PRACTICA 1: CONTROL DE MOTOR DE CD. USANDO LD293

void loop() { // Este mtodo nos informa del Cortocircuito


if (digitalRead(botonPin) == HIGH) { void blinkLED(int quePin, int cuantasVeces, int miliSeg)
// Si presionamos el botn ... {
// El motor gira en sentido horario int i = 0;
digitalWrite(motorPin1, LOW); for ( i = 0; i < cuantasVeces; i++) {
digitalWrite(motorPin2, HIGH); digitalWrite(quePin, HIGH);
} delay(miliSeg/2);
else { digitalWrite(quePin, LOW);
digitalWrite(motorPin1, HIGH); delay(miliSeg/2);
// En caso contrario ... el motor gira en sentido antihorario }
digitalWrite(motorPin2, LOW); }
} }
PRACTICA 2: CONTROL INDEPENDIENTE DE GIRO Y VELOCIDAD DE UN MOTOR
DE CD
PRACTICA 2: CONTROL INDEPENDIENTE DE GIRO Y VELOCIDAD DE UN
MOTOR DE CD

int valor; // variable para leer el pot 1 pinMode(pot2, INPUT);


int valor1; // variable para leer el pot 2 // Declaramos una variable temporal y
recorremos la array del Motor como SALIDA
int valor_mapeado; // variable para mapear el
pot 2 int i;
int motor[ ] = {9, 10}; // Array de Pines PWM for(i = 0; i < 2; i++){
para el motor
pinMode(motor[i], OUTPUT);
int pot1 = 0; // Pot 1 al Pin 0 analogico
}
int pot2 = 1; // Pot 2 al Pin 1 analogico
}
void setup() {
Serial.begin(9600);
pinMode(pot1, INPUT); // Potenciometros como
ENTRADA
PRACTICA 2: CONTROL INDEPENDIENTE DE GIRO Y VELOCIDAD DE UN
MOTOR DE CD

valor = analogRead(pot1); // leemos el pot1 Serial.print("Giro : Horario");


valor1 = analogRead(pot2); // leemos el pot2 // El motor AVANZA segn la lectura mapeada del pot 2
// mapeamos el pot2 para adecuarlo al rango del motor motorAdelante(valor_mapeado);
valor_mapeado = map(valor1,0,1023,0,255); }
// Si el valor de pot1 es MENOR que 512 (1/2 del pot)... Serial.print("/t");
if(valor <= 512){ Serial.print("RPM : ");
Serial.print("Giro : Antihorario"); Serial.println(valor_mapeado);
// El motor RETROCEDE segn la lectura mapeada del pot 2 delay(50);
motorAtras(valor_mapeado); }
}
// Si el valor de pot1 es MAYOR que 512 ...
if(valor > 512){
PRACTICA 2: CONTROL INDEPENDIENTE DE GIRO Y VELOCIDAD DE UN
MOTOR DE CD

// Funcin Auxiliar para el AVANCE del Motor. analogWrite(motor[1], RPM_2);


// Ponemos una pata del Motor a CERO y la otra }
con la lectura del pot 2
void motorAdelante(int RPM_1){
analogWrite(motor[0], RPM_1);
analogWrite(motor[1], 0);
}
// Funcin Auxiliar para el RETROCESO del Motor.
// Ponemos la pata contraria (la que estaba a
CERO en el caso de avance del Motor) con la
lectura del
pot 2 y la otra a CERO
void motorAtras(int RPM_2){
analogWrite(motor[0], 0);
Control de motor por temperatura
ESQUEMA ELECTRICO
PRACTICA 3: CONTROL DE RELAY

int relayPin = 0;

void setup()
{ pinMode(relayPin, OUTPUT); }

void loop()
{ digitalWrite(relayPin, HIGH);
delay(1000);
digitalWrite(relayPin, LOW);
delay(1000); }
PRACTICA 3: ESQUEMATICO
PRACTICA 4: CONTROL DE OPTOACOPLADOR
int optocouplerPin = 0;
void setup()
{ pinMode(optocouplerPin, OUTPUT); }

void loop()
{ digitalWrite(optocouplerPin, HIGH);
/witch en ON para el triac
delay(1000); // tiempo de espera
digitalWrite(optocouplerPin, LOW);
// switch OFF para el triac
delay(1000); // tiempo de espera
}
PRACTICA 4: ESQUEMATICO
PRACTICA 5: CONTROL DE C.D. POR FET

int mosfetPin = 0;

void setup()
{ pinMode(mosfetPin, OUTPUT);
}
void loop()
{
digitalWrite(mosfetPin, HIGH);
delay(1000);
digitalWrite(mosfetPin, LOW);
delay(1000);
}
PRACTICA 5: CONTROL DE C.D. POR FET
PRACTICA 6 : MOTOR A PASOS
PRACTICA 6 : MOTOR A PASOS
PRACTICA 6 : MOTOR A PASOS
void setup() digitalWrite(3, LOW);
{ int i; delay(30);
for(i=0; i<3; i++) { digitalWrite(0, LOW);
pinMode(i, OUTPUT); digitalWrite(1, LOW);
// Terminales amarilla . Roja, azul, blanca del motor. digitalWrite(2, HIGH);
}} digitalWrite(3, LOW);
void stepforward() //secuecia para un solo ciclo
{ digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
delay(30);
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
PRACTICA 6 : MOTOR A PASOS
delay(30);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
delay(30);
}
PRACTICA 6 : MOTOR A PASOS
digitalWrite(2, LOW);
oid stepbackward() //giro inverso digitalWrite(3, LOW);
{ digitalWrite(0, LOW); delay(30);
digitalWrite(1, LOW); digitalWrite(0, HIGH);
digitalWrite(2, LOW); digitalWrite(1, LOW);
digitalWrite(3, HIGH); digitalWrite(2, LOW);
delay(30); digitalWrite(3, LOW);
digitalWrite(0, LOW); delay(30);}
digitalWrite(1, LOW); void loop()
digitalWrite(2, HIGH); { stepforward();
digitalWrite(3, LOW); Delay (1000)
delay(30); stepbackward(); }
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
VIERNES.
MANEJO DE DISPLAY DE CRISTAL LIQUIDO.
DISEO DE LIBRERIAS .
EVALUACION DE PROYECTOS FINALES.
PRACTICA 1: MANEJO DEL DISPLAY DE CRISTAL LIQUIDO
PRACTICA 1: MANEJO DEL DISPLAY DE CRISTAL LIQUIDO

#include <LiquidCrystal.h> delay(200);


LiquidCrystal myDisplay = LiquidCrystal(8,9,10,2); }
int a = 0;
void setup()
{ }
void loop()
{
myDisplay.clear();
myDisplay.home();
myDisplay.print("Variable a is: ");
myDisplay.setCursor(16, 0);
myDisplay.print(a);
a = a + 1;
PRACTICA 2: CONTROL DE CONTRASTE
PRACTICA 2: CONTROL DE CONTRASTE
PRACTICA 2: CONTROL DE CONTRASTE
//Inclur la biblioteca:
#include <liquidcrystal .h> //Dejamos que el cursor parpade
//Inicializa la biblioteca con las terminales adecuadas LCD.blink();
LiquidCrystal LCD(7, 8, 9, 10, 11, 12); //Para los botones que regularan el contraste
int estadoBt1 = 0; pinMode(5,INPUT);
int estadoBt2 = 0; pinMode(4,INPUT); }
int contraste = 100;

void setup() {
//Configura el tamao del LCD en filas y columnas
LCD.begin(20, 4);

//Se usa la terminal 6 para manejar el voltaje de la luz


de contraste
pinMode(6,OUTPUT);
analogWrite(6,contraste);
PRACTICA 2:CONTROL DE CONTRASTE

void loop() { LCD.println("Hola mundo!");


//Si el botn 1 est activado, se sube el contraste LCD.print("Contraste: ");
aumentando el voltaje
LCD.print(contraste);
if( estadoBt1 == LOW && digitalRead(4) == HIGH ) {
estadoBt1=HIGH; contraste++; }
else { estadoBt1 = LOW; } //Un pequeo retardo y seguimos.

//Si el botn 2 est activado, se baja el contraste delay(150);


reduciendo el voltaje }
if( estadoBt2 == LOW && digitalRead(5) == HIGH ) {
estadoBt2 = HIGH; contraste--; }
else { estadoBt2 = LOW; }
//Limpia la pantalla
LCD.clear();
//Ajusta el voltaje para el contraste
analogWrite(6,contraste);

//Se hace el despliegue de los mensajes


PRACTICA 12: VUMETRO
int val; // Variable para la lectura del micro LEDs como SALIDAS
int microfono = 0; // Micro en el pin Analogico 0 pinMode(leds[i], OUTPUT);
int i; // Variable para recorrer la array de LEDs }
int leds [ ] = { // Array de los Pines de los LEDs }
2,3,4,5,6,7,8,9,10,11,12};
// En este caso, el total es 11 LEDs (la array
empieza en [0])
int longArrayLEDS = 10;
void setup(){
Serial.begin(9600);
pinMode(microfono, INPUT); // Micro como
SALIDA
for(i = 0; i < longArrayLEDS; i++){ // Todos los
PRACTICA 12: VUMETRO

void loop() { apagados


val = analogRead(microfono); // Leemos el if(val > 15 && val < 23){
micro
for(i = 0; i <= longArrayLEDS - 10; i++){
val = map(val,610,1023,0,255); // Mapeamos
para quitar el ruido digitalWrite(leds[i],HIGH);

// Si el valor es MENOR que 15...apagamos }


todos los leds for(i = 1; i <= longArrayLEDS; i++){
if(val < 15){ digitalWrite(leds[i],LOW);
for(i = 0; i <= longArrayLEDS; i++){ }
digitalWrite(leds[i],LOW); }
}
}
// Si el valor es MAYOR que 15 y MENOR que
23...encendemos el 1er led y el resto
PRACTICA 12: VUMETRO
// Si el valor es MAYOR que 23...encendemos los 2
primeros leds y el resto apagados
if (val >= 23){
for(i = 0; i <= longArrayLEDS - 9; i++){
digitalWrite(leds[i],HIGH);
}
for(i = longArrayLEDS - 9; i <= longArrayLEDS; i++){
digitalWrite(leds[i],LOW);
}
}
// Si el valor es MAYOR que 46...encendemos los 3
primeros leds y el resto apagados
if(val >= 46){
for(i = 0; i <= longArrayLEDS - 8; i++){
digitalWrite(leds[i],HIGH);
}
PRACTICA 12: VUMETRO
for(i = longArrayLEDS - 8; i <= longArrayLEDS; i++){ primeros leds y el resto apagados
digitalWrite(leds[i],LOW); if(val >= 92){
} for(i = 0; i <= longArrayLEDS - 6; i++){
} digitalWrite(leds[i],HIGH);
// Si el valor es MAYOR que 69...encendemos los 4 }
primeros leds y el resto apagados
for(i = longArrayLEDS - 6; i <= longArrayLEDS; i++){
if(val >= 69){
digitalWrite(leds[i],LOW);
for(i = 0; i <= longArrayLEDS - 7; i++){
}
digitalWrite(leds[i],HIGH);
}
}
for(i = longArrayLEDS - 7; i <= longArrayLEDS; i++){
digitalWrite(leds[i],LOW);
}
}
// Si el valor es MAYOR que 92...encendemos los 5
PRACTICA 12: VUMETRO
// Si el valor es MAYOR que 115...encendemos los 6 digitalWrite(leds[i],LOW);
primeros leds y el resto apagados
}
if(val >= 115){
}
for(i = 0; i <= longArrayLEDS - 5; i++){
digitalWrite(leds[i],HIGH);
}
for(i = longArrayLEDS - 5; i <= longArrayLEDS; i++){
digitalWrite(leds[i],LOW);
}
// Si el valor es MAYOR que 138...encendemos los 7
primeros leds y el resto apagados
if(val >= 138){
for(i = 0; i <= longArrayLEDS - 4; i++){
digitalWrite(leds[i],HIGH);
}
for(i = longArrayLEDS - 4; i <= longArrayLEDS; i++){
PRACTICA 12: VUMETRO
// Si el valor es MAYOR que 161...encendemos los 8 digitalWrite(leds[i],LOW);
primeros leds y el resto apagados
}
if(val >= 161){
}
for(i = 0; i <= longArrayLEDS - 3; i++){
digitalWrite(leds[i],HIGH);
}
for(i = longArrayLEDS - 3; i <= longArrayLEDS; i++){
digitalWrite(leds[i],LOW);
}
}
// Si el valor es MAYOR que 184...encendemos los 9
primeros leds y el resto apagados
if(val >= 184){
for(i = 0; i <= longArrayLEDS - 2; i++){
digitalWrite(leds[i],HIGH);
}
for(i = longArrayLEDS - 2; i <= longArrayLEDS; i++){
PRACTICA 12: VUMETRO
// Si el valor es MAYOR que 207...encendemos los 10 }
primeros leds y el ltimo apagado
}
if(val >= 207){
Serial.println(val, DEC);
for(i = 0; i <= longArrayLEDS - 1; i++){
}
digitalWrite(leds[i],HIGH);
}
}
i = longArrayLEDS - 1; i <= longArrayLEDS; i++){
digitalWrite(leds[i],LOW);
}
}
// Si el valor es MAYOR que 230...encendemos todos
los leds
if(val >= 230){
for(i = 0; i <= longArrayLEDS; i++){
digitalWrite(leds[i],HIGH);

Vous aimerez peut-être aussi