Problema con Conexion ULN2064B

Hola,

Alguien podría decirme como se conecta un ULN2064B
lo quiero para conectar varios servomotores, pero no se
hasta cuantos puede manejas cada ya que haciendo unas
pruebas pareciera que todas las salidas son iguales.

O si pueden recomendarme algún puente h para manejar unos servos
digitales HDK D3009 ya que su corriente en carga son de 500 mAh. ...
 
.


Cloudff7

Pues fíjate en la página 8 de la datasheet (click) del mismo y te mostrara la conexión típica de dicho integrado !!!.


También podrías haber colocado el esquema de lo que deseas realizar y así podría algún forista guiarte mejor.




Saludos, JuanKa.-
 
Hola, muchas gracias por responder.

La cuestión es esta: Por el momento estoy en una minilaptop y no me corre proteus para pegar el esquemático pero tratare de explicarlo lo mas claro posible.

Estoy haciendo un brazo robot controlado inalambricamente, el transmisor es un PIC18F4550, que se encarga de enviar las instrucciones de que servo y a que angulo debe moverse.

El receptor es un PIC16F887, que se encarga de recibir los datos y mandar un pulso PWM al servomotor correspondiente.

Lo que hice fue conseguir una batería de 12 V a 7 Ah y conectarla para que alimente directamente a los servos; para bajar el voltaje utilice varios diodos en serie (de 6A) para dejarlo en 5.4 V y que me permitieran pasar casi toda la corriente. Pero al momento de conectar un servo funciona perfectamente, pero si conecto el segundo empieza a moverse de manera extraña(como si le faltara corriente, ya que lo mismo me hace con un LM7805).

Investigando, en distintos foros y WEBs encontré que el ULN2064B sirve para tal propósito ya que entrega 1.5 A a la salida. pero mi duda esta en la conexión de este integrado ya que no veo que tenga una patilla para VCC, otra duda surge en que no se que debo conectar a la entrada. VCC del servo o la señal PWM que sale del pic?

La simulación en Proteus corre bien(pero es obvio ya que varios parámetros en la simulación son "ideales") y pues esa es la duda. Voy a postear mi codigo en CCS para tratar de aportar algo a la comunidad ya que no es la primera vez que me ayudan en ciertos temas.

En simples palabras tengo problemas con la etapa de potencia.


Codigo Transmisor:

PHP:
#include <18F4550.h> 
#fuses XT,PLL1,CPUDIV1,PUT,NOBROWNOUT,NOVREGEN,NOWDT,NOPBADEN,MCLR,NOLVP,NODEBUG,NOPROTECT,NOCPD,USBDIV
#device adc=10 
#use delay(clock=48000000)
#include "lib_rf2gh4_10_4550.h" 

#byte porta=0xF80               // Dirección de los puertos A, B, C, D y E.
#byte portb=0xF81
#byte portc=0xF82
#byte portd=0xF83
#byte porte=0xF84

int16 x;
int8 ret, temp1;                                                                // Variables de Retorno y ADC

//*************************Programa principal*********************************//
void main()
{

RF_CONFIG_SPI();                                                                // Configurar módulos SPI del PIC
RF_CONFIG(0x40,0x01);                                                           // Configurar módulo RF (canal y dirección)
RF_ON();                                                                        // Activar RF
set_tris_a(0b011111);                                                           // RA5 como salida para evitar poner la resistencia de polarización.

setup_adc(ADC_CLOCK_INTERNAL);                                                  // ADc del PIC
setup_adc_ports( AN0_TO_AN3|VSS_VDD);                                          // AN0 como Canal analogo           
set_adc_channel(0);                                                             // Canal 0                
delay_us(10);                                                                   // Dejamos un tiempo antes de Empezar a Leer

//***************************Bucle de Lectura y envio*************************//

while(true){

x=read_adc();                                                               // El contenido del ADC se almacena en temp1
RF_DIR=0x08;                                                                    // Direcion de Envio
RF_DATA[0] = make8(x, 0);          
RF_DATA[1] = make8(x, 1);                                                              // Se Almacena la lectura en la variable de envio                                                             
ret=RF_SEND();                                                                  // Enviar Datos
delay_ms(50);                                                                  // Retardo de envio (Revisar minimo)

if(ret==0){
output_high(pin_E0);                                                            //Envio realizado y ACK recibido
}
else if(ret==1){ 
output_high(pin_E1);                                                            //Envio realizado y ACK no recibido
}
else{
output_high(pin_E2);                                                            //Envio no realizado
}
//----------------------------------------------------------------------------//
}

}

