martes, 10 de enero de 2017

Control DHT11 20°- 90°

// ARDUINO UNO

#include <LiquidCrystal.h>
#include <DHT.h>

#define DHTpin 7
#define DHTtype DHT11

DHT dht11 (DHTpin, DHTtype);

LiquidCrystal lcd(13,12,11,10,9,8);

void setup() {
 // Serial.begin(9600);
  dht11.begin();
  lcd.begin(16,2);
  lcd.clear();

  pinMode(2,OUTPUT);//ejemplo q sea un motor

}

void loop() {
  int temp,hume;
  temp = dht11.readTemperature();
  hume = dht11.readHumidity();

if(temp>=20){
  digitalWrite(2,HIGH);
}

else {
  digitalWrite(2,LOW);
}
if(temp<=90)
{
  digitalWrite(2,HIGH);
}

else {
  digitalWrite(2,LOW);
}
 
lcd.setCursor(0,0);
  lcd.print("Temperatura ");
  lcd.print(temp);
  lcd.print("C");
  delay(2000);


}

PCB Wizard - Placa Inversión de Giro



Placa de Control de Inversion de Giro de un Motor Trifásico





Ejemplo la Conexión es similar para un Motor Trifásico







Cuenta de Display del 20 hasta 60 Exms.



//PROGRAMACIÓN  PIC 18F4550
//Conteo desde el numero 20 hasta solo 60

unsigned short NUMERO[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67};

void main() {
 int k=2;  //decenas
 int j=0;  //unidades
 int n=20;  //cantidades de veces q se repiten

 trisd=0x00;    //apagado los display

 trisb=0x00;    //apagados  el pulso para los display

 portd=0;
 portb=0;

 while(1){

 portd=NUMERO[k];
 portb.f0=1;
 delay_ms(200);
 portb=0;
 j++;

 if(j==10){
    j=0;
    k++;
    if(k==6)
    k=2;
    if(j==0)
    j=0;
    }

 portd=NUMERO[j];
 portb.f1=1;
 delay_ms(200);
 portb=0;

   n++;
 }

}

lunes, 9 de enero de 2017

Control de Servo BLUETOOTH


// ARDUINO UNO

#include <SoftwareSerial.h>   //Incluimos libreria para crear nuestro propio RX-TX

SoftwareSerial NZV (2,3);    //2 es igual a RX
                            //3 es igual a TX

#include <Servo.h>                //Incluimos La libreria del MicroServo

Servo servo;                    //Creo el primer objeto cone el nombre "servo"

int puls_rest =0;        //Estas tres variables son creadas para almacenar en los pines A0,A1,A2
int puls_der =0;         //Configuramos que esten los tres para inicializar a los pulsadores en 0
int puls_izq =0;         //que se encuentre en un estado cero
void setup()
{ Serial.begin(9600);
  NZV.begin(9600);

  servo.attach(5,500,2400); // Asocia el servo al pin 3, define el min y max del ancho del pulso
                              // eso depende del fabricante del servo
  pinMode(A0,INPUT); //Para los 3 pulsadores
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
}

void loop()
{    int a;
//-------------------------Funcion de Recepcion
  if(Serial.available() > 0){
     a = Serial.read();
  }
//-------------------------Funcion de Transmision
  if(a == '1'){
  servo.write(0);
  }
  if(a == '2'){
  servo.write(90);
  }
  if(a == '3'){
  servo.write(180);
  }
    puls_rest = digitalRead(A0);     //Lee el valor del pin si esta en HIGH-LOW
    puls_der = digitalRead(A1);     //Lee el valor del pin si esta en HIGH-LOW
    puls_izq = digitalRead(A2);     //Lee el valor del pin si esta en HIGH-LOW
                   
    if(puls_rest==HIGH){
    servo.write(0);               //el servo Gira  a 0 grados
    delay(25);                     //Espera 25 mili segundos a que el servo llegue a la posicion
    }

    if(puls_der==HIGH){
    servo.write(90);              //el servo Gira a 90 grados
    delay(25);
    }

    if(puls_izq==HIGH){                
    servo.write(180);             //el servo Gira a 180 grados
    delay(25);
    }                    
  }


