TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Leonsport en 22 de Junio de 2004, 07:00:00

Título: Un proyectillo
Publicado por: Leonsport en 22 de Junio de 2004, 07:00:00
Tengo un proyectillo en mente. Lo q intento hacer es sustituir un potenciometro de volumen de un equipo de audio por uno digital controlado por infrarrojos.
¿Alguna sugerencia?
salu2
Título: RE: Un proyectillo
Publicado por: Abago en 22 de Junio de 2004, 08:21:00
Yo tenía la misma idea que planteas, peor emitiendo por RF...
Y la solución que me dieron, fué usar la entrada analógica del pic, para leer el estado del potenciometro...
una vez que tengas el valor del potenciometro, solo falta mandar datos... ya sea por rf como plantee yo, o por IR como tu dices...

La pena, es que mi proyecto se quedó en el tintero, por falta de tiempo...

Espero que tengas suerte con tu proyecto, porque es muy interesante....

Título: RE: Un proyectillo
Publicado por: josemyzm en 22 de Junio de 2004, 09:05:00
Yo estoy con algo de eso para una radio que me estoy intentando fabricar.

El caso es que tienes integrados que realizan esa funcion, potenciometros digitales; por ejemplo:
MCP42100 (Microchip) -> Pot. Digital 2x100K  (control bus SPI)
y de Dallas otro montón más; tengo el DS1267 de Dallas y el MCP42100 de Microchip con los que
pensaba probar a controlar la ganancia del preamplificador pero acabo de conseguir el PGA2311 de
Texas (control por bus SPI)y como que es mucho más completo.

La parte del receptor de infrarrojos es mucho más simple, basta con incluir un receptor apropiado,
por ejemplo un SFH5110 o similares conectado directamente a un PIC que se ocupe también del
potenciometro digital y ya está, que código hay por ahí a montones..

Un saludo.
Título: RE: Un proyectillo
Publicado por: Leonsport en 22 de Junio de 2004, 18:37:00
Voy a hecharle un vistazo a esos potenciometros q mencionas y voy a ver como podria hacer el tema.
salu2






Título: RE: Un proyectillo
Publicado por: Leonsport en 23 de Junio de 2004, 09:03:00
teneis rutinas para comunicacion por IR por ahi?
poco a poco recopilando informacion a ver q se puede hacer
salu22
Título: RE: Un proyectillo
Publicado por: josemyzm en 23 de Junio de 2004, 15:14:00
Así a lo rápido he encontrado esto http://www.fortunecity.es/arcoiris/tarot/572/mandos.html
Tiene un ejemplo en ASM, sigo buscando.

Un saludo.
Título: RE: Un proyectillo
Publicado por: Leonsport en 24 de Junio de 2004, 06:50:00
No esta mal esa web, aclara algo el tema.
Por cierto.... en los potenciometros digitales esos q me dijiste, como interpretan los datos q le vienen del receptor.
Título: RE: Un proyectillo
Publicado por: josemyzm en 24 de Junio de 2004, 08:54:00
No entiendo bien la pregunta,  haber si acierto: en principio he visto tres tipos,
1) comunicación por SPI
2) comunicación por I2C
3) tienen unas patillas UP y DOWN para aplicar pulsos y variar el valor de la resistencia.
(ahora mismo no se si existe la opcion de lineal/logaritmico)

