hola que tal buen día a todos, Les presento un nuevo problema al que me enfrento, es sobre el codigo a realizar para llevar a cabo la lectura de una celda de carga con arduino.
Primeramente les describire con lo que estoy trabajando
Celda de carga Sup 11- 10kg (esta cuenta con 5 cables: Exc+ , Exc- , Sig- ,Sig + y blindaje)
ads1230 convertidor para sensores tipo puente [ este cuenta con las siguientes terminales en un extremo: Exc+ , Exc- , Sig- ,Sig + (aqui es donde se conecta la celda de carga) ]
del otro extremo de mismo integrado estan: Vcc, Gnd, Data out, Serial Clock y power Down.(todas estas conectadas a arduino )
Arduino uno
El desarrolador del ads1230 me dice que debo mandar pulsos a la terminal Serial Clock para poder recibir datos en Data Out. Power Down no lo utilizo (el fabricante me comento que era para ahorrar energia).
Lo que hago es generar un tren de pulsos desde arduino hacia la terminal Serial Clock y habilito un puerto un puerto analogo para adquirir las señales de la terminal Data out
pero no he obtenido ninguna medicion, quiza este yo mal en la forma en que yo interpreto la forma que funciona el ads1230.Espero puedan ayudarme con esto. Gracias y saludos
Aldair16:
... y habilito un puerto un puerto analogo para adquirir las señales de la terminal Data out
pero no he obtenido ninguna medicion,...
Saludos.
Según esto que escribiste asumo que estas tratando de leer la salida del AD1230 como una señal análoga?
Eso me hace pensar que a) No te has puesto a pensar que significa ADC (Conversor análogo digital en español) y b) No leíste el datasheet del micro.
Si necesitas ayuda deberías hacer primero un buen planteamiento, investigar mas del AD1230 y plantear tu código. Para que vayas en camino, este micro, segun su DATASHEET es muy similar al HX711, que yo uso. Busca en mis post un pequeño código que deje y modificalo para tu necesidad
Gracias. tenía esa duda, pero aún sigo con varias. He leído el datasheet del circuito integrado ads1230 pero no logro entender su funcionamiento, estuve buscando por la web algo más didáctico pero no he corrido con suerte. Con respecto a los enlaces que me sugirió surbyte los revise pero solo son muestras de código que la verdad no me satisface solo cargar el codigo a arduino quisiera comprenderlos.
Amigo, para comprender el código debes tener la hoja de datos a un lado y el código delante tuyo.
Y verás como todo se aclara.
SI quieres comienza a hacerlo y lo debatimos.
No puedo hacer mas por tí, aquí esta este código que funciona con un HX711, y creo debe funcionar con tu ADS1230. Solo que nos esta implementado la activación del micro
unsigned long lee_AD(){
unsigned long valor=0;
while(digitalRead(DATA)){ } // En el HX711 espera que indique que la conversion esta lista, para el ADS1230, tal vez no sea necesaria lee el datasheet.
for(int i = 0; i < 20; i++){
digitalWrite(CLOCK, HIGH);
valor= (valor+digitalRead(DATA))<<1;
digitalWrite(CLOCK, LOW);
}
digitalWrite(CLOCK, HIGH);
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
digitalWrite(CLOCK, LOW);
return valor/100;
}
Muy buena explicacion. eso era lo que yo queria entender. estoy acostumbrado a utilizar sensores analogicos donde las señales las mandaba a una entrada analoga de arduino. Apenas me estoy adentrando a los sensores digitales por ejemplo en un sensor de temperatura digital como es que arduino puede saber a que temperatura se encuentra por decirlo asi 40 grados si el sensor solo manda 0 y 1.esto es lo que aun no me queda claro espero contar con su apoyo de antemano muchas gracias a todos los comentarios que algo de ahi he sacado.
En los ADC existen varias interfaces para convertir y obtener los datos. Este es el serial mas simple. Antes estaba el paralelo, donde en uno de 8 bits usaba 8 lineas.
Existen en SPI,i2c, serial. Este en particular es simple porque siempre está conviertiendo y casi no hay que esperar, otros hay que leer una linea para saber que ya terminó la conversion.
Cada vez se me va aclarando mas el panorama, pero aun tengo algunas "lagunas" en esto por ejemplo:
esto es lo que seria para tomar la lectura de un sensor de temperatura analogico de 3 pines Vcc, Gnd, señal.
int sensorPin = A0; //aqui se declara el pin a utilizar
int sensorValue = 0; //aqui se declara y se inicializa variable
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin); //esta es la parte donde se lee la señal enviada por el sensor
sensorValue = (5.0sensorValue100.0)/1024.0; // conversion de lo analogo - digital y °C
Serial.println(sensorValue); //aqui se imprimen los °C en el puerto serial
delay(1000);
}
Lo quisieran es que me pudieran apoyar en un ejemplo de ¿como se haría para lectura de un sensor digital? de tres pines: Vcc, gnd , señal.De antemano muchas gracias por tomarse el tiempo
Que sensor? Cada sensor tiene su protocolo, su forma de enviar los datos, su librería entonces.
Un sensor de temperatura DS18B20 de Dallas no es lo mismo que un DTH-11 para ver Humedad y temperatura, son dos librerías diferentes y dos formas diferentes de leerse.
Gracias surbyte esa pregunta me ha respondido muchas de mis preguntas pues me he puesto a investigar. apenas estoy comprendiendo los sensores digitales por eso me resultaba dificil digerir la informacion.bueno retomando el asunto del programa en arduino para leer celda de carga.donde se localizan las variables para hacer la conversion de los bit a peso, es decir. El voltaje de alimentacion,el peso maximo que soporta la celda, los mV/V y los bits que lee en ese momento. Pues a lo que he investigado estas variables conforman la formula para calcular el peso que se deposita sobre la celda de carga
Para eso tienes que hacer:
Tomas el valor sin carga, luego el valor con un peso conocido guardas esos datos y con ellos haces el calculo de la pendiente. O calcular el valor del escalon y guardar ese dato solo. Y cuando enciendaa tomas el cero y ves la diferencia entre cero y la carga y lo divides por el valor de conversion del escalon y lo multiplicas por el valor del escalon.
Ejemplo cero = 590, carga = 1200. Entonces 1200-590= 610. Valor de conversion del escalo 5. 610/8 = 76,25. Valor del estalon =5. 76,25*5= 381,25 kg.
Esta bien y esos valores en que parte del codigo los modifico? Y que pasa con los valores que se encuentran por la mitad?como sabes que la funcion de transferencia se comporta de forma exponencial o lineal? Si solo se toman los extremos
Las celdas de cargas tiene repuesta lineal, no debes tener problemas con los puntos intermedios, la histeresis, puede corregirse con varios puntos de ajustes, y entonces calculas las pendiente dependiendo de los puntos tomados. Pero eso solo es para procesos de gran exactitud, no con celdas de cargas industriales o comerciales clase IIIS, IIIM o IIIL.
El funcionamiento de la balanza debe ser:
a) Modo pesaje: donde solo tomara los valores guardados del ajuste y hará los cálculos para mostrar el peso colocado.
b) Modo ajuste: donde tendrás que hacer la toma de muestra del cero, o sin carga, y luego colocando la carga leyendo la conversión. Tomaras la diferencia de estos dos valores y esos serán para calcular el escalón.
Porque el escalón? porque así no tendrás que hacer cálculos del porcentaje de la muestra con respecto a la escala. Y puedes hacer ajustes sin necesidad de tener la capacidad máxima programada. Al mismo tiempo poder cambiar el valor de la capacidad sin afectar el ajuste. Recuerda que las celdas deben ser utilizadas a la mitad del rango, para así darle mayor durabilidad y permitir absorber el peso muerto de la plataforma o estructura sin dañarse.