Control de Servomotor con un Pulsador

//PROGRAMACIÓN ARDUINO-UNO

#include <Servo.h>                //Incluimos La libreria del MicroServo

Servo servo;                    //Creo el primer objeto cone el nombre "servo"

void setup()
{ Serial.begin(9600);
 
  servo.attach(9,500,2400); // Asocia el servo al pin 9
, define el min y max del ancho del pulso
                              // eso depende del fabricante del servo
  pinMode(A0,INPUT);    //Configuramos INPUT para Pulsador
}
 
void loop()
{  
  int pulsador;
 
    pulsador = digitalRead(A0);     //Almacenamos en la variable pulsador digitalRead(A0);
                                    //Lee el valor del pin si esta en HIGH-LOW
                   
    if(pulsador==HIGH){   //Si el pulsador es pulsado se activa el servomotor
    servo.write(0);               //el servo Gira  a 0 grados
    delay(25);                    //Espera 25 mili segundos a que el servo llegue a la posicion

    servo.write(90);              //el servo Gira a 90 grados
    delay(25);
                   
    servo.write(180);             //el servo Gira a 180 grados
    delay(25);
    }                    
  }



DISPLAY 7 SEGMENTOS PIC18F4550


//DISPLAY 7 SEGMENTOS PIC18F4550

void main() {
unsigned short NUMERO[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67};

trisc.f0=1;

trisd=0;
portd=0;

while(1){
int k=0;

for(k=0; k<=9; k++){
  portd=NUMERO[k];
  delay_ms(200);


}
for(k=8; k>=0; k--){
  portd=NUMERO[k];
  delay_ms(200);

}
}


}

Encender y Apagar un led con un button-PIC18f4550

//MODULO FULL-DOWN PIC 18F4550

void main() {

trisc.f0=1;

trisd=0;
portd=0;

while(1){

int estado;
int estadoAnterior;
int salida;

estado=portc.f0;

if((estado==1)&&(estadoAnterior==0)){

salida=1-salida;
delay_ms(20);
}

estadoAnterior=estado;

if(salida==1){
portd=1;
}

 else{
 portd=0;
 }
}
}

Configuración LCD 16x2 PIC 18F4550 mikroC PRO


 // LCD module connections
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;

sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;
// End LCD module connections

char txt1[] = "mikroElektronika";
char txt2[] = "EasyPIC6";
char txt3[] = "Lcd4bit";
char txt4[] = "example";

char i;                              // Loop variable

void main() {

Lcd_Init();                        // Initialize LCD
  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off

  Lcd_Out(1,6,"WELCOME");                 // Write text in first row
  Lcd_Out(2,4,"HELLO WORLD");                 // Write text in second row
  Delay_ms(2000);

  Lcd_Cmd(_LCD_CLEAR);

    Lcd_Out(1,4,"ELECTRONIC");                 // Write text in first row
    Lcd_Out(2,5,"");                 // Write text in second row

  Delay_ms(2000);
    Lcd_Chr_Cp('O');
  delay_ms(200);
  Lcd_Chr_Cp('F');
  delay_ms(200);
  Lcd_Chr_Cp(' ');
  delay_ms(200);
  Lcd_Chr_Cp('N');
  delay_ms(200);
  Lcd_Chr_Cp('Z');
  delay_ms(200);
  Lcd_Chr_Cp('V');
  delay_ms(200);
  delay_ms(2000);

  lcd_cmd(_lcd_clear);


while(1){
int k;
  for(k=0; k<=16; k++){

   Lcd_Out(1,k,"ZEVALLOS");
   delay_ms(200);
   lcd_cmd(_lcd_clear);

  }

  for(k=15; k>=0; k--){

   Lcd_Out(1,k,"VEGA");
   delay_ms(200);
   lcd_cmd(_lcd_clear);

  }

}
}