Codigo Receptor:

PHP:
#include <16f887.h>       
#FUSES NOWDT, XT, PUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=1000000) 
#include <lcd.c>
#include "lib_rf2gh4_10.h" 


int8 d[];
int8 ret;
int16 data;
float temp;
 
//--------------[Rutina de recepción con interrupcion]--------------------------
 

#int_ext
void int_externo() {
 
ret = RF_RECEIVE();
 if (ret == 0)  
{
         d[0] = RF_DATA[0];
         d[1] = RF_DATA[1];
 }
 }
void main(){

lcd_init();

setup_CCP1(CCP_PWM);

//-----------[Rutina de configuración y activación con interrupción]------------

RF_INT_EN();                                                                    //Habilitar interrupciones
RF_CONFIG_SPI();                                                                //Configurar módulos SPI del PIC
RF_CONFIG(0x40,0x08);                                                           //Configurar módulo RF (canal y dirección)
RF_ON();                                                                        //Activar el módulo RF

                                    
while(1)
{
data=((int16)d[0])+((int16)d[1]<<8);
temp=(data*1);
lcd_gotoxy(1,1);                                                                //COLOCA EL CURSOR EN COLUMNA 1 FILA 1
lcd_putc("TEMP ACTUAL...");                                                     //IMPRIME EN PANTALLA                                        
lcd_gotoxy(4,2);                                                                //COLOCA EL CURSOR EN COLUMNA 4 FILA 2
printf(lcd_putc," T= %2.2f C",temp);                                            //MUESTRA EN EL LCD EL VALOR DE TEMPERATURA
delay_ms (1);

 }  
}

