Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

24/02/2013 #1


Se puede hacer con pic?
Hola muchachos.. estoy tratando de desarrollar un circuito que me conmute 2 salidas mediante una señal negativa con resistencia. Dependiendo la resistencia que halla entre señal y masa, se active un transistor u otro.
Está resumido a señales negativas para entenderlo mejor.


Uploaded with ImageShack.us



Si al cable de señal lo conecto a masa con 1k de resistencia que se active el transistor 1.
Si al cable de señal lo conecto a masa con 290hms de resistencia que se active el transistor 2.
Sería largo de explicar por que tiene que ser así pero bueno, basicamente:
-Tengo que trabajar con un cable de señal a masa, si o si.
-Los transistores tienen que ser pnp, porque tienen que dejar pasar carga neg.
-Los transistores se pueden activar de a uno por vez, en ningún momento pueden activarse los dos juntos.

Parece sencillo pero no lo es.
Se puede programar un PIC que haga esto?
Gracias!
24/02/2013 #2

Avatar de Melghost

La pregunta no es si se puede. La pregunta es cómo.

Con un simple PIC de 6 u 8 patas seguro que puedes hacerlo. Puedes utilizar dos entradas digitales y olvidarte del valor de las resistencias que tienes en serie con los pulsadores. Luego conectas una pata de salida a cada transistor (dependiendo de la intensidad que necesites en la base quizás tengas que amplificarla con otro transistor).

Dependiendo de qué entrada se active, activas una salida u otra (el programa es muy sencillo). Para evitar que se accionen al mismo tiempo, lo compruebas en el mismo programa y ya está.

Si es absolutamente necesario que no se activen al mismo tiempo, lo primero que tiene que hacer tu programa nada más arrancar es poner un 1 en las salidas.

Y yo creo que de esta forma lo puedes hacer. Suerte.

---------- Actualizado después de 2 minutos ----------

Y si no puedes separar las señales de entrada, entonces busca un PIC con entrada analógica. Mandas la señal de entrada a +V a través de otra resistencia, creando así un divisor de tensión diferente para cada pulsador. Luego, por programa, detectas cuál de los pulsadores está pulsado dependiendo de la tensión que haya en la pata de entrada.
24/02/2013 #3


Cómo se hará con un pic?
24/02/2013 #4

Avatar de Melghost

vistroni dijo: Ver Mensaje
Cómo se hará con un pic?
Como expliqué arriba.
24/02/2013 #5

Avatar de Gudino Roberto duberlin

Amigo vistroni, creo que aunque sea largo de explicar, sera mejor que comentes, lo que deseas hacer. De lo contrario, podra ser deficiente orientarte mejor.
24/02/2013 #6

Avatar de fdesergio

Con un lm339 lo podrias hacer mas facil, no crees??? leete divisores de tension y compradores de ventana, chauuuuuuu
24/02/2013 #7


Gudino Roberto duberlin dijo: Ver Mensaje
Amigo vistroni, creo que aunque sea largo de explicar, sera mejor que comentes, lo que deseas hacer. De lo contrario, podra ser deficiente orientarte mejor.
jeje yo no pregunté, sólo comenté que se me hace raro que quiera hacerlo con pic.
24/02/2013 #8


muchas gracias muchachos, me aclararon el panorama.
Esto es para usarlo en coches blindados en los sistemas de alza cristales. Los comandos originales trabajan con la ecu mediante un solo cable, depende de la resistencia que pone el comando entre ese cable de señal y masa es lo que hace la ecu.
A su vez la ecu comanda un relay inversor que energiza el motor y define su sentido de rotación (si sube o baja el vidrio).
El objetivo es manipular ese relay con el comando original de los alzacristales. El problema es que el relay se comanda con cables de señal (con un cable sube con el otro baja) y el comando trabaja con uno solo análogo.
25/02/2013 #9

Avatar de Meta

efrensdorff dijo: Ver Mensaje
Hola muchachos.. estoy tratando de desarrollar un circuito que me conmute 2 salidas mediante una señal negativa con resistencia. Dependiendo la resistencia que halla entre señal y masa, se active un transistor u otro.
Está resumido a señales negativas para entenderlo mejor.
http://img515.imageshack.us/img515/6610/circuitoi.jpg

Uploaded with ImageShack.us



Si al cable de señal lo conecto a masa con 1k de resistencia que se active el transistor 1.
Si al cable de señal lo conecto a masa con 290hms de resistencia que se active el transistor 2.
Sería largo de explicar por que tiene que ser así pero bueno, basicamente:
-Tengo que trabajar con un cable de señal a masa, si o si.
-Los transistores tienen que ser pnp, porque tienen que dejar pasar carga neg.
-Los transistores se pueden activar de a uno por vez, en ningún momento pueden activarse los dos juntos.

Parece sencillo pero no lo es.
Se puede programar un PIC que haga esto?
Gracias!
Se puede hacer con comparadores, compara la entrada con una fuente de referencia y ya está. En el PIC16F886 y tantos otros muchos se puede hacer.

