make force setpoint adjustable

master
Eggert Jung 4 years ago
parent 6601ae39f9
commit 5ff3793991

@ -148,6 +148,8 @@ void ioHelperEdgeDetector(void);
#define BTN_SPULENWECHSEL BitPinK0 #define BTN_SPULENWECHSEL BitPinK0
#define BTN_INIT BitPinF4 #define BTN_INIT BitPinF4
#define BTN_KRAFT_PLUS BitPinD7
#define BTN_KRAFT_MINUS BitPinG2
#define IN_TAENZER_HOME BitPinF0 #define IN_TAENZER_HOME BitPinF0
#define IN_SPULE_HOME BitPinF1 #define IN_SPULE_HOME BitPinF1

@ -72,7 +72,7 @@ static void avr_init()
} }
void send_info(void){ void send_info(void){
char msg[6]; char msg[10];
sprintf(msg, "%d", abzug_speed); sprintf(msg, "%d", abzug_speed);
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/abzug/speed", msg, strlen(msg)); mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/abzug/speed", msg, strlen(msg));
@ -86,11 +86,14 @@ void send_info(void){
ltoa(kraftsensor_value, msg, 10); ltoa(kraftsensor_value, msg, 10);
else else
msg[0] = '0'; msg[0] = '0';
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/kraft", msg, strlen(msg)); mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/taenzer/pv_kraft", msg, strlen(msg));
int8_t temp = taenzer_state.pos / 10000; int8_t temp = taenzer_state.pos / 10000;
ltoa(temp, msg, 10); ltoa(temp, msg, 10);
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/speicher/pos", msg, strlen(msg)); mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/taenzer/pos", msg, strlen(msg));
itoa(taenzer_state.force_setpoint, msg, 10);
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/taenzer/sp_kraft", msg, strlen(msg));
sprintf(msg, "%ld", millis()/1000); sprintf(msg, "%ld", millis()/1000);
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/uptime", msg, strlen(msg)); mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/uptime", msg, strlen(msg));

@ -6,11 +6,19 @@
#include <stdlib.h> #include <stdlib.h>
#define TAENZER_KRAFT_SETPOINT 12000
#define TAENZER_KRAFT_HYST 1000
taenzer_state_t taenzer_state; taenzer_state_t taenzer_state;
#define TAENZER_KRAFT_SETPOINT 12000 taenzer_state_t taenzer_state = {
#define TAENZER_KRAFT_HYST 2000 .homed = 0,
.pos = 0,
.force_setpoint = TAENZER_KRAFT_SETPOINT,
};
void send_info(void);
void do_taenzer(){ void do_taenzer(){
/* Homing */ /* Homing */
@ -24,9 +32,22 @@ void do_taenzer(){
taenzer_state.pos = 0; taenzer_state.pos = 0;
} }
if (read_Input(BTN_KRAFT_PLUS, RISING)) {
taenzer_state.force_setpoint += 1000;
#if PLC_MQTT_ENABLED
send_info();
#endif
}
if (read_Input(BTN_KRAFT_MINUS, RISING)) {
taenzer_state.force_setpoint -= 1000;
#if PLC_MQTT_ENABLED
send_info();
#endif
}
/* Force regualtion */ /* Force regualtion */
if(kraftsensor_valid && taenzer_state.homed){ if(kraftsensor_valid && taenzer_state.homed && taenzer_state.pos >= 0 && taenzer_state.pos < 500000){
int16_t err = abs(kraftsensor_value - TAENZER_KRAFT_SETPOINT); int16_t err = (kraftsensor_value - taenzer_state.force_setpoint);
if(err > 8000) if(err > 8000)
err=8000; err=8000;

@ -6,8 +6,8 @@
typedef volatile struct { typedef volatile struct {
uint8_t homed; uint8_t homed;
uint32_t pos; uint32_t pos;
int16_t force_setpoint;
} taenzer_state_t; } taenzer_state_t;
extern taenzer_state_t taenzer_state; extern taenzer_state_t taenzer_state;
void do_taenzer(void); void do_taenzer(void);