Go Down

Topic: De que componente estoy hablando? (Read 184 times) previous topic - next topic

GustavoGB

Buen día.
Paso a explicarles lo que quiero hacer. Quiero tomar 3 datos analógicos de una batería plomo-ácido (voltaje, intensidad de corriente que entra y temperatura) cada X tiempo. El tema es que quiero usar solo una entrada analógica para cada batería, de este modo poder medir 8 baterías en Arduino UNO en vez de solo 2 baterías (y sobrándome dos entradas analógicas).
Pensé hacerlo de una forma en que primero mida los voltajes, luego cambie a corriente y después temperatura y se me ocurrió un integrado que graficaré a continuación que me gustaría saber si existe.

https://drive.google.com/open?id=0B6VQWaPQOc7WQ2t1OGswTnFHLVk

Y si existiera, tendría algún problema para adaptarlo para arduino? tendré problemas de picos de corriente o voltaje?.
Muchas gracias

surbyte

#1
Aug 20, 2015, 01:59 am Last Edit: Aug 20, 2015, 02:02 am by surbyte
8 entradas 1 salidas el CD4051
4 entradas 2 salidas el CD4052

El usas un CD4051 para conectar a cada bateria con su divisor de tensión y mides por ejemplo con A0
Usas un segundo 4051 para medir las corrientes con A1
Y el tercero para las temperaturas con A2.
Requieres de 3 salidas digitales que barren binariamente de 000 a 111 las 8 entradas.



GustavoGB

8 entradas 1 salidas el CD4051
4 entradas 2 salidas el CD4052

El usas un CD4051 para conectar a cada bateria con su divisor de tensión y mides por ejemplo con A0
Usas un segundo 4051 para medir las corrientes con A1
Y el tercero para las temperaturas con A2.
Requieres de 3 salidas digitales que barren binariamente de 000 a 111 las 8 entradas.



Muchísimas Gracias, justo eso estaba buscando.

Un par de preguntas. ¿Hay que poner algún componente para proteger los pines de entrada de Arduino (algún capacitor o fusible) o el 4051 no tendría que tirar picos altos de voltaje o corriente en funcionamiento normal conectado en directo?
¿Debo poner un pequeño delay después de cada cambio en la salida analógica del 4051 para que se estabilice la tensión o no hace falta este detalle?
¿Hay caída en el voltaje de la señal al pasar por este integrado? Es muy importante que no se pierda señal ya que los datos dependen de esto. Esto lo puedo comprobar yo experimentalmente pero en una de esas ustedes me pueden explicar mejor.


Me recomendaron usar PICs (conectando 6 analogicos por pic, 2 baterias sería por pic) en serie usando I^2C para la transmisión de datos, sin embargo lo veo un poco rebuscado y me parece mas simple usar este integrado. ¿Que opinión tienen sobre esto?
Muchas gracias por la ayuda

surbyte

#3
Aug 20, 2015, 05:33 pm Last Edit: Aug 20, 2015, 05:46 pm by surbyte
Mira estos componentes estar diseñados para trabajar a altas velocidades.
Los problemas de estabilidad que vas a experimentar son los mismos que tendrías si estuvieran conectados directamente. Mas allá de esto, son tensiones, corrientes y temperaturas. Te puedes tomar el tiempo para hacer todo con pausa y asegurar buenos datos.
Yo uso siempre una rutina de promedio móvil.
Me gusta porque es una rutina rápida, hago el gasto de tiempo en el setup si me interesa que se muestren bueno valores de arranque y sino ni me preocupo porque siempre estan bien ponderados.

Todo se resume a restar el último termino ponderado y sumar el nuevo valor ponderado. Cuando digo ponderado me refiero a la cantidad de muestras que usas para promediar pero sin ocupar memoria, tan escasa en el UNO por ejemplo. Solo usas una variable unsigned long que acumula los valores del AD y cuando quieres saber el valor actual, haces unas cuentas como te dije antes y obtienes el resultado promediado digamos por 200 valores.
Para una batería que se mueve poco, esta mas que bien si medimos tensió y temperatura.
Para la corriente hay que verlo, pero esta aclaración depende de tu consumo, si es estable sirve y si no lo es tal vez usar un valor de ponderación mas chico, lo cual le da mas agilidad al promedio.

Si te interesa te paso el algoritmo que no es nada complicado.