Este codigo transmite inalambricamente un ADC a 10 Bits de Pic a Pic mediante el modulo NRF24L01.(también adjunto librerías) y una imagen del diagrama de conexiones.(Cabe resaltar que en el diagrama esta el pic16f876A pero tiene las mismas direcciones que el 16F887 y la conexion va en el mismo No. de Patilla, pero por si llegaran a tener dudas en las librerias :"lib_rf2gh4_10_4550" y "lib_rf2gh4_10" en las primeras lineas viene la conexion de CE, CSN, SDO,SDA,SCK y asi se pueden guiar mejor.
 

Adjuntos

  • Prueba 887 0-1023.rar
    99.2 KB · Visitas: 18
Has buscado la hoja de datos y la notas de aplicacion de dicho CI?
Si en tu buscador pones el nombre del CI y eliges imagenes veras una gran cantidad de aplicaciones de dicho CI que te orientaran
Jamás debes empezar ningún proyecto sin tener las hojas de datos de los componentes que utilzaras
 
Has buscado la hoja de datos y la notas de aplicacion de dicho CI?

Es correcto mi amigo, tengo el datasheet a la mano como me lo recomendó el compañero de la primera respuesta. y efectivamente solo hay un ejemplo para manejar LED ya sea por cátodo y Ánodo, pero no esta muy clara la conexión de la alimentación de los Led, por lo que recurrí a preguntar en el foro. Aun asi gracias por resaltar ese detalle que en muchas ocasiones tiene la respuesta.(y)
 
Tu problema por tus respuestas es que tus conocimientos de electrónica son muy limitados, ya que en la hoja de datos esta la respuesta a tu pregunta
De echo figura como esta compuesto cada driver interno, con solo mirarlo se ve que es de colector abierto y presisamente el ejemplo de led's clarifica perfedtamente el sentido de conducción de la corriente, ya sea que coloques un led o un motor es exactamente lo mismo
Lo que si tal vez no sea el más adecuado para tu aplicación en particular
 
En mi experiencia con Robots, ese IC se conecta asi:

Pin 1 K1 y Pin 8 K2 van a +12V
Pin 3, 6, 11 y 14 son IN
Pin 2, 7, 9 y 16 son OUT
Pin 4, 5 12 y 13 GNG.

Saludos y hasta la próxima.
 
Última edición:
Muchísimas gracias por la respuesta tan Clara.

Ya estoy haciendo pruebas y espero postear resultados a fin de que alguien pueda encontrar solución rápida a un problema similar.
 
.


Cloudff7

Para mejorar la idea de la conexión de los servos (si es que a ellos te refieres) mira en la siguiente página por que me parece que tienes una confusión entre Servos y Motores PAP.


No he profundizado la búsqueda, por si lleva alguna resistencia en algún punto; pero todo pareciera indicar que no y te dejo a ti que mires y confirmes bien como usarlos.




Por otra parte si bien no es la mejor manera de obtener 5V desde la batería de 12V lo que has hecho con los diodos diría que es medianamente aceptable, pero .....

Siempre tengo esos famosos pero .....

Personalmente alimentaria la parte del µControlador no desde esa salida de los diodos, sino que colocaría un 7805 desde los 12V y solo para la electrónica asociada al µControlador. No puedo ver tu adjunto de Proteus por que yo no utilizo simuladores.

El punto que dices de los movimientos extraños puede deberse a ruidos sobre la línea de +5.4V debido a la carga inductiva de los motores, al agregar una nueva alimentación de +5V exclusiva para la electrónica del µControlador y demás asociados (NRF24L01, etc.) te independizaras de esos ruidos de motores/servos.




Saludos, JuanKa.-
 
.


Personalmente alimentaria la parte del µControlador no desde esa salida de los diodos, sino que colocaría un 7805 desde los 12V y solo para la electrónica asociada al µControlador. No puedo ver tu adjunto de Proteus por que yo no utilizo simuladores.

El punto que dices de los movimientos extraños puede deberse a ruidos sobre la línea de +5.4V debido a la carga inductiva de los motores, al agregar una nueva alimentación de +5V exclusiva para la electrónica del µControlador y demás asociados (NRF24L01, etc.) te independizaras de esos ruidos de motores/servos.

Respondiendo a tu comentario déjame decirte que, efectivamente estoy usando un LM7805 para la electrónica del micro controlador y para la alimentación de mi antena, de echo la alimentación del pic es mediante una batería de 9V con un LM7805. La bateria de 12 V solo la utilizo para alimentar los motores. asociando las tierras para tener la misma referencia de Voltaje.

Muchas Gracias Echare un vistazo al link que me dejaste.
 
.


Cloudff7

Si es una batería de 9V de estas:

Duracell_9_Volt_0849.jpg



No es lo mas recomendable en mi opinión. Ya que si cae un poco la tensión por cualquier motivo el 7805 se quedara sin margen entre entrada y salida, pudiendo causar problemas en la alimentación del µControlador.


Una forma de sacarte la duda es monitorear la alimentación de los +5V con un osciloscopio o un multímetro.




Saludos, JuanKa.-
 
Última edición:
hola
Muchísimas gracias por la respuesta tan Clara.

Ya estoy haciendo pruebas y espero postear resultados a fin de que alguien pueda encontrar solución rápida a un problema similar.
Vamos por partes ., yo creo que estas confundido con el circuito integrado​
Primero que esta discontinuado y segundo que es un puente H (o funcianamiento parecido al L293D)​
Yo creo que tu confucion se debe ., a que talvez te referias al ULN2003N o ULN2803N ., que si son para aplicaciones con servos ., pero que son completamente distintos​
Ahora lo otro viendo tu programa ., no se ., como puedes manejar un servo​
si solo tiene un sensado de temperatura ., el programa para manejar un servo es totalmente distinto (las salidas tambien)​
.


Cloudff7

Para mejorar la idea de la conexión de los servos (si es que a ellos te refieres) mira en la siguiente página por que me parece que tienes una confusión entre Servos y Motores PAP.


No he profundizado la búsqueda, por si lleva alguna resistencia en algún punto; pero todo pareciera indicar que no y te dejo a ti que mires y confirmes bien como usarlos.




Por otra parte si bien no es la mejor manera de obtener 5V desde la batería de 12V lo que has hecho con los diodos diría que es medianamente aceptable, pero .....

Siempre tengo esos famosos pero .....

Personalmente alimentaria la parte del µControlador no desde esa salida de los diodos, sino que colocaría un 7805 desde los 12V y solo para la electrónica asociada al µControlador. No puedo ver tu adjunto de Proteus por que yo no utilizo simuladores.

El punto que dices de los movimientos extraños puede deberse a ruidos sobre la línea de +5.4V debido a la carga inductiva de los motores, al agregar una nueva alimentación de +5V exclusiva para la electrónica del µControlador y demás asociados (NRF24L01, etc.) te independizaras de esos ruidos de motores/servos.




Saludos, JuanKa.-
amigaso juanK (tocayo querido ) ., si le presta atencion al esquema y al programa posteado​
Vera ., que parece ser ., un termometro., o algo que mide o muestra temperatura ., pero para manejar servos .,nada de nada​
:apreton: :cool:
 
locodelafonola:

Hola.

En el pie de mi respuesta, especifique:

Este código transmite inalambricamente un ADC a 10 Bits de Pic a Pic mediante el modulo NRF24L01.(también adjunto librerías) y una imagen del diagrama de conexiones.(Cabe resaltar que en el diagrama esta el pic16f876A pero tiene las mismas direcciones que el 16F887 y la conexión va en el mismo No. de Patilla, pero por si llegaran a tener dudas en las librerías :"lib_rf2gh4_10_4550" y "lib_rf2gh4_10" en las primeras lineas viene la conexión de CE, CSN, SDO,SDA,SCK y asi se pueden guiar mejor.

Por lo que se intuye que no vendría nada sobre los servos, la variable temp la utilice por que efectivamente en ese ADC estaba usando un LM35DZ para transmitir temperatura. y fue la "variable que se me hacia mas cómoda. De echo en el código del receptor lo multiplico x1 para visualizar meramente que mi ADC llego completo(0-1023), ya que como podrás darte cuenta estoy trasmitiendo un ADC de 10 bits que primero descompongo en el Emisor y después integro en el Receptor ya que mi antena solo maneja paquetes de 8 bits.

El control de los servos esta en otro programa y digamos que ese es punto y aparte ya que conectados individualmente funcionan correctamente.



.No es lo mas recomendable en mi opinión. Ya que si cae un poco la tensión por cualquier motivo el 7805 se quedara sin margen entre entrada y salida, pudiendo causar problemas en la alimentación del µControlador.

Amigo tienes muchísima razón, no lo había considerado, estas baterías pierden tensión entre mas dispositivos(corriente) tenga conectados, por lo que esos bajones de energía me pueden estar provocando los errores que tengo, y como dices tu se pierde el margen.

Hare las pruebas que me comentas y veré que pasa.
 
Última edición:
.


Cloudff7

Si por que es una batería de baja capacidad de corriente, entonces el riesgo es que apenas la tensión se aproxime a 8V quedas justo en el limite de la diferencia de potencial entre IN y OUT de los 7805.

Si hay algún ruido en alguna parte, el regulador también puede hacer cosas raras, de ultima como agregue antes coloca un osciloscopio a ver si la tensión de +5V no posee cosas raras.




Don Rosit0

No uso el Proteus ni ningún simulador, no he visto ningún esquema ni perdí tiempo en analizar el programa. Solo empecé respondiendo ante la pregunta del forista por el ULN2064 y ahora que fue más explicito respecto al uso del mismo he observado en la Web que no necesita nada para trabajar con servos.

Convengamos que para manejar un Servo no son necesarios integrados adicionales como para los Motores PAP.



Saludos, JuanKa.-
 
hola
Hola,

Alguien podría decirme como se conecta un ULN2064B
lo quiero para conectar varios servomotores, pero no se
hasta cuantos puede manejas cada ya que haciendo unas
pruebas pareciera que todas las salidas son iguales.

O si pueden recomendarme algún puente h para manejar unos servos
digitales HDK D3009 ya que su corriente en carga son de 500 mAh. ...
Amigo yo me limite a responder al pregunta planteada ., pues para el control de los servos ., NO se usa un puente H ., como usted solicitaba ., y si al menos., no muestra la libreria que los maneja ., mas aun a mi favor .,temperatura con control de servos nada que ver ., porque el comando es compltamente distinto al que planteas​
.


Cloudff7

Si por que es una batería de baja capacidad de corriente, entonces el riesgo es que apenas la tensión se aproxime a 8V quedas justo en el limite de la diferencia de potencial entre IN y OUT de los 7805.

Si hay algún ruido en alguna parte, el regulador también puede hacer cosas raras, de ultima como agregue antes coloca un osciloscopio a ver si la tensión de +5V no posee cosas raras.




Don Rosit0

No uso el Proteus ni ningún simulador, no he visto ningún esquema ni perdí tiempo en analizar el programa. Solo empecé respondiendo ante la pregunta del forista por el ULN2064 y ahora que fue más explicito respecto al uso del mismo he observado en la Web que no necesita nada para trabajar con servos.

Convengamos que para manejar un Servo no son necesarios integrados adicionales como para los Motores PAP.



Saludos, JuanKa.-
amigaso querido ., yo me limite a responder .,y si se usan ., como amplificadores (ULN2003 y ULN2803) ., cuando la distancia del cable es mayor a 30 (treinta ) cm ., es para que no pierda fuerza la señal y funcione erroneamente ., pero como tampoco especifica la distancia del coneccionado ., pence que lo pedia por eso ., ahora que de alli ., se interprete cualquier cosa .,eso es otra historia :apreton:



El receptor es un PIC16F887, que se encarga de recibir los datos y mandar un pulso PWM al servomotor correspondiente.

Lo que hice fue conseguir una batería de 12 V a 7 Ah y conectarla para que alimente directamente a los servos; para bajar el voltaje utilice varios diodos en serie (de 6A) para dejarlo en 5.4 V y que me permitieran pasar casi toda la corriente. Pero al momento de conectar un servo funciona perfectamente, pero si conecto el segundo empieza a moverse de manera extraña(como si le faltara corriente, ya que lo mismo me hace con un LM7805).

Investigando, en distintos foros y WEBs encontré que el ULN2064B sirve para tal propósito ya que entrega 1.5 A a la salida. pero mi duda esta en la conexión de este integrado ya que no veo que tenga una patilla para VCC, otra duda surge en que no se que debo conectar a la entrada. VCC del servo o la señal PWM que sale del pic?

La simulación en Proteus corre bien(pero es obvio ya que varios parámetros en la simulación son "ideales") y pues esa es la duda. Voy a postear mi codigo en CCS para tratar de aportar algo a la comunidad ya que no es la primera vez que me ayudan en ciertos temas.

En simples palabras tengo problemas con la etapa de potencia.
a esto me remito
 
Última edición:
A mi parecer Cloudff7 esta confundiendo un servomotor tipo aeromodelismo, con un servomotor DC para brazo robotizado.

Por eso pregunta por un puente H que es para un servo motor DC.
 
Última edición:
hola
A mi parecer estan confundiendo un servomotor tipo aeromodelismo, con un servomotor DC para brazo robotizado.

Por eso pregunta por un puente H para un servo DC.

http://www.polytechnichub.com/wp-content/uploads/2014/10/dc_servo_motor_img-300x300.jpg
Nop., no estamos confundiendo servos​
Hola,

Alguien podría decirme como se conecta un ULN2064B
lo quiero para conectar varios servomotores, pero no se
hasta cuantos puede manejas cada ya que haciendo unas
pruebas pareciera que todas las salidas son iguales.

O si pueden recomendarme algún puente h para manejar unos servos
digitales HDK D3009 ya que su corriente en carga son de 500 mAh. ...
El que el amigo usa (lo dijo en el primer mensaje)., es este​
Hdkj-D3009-Servo-alta-precisi%C3%B3n-Metal-Gear-High-Torque-gran-angular-a-prueba-de-agua-Digital.jpg
Lo bueno es que tiene engranajes de metal .,y aparte es "estanco" o sea a prueba de agua ., ideales para veleros radio controlados​
 
hola
Nop., no estamos confundiendo servos​
El que el amigo usa (lo dijo en el primer mensaje)., es este​
http://g01.a.alicdn.com/kf/HTB1wfhQ...que-gran-angular-a-prueba-de-agua-Digital.jpg
Lo bueno es que tiene engranajes de metal .,y aparte es "estanco" o sea a prueba de agua ., ideales para veleros radio controlados​

Me refiero a quien pregunta parece que esta confundiendo los servos:D, es que se me fue una "n" de mas en "estan":apreton:

Para ese servo es usar un controlador PWM con 2 lineas de control SDA y SCL, que es compatible con cualquier microcontrolador con I2C o TWI.

Lo mas viable también seria un UART controller:unsure:

images
 
Última edición:
Antes que nada gracias a todos por sus respuesta.

Por lo que veo efectivamente no necesito ningún tipo de puente H para controlar mis servos, estoy o estaba algo confundió ya que alguien me dijo que necesitaba una etapa de potencia para poder soportar la carga de los 6 Servos HDJK, pero por lo visto no es así.

En fin tendré que ver entonces del por que mi problema al conectar mas de dos servos, estuve midiendo las salidas PWM que genero en cada salida y no rebasan los .4 V

Para ese servo es usar un controlador PWM con 2 lineas de control SDA y SCL, que es compatible con cualquier microcontrolador con I2C o TWI.

Lo mas viable también seria un UART controller

Amigo, el objetivo de mi proyecto es desarrollar el sistema de control para controlarlos por lo que no me es viable comprar el sistema ya echo. :rolleyes:

aun agradezco el tomarte tu tiempo para aportar algo al tema.

No uso el Proteus ni ningún simulador, no he visto ningún esquema ni perdí tiempo en analizar el programa. Solo empecé respondiendo ante la pregunta del forista por el ULN2064 y ahora que fue más explicito respecto al uso del mismo he observado en la Web que no necesita nada para trabajar con servos.

Convengamos que para manejar un Servo no son necesarios integrados adicionales como para los Motores PAP.

Amigo tienes razón, buscare entonces por otro lado el origen de mi problema.

Gracias a todos.
 
Atrás
Arriba