Paso 3: El código
por Christian Liljedahl
Christian.Liljedahl.dk
Células de carga son lineales. Así que una vez que ha establecido dos pares de datos, puede interpolar el resto.
Paso 1: Subir este sketch a la placa arduino
Necesita dos cargas de bien saben el peso. En este ejemplo A = 10 kg. B = 30 kg
Poner a cargar A
leer la demostración de valor analógico (es analogvalA)
poner en carga B
leer el valor analógico B
Escriba usted los propios valores analógicos aquí
loadA de flotador = 10; kg
int analogvalA = 200; Lectura analógica tomada con cargar A en la celda de carga
Float loadB = 30; kg
int analogvalB = 600; Lectura analógica tomada con carga B en la celda de carga
Subir otra vez el bosquejo y confirmar, que el kilo-lectura de la serie ahora la salida es correcta, utilizando su carga conocida
Float analogValueAverage = 0;
¿Con qué frecuencia hacemos las lecturas?
tiempo = 0; //
int timeBetweenReadings = 200; Queremos una lectura cada 200 ms;
void setup() {}
Serial.Begin(9600);
}
void loop() {}
int analogValue = analogRead(0);
corriente promedio - hay alisar las lecturas un poco
analogValueAverage = 0.99 * analogValueAverage + 0. 01 * analogValue;
¿Es hora de imprimir?
if(Millis() > tiempo + timeBetweenReadings) {}
carga de flotación = analogToLoad(analogValueAverage);
Serial.Print ("analogValue:"); Serial.println(analogValueAverage);
Serial.Print ("cargar:"); Serial.println(Load,5);
tiempo = millis();
}
}
Float analogToLoad(float analogval) {}
utilizando una función de mapa personalizada, porque la función de mapa de arduino estándar sólo utiliza int
carga de flotación = mapfloat (analogval, analogvalA, analogvalB, loadA, loadB);
retorno de carga;
}
Float mapfloat (float x, float in_min, in_max del flotador, flotador out_min, flotador out_max)
{
retorno (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}