El caso es que la resistencia de estos chips está dividida en pasos y en los de SPI & I2C
indicas directamente en que paso quieres colocarte (ejem: chip de 100K, lineal y dividida en
100 pasos, cada paso equivale a 1K y si nos colocamos en el 50 tedremos una resistencia de
50K, algo así mientras que en los otros debemos ir de uno en uno.

Espero que se entienda, luego da igual que el chip sea un potenciometro digital o un reostato
por que el control es igual. Lo siento pero ya se que me explico muy mal.

Un saludo.
Título: RE: Un proyectillo
Publicado por: Leonsport en 24 de Junio de 2004, 12:52:00
Si te he entendido perfectamente.
Precisamente un conseguido adquirir un pot digital (ds1869).Por lo q he visto va por UP-DOWN.
tambien he visto q tiene una entrada digital para conectar un micro.Entonces por lo q me dices introduciendo los datos provenientes del receptor por una de estas patas UP-DOWN podria variar el valor de la resistencia para (subir o bajar).
Sigo investigando rutinas de IR y pot digitales.


Título: RE: Un proyectillo
Publicado por: josemyzm en 24 de Junio de 2004, 16:02:00
No se como funciona la línea de control del DS1869 pero añadiendo los terminales UP y DOWN a 2 líneas de un PIC
puedes controlarlo. Si solo fuese control de volumen le añades dos pulsadores en lugar del PIC y listo.

* Por lo general estos chips están disponibles con distintos valores de resistencia, y a parte es interesante fijarse en
los pasos que hay desde el valor mínimo hasta el máximo, para un control más preciso.

* Me gustan más los que se pueden controlar por I2C porque así en mi diseño solo uso dos líneas, pero por aprovechar
material puede que añada el DS1869 que tengo para controlar el contraste del LCD o alguna tonteria parecida. Ya te contaré
porque ando liado y ultimamente no tengo tiempo de montarlo, que es lo unico que me falta.

http://www.dh3ben.de/html/electronics/pga2311_preamp.shtml  aqui encontraras un ejemplo del PGA 2311 + PIC18LF452 +
Receptor infrarrojos.  Por lo que he leido el programa está preparado para seleccionar una de las funciones de control y
mediante un mando a distancia por infrarrojos memorizar el comando enviado el cual será asociado a dico control. Algo así he
entendido yo, el caso es que incluye código ASM, (tengo ganas de pillar algo en BASIC)

Un saludo.
Título: RE: Un proyectillo
Publicado por: Leonsport en 28 de Junio de 2004, 16:41:00
Bueno, ya  he conseguido unos comandos en basic q se integran en el pbp y mediante llamadas y tal puedes conseguir hacer algo con infrarrojos.No parece difícil de entender pero tengo q probarlo mas a fondo.
Ahora tendría q ver una vez pille los comandos el receptor, q secuencia obtendría para enviar al pot digital y poder investigar el tema, ya q no sé como lo interpretaría si pongo esas 2 lineas a las patillas up-down.Se supone q por cada pulso aumenta el valor.
con el poco tiempo q tengo ahora, a ver si puedo conseguir algo.
salu222
Título: RE: Un proyectillo
Publicado por: Leonsport en 03 de Julio de 2004, 09:42:00
Bueno, he probado a hacer algo con esos comandos q antes he comentado y parece q la recepcion del mando a distancia la realiza.
Lo q hace es comprobar el código de identificacion del transmisor y lo guarda en una variable y esa variable es la q mandaría por alguna patilla del puerto. Ahora tendría q ver lo q manda de esa variable.
Con hserout y el hiperterminal podria ver esos datos?
salu222
Título: RE: Un proyectillo
Publicado por: Abago en 03 de Julio de 2004, 12:03:00
Yo hice esos mismos pasos para interpretar los datos enviados por un mando RF...
lo que tienes que hacer, es leer los datos que recibes por el puerto de IR, y como muy bien dices, sacarlos por puerto serie hacia el hiperterminal...
si el pic que usas tiene usart, utiliza el hserout, y si el pic no tiene usart, los sacas con serout2...
Título: RE: Un proyectillo
Publicado por: Leonsport en 12 de Julio de 2004, 16:48:00
el mando a distancia q tengo envia primero 1byte q contiene la info de la tecla pulsada y otro byte intercambiando datos.
He hecho una rutina para la recepcion según esas características utilizando 2 teclas de ese mando y saco los datos con serout2.
Cuando marco la tecla q quiero parece q hay respuesta y saca datos por donde le digo, pero al visualizarlos con el hyperterminal salen caracteres muy raros.
A ver si alguien puede ayudarme en ello.
salu2222222
Título: RE: Un proyectillo
Publicado por: Abago en 12 de Julio de 2004, 21:12:00
Te saldrán caracteres ascii....
para que te saque los valores en binario, decimal, hexacedimal, solo tienes que poner

por ejemplo:
hserout[bin(value),10,13]
BIN()
HEX()
DEC()

pongo el 10,13 para que te pinte byte a byte con un salto de linea, y retorno de carro...
así te será mas facil interpretar los datos...

Título: RE: Un proyectillo
Publicado por: RGL en 13 de Julio de 2004, 02:51:00
Un ejemplo para manejar un digital pot  MCP41050 con SPI.

Define   LOADER_USED   1
define  OSC 20


"        include "modedefs.bas"

CS      var     PORTB.5                 " Chip select pin
SCK     var     PORTB.6                 " Clock pin
SI      var     PORTB.7                 " Data in pin


comando var     byte                    " comando
cursor  var     byte                    " posicion cursor

        TRISB = 0                      " todo salidas
        ADCON1 = 7                      " Set PORTA and PORTE to digital
       
        Pause 100                       " Wait for LCD to start up
        comando=00010001
       
       For cursor=0 to 255
           CS = 0
           Shiftout SI, SCK, 1, [comando, cursor]
           cs=1
           Pause 5000
       next cursor
       cursor=128
       CS = 0
       Shiftout SI, SCK, 1, [comando, cursor]
       cs=1

End
Título: RE: Un proyectillo
Publicado por: Leonsport en 13 de Julio de 2004, 10:19:00
Con ese comando me aparecen los codigos en binario, pero al final me aparecen 2 caracteres q no sé q son, tienen forma como de un cero cuadrao.
Para el pot digital seguiré investigando a ver si con la rutina que me ha puesto el amigo RGL y buscando un poco me aclaro más.
salu2222
Título: RE: Un proyectillo
Publicado por: Leonsport en 13 de Julio de 2004, 13:07:00
RGL el ejemplo ese de donde lo has sacado?
Es q no he trabajao con esa instruccion shiftout y no sé q hace en este caso. Si pudieras comentar un poco q hace esta rutina lo agradeceria.
salu222
Título: RE: Un proyectillo
Publicado por: RGL en 13 de Julio de 2004, 13:20:00
Ese ejemplo es la prueba que he estado haciendo la semana pasada y la he sacado de la poca mollera que me queda sana.

El comando shift ya lo dice la palabra desplaza los bit sincronizados con una señal de reloj. Un pin saca el reloj y otro saca los datos sincronizados con él. Lo mismo puedes hacer en asm si es que te interesa controlar todo el proceso y no dejarle este tema a PBP. Puedes ver el Data Sheet de Microchip para ver como es el protocolo de comunicación SPI  del pot.

Saludos
Ricky
Madrid-España
Título: RE: Un proyectillo
Publicado por: Leonsport en 14 de Julio de 2004, 03:24:00
 ABAGO, estan leidos con el q viene con el pic basic pro.

RGL, en ese programa lo de comando=00010001 que valor es?
salu22222222

Título: RE: Un proyectillo
Publicado por: Abago en 14 de Julio de 2004, 11:07:00
Será que estás comunicando con el terminal serie del microcode???
Intenta leer con el hyperterminal de windows...
creo recordar que yo hice unas pruebas con el terminal de microcode, y me pasó lo mismo...
Título: RE: Un proyectillo
Publicado por: RGL en 14 de Julio de 2004, 11:49:00
Vamos a ver,

El ejemplo que he puesto es para controlar el potenciometro digital a través de interfaz SPI, no es para puerta RS232, ni nada de eso.

Es un Chip Select, una señal de reloj síncrona con una señal de datos: Estos tres pines entran directamente al potenciometro y según los datos que vayamos metiendole el cursor se irá posicionando.

La otra parte del proyecto es la de leer por infrarrojo o por RF y que no tiene que ver con esta. Digamos son dos cosas diferentes.

La variable "comando" tiene un valor que le dice al potenciómetro que coja el valor de la variable "cursor" y se ajuste a ese valor (ver datasheet).

No hay más información.

Saludos
Ricky
Madrid-España
Título: RE: Un proyectillo
Publicado por: Leonsport en 14 de Julio de 2004, 12:52:00
Abago nunca he probao con el de windows y no sé como se configura para eso.

El potenciometro q me he agenciao tiene una entrada digital y unos pines para subir o bajar el valor de la resistencia interna.
Por cada pulso q meta por las patillas up o down se incrementa o disminuye el valor del pot.
Pero claro....ese valor q obtengo del receptor segun la tecla q apriete tengo q adaptarlo al pot  digital y no lo veo nada facil.
salu2222

Título: RE: Un proyectillo
Publicado por: Abago en 14 de Julio de 2004, 21:01:00
Es muy sencillo...
ejecutas el hyperterminal...
luego te metes en el menú de configurar conexión..
pones el puerto en el que estás conectando, por ejemplo el COM1
seleccionas las velocidad a la que comunicas
luego, marcas los parámetros de bit de datos,paridad, bit de parada que suelen ser 8N1
y marcas el control de flujo habitualmente como NONE, en caso  de que tu circuito gestione el control de flujo, ya pones el tipo de control de flujo que utilizas...

luego le das a conectar... y poco mas....

Título: RE: Un proyectillo
Publicado por: Leonsport en 15 de Julio de 2004, 05:04:00
Abago tenias razon, con el hyperterminal de windows si lee bien el asunto. Ahora me sale justo el comando de la tecla que pulso, aunque solo utilizo 2 teclas del mando.
Ahora con ese comando tendria q hacer algo para q el pot digital al reconocerlo subiera a bajara la resistencia interna q lleva.
Eso ya es mas complicao....a ver si alguien me inspira.
salu2222222
Título: RE: Un proyectillo
Publicado por: josemyzm en 15 de Julio de 2004, 07:43:00
Comentaste que el pot. digital tenía entradas de up/down, pues basta con aplicar pulsos en esos terminales y ya está.

Un saludo.
Título: RE: Un proyectillo
Publicado por: Abago en 15 de Julio de 2004, 08:17:00
como dice jose, usando las entradas UP/DOWN del potenciómetro digital, lo tendrías muy facil...
haz los cálculos para ver la cantidad de posiciones que admite el potenciómetro en la entradas up/down, y creaté una tabla proporcional, en la que cada vez que pulses el mando y reconozcas el comando, ejecute n pulsos al potenciómetro...
Título: RE: Un proyectillo
Publicado por: Leonsport en 17 de Julio de 2004, 06:02:00
He probao q una vez reconozca la tecla pulsada, con el comando pulsout envie un pulso de la duración mas o menos que me pone en el datasheet del pot digital y parece ser q al pin q se lo aplico si q experimenta un cambio.
Para q cuente solo el numero de pulsos correspondiente a cada pin up/down, por ejemplo en posición UP tiene 10 posiciones pensé en hacer esto:
pulsos=10
pulso=pulsos-1
pulsout portb.5,1
if pulso=0 then empieza desde 0 otra vez
De todas formas si alguien tiene messenger y quiere, me gustaria comentar unas cosas de forma más rápida.
salu22
Título: RE: Un proyectillo
Publicado por: Leonsport en 23 de Julio de 2004, 05:38:00
Hola amigos  a ver si pueden ayudarme:
Estas 2 lineas q pongo abajo es si aprieto el boton nº13 del mando me de una respuesta el receptor e identifique tecla pulsada.
IF PALABRA1 = 13 THEN "al apretar tecla 13 y se compruebe q es....
IF PALABRA2 =48 THEN  " ...........................................................
(acción a realizar por rb4)
Pues bien, lo q necesito ahora es una rutina q haga lo siguiente:
EL potenciómetro digital tiene una serie de posiciones para up/down. Lo q necesito es poner justo despues de esas líneas algo q cuente el numero de posiciones q quiero para UP/DOWN.
El pin rb4 lo tengo conectao a la entrada UP del pot digital y rb5 a down.
salu222222


Título: RE: Un proyectillo
Publicado por: Abago en 23 de Julio de 2004, 10:42:00
No termino de entender el proceso de funcionamiento que planteas...
Esplicalo de otro modo, a ver si me entero y puedo darte una solución!!!
Título: RE: Un proyectillo
Publicado por: Leonsport en 23 de Julio de 2004, 14:04:00
Intentaré explicarlo de otra manera.......
Al pulsar la tecla 13 por ejemplo del mando a distancia quiero que me mande un pulso por rb4, la cual está conectada a la patilla UP del pot digital.
El pot digital tiene un numero de posiciones para moverlo al valor máximo UP y otros valores para DOWN.
Pues si pulso la tecla del mando quiero q mande un pulso,si la pulso otra vez otro pulso...y así hasta el numero max q necesite el pot para la patilla UP y cuando llegue a ese numero q empiece de nuevo desde la posicion inicial.
Creo q me expliqué mejor.
Título: RE: Un proyectillo
Publicado por: Abago en 23 de Julio de 2004, 14:41:00
Mas o menos me he quedado con la idea, pero no comprendo la utilidad...
quieres pulsar la tecla UP n veces para llevar al potenciometro digital a la posición necesaria mediante pulsos propiciados por rb4.
y si el potenciometro llega al final de escala, ponerlo a 0

si es esa la idea, panteaté crear una variable para almacenar la posición lógica dal potenciómetro...

si pulsas up, y llegas a final de escala, solo tendrás que calcular los pulsos down que necesitas para llegar a la posición necesaria...

No se si he encauzado bien la respuesta, pero es un comienzo...
Título: RE: Un proyectillo
Publicado por: Leonsport en 24 de Julio de 2004, 04:14:00
AHora q estoy pensando no me haría falta lo de regresar a la posicion inicial, puesto q o se baja o se sube volumen.
solo aplicaría pulsos por rb4  a la patilla UP para subir el volumen hasta q pueda y lo mismo por rb5 a la patilla DOWN para q me baje le volumen.
Tendría q mirar la duración de los pulsos del pot digital.
salu2222222

 

 
Título: RE: Un proyectillo
Publicado por: josemyzm en 24 de Julio de 2004, 05:33:00
Creo que sería mejor que buscases un pot. digital controlado por I2C o SPI (te permite un mayor control del valor actual), y con un rango mayor, una escala de 10 posiciones no da para mucha precisión sobre el volumen.

Un saludo.
Título: RE: Un proyectillo
Publicado por: Leonsport en 24 de Julio de 2004, 06:20:00
Las 10 posiciones las puse de ejemplo.
Según leí el pot digital se puede ajustar en 64 pasos lineales mediante los pulsadores UP y DOWN.
Los pulsos a enviar tienen q ser de más de 1ms de duración.

Título: RE: Un proyectillo
Publicado por: Abago en 24 de Julio de 2004, 11:00:00
supongo que los potenciómetros con los que trabajas, tendrán un final de carrera, con lo que si pulsas el pin up y ya está a valor maximo, no tendrá ningún efecto...

para mandar el pulso al pin, supongo que puede ser así....
pulsout portb.4,100 "pulso de 1ms en portb.4

luego, si lo que quieres es tener distintas teclas y que cada una mande un valor de incremento al potenciómetro...
te creas un select case con las distintas opciones, y yas ta..



Título: RE: Un proyectillo
Publicado por: josemyzm en 24 de Julio de 2004, 17:17:00
Creo que eso es exactamente lo que quiere, algo para enviar un pulso por una línea del pic, y luego usar dos líneas: UP & DOWN del potenciómetro.

un saludo.