Quote
¿Debo poner un pequeño delay después de cada cambio en la salida analógica del 4051 para que se estabilice la tensión o no hace falta este detalle?
Yo comenzaría primero direccionando los 3 CD4051 que tendrán todos la misma dirección, luego daría 1 mseg de delay, y tomaría la muestra de los 3 valores sucesivamente.
De eso modo tendrá fluidez en el código para esta u otras cosas y podre en 1 seg tomar 1000/3 = 333 muestras lo que esta mas que bien para lograr valores estables no te parece?

Quote
¿Hay caída en el voltaje de la señal al pasar por este integrado? Es muy importante que no se pierda señal ya que los datos dependen de esto. Esto lo puedo comprobar yo experimentalmente pero en una de esas ustedes me pueden explicar mejor.
Bueno leo que dice tener una Ron de 5 ohms y en otra parte de la hoja de datos dice 150 ohms. Debo mal interpretar una de las indicaciones.
En en peor caso de que fueran 150 ohms, tu circuito de lectura es.

Batería supongamos que fuera de 12V require un divisor resistivo 2k + 1k o sea un factor 1/3 por lo que 12V se leerán coom 4V máximos. Hago una cuenta rápida, claro que puedes mejorarlo pero lo dejo para que lo calcules tu.

Entonces batería 12V a Resistor R1 de 2k, a resistor R2 de 1K a masa. Entre Masa y la unión de resistores tienes ahora 4V cuando la batería esta a 12V.
Pero ahora esta el CD4051 con una supuesta R de 150 ohms en serie con la entrada de tu AD de Alta impedancia digamos 1M ohms.

Quiere decir que (simplificando que 1M+150 ohms no alternan demasiado el divisor resistivo), tendras una corriente de 4V/(1000150 ohms) = 3,9994000899865 uA
Te puse todos los decimales para que veas la proximidad a 4 uA

Bien, veamos la caida que experimenta el CD4051

Caida en Ron del CD4051 = I x R= 3,9994000899865020246962955556667e-6 * 150 ohms = 0,00059991001349797530370444433335 V = 0,59991 mV casi 0.6mV

El Arduino uno tiene 10 bits de resolución. Leerás entre 0 y 5V o sea 5/1024=4.88mV

4.88mV > 0.6mV
O sea la resolución del Arduino no ve ni en sueños la posible caída de tensión en el CD4051 si fueran 150 ohms que ya dije que tengo mis dudas.


GustavoGB

Mira estos componentes estar diseñados para trabajar a altas velocidades.
Los problemas de estabilidad que vas a experimentar son los mismos que tendrías si estuvieran conectados directamente. Mas allá de esto, son tensiones, corrientes y temperaturas. Te puedes tomar el tiempo para hacer todo con pausa y asegurar buenos datos.
Yo uso siempre una rutina de promedio móvil.
Me gusta porque es una rutina rápida, hago el gasto de tiempo en el setup si me interesa que se muestren bueno valores de arranque y sino ni me preocupo porque siempre estan bien ponderados.

Todo se resume a restar el último termino ponderado y sumar el nuevo valor ponderado. Cuando digo ponderado me refiero a la cantidad de muestras que usas para promediar pero sin ocupar memoria, tan escasa en el UNO por ejemplo. Solo usas una variable unsigned long que acumula los valores del AD y cuando quieres saber el valor actual, haces unas cuentas como te dije antes y obtienes el resultado promediado digamos por 200 valores.
Para una batería que se mueve poco, esta mas que bien si medimos tensió y temperatura.
Para la corriente hay que verlo, pero esta aclaración depende de tu consumo, si es estable sirve y si no lo es tal vez usar un valor de ponderación mas chico, lo cual le da mas agilidad al promedio.

Si te interesa te paso el algoritmo que no es nada complicado.
Yo comenzaría primero direccionando los 3 CD4051 que tendrán todos la misma dirección, luego daría 1 mseg de delay, y tomaría la muestra de los 3 valores sucesivamente.
De eso modo tendrá fluidez en el código para esta u otras cosas y podre en 1 seg tomar 1000/3 = 333 muestras lo que esta mas que bien para lograr valores estables no te parece?
Bueno leo que dice tener una Ron de 5 ohms y en otra parte de la hoja de datos dice 150 ohms. Debo mal interpretar una de las indicaciones.
En en peor caso de que fueran 150 ohms, tu circuito de lectura es.

Batería supongamos que fuera de 12V require un divisor resistivo 2k + 1k o sea un factor 1/3 por lo que 12V se leerán coom 4V máximos. Hago una cuenta rápida, claro que puedes mejorarlo pero lo dejo para que lo calcules tu.

