skorpi08:
Das SSR wird aber nicht geschaltet.
Pin3->SSR+
GND->SSR-
Viel kann man ja bei der Verdrahtung nicht falsch machen also muss es am Code liegen.
Ich würde mal kontrollieren, wo Du in Deinem Code den pinMode für das Relay auf OUTPUT setzt.
Gut, bei Analogen Pins muss man ja nicht extra als Output setzen, da hatte ichs nämlich als erstes probiert.
Und ich meine ich hatte denselben Sketch schon mal mit einem Poti anstatt DS18B20 am laufen.
/********************************************************
* PID RelayOutput Example
* Same as basic example, except that this time, the output
* is going to a digital pin which (we presume) is controlling
* a relay. the pid is designed to Output an analog value,
* but the relay can only be On/Off.
*
* to connect them together we use "time proportioning
* control" it's essentially a really slow version of PWM.
* first we decide on a window size (5000mS say.) we then
* set the pid to adjust its output between 0 and that window
* size. lastly, we add some logic that translates the PID
* output into "Relay On Time" with the remainder of the
* window being "Relay Off Time"
********************************************************/
#include <PID_v1.h>
#define PIN_INPUT 0
#define RELAY_PIN 6
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
//Specify the links and initial tuning parameters
double Kp=2, Ki=5, Kd=1;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
int WindowSize = 5000;
unsigned long windowStartTime;
void setup()
{
windowStartTime = millis();
//initialize the variables we're linked to
Setpoint = 100;
//tell the PID to range between 0 and the full window size
myPID.SetOutputLimits(0, WindowSize);
//turn the PID on
myPID.SetMode(AUTOMATIC);
}
void loop()
{
Input = analogRead(PIN_INPUT);
myPID.Compute();
/************************************************
* turn the output pin on/off based on pid output
************************************************/
if (millis() - windowStartTime > WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
if (Output < millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);
else digitalWrite(RELAY_PIN, LOW);
}
Habe aber den Pin auch als OUTPUT gesetzt, kein Unterschied.
SSR funzt aber, mit GND und 5V getestet.
Am Pin kommen 0.15V