En el POST de hoy vamos a trabajar con una celda de carga de 20Kg, un transmisor de celda de carga HX711, un display LCD 1602, frecuentemente utilizado a lo largo de todo el BLOG y por último una estructura que fabricaremos en “DM”, que no es más que un tipo de aglomerado de madera muy resistente, para crear una precisa y práctica balanza digital capaz de pesar elementos de hasta 20Kg. Para comenzar este proyecto es muy interesante conocer que es y para que se utiliza la celda de carga, además de ver por qué es necesario utilizar un transmisor de celda de carga HX711 para comunicar la celda de carga con nuestro Arduino y que mediante el mismo podamos interpretar las señales eléctricas recibidas para mostrar a través del LCD 1602 el peso real de los elementos que nos interesen.
Una celda de carga es un transductor utilizado para convertir una fuerza en una señal eléctrica. Esta conversión empieza a partir de un dispositivo mecánico, es decir, la fuerza que se desea medir, deforma la galga extensiométrica y por medio de medidores de deformación, que son pequeños patrones de resistencias utilizados como indicadores de tensión, obtenemos una señal eléctrica con la cual podemos obtener el valor de la fuerza. Los medidores están unidos a la viga que se deforma cuando se aplica peso, a su vez, deformando el indicador de tensión. Cuando se deforma el medidor de deformación la resistencia eléctrica cambia en proporción a la carga. Esto se logra por medio de un puente de Wheastone, el cual se utiliza para medir resistencias desconocidas mediante el equilibrio de “brazos” del puente. Estos están construidos por cuatro resistencias que forman un circuito cerrado. En el caso de las celdas de carga las resistencias son los medidores de deformación. La celda de carga es ideal para poder medir variaciones sobre presión en una superficie o como simple transductor para medir un peso de algún elemento en contacto con el dispositivo, como es en nuestro caso. En este POST utilizaremos una celda de carga de 20Kg que es el valor máximo que podrá pesar nuestra balanza digital.Celda de carga de 20Kg |
El transmisor de celda de carga HX711 es una interface entre la celda de carga y nuestro Arduino, permitiendo poder leer el peso de manera sencilla. Internamente se encarga de la lectura del puente de Wheastone formado por los medidores de deformación de la celda de carga, convirtiendo la lectura analógica en digital con su conversor A/D interno de 24 bits. La comunicación con nuestro Arduino se realiza a través de los pines SCK (Reloj) y DT (Datos) que el transmisor de celda de carga HX711 tiene como SALIDAS.
Transmisor de celda de carga HX711 |
Por otra parte las ENTRADAS del transmisor de celda de carga HX711 van cableadas a la celda de carga de la siguiente manera:
- Pin E+ del transmisor HX711 à Cable Rojo de la celda de carga de 20Kg.
- Pin E- del transmisor HX711 à Cable Negro de la celda de carga de 20Kg.
- Pin A- del transmisor HX711 à Cable Blanco de la celda de carga de 20Kg.
- Pin A+ del transmisor HX711 à Cable Verde de la celda de carga de 20Kg.
Como se ha mencionado con anterioridad, toda la estructura de la balanza digital está fabricada en “DM”, que es un aglomerado elaborado con fibras de madera aglutinadas con resinas sintéticas mediante fuerte presión y calor, en seco, hasta alcanzar una densidad media, ideal para resistir grandes esfuerzos con un espesor reducido. Cabe decir que las uniones realizadas entre las tablas de DM o entre la celda de carga y las tablas de DM se realizan mediante tirafondos de 3mm de diámetro en diferentes longitudes y cabeza plana, además de aplicar adhesivo de contacto de secado rápido en todas las superficies a unir. Como se puede observar en la siguiente imagen, la celda de carga está dotada de una parte hueca (parte central de la celda de carga), que tiene que quedar en suspensión para su correcto funcionamiento, además hay que tener en cuenta que el sentido de la flecha indica la dirección de la fuerza o peso a aplicar a la hora de instalar la celda de carga dentro de la estructura de DM.
Despiece y montaje de la estructura de la balanza digital |
Para programar correctamente nuestro Arduino y poder visualizar el peso real de los elementos que nos interesen a través del LCD 1602, lo primero que tenemos que hacer es cargar el programa llamado “Balanza_digital_calibrado.ino” para calibrar la balanza digital, que consiste básicamente en hallar el valor de la escala que se usará, es decir, hallar el factor de conversión para convertir el valor de lectura en un valor con unidades de peso. La escala es diferente para cada celda y cambia de acuerdo a la forma de instalar, al peso máximo o modelo de celda de carga, incluso así se trate del mismo modelo de celdas no necesariamente tienen el mismo valor de escala. Primero necesitamos conseguir un objeto con un peso conocido, en otras palabras, debemos saber el peso real del objeto que vamos a poner sobre la balanza digital. Se recomienda que el peso conocido sea cercano al valor máximo del rango de trabajo de la celda de carga. En nuestro caso usaremos un peso de 8Kg pues nuestra celda es de 20Kg, y por mi casa no he encontrado un peso conocido mayor.
Después de poner el peso en la balanza, a través del monitor serial se mostraran las lecturas del peso, son lecturas sin escalar, por lo que les deben aparecer números grandes. Muy importante es que el programa comience a funcionar sin el peso colocado en la balanza digital, pues al inicio de programa se calcula la tara. Posteriormente tendremos que abrir el monitor serie del IDE de Arduino, esperaremos a que el programa reste la tara, para finalmente poner el objeto de 8Kg (o el peso conocido más cercano a 20Kg que encontremos por casa) y así obtener una serie de valores a través del monitor serie.
Monitor serie |
Con uno o el promedio de estos valores, que en mi caso he utilizado el valor 858000 para redondear, calculamos el valor de la escala que utilizaremos con la siguiente formula:
Fórmula para el cálculo de la ESCALA
|
Con este dato ya obtenido pasamos a programar el sketch que vamos a utilizar para pesar llamado “Balanza_digital_final.ino”, únicamente tendremos que sustituir la cantidad entre paréntesis de la línea de código balanza.set_scale(107250) por el valor que hayamos obtenido nosotros, para que la balanza digital nos pese correctamente. Una vez modificado el valor, validaremos y cargaremos el programa en nuestro Arduino. Una vez que se esté ejecutando el programa en nuestro Arduino debemos de esperar unos instantes hasta que se quite la tara, para que posteriormente aparezca a través del LCD 1602 el peso de cualquier elemento que pongamos sobre la balanza digital, siempre y cuando este no exceda de los 20Kg.
Para realizar los dos programas anteriormente mencionados nos ayudaremos de las funciones ya programadas y definidas para trabajar con el transmisor de celda de carga HX711, que vienen incluidas dentro de la librería #include”HX711.h” que os podréis descargar desde uno de los primeros POST de este BLOG. A continuación os muestro una descripción de las principales funciones con las que se trabaja:
· HX711(byte PinData, byte PinClock): Es el constructor del objeto HX711, se puede trabajar con cualquiera de los pines.
· void tare(byte n): Establece el peso actual como el peso de tara, n indica el número de lecturas que se realizan para obtener la tara, por defecto n=10;
· void set_scale(float scale): Establece el valor de la escala, que es el factor de conversión para convertir valor de lectura en un valor con unidades de peso. Por defecto es scale = 1;
· long read(): Espera hasta que el dispositivo esté listo y devuelve la lectura del ADC del HX711.
· long read_average(byte n): Realiza n veces la lectura del ADC y devuelve el promedio.
· double get_value(byte n): Devuelve el valor actual restando el peso de tara. Equivalente a (read_average() - OFFSET) . Si se especifica un valor de n, devuelve el promedio de n lecturas.
· float get_units(byte n): Devuelve el valor actual restado del peso de tara y dividido por la escala. Es equivalente a (get_value()/SCALE). Si se especifica un valor de n, devuelve el promedio de n lecturas.
Lista de Materiales:
· Arduino UNO Rev.3.
· Cable USB tipo A-B.
· Celda de carga de 20Kg.
· Transmisor de celda de carga HX711.
· Módulo LCM 1602 I2C V1.
· Display 16x2 LCD 1602.
· Estructura de la balanza digital:
o Tablas de DM:
§ 1 de 150x200mm, 1 de 60x75mm y 1 de 60x60mm.
o Tirafondos de cabeza plana:
§ 4 de 3x20mm, 2 de 3x25mm y 2 de 3x35mm.
o Adhesivo de contacto de secado rápido.
· Protoboard.
· Cables de conexión.
Código del programa:
· Balanza_digital_calibrado:
· Balanza_digital_final:
Video:
hola buenas tardes, estoy armando su proyecto pero tengo una duda, porque dice que sirve hasta 20Kgs que tiene que ver si utilizo una celda de mayor capacidad? agradezco su colaboracion.
ResponderEliminarClaramente porque yo utilizo una celda de carga de 20kg. Si utilizas una mayor podrás pesar mayores cantidades
Eliminarok, muchas gracias por la aclaracion pense que era algun tipo de restriccion, ahora que he intentado replicar su proyecto me encuentro que no tengo la misma libreria y no me reconoce balanza.set_Scale me puede colaborar con cual libreria trabaaj ud y si no es mucha molestia una aclaracion si necesitara conectar dos celdas de carga al mismo arduino como podria hacerlo, le agradezco toda su colaboracion
ResponderEliminarSi quieres conectar dos celdas de carga en un mismo Arduino te hacen falta dos HX711 y en la programación tienes que crear dos objetos de ese tipo con las salidas DT y SCK conectadas en diferentes entradas analogicas, por ejemplo para la primera celda A0 y A1, y para la segunda A2 y A3. Las librerías se encuentran dentro de uni de los primeros POST del BLOG (Diciembre de 2015). Saludos
Eliminardisculpa tendras el link de la libreria que utilisaste?
Eliminarhttps://github.com/bogde/HX711
EliminarHola e seguido tu post y trato de implementar el peso de la celda en un pequeño proyecto de auromatizacion pero al tratar de encontrar el valor de encontrar la escala el valor de tara me da 0 o negativo estoy asiendo todo al pie de la letra que ago mal??
ResponderEliminarNo lo se. Revisa las conexiones y la alimentación de la celda de carga y del conversor AD
EliminarHola que tal, me podrías proporcionar los diagramas de conexiones?
ResponderEliminariano del Campo García dijo...
EliminarEstán dentro del programa que tienes en descarga directa. Se encuentran justo debajo de la cabecera del código. Saludos
hola como esta, he seguido el codigo pero necesito calibrar una celda de carga de 1kg como hago?
ResponderEliminarHola tengo una duda, este codigo puede ser utilizado con arduino ,mega??
ResponderEliminarYo tengo ese mismo codigo con una celda de 200kg y la calibro y funciona bien. La pregunta es la siguiente. ¿Porque luego de un tiempo encendida la celda ya empieza a pesar con un faltante (patron de 20 kg y pesa 19.7 o 19.8) o si la enciendo otro dia la calibracion realizada dias anteriores no sirve. Que debo hcer para que la calibracion sirva de forma definitiva?
ResponderEliminarHeriberto, trato de hacer una bascula con una celda de 200 kg, podrías ayudarme con la calibración? Gracias y saludos.
EliminarSólo quiero ver esquema de modo gráfico ya que así por medio de esas líneas no puedo armar este proyecto, osea si teienes el esquema en el programa Fritzing u algo así estimado !! le agradeceré de antemano...
ResponderEliminarMe puedes pasar el código de cómo hago que se ejecute un código cuando llegue a un peso determinado, en este caso 100g y que ese valor se pueda modificar
ResponderEliminarhola amigo me podrias pasar tus librerias ??
ResponderEliminarhttp://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html
Eliminarhola me podrías explicar como conecto la lcd
ResponderEliminarTu LCD 1602 tiene que tener soldado un modulo conversor I2C a sus pines de datos y control. Se hace de manera directa puesto que ya vienen preparados para tal función. Una vez añadido el I2C simplemente tienes que unir los pines SDA y SCL del módulo a los pines I2C de Arduino y alimentar correctamente el LCD. Te recomiendo que visites el POST donde lo explico con más detalle (Diciembre 2015) debtro del BLOG.
ResponderEliminarHola implemente tu programación pero me sale el siguiente error y no se que hacer 'Clase Q2HX711' no tiene ningún miembro llamado 'set_scale'
ResponderEliminarCarga las librerías del siguiente enlace: http://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html
ResponderEliminarHello.as I can not find you the LiquidCrystal_I2C library.h,without it is not working sketch.please give a direct link.
ResponderEliminarya cargue las librerías y me aparece el mismo error me podrías ayudar es urgente exit status 1
ResponderEliminar'class Q2HX711' has no member named 'scale'
I do not understand how where to download the library at this link
ResponderEliminaryo como no entiendo de donde descargar la biblioteca en este enlace
ResponderEliminarHola, me pueden ayudar estoy utilizando una celda de 500kg con el HX711, y me esta dando variaciones de 10 hasta 50 gramos con respecto al patrón de 20kg que utilizo para calibrar la bascula.
ResponderEliminarGracias.
Si es de 500kg es recomendable calibrarla con un peso patron lo más cercano a 500kg y no de 20kg...
ResponderEliminarBuen día, Mariano gracias por responder, tiene lógica tu comentario... pero ahora tengo otro inconveniente es el siguiente... cuando la bascula no tiene ningún peso encima de la celda debería quedar en cero, lo hace por unos segundos luego en pieza a variar hasta quedar en -16 gramos, me puedes guiar mil gracias.
ResponderEliminarEso lo puedes solucionar con un if. If (peso<0) peso =0; para que nunca pueda tener una tara negativa.
EliminarBuenas, me podrias enviar a este correo mendozaoliva22@hotmail.com el codigo donde incluya la parte de que la tara no sea negativa. Agradecería tu Respuesta.
Eliminarayuda por favor,no la puedo encontrar por su referencia a la biblioteca.puede que me envía al correo electrónico evgeniy1966@yandex.ru
ResponderEliminardisculpa tengo una celda de carga de 50kg pero solo tiene 3 cables (negro.rojo.blanco) como lo conecto con el hx711 y cual seria el programa? me puedes ayudar porfabor
ResponderEliminarEnvíame la referencia o modelo de la celda de carga que estás utilizando para intentar ayudarte
Eliminarhttp://www.usinainfo.com.br/sensores-para-arduino/sensor-de-peso-celula-de-peso-50kg-para-arduino-2573.html
Eliminaren ese enlace esta la celda de carga que tengo
espero y me puedas ayudar llevo 2 semanas con el proyecto y mi profesor se esta enojando
pudiste resolverlo :D :o
ResponderEliminarTe envíe el proyecto al correo
Eliminarno lo tengo ni en spam
Eliminarme lo podrias volver a enviar porfavor
Ya no lo tengo yo tampoco. Te lo envíe hace ya meses
EliminarHola ¿Qué voltajes de entrada analógica maneja el HX711? Porque estoy con un proyecto que utiliza un sensor óptico que entrega de 0 a 5V.
ResponderEliminarNo estoy muy seguro pero las celdas de carga (sensores de peso) normalmente se alimentan con 5v en excitación y regresan 2.3v por las señales.
EliminarHola amigo una consulta porque me sale error diciendo que esta variable no esta definida "POSITIVE"
ResponderEliminar// Creación del objeto para el LCD con comunicación I2C
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Instala mis librerías. http://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html
Eliminardisculpa tengo un problema no me muestra nada en el lcd ni el monitor serial cuando ejecuto el programa final
ResponderEliminarSi solo me dices eso no se cual puede ser tu problema. Revisa las conexiones y lo mostrado en el POST. Saludos
Eliminarsolo se puede hacer con el arduino uno?
Eliminarhola, tengo una cosulta estoy haciendo una bascula con capacidad de 80kg pero, se pueden utilizar 4 galgas de 20kg?? al igual que se pueden unir para hacer la sumatoria??
ResponderEliminarClaro que se pueden unir
EliminarBuenas tardes, si deseo utilizar una celda de 200kg, seria el mismo programa? y otra duda se podria implementar un push button para el cambio de kg a libras? Gracias
ResponderEliminarNo soy el del Blog, pero sí se puede utilizar una celda de 200kg sólo que tu resolución debe cambiar ya que si intentas pesar gramos con esta será muy inestable.
EliminarTambién podrías agregar ese botón que mencionas con una simple operación sabiendo que 1kg equivale a 2.2 libras. Saludos
Yo tengo un programa similar, sólo que no logro como hacer para hacer el peso más estable. ¿Alguna idea?
ResponderEliminarHOLA, tengo todo el montaje realizado, le pido serial.println (balanza.read()) y me aparece un numero, el problema esta en que ese numero va decreciendo un monton con el paso de cada segundo sin llegarse a estabilizar nunca. que me puede estar pasando? como puedo solucionarlo? muchas gracias!
ResponderEliminarAlimenta externamente con 5v el HX711 y une la masa junto la del arduino para que la balanza sea mas estable. De todas las maneras esas variaciones van a estar siempre ahi, pero como el HX711 tiene una muy alta resolucion de 24bits no te va a imfluir en la lectura del peso de manera infima. Un saludo
EliminarMariano; Muchas gracias por tu aporte.. Realmente no se nada de Arduino,y es mi primer proyecto
ResponderEliminarModificandole las libreias del LCD y de la celda de carga. Funciona de maravillas.... Me costo mucho integrar mis componentes al Arduino MEGA. pero Funciona.....
Para PABLO,.. tube casi el mismo problema, lo solucione aislando los cables de de la barra al la celda y poniendo cable mallado del DT + SCK al pin A0 y A1
Un abrazo y muchas gracias Mariano...
una Gran contribucion Muchas Gracias , lo que si tengo la duda con la conexion del lcd si me pudieras ayudar estaria agradecido y denuevo gracias por el aporte
ResponderEliminarMuy simple. Conexión I2C con SDA y SCL, solamente cambia en el código la dirección por la de tu LCD, esta todo comentado en el código. En mi BLOG tienes un POST donde se explica como utilizar y configurar el LCD.
EliminarBuenas noches, como podría activar un servo si el peso es menor o igual a 4kg por decir un peso. (de acuerdo a tu programa).
ResponderEliminaragradezco de antemano tu ayuda.
if(balanza.get_value(10) > 4)
ResponderEliminar{
// Activar servo
}
Para activar el servo pasate por el POST https://miarduinounotieneunblog.blogspot.com.es/2016/01/control-del-micro-servo-tower-pro-sg90.html?m=1
mil gracias
ResponderEliminarhola me podrias pasar el circuito, es decir como est conectado con el lcd
ResponderEliminarDentro del código tienes el esquema de montaje, justo en la cabecera del programa en formato ASCII. Saludos
Eliminarmuchas gracias ahora tengo un problema, la libreria del HZ711 me marca error en el codigo justo en donde dice #include "HX711" ya le movi a todo lo que pude y me sigue marcando error al parecer no encuentra la libreria y ya la tengo descargada, seria de gran ayuda tu colaboracion.. gracias
Eliminarhttps://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html
EliminarEn ese enlace muestro cómo se instalan las librerías. Un saludo
HOLA: En las librerías que proporcionas no se encuentra la libreria LiquidCrystal_I2C.h que hay que incluir en la segunda parte en el programa: Balanza_digital_final
ResponderEliminarhttps://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html?m=0
ResponderEliminarEstán correctas las librerías. No falta ninguna
hola Mariano estoy haciendo similar a tu proyecto , es una balanza de 5kg con lcd , que cuando llega a un peso saeteado se abre una compuerta de descarga que vendría a ser un servo , en el lcd me imprimo esto lcd.print(balanza.get_units(1),2) y para que se active el servo hice esto , if (balanza.get_value(10) > 1 ) el servo se activa , mi problema es el siguiente , que el valor que me tira en el display no es el mismo que del if , como podria hacer para preguntar en el if con el valor que me da en el display , estaria muy agradecido si me das una mano vi que tenes muy buena onda para responder a todos espero tu respuesta saludos
ResponderEliminarPara que no te cambie el valor mostrado en el lcd y el utilizado en el if crea una variable, acumula el peso y trabaja solo con ella...
Eliminarfloat peso = balanza.get_units(20);
Luego trabaja con la variable peso para todo lo demas
Disculpa puedes ayudarme me dieron un codigo con un factor de escala de 1525.55 cuando ya tengo el valor me imprime un valor de 800 kg quiero saber que voltaje tuve de entrada para tener esa lectura. no se si me puedes ayudar gracias
ResponderEliminarESCALA = VALOR ADC / PESO PATRON
ResponderEliminarTe falta conocer el peso patron que se ha utilizado para que te de la escala 1525.55. Cuando lo sepas puedes sacar el valor del ADC. Como conoces la resolución del HX711 que es 2^24 y que corresponde a 5V en la entrada, pues con el valor del ADC que tengas obtendrás X voltios en la entrada. ES una regla de tres simple. Un saludo
hola mariano, estoy haciendo este proyecto pero tengo un problema, cuando lo tengo todo conectado y listo para hacer el pesaje voy al monitor serie del arduino y el valor pesado es 0, obviamente el peso que hay encima de la celda de carga no es 0, no se si me podrias ayudar, gracias.
ResponderEliminar* cuando procedemos ha hacer el pesaje el hx711 se calienta bastante, no se si es normal
EliminarPrueba con otro hx711 porque no se debe de calentar en exceso...solucionaste ya lo de la tara??
EliminarBuen día Mariano, tengo una consulta. Que utilidad tienen los valores de 20 en:
ResponderEliminarbalanza.tare(20); // El peso actual es considerado Tara.
lcd.print(balanza.get_units(20),3)
He visto tutoriales donde este valor cambia, pero no explican nada al respecto.
Gracias de antemano. Saludos.
Estimado, estoy utilizando la siguiente celda de carga:
ResponderEliminarhttp://rambal.com/presion-peso-nivel-liquido/271-celda-de-carga-50kg.html
Por lo que he averiguado es la celda de carga que utilizan las balanzas para pesar a personas, por lo que tendría que comprar 4 celdas del mismo tipo y distribuir en una base las 4.
Para la programación, tendría que tener y HX711 para cada una?
o solo con una HX711 puedo integrar las 4 celdas?
Necesito medir mínimo 50kg hacia arrriba, por lo que esas son las únicas accesibles en precio para un proyecto.
Agradezco de ante mano tu ayuda, si tienes mas referencias, ideas, etc y te felicito por el blog!!
saludos!
Buen dia Mariano. Mi nombre es Carlos Casta y de electronica actual conosco ñoco y nada, soy de la epoca del transistor y el c-mos y de programacion ... solo la radio-reloj!!!!. Tu proyecto me parecio super interesante y seria lo que estoy necesitandl en este momento. Tengo que hacer una balsnza que pese hasta 10 kg, con un display y dos botones incrementa/decrece para elegir un peso y cuando mi operario llegue a cargar la bolsa con mi material a pesar me active un relé para manejar una chicharra y una señal luminosa. Existe la posibilidad que me asistas en esto? Muchas gracias por tu atención.
ResponderEliminarhola, genial la explicación, como seria añadir un teclado para definir un set point de dosificado automatico podrias ayudarme con esa programacio por fa? luis_oei_furia@hotmail.com
ResponderEliminarHola, tengo este problema en el "void loop": "Serial.println(balanza.get_value(10),0);
ResponderEliminarMe tira error: "'balanza' was not declared in this scope".Ayuda, por favor. Gracias.
hola buenas tardes, como puedo aumentar la resolución/precisión de mi balanza, deseo hacer una de 2 toneladas con resolución de 500gr. estoy usando el hx711, arduino nano y 4 celdas de carga de 1000 kg. Gracias
ResponderEliminarHola, me marca
ResponderEliminarexit status 1
no matching function for call to 'HX711::HX711(const uint8_t&, const uint8_t&)'
Este informe podría contener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.
Por favor requiero una corrección intento hacer la conexión en proteus y no me da nada en la pantalla que debo hacer para poder inprimim el valor ya que me falta eso para culminar mi trabajo de grado en relación a control de incubación en peso y temperatura jesusfgl1993@gmail.com
ResponderEliminarHola Buen dia.
ResponderEliminartengo una celda de carga de solo tres cables, rojo blanco negro, la conexión varia o solo omito la conexión del verde.
Gracias
buenas noches...
ResponderEliminartengo un problema con un proyecto no se si me podria ayudar.
lo que pasa es que estoy haciendo un selecto de botellas y estoy usando la celda de carga para que reconozca el vidrio atraves de su peso que osila entre los 200 y 250 gramos la cuestion es que necesito que el motor a paso gire 90° cuando esta en ese rango de peso y luego regrese a su posision...
pero no logro programar porque mientras este la botella en en la galga el motor se mantiene en giro constante sin detenerse....
este es el codigo que uso...
#include
//HX711 constructor (dout pin, sck pin)
HX711_ADC LoadCell(6, 7);
int led = 12;
int pin1 = 8;
int pin2 = 9;
int pin3 = 10;
int pin4 = 11;
long t;
float i = 0;
float r = 0;
void setup() {
pinMode(led, OUTPUT);
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
Serial.begin(9600);
Serial.println("ESPERE...");
LoadCell.begin();
long stabilisingtime = 2000; // tare preciscion can be improved by adding a few seconds of stabilising time
LoadCell.start(stabilisingtime);
LoadCell.setCalFactor(638.00); // user set calibration factor (float)
Serial.println("Startup + tare is complete");
}
void loop() {
//update() should be called at least as often as HX711 sample rate; >10Hz@10SPS, >80Hz@80SPS
//longer delay in scetch will reduce effective sample rate (be carefull with delay() in loop)
LoadCell.update();
//get smoothed value from data set + current calibration factor
if (millis() > t + 250) {
float i = LoadCell.getData();
Serial.print("el peso de la botella es: ");
Serial.println(i);
t = millis();
while (i >= 200 && i<=220) {
digitalWrite(led, HIGH);
delay(70);
digitalWrite(led, LOW);
for (int j = 0; j <= 128; j++) {
digitalWrite (pin1, HIGH);
delay(5);
digitalWrite(pin2, HIGH);
delay(5);
digitalWrite(pin1, LOW);
delay(5);
digitalWrite(pin3, HIGH);
delay(5);
digitalWrite(pin2, LOW);
delay(5);
digitalWrite(pin4, HIGH);
delay(5);
digitalWrite(pin3, LOW);
delay(5);
digitalWrite (pin4, LOW);
delay(5);
r=j;
}
i=i-i;
}
if (i >= 200 && i<=220) {
for (int j = 0; j <= r; j++) {
digitalWrite (pin4, HIGH);
delay(5);
digitalWrite(pin3, HIGH);
delay(5);
digitalWrite(pin4, LOW);
delay(5);
digitalWrite(pin2, HIGH);
delay(5);
digitalWrite(pin3, LOW);
delay(5);
digitalWrite(pin1, HIGH);
delay(5);
digitalWrite(pin2, LOW);
delay(5);
digitalWrite (pin1, LOW);
delay(5);
}
r=0;
i=i-i;
}
if (Serial.available() > 0) {
float i;
char inByte = Serial.read();
if (inByte == 't') LoadCell.tareNoDelay();
}
//check if last tare operation is complete
if (LoadCell.getTareStatus() == true) {
Serial.println("Tarádo");
}
}
}
porfavor como puedo hacer
gracias de antemano
Hola buenos días estoy desarrollando un proyecto con celda de cinco kl basado en tu código de calibración lo copió igual pero me sale error en el objeto declarado conn un mensaje de no estatus para Arduino uno que podría ser gracias
ResponderEliminarBuenas tardes disculpe mi pregunta estoy tratando de realizar un proyecto basado a su ejemplo pero cuando cargo la programación para obtener la tara funciona y al cargar la segunda parte me sale error en la línea donde creamos el objeto que podría ser gracias
ResponderEliminarbuenas tardes, excelente tutorial, una pregunta se puede conectar 3 sensores de bascula en un mismo HX711? no deberia haber problema, no por que entiendo que la resistencia se divide entre 3.
ResponderEliminarmuchas gracias