Moin,
hab da ein kleines Projekt, bei dem ich nun etwas fest stecke.
Ich plane eine Automatische Druckluftbox:
16x2 LCD Display zur Anzeige von Soll Druck und Ist Druck,
Taster 1 Soll Druck +0,1bar,
Taster 2 Soll Druck -0,1bar,
Taster 3 Start/Stop (befüllen Starten/ Luft ablassen).
Verbaut:
Arduino Nano,
LCD Display mit I2C Schnittstelle,
2 Magnetventile 12V 2,5W,
3 Taster,
Drucksensor 0-10V (-1 bis 10bar Relativdruck),
2 Fach Relaiskarte.
Spannungsversorgung über 12V Akku mit 5V Festspannungsregler zur Versorgung vom Arduino.
Hier mein Aktueller Code:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//=============================================================================
#define Sensor_PIN 0 //==> Daten-Pin für Drucksensor
#define Relais_PIN 6 //==> Pin Druck auffüllen
#define ablass_PIN 7 //==> Pin Druck ablassen
#define Plus_PIN 3 //==> Pin für den Knopf +
#define Minus_PIN 4 //==> Pin für den Knopf -
#define start 0 //==> Start/Soll Druck
#define min -1 //==> MinimalDruck
#define max 10 //==> MaximalDruck
//=============================================================================
int plus;
int minus;
float soll_Druck;
void setup(){
lcd.begin(16, 2);
lcd.backlight();
Serial.begin(9600);
Serial.println(F("Start"));
pinMode(Relais_PIN, OUTPUT);
digitalWrite(Relais_PIN,HIGH);
digitalWrite(ablass_PIN,HIGH);
pinMode(Plus_PIN,INPUT_PULLUP);
pinMode(Minus_PIN,INPUT_PULLUP);
}
void loop()
{
if (soll_Druck == 0){
soll_Druck = start;
}
plus = digitalRead(Plus_PIN);
if (plus == 0)
{
soll_Druck = soll_Druck + 0.1;
}
if (soll_Druck > max)
{
soll_Druck = max;
}
minus = digitalRead(Minus_PIN);
if (minus == 0)
{
soll_Druck = soll_Druck - 0.1;
}
if (soll_Druck < min)
{
soll_Druck = min;
}
int sensorVal=analogRead(A0);
Serial.print("Sensor Value: ");
Serial.print(sensorVal);
Serial.print(" ");
float voltage = (sensorVal*5.0)/1024.0;
float pressure_pascal = (2.0*((float)voltage))*1000000.0; //calibrate here
float pressure_bar = pressure_pascal/10e5;
Serial.print("Druck = ");
Serial.print(pressure_bar);
Serial.print(" bar ");
Serial.print("Soll: ");
Serial.print(soll_Druck);
Serial.print(" bar ");
Serial.println();
lcd.setCursor(0,0);
lcd.print("Ist: ");
lcd.print(String(pressure_bar,1));
lcd.print(" bar ");
lcd.setCursor(0,1);
lcd.print("Soll: ");
lcd.print(String(soll_Druck,1));
lcd.print(" bar ");
if(pressure_bar <= soll_Druck){
digitalWrite(Relais_PIN,HIGH);
}else{
digitalWrite(Relais_PIN,LOW);
}
delay(500);
}
Aktuell habe ich das Problem das beim erreichen vom Soll Druck das Magnetventil zum befüllen im Zustand etwas hin und herspringt.
Start/Stop und ablassen sind dann meine nächsten Baustellen.
Jemand einen Tipp wie ich das beim befüllen raus bekomme ?
Gruß Toroggur