Entonces batería 12V a Resistor R1 de 2k, a resistor R2 de 1K a masa. Entre Masa y la unión de resistores tienes ahora 4V cuando la batería esta a 12V.
Pero ahora esta el CD4051 con una supuesta R de 150 ohms en serie con la entrada de tu AD de Alta impedancia digamos 1M ohms.

Quiere decir que (simplificando que 1M+150 ohms no alternan demasiado el divisor resistivo), tendras una corriente de 4V/(1000150 ohms) = 3,9994000899865 uA
Te puse todos los decimales para que veas la proximidad a 4 uA

Bien, veamos la caida que experimenta el CD4051

Caida en Ron del CD4051 = I x R= 3,9994000899865020246962955556667e-6 * 150 ohms = 0,00059991001349797530370444433335 V = 0,59991 mV casi 0.6mV

El Arduino uno tiene 10 bits de resolución. Leerás entre 0 y 5V o sea 5/1024=4.88mV

4.88mV > 0.6mV
O sea la resolución del Arduino no ve ni en sueños la posible caída de tensión en el CD4051 si fueran 150 ohms que ya dije que tengo mis dudas.


Muchas gracias por tus consejos, me van a servir de mucho.
Gustavo

surbyte

Cuantifica el proyecto.
Baterías de que tensión, que corriente, que temperatura esperas medir aca podrais usar DS18B20 usando 1-WIRE y eliminas un grupo de 3. Son mas precisos que los LM35 p. ejemplo.


GustavoGB

Cuantifica el proyecto.
Baterías de que tensión, que corriente, que temperatura esperas medir aca podrais usar DS18B20 usando 1-WIRE y eliminas un grupo de 3. Son mas precisos que los LM35 p. ejemplo.


Disculpa, no entendí bien lo de cuantificar.
Entiendo que puedo usar el DS18B20 para medir temperatura, pero como lo uso para medir diferencia de voltaje o corriente?
Y a que te refieres con "1 cable y eliminar un grupo de 3"? usar un solo transistor para las 3 mediciones??
Por favor aclárame esa duda. Gracias

surbyte

Quote
Disculpa, no entendí bien lo de cuantificar.
Cuando no se algo, lo busco en Google.
Cuantificar
tr. Expresar numéricamente una magnitud:
conviene empezar por cuantificar los desperfectos. (ejemplo)

Quote
DS18B20 usando 1-WIRE y eliminas un grupo de 3
Perdona pero veo eres bastante nuevo en temas electrónicos.
1-WIRE es una tecnología de Maxim/Dallas que permite usar sensores usando justamente 1 cable. Los alimenta y envia y recibe información entre este cable y GND. El DS18B20 es un sensor de temperatura de 0.5°C de preceisión. Si usas este sensor evitas usar un CD4051 y por lo tanto en lugar de usar 3 cd4051 usarías dos porque solo tendrías que medir tensión y corriente.

GustavoGB

Cuando no se algo, lo busco en Google.
Cuantificar
tr. Expresar numéricamente una magnitud:
conviene empezar por cuantificar los desperfectos. (ejemplo)
Perdona pero veo eres bastante nuevo en temas electrónicos.
1-WIRE es una tecnología de Maxim/Dallas que permite usar sensores usando justamente 1 cable. Los alimenta y envia y recibe información entre este cable y GND. El DS18B20 es un sensor de temperatura de 0.5°C de preceisión. Si usas este sensor evitas usar un CD4051 y por lo tanto en lugar de usar 3 cd4051 usarías dos porque solo tendrías que medir tensión y corriente.
Disculpa mi ignorancia, no sabia sobre esa tecnología. Igual, para usar eso tengo que aprender a usar los protocolos de 1-wire y adaptar mi circuito con transistores sin duda es una facilidad muy grande usar un solo cable para esto pero debo tener tiempo para aprenderlo y esto es un pequeño proyecto, con el tiempo iré mejorándolo. Por ahora la idea es recibir los datos en arduino de forma análoga y con el integrado que me recomendaste en principio andará muy bien, por ahora no me molesta tener cables de más. Pero muchas gracias por este dato 1-wire seguramente lo ire a usar alguna vez! Gracias

surbyte

No tienes que aprender demasiado. Lo bueno de Arduino es que hay librerías para casi todo lo que usamos o queremos usar.
Para estos elementos 1-Wire tienes la librería disponible, por eso te la sugiero, porque es fácil de usar y porque tendrás buenos resultados.

Por lo demás es tu proyecto, y uno lo hace como gusta. Nada que decir al respecto.

Go Up