Hallo,
durch mein LCD Display bin ich auf folgende Problematik gestoßen:
- In dem Moment, wo ich ein 24V Netzteil anschließe, um meine Dosierpumpen zu steuern (über einen ULN 2003, siehe Thread http://arduino.cc/forum/index.php/topic,63225.0.html) stürzt mein DIsplay ab.
- Die Pumpe soll über einen Schalter ein/ausgeschaltet werden. Den Schalter habe ich über einen 10kOhm PullUp Widerstand angeschlossen. (nicht intern). Wenn ich nur den 9V Block am Arduino hängen habe, kann ich schalten wie ich will, das hat keinen Einfluss auf das Display oder den Code. Sofern ich das 24V Netzteil angeschlossen habe, habe ich zum einen Probleme mit dem DIsplay, zum anderen schmiert mir der Arduino nach einer Weile ab.
Ich bin eigentlich ziemlich sicher, dass das kein Softwareproblem mehr ist. Dennoch hier der Code:
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h> // written by mattt on the Arduino forum and modified by D. Sjunnesson
#include <LiquidCrystal.h>
LiquidCrystal lcd(39, 41, 43, 45, 47, 49);
int buttonPin=46;
int buttonState;
int lcdmillis=0;
int pumpe1=35;
void setup()
{
pinMode(13, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(pumpe1, OUTPUT);
digitalWrite(pumpe1, HIGH);
/*
RTC.stop();
RTC.set(DS1307_SEC,10); //set the seconds
RTC.set(DS1307_MIN,01); //set the minutes
RTC.set(DS1307_HR,15); //set the hours
RTC.set(DS1307_DOW,4); //set the day of the week
RTC.set(DS1307_DATE,25); //set the date
RTC.set(DS1307_MTH,6); //set the month
RTC.set(DS1307_YR,11); //set the year
RTC.start();*/
lcd.begin(20, 4);
}
void loop()
{
if (millis() - lcdmillis > 1000) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
lcd.print(":");
lcd.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
lcd.print(":");
lcd.print(RTC.get(DS1307_SEC,false));//read seconds
lcd.print(" "); // some space for a more happy life
lcd.print(RTC.get(DS1307_DATE,false));//read date
lcd.print("/");
lcd.print(RTC.get(DS1307_MTH,false));//read month
lcd.print("/");
lcd.print(RTC.get(DS1307_YR,false)); //read year
lcdmillis=millis();
}
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
digitalWrite(pumpe1, LOW);
}
if (buttonState == HIGH){
digitalWrite(pumpe1, HIGH);
}
}
Ich habe auch verschiedene Anschlüsse des Arduinos ausprobiert: 9v Batterie, USB, 9v Netzteil. Immer das gleiche.
(Langfristig soll es eh über das 9v Netzteil betrieben werden, welches im gleichen Stromkreis (Mehrfachstecker) wie die anderen Netzteile steckt.)
Jetzt die Frage: Was kann bzw muss ich machen, um die Schaltungen untereinander von einander zu trennen?
Nur mal ganz kurz, welche Stromversorger und Verbraucher angeschlossen werden:
- Arduino mit 9V Netzteil
- 3 24V Netzteile für die LED Beleuchtung (per PWM über den TLC 5940 werdn 17 KSQs gesteuert, siehe: TLC 5940 anschließen - #81 by currymuetze - Deutsch - Arduino Forum)
- Ebenfalls über eines der Netzteile die o.g. Pumpensteuerung
- 2* 12v Netzteile für die Steuerung meiner Strömungspumpen (siehe: 6-12 V aquarium strömungspumpe per arduino steuern - #37 by currymuetze - Deutsch - Arduino Forum)
- LCD Display
- OnBoard Batterie für die RTC DS1307
- 2* Funkfernbedienungen zum Schalten von 230v Geräte (siehe: Relais vor einer Konstantstromquelle schalten - #52 by currymuetze - Deutsch - Arduino Forum)
Ich hoffe, ihr könnt mir helfen.
Ich bin u.a. auf diesen Beitrag gestoßen, aber wirklich schlau werd ich nicht daraus:
http://arduino.cc/forum/index.php/topic,59752.0.html
und im englisch sprachigen Bereich hierauf:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1277934223/all
Demnach kann man hier mit Elkos und Kondensatoren etwas erreichen, aber für mich als Laien nicht ganz verständlich.
Bitte helft mir ein wenig weiter.
Gruß
Thorsten