Un ejmplo tonto.

Código:
/*El módulo generador CVREF. Obtención de una tensión analógica variable

El módulo generador de tensión de referencia se emplea como un convertidor D/A de 4 bits.
La tensión de salida se puede obtener por la patilla RA2/AN2/VREF-/CVREF/C2IN+ y variará en 
función de las entradas RC3:RC0. Un multímetro puede servir para realizar las medidas oportunas 
de la tensión de salida por RA2. 

Mediante la entrada RC4 se selecciona el rango de la tensión de salida. Cuando está a "0" se
selecciona el rango alto, a "1" el rango bajo. */

#include <16f886.h>

/* Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades */

#fuses     NOLVP,PUT,NOWDT,EC_IO,NOFCMEN,NOBROWNOUT    //Palabra 1 de configuración
#fuses    NOWRT,BORV40                                //Palabra 2 de configuración

/* Con estas directivas las funciones "input" y "output_bit" no reprograman
el pin de la puerta cada vez que son utilizadas. Si no se indica el
modo fast_io se asume por defecto standard_io el cual reprograma el pin
siempre antes de ser utilizadas estas funciones.*/

#use fast_io (B)

int    valor;                    

main()
{  
    set_tris_a(0b11111011);            //RA2 salida
    set_tris_c(0b11111111);            //Puerta C entrada    
    
    while(1)
    {
    valor=input_C()&0x0f;            //Lee las entradas RC3:RC0

    if(input(PIN_C4)==0)            //Si es rango alto...
    //Rango_Alto: La salida CVREF=(VDD/4) + ((VR<3:0>/32)) * VDD, por RA2
        setup_vref(VREF_HIGH|valor|0b01000000);
    else
    //Rango_Bajo: La salida CVREF=(VR<3:0>/24) * VDD, por RA2
        setup_vref(VREF_LOW|valor|0b01000000);
    }
}
En asm:
Código:
;El módulo generador CVREF. Obtención de una tensión analógica variable
;
;El módulo generador de tensión de referencia se emplea como un convertidor D/A de 4 bits.
;La tensión de salida se puede obtener por la patilla RA2/AN2/VREF-/CVREF/C2IN+ y variará en 
;función de las entradas RC3:RC0. Un multímetro puede servir para realizar las medidas oportunas 
;de la tensión de salida por RA2. 
;
;Mediante la entrada RC4 se selecciona el rango de la tensión de salida. Cuando está a "0" se
;selecciona el rango alto, a "1" el rango bajo.

        List    p=16F886        ;Tipo de procesador
        include    "P16F886.INC"    ;Definiciones de registros internos

;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades

        __config    _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF    ;Palabra 1 de configuración
        __config    _CONFIG2, _WRT_OFF&_BOR40V                                    ;Palabra 2 de configuración

                org        0x00
                goto    Inicio                ;Vector de reset
        
                org        0x05

;Programa principal
Inicio              bsf        STATUS,RP0        ;Banco 1
                movlw    b'11111011'
                movwf    TRISA            ;RA2 salida CVREF
                movlw    b'11111111'
                movwf    TRISC            ;RC4:RC0 entradas
                movlw    b'11000000'
                movwf    VRCON            ;Módulo CVREF=ON. salida por RA2 y VDD-VSS = VREF fuente

;Bucle principal
Loop            bcf        STATUS,RP0        ;Banco 0
                movf    PORTC,W            
                andlw    0x0f            
                iorlw    b'11000000'        ;Lee las entradas RC3:RC0
                btfsc    PORTC,4            ;RC4 = "1"
                goto    Rango_Bajo        ;Si

;Rango_Alto: La salida CVREF=(VDD/4) + ((VR<3:0>/32)) * VDD
                bsf        STATUS,RP0        ;Banco 1
                andlw    b'11011111'        ;Selecciona rango alto del generador CVREF
                movwf    VRCON            ;Ajusta el nuevo valor de CVREF
                goto    Loop

;Rango_Bajo: La salida CVREF=(VR<3:0>/24) * VDD
Rango_Bajo        bsf        STATUS,RP0        ;Banco 0
                iorlw    b'00100000'        ;Selecciona rango bajo del generador CVREF
                movwf    VRCON            ;Ajusta el nuevo valor de CVREF
                goto    Loop

                end                        ;Fin del programa fuente
No son el ejemplo más adecuado que pides, pero si se puede hacer y con resistencia ajustable y todo.

Tanto cmódulo de CCP o ADC.
25/02/2013 #10

Avatar de fdesergio

Bueno la pregunta del millon, quieres hacerlo de manera que no te lo copien??? si la respuesta es SI entonces debes hacerlo con un PIC, si quieres hacerlo para que funcione nada mas entonces lo adecuado es 2 comparadores de tension y listo, menos problema, menos precio, mas funcional, chauuuuuuuu
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.