Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Sanguinololu: Heizbett dauerhaft an

geschrieben von ToScH 
Sanguinololu: Heizbett dauerhaft an
20. December 2013 04:30
MoinMoin,

ich habe vor einigen Tagen meinen Prusa i3 erfolgreich zusammengebaut.
Dieser funktioniert auch einwandfrei, bis auf ein Problem:

Das Heizbett habe ich aktuell über einen SevenSwitch (Mosfet-Steuerung) am Heizbett-Ausgang des Sanguinololu 1.3a angeschlossen.
Leider beginnt dieses sofort zu Heizen, sobald der Sangu Strom bekommt und reagiert nicht auf Befehle der Software.
Das Heizen endet auch nicht bei einer eingestellten Temperatur (ab ca. 78 Grad steigt die Temperatur aber nur noch sehr langsam).

Am Heizbett-Ausgang des Sangu messe ich keine Spannung. Daher glaube ich, dass es etwas mit PWM zu tun hat. Aber der SevenSwitch sollte doch eigentlich mit schnellen Schaltzeiten klarkommen.
Als Firmware nutze ich Merlin.
Der Sevenswitch funktioniert alleine (feste Spannung auf Signaleingang) einwandfrei, daher kann es nicht an dessen Signaleingang liegen.

Kann ich nun irgendwie das PWM (PID) anpassen oder den Heizbett-Ausgang auf feste Schaltzeiten setzen?
Oder kann es ein Fehler auf der Platine sein?

Kann mir jemand bei diesem Problem weiterhelfen?


Vielen Dank im Voraus.

Das sind die Einstellungen, die das Heizbett betreffen (sehe ich das richtig, dass dies nur das Hotend betrifft und keine Befehle für das Heizbett vorhanden sind?):
// PID settings:
// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP
#define PID_MAX 255 // limits current to nozzle; 255=full current
#ifdef PIDTEMP
//#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104 sets the output power in %
#define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term
#define K1 0.95 //smoothing factor withing the PID
#define PID_dT ((16.0 * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the

// If you are using a preconfigured hotend then you can use one of the value sets by uncommenting it
// Ultimaker
#define DEFAULT_Kp 22.2
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114

#endif // PIDTEMP


Meine Pins.h sieht momentan so aus (Mainboard ist 62):
#if MOTHERBOARD == 63
#define MELZI
#endif
#if MOTHERBOARD == 62 || MOTHERBOARD == 63
#undef MOTHERBOARD
#define MOTHERBOARD 6
#define SANGUINOLOLU_V_1_2
#endif
#if MOTHERBOARD == 6
#define KNOWN_BOARD 1
#ifndef __AVR_ATmega644P__
#ifndef __AVR_ATmega1284P__
#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
#endif
#endif

#define X_STEP_PIN 15
#define X_DIR_PIN 21
#define X_MIN_PIN 18
#define X_MAX_PIN -1

#define Y_STEP_PIN 22
#define Y_DIR_PIN 23
#define Y_MIN_PIN 19
#define Y_MAX_PIN -1

#define Z_STEP_PIN 3
#define Z_DIR_PIN 2
#define Z_MIN_PIN 20
#define Z_MAX_PIN -1

#define E0_STEP_PIN 1
#define E0_DIR_PIN 0

#define LED_PIN -1

#define FAN_PIN -1

#ifdef MELZI
#define LED_PIN 28
#define FAN_PIN 4
#endif

#define PS_ON_PIN -1
#define KILL_PIN -1

#define HEATER_0_PIN 13 // (extruder)
#define HEATER_1_PIN -1
#define HEATER_2_PIN -1

#ifdef SANGUINOLOLU_V_1_2

#define HEATER_BED_PIN 12 // (bed)
#define X_ENABLE_PIN 14
#define Y_ENABLE_PIN 14
#define Z_ENABLE_PIN 26
#define E0_ENABLE_PIN 14

#else

#define HEATER_BED_PIN 14 // (bed)
#define X_ENABLE_PIN -1
#define Y_ENABLE_PIN -1
#define Z_ENABLE_PIN -1
#define E0_ENABLE_PIN -1



Edit:
Ich habe nun diesen Code hinzugefügt:
// Bed Temperature Control
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
//
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
// shouldn't use bed PID until someone else verifies your hardware works.
// If this is enabled, find your own PID constants below.
//#define PIDTEMPBED
//
//#define BED_LIMIT_SWITCHING

// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current

#ifdef PIDTEMPBED
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4

//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from pidautotune
// #define DEFAULT_bedKp 97.1
// #define DEFAULT_bedKi 1.41
// #define DEFAULT_bedKd 1675.16

// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED


Bei allen drei möglichen Einstellungen (#define PIDTEMPBED aktiv, #define BED_LIMIT_SWITCHING aktiv, oder beide aus) heißt das Heizbet durchgehend.
Wenn ich nun den Autotune-Befehl (M303 E-1 C8 S90) sende, so heißt das Heizbett weiter und das Hotend (!) heißt auf die 90 Grad auf und der Test wird durchgeführt.
Das scheint doch nicht so gewollt zu sein, dass das Hotend und nicht das Heizbett den Test durchläuft, oder?
Auch bei "M303 E-0 C8 S90" oder "M303 E-2 C8 S90" durchläuft das Hotend den Test.


So langsam bin ich mit meinem Latein am Ende...

7-mal bearbeitet. Zuletzt am 20.12.13 10:02.
Re: Sanguinololu: Heizbett dauerhaft an
25. December 2013 05:13
Kann mir wirklich niemand weiterhelfen?

Mir würden auch ein paar Tipps zum Prüfen von defekten Bauteilen oder entsprechende Zeilen für die Firmware reichen.


Vielen Dank im Voraus.
Re: Sanguinololu: Heizbett dauerhaft an
25. December 2013 07:48
moin,

ich habe zwar kein Sanguinololu, aber lade doch einfach das Blink Beispiel aus der Arduino IDE mit dem passenden Heatbed-Pin in den AVR. Geht schnell und einfach.
Dann sollte es sich zeigen ob der Ausgang defekt ist. Habe so herrausbekommen das mein Mega einen Knacks an AD 13 hat.

Frohes Fest
Re: Sanguinololu: Heizbett dauerhaft an
27. December 2013 02:45
Wenn Du nen Sanguinololu 1.3a hast, warum schließt du das HeatedBed nicht auch direkt da an?!?! Zweite Stromversorgung?
Bin selber auf Megatronics umgestiegen, hab aber vorher die Sanguinololu 1.3a an meiner Prusa i3 mit ner von reprapuniverse.com angepaßten Marlin-Firmware betrieben...

Die würd ich mir an deiner Stelle mal testweise installieren und mit nem Multimeter schauen, ob an dem Ausgang überhaupt geschaltet wird...

[reprapuniverse.com]

Peter
Re: Sanguinololu: Heizbett dauerhaft an
30. December 2013 06:01
Hallo,

ich möchte ungern das Heizbett mit 10A über den Sangu laufen lassen.
Die Platine scheint mir in dem Bereich nicht für so hohe Ströme auf Dauer geeignet zu sein.

Jedenfalls habe ich nun das Heizbett auf Pin4 umgeschrieben und damit funktioniert es (allerdings erst beim zweiten Versuch, vielleicht habe das beim ersten das falsche Mainboard erwischt).
Nun kann ich in Ruhe prüfen, was mit den Pin12 los ist.

Aber danke für eure Hilfe !

1-mal bearbeitet. Zuletzt am 30.12.13 06:01.
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen