martes, 26 de abril de 2016

Domocasa

   Necesitaremos hacer las siguientes cosas:

  • Instalar Raspbian (linux) en Raspberry pi
  • Crear servidor (apache2 en este caso)  y pagina web alojada en el mismo.
  • Crear base de datos mysql e instalar dependencias php5.
  • Crear shell scrip y python para interactuar con los GPIO e interuptores de la web.
  • Software arduino, para importar los datos de sensores a la base de datos previamente creada.
  • Realizar una placa para los led y sensores, son sus transistores y divisores de tensión.

   Para realizar este proyecto, necesitamos los siguientes materiales:

  •    2 Arduino uno
  •    1 Shield arduino-ethernet   
  •    1 Lcd 128x64
  •    2 Relay
  •    1 Placa de control
  •    1 Raspberry pi
  •    1 Servo
  •    3 Sensores de temperatura
  •    1 Ldr
  •    1 Sensor dth11
  •  15 Led
  •    3 Thermistores 100K
  •    8 Transistores PN222 
  •    4 Bombillas 220 - 40W
  •    Resistencias smd
        

      Una vez Instalamos Raspbian, procederemos a instalar el servidor apache2. En este caso la conexion con la Raspberry pi es mediante conexion ssh por terminal dentro del mismo wifi.
 
          Empezamos:
  1.            sudo rpi-update                         (actualizamos el firmware y kernel)
  2.            sudo reboot                               (reiniciamos)
  3.            sudo apt-get update                  (comprobamos las actualizaciones de software)
  4.            sudo apt-get update                  (actualizamos)
  5.            sudo reboot                               (volvemos a reiniciar)
  6.            sudo apt-get install apache2     (instalamos servidor apache2)          
  7.            sudo apt-get install php5           (instalamos php 5
 Asi sucesivamente vamos instalando todas las dependencias que vallamos a utilizar.
       Varios tutoriales para completarlo y bastante informacion sobre php.
        -GeekyTheory 
        - Diymakers 
         -Zona php 
        Una vez terminemos con la configuración del servidor apache2, la base de datos mysql, de haberle dado permisos de ejecución a la dirección del servidor (/var/www..), creado y guardado nuestra web. Procederemos a preparar el arduino con el shield de ethernet.
      
      El funcionamiento del mismo será, guardar las temperaturas de los sensores y humedades en variables, las envía a un archivo.php alojado en la carpeta /var/www/ y dicho php se encarga de reenviar los valores a la base de datos.

 Diseñamos la plac
de control para conectar 
todo el cableado de
 la maqueta



  
     
      

 
 
  


   


     


   






  Empezamos con la maqueta

jueves, 21 de abril de 2016

Patinete Eléctrico

                                 







Mi proyecto consiste en hacer mi propia electrónica de un patinete eléctrico que se controla con un sensor de efecto hall que está en el puño derecho y controla las luces y temperaturas.

     Componentes del patinete :
  • Un  sensor  de efecto hall esta puesto en el puño derecho.
  • Una conmutada para los intermitentes .
  • Un interruptor del faro
  • Intermitentes izquido y derecho delanteros y traseros.
  • El faro delantero y trasero.
  • Motor de 10A Y 240 W.
  • Bateria de 20Ah.
  • 3 sensores de temperatura NTC.
  • Lcd nokia 5110.

Componentes de placa :

  • atmega 328.
  • 4 Mosfet irf 1404.
  • 4 Transistores 2N2222.
  • Crysta de 16Mhz.
  • 2 condensadores 22 pf.
  • 2 condensadores de 100nf.
  • 1 consador de 330nf y 1 de 200 uf.
  • 8 resistencias de 10k y 3 de 1k.
  • resistencias smd 4 de 30 y 1 de 330. 
  • 1 regukador de 7805.
  • regulador conmutado lm2596.
  • led smd.
Gant :

Diseño de placa :

 ARES

Fabricacion de placa :

El proceso que hemos seguido para hacer la placa mediante el proceso photografico y vamos a hacer una placa de doble cara con smd .



Negativos de la placa 


Las placas con serigrafia

Placa  final

 Funcionamiento :
  1. Control del Motor :
Mediante un sensor de efecto hall que esta en el puño derecho del patinete que esta conectado con una placa del pic que lee el sensor y manda el valor por el puerto serie al atmega328 para controlar la salida 3 que esta conectada con un transistor 2n2222 y el transistor que funciona en modo amplificacion y varia la potencia que pasa por los mosfet depende de la tension de las puertas del mosfet .

      2.Iluminación          :
Mediante una conmutada controlamos los intermitentes derecho y izquirdo y delanteros y traseros 
y el faro se controla mediante un interruptor.

     3.Temperatura         :
Mediante tres sensores de temperatura ntc uno para temperatura externa , interna y del motor y la temperatura se sale un  lcd de nokia 5110.


Programación :
  • En el pic :
#include <programa de pic.h>


void main()
{
      int  valor;      
      setup_adc_ports(ALL_ANALOG);
      setup_adc(ADC_CLOCK_INTERNAL);
      setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
      set_adc_channel(0);
      
      output_low(LED);
      delay_ms(DELAY);
      output_high(LED);
      delay_ms(DELAY);
    
while(true){
        
     valor=read_adc();
     putc(valor);
     delay_ms(10);
      
      

}}

  • En el arduino :

//      CLK  - Pin 8

//      DIN - Pin 9

//      DC   - Pin 10

//      RST  - Pin 11

//      CE   - Pin 12

//

#include <stdio.h>

#include <math.h>

#include <LCD5110_Basic.h>


LCD5110 myGLCD(8,9,10,11,12);
extern unsigned char SmallFont[];
extern unsigned char MediumNumbers[];
            //
int estado,estado1,estado2;   
int ledState = LOW,ledState1=LOW;   
long previousMillis = 0;   
long interval = 200; 
           //
float Vin=5.0;     // [V]        Supply voltage in the Voltage-Divider
float Raux=10000;  // [ohm]      Secondary resistor in the Voltage-Divider
float R0=10000;    // [ohm]      NTC nominal value at 25ºC
float T0=298.15;   // [K] (25ºC)
  float Vout=0.0;    // [V]        Voltage given by the Voltage-Divider
  float Rout=0.0;    // [ohm]      Current NTC resistance
float beta=4100;    // [K]        Beta parameter
float Rinf=0.0;    // [ohm]      Rinf parameter
float TempK=0.0;   // [K]        Temperature output in Kelvin
float TempC=0.0;   // [ºC]       Temperature output in Celsius
  float TempK1=0.0;   // [K]        Temperature output in Kelvin
  float TempC1=0.0;   // [ºC]       Temperature output in Celsius
  float TempK2=0.0;   // [K]        Temperature output in Kelvin
  float TempC2=0.0;   // [ºC]       Temperature output in Celsius

void setup()
{
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
  pinMode(5,OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(6,OUTPUT); 
  pinMode(3,OUTPUT);
  pinMode(7, OUTPUT);
  Rinf=R0*exp(-beta/T0);
  Serial.begin(9600);
  
}




void loop()
{
                 //TEMPERATURA Y COMUNICACION
int  valor=0,valor1=0;
    if(Serial.available()>0){
    valor=Serial.read();
    Serial.println(valor);
    valor1=255-valor;
    if(valor1<=100)valor1=0;
    analogWrite(3,valor1);
    }
   digitalWrite(13,HIGH);
   Vout=Vin*((float)(analogRead(A0))/1024.0);
   Rout=(Raux*Vout/(Vin-Vout));
   TempK=(beta/log(Rout/Rinf));
   TempC=TempK-273.15;
   
   Vout=Vin*((float)(analogRead(A1))/1024.0);
   Rout=(Raux*Vout/(Vin-Vout));
   TempK1=(beta/log(Rout/Rinf));
   TempC1=TempK-273.15;
   
   Vout=Vin*((float)(analogRead(A2))/1024.0);
   Rout=(Raux*Vout/(Vin-Vout));
   TempK2=(beta/log(Rout/Rinf));
   TempC2=TempK-273.15;
   
                   //INTERMITENTES Y FARO    
               
estado=digitalRead(A3);//DERECHA
estado1=digitalRead(A5);//LUZ
estado2=digitalRead(A4);//IZQUIRDA 
     //LA LUZ
digitalWrite(5,estado1);
     //IZQUIRDA 
unsigned long currentMillis = millis(); 
if (currentMillis - previousMillis > interval){ 
previousMillis = currentMillis;
if (ledState1 == HIGH && estado2==LOW)
ledState1 = LOW;
else
ledState1 = HIGH;
 digitalWrite(6, !ledState1);
    //DERECHA
if (ledState == HIGH && estado==LOW)
ledState = LOW;
else
ledState = HIGH;
 digitalWrite(7, !ledState);
}

                  // LCD NOKIA
                  
     myGLCD.clrScr();
     myGLCD.setFont(MediumNumbers);
     myGLCD.printNumI(TempC,LEFT, 0);
     myGLCD.printNumI(TempC1,LEFT, 16);
     myGLCD.printNumI(TempC2,LEFT, 32);
     myGLCD.setFont(SmallFont);
     myGLCD.print("INTER  C",RIGHT, 4);
     myGLCD.print("EXTER  C",RIGHT, 20);
     myGLCD.print("MOTOR  C",RIGHT, 36);
     delay(30);
    
}

pruebas  :

placa del pic 


lcd nokia 5110+comunicacion 



video video

pruebas sobre el motor del patinete

presupuesto :

Nombre de componente
cantidad
Precio de una unidad
precio
Mosfet Irf1404
4
0.5
2
Transistor 2N2222
4
0.2
0.8
Cristal 16Mhz
2
0.5
1
Condensador 22pf
4
0.1
0.4
condensadores 100nf
3
0.1
0.3
Condesador 330nf
1
0.2
0.2
Condensador de 200uf
2
0.2
0.4
Resistencias 10k
8
0.1
0.8
Resistencia 1k
3
0.1
0.3
Resistencisas smd 30
4
0.5
2
Resistencia smd 330
1
0.5
0.5
Regulador 7805
1
0.6
0.6
Regulador conmutadolm2596
1
1.50
1.5

Total sin IVA
10.8
Total con IVA
13.06