Mätvärdet är 1000 Torr till ev 0.000 eller bara 0 Torr representerat från sensorn med 10 till (tror jag) 0.000V linjärt, så det får förstås först delas ned till 0 - 5V och sedan i Arduinon multipliceras med 2 för att få ut rätt.
Problemet med Arduinon som jag nu förstått är att den bara bara använder 10-bit A/D men 1023 steg vilket ju då inte fungerar eftersom det inte är jämt delbart. Är det således kört eller finns det genvägar?
Jag hade gärna velat ha de tre decimalerna men är det omöjligt så skiter jag i det och använder bara mellan 1000 och 0 men problem kvarstår ju pga 10-bit.
Är förstås ute efter att varje steg i 10-bit upplösningen motsvarar mätvärdet med 1 Torr/steg på displayen, jag skall använda detta värde direkt för reglergrejer så det är viktigt att tex 500 Torr är 500 Torr och 1 Torr är 1 Torr osv.
Det blir ju dock lite fel pga att det delas upp i 1023 delar.
Nedan kod ger ändock märkligt nog 10.00 med 5V in (skulle väl då bli 10.23?) och 0.00 med 0V in, jag vill inte ha det med decimaler men förstår inte hur det tas bort.
Med 3.3V in ger det sedan 6.65V skiftandes mellan 6.63 - 6.65 vilket inte är acceptabelt, dock kanske bara lite avskärmning som krävs då det är en lite lång sladd som är kopplad, men jag undrar för jag tror inte det är så pass mycket brus på 3.3V linjen på kortet.
Jag måste förstås kunna lita på att den visar rätt.
Kod: Markera allt
#include <LiquidCrystal.h>
LiquidCrystal lcd(40, 42, 28, 26, 24, 22);
void setup() {
lcd.begin(20, 4);
lcd.clear();
lcd.print("Vacuum: Torr");
}
void loop() {
lcd.setCursor(8, 0);
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0/1023*2);
lcd.print(voltage);
delay(500);
}