sábado, 7 de enero de 2017

Control de Inversión Giro Motor Trifasico - PIC 16F877A


 // Programacion de Inversion de Giro Motor Trifasico - LCD 16x2

void main()
{
unsigned short estado;

//Config de LCD 16x2

lcd_config(&portb,1,0,2,7,6,5,4); //RS, EN, WR, D7 .. D4
lcd_cmd(lcd_clear);
lcd_cmd(lcd_cursor_off);
lcd_out(1,5,"!!MOTOR!!");
lcd_out(2,4,"!!APAGADO!!");

trisb=0;      //Config el puerto B como Salida
trisd=0x07;  //Configurando los pulsadores como entradas en el puerto D
trisc=0xc0;  //Config el puerto C como salida

//los pines configurado como salida para que resivan los pulsos

portc.f0=0;
portc.f1=0;
portc.f2=0;
portc.f3=0;
portc.f4=0;
portc.f5=0;
x1:

estado=portc; //config los pines de salida en uno sola variable llamad "ESTADO"
if(portd.f0==1&&estado==0) //Pulsador de arranque directo - Start
{
while(portd.f0==1);
{
 delay_ms(25); //retardo
 lcd_cmd(lcd_clear);
 lcd_out(1,5,"GIRO!");
 lcd_out(2,3,"SINCRONO!");

}
portc.f3=1;
portc.f4=1;
portc.f5=1;
}

if(portd.f1==1&&estado==0)  //Pulsador de inversion giro
{
while(portd.f1==1);
{
 delay_ms(25); //retardo
  lcd_cmd(lcd_clear);
 lcd_out(1,5,"!GIRO!");
 lcd_out(2,3,"ASINCRONO");
}
portc.f0=1;
portc.f1=1;
portc.f2=1;
}

if(portd.f2==1)    //Pulsador stop
{
while(portd.f2==1);
{
 delay_ms(25);   //retardo
  lcd_cmd(lcd_clear);
 lcd_out(1,4," !!MOTOR!!");
 lcd_out(2,3,"!!STOP!!");


}
portc.f0=0;
portc.f1=0;
portc.f2=0;
portc.f3=0;
portc.f4=0;
portc.f5=0;
}

goto x1;

}

Control de Inversión Giro Motor Trifasico - ARDUINO UNO

//ESTA PROGRAMACION ES PARA MOTORES TRIFASICOS
//CONFIGURADO POR LINES L1,L2,L3

void setup() {

//CONFIGURANDO LOS PINES (2,3,4,5,6,7) COMO OUTPUT
for(int k=2;k<=7;k++){
  pinMode(k,OUTPUT);
 }

 //CONFIGURANDO LOS PULSADORES COMO ENTRADA
 // PULSADORES EN EL TIPO DE CONECCION DOWN SE ENCUENTRA EN LA IMAGEN DE PROTEUS
  pinMode(13,INPUT);
  pinMode(12,INPUT);
  pinMode(11,INPUT);

}

void loop() {
//PULSADOR (13) START ARRANQUE DIRECTO
//(2,3,4) SE MANTENDRAN EN LOW
  if(digitalRead(13)==HIGH&&digitalRead(2)==LOW&&digitalRead(3)==LOW&&digitalRead(4)==LOW){

  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);

  }

//PULSADOR (12) DE INVERSION DE GIRO
//(5,6,7) SE MANTENDRAN EN LOW
  if(digitalRead(12)==HIGH&&digitalRead(5)==LOW&&digitalRead(6)==LOW&&digitalRead(7)==LOW){
 
  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);

  }

   if(digitalRead(11)==HIGH){ // PULSADOR DE STOP (11)
//CONFIGURADO QUE TODOS LOS PINES ESTEN EN LOW CUANDO EL PULSADOR STOP SE PULSE  
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
 
  }
}