add temperature regulator
This commit is contained in:
13
gefran_gtf.c
13
gefran_gtf.c
@@ -6,10 +6,15 @@ uint16_t gtf_firmware_version(uint8_t address){
|
|||||||
return gtf_read_register(address, GTF_FIRMWARE_VERSION);
|
return gtf_read_register(address, GTF_FIRMWARE_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gtf_init(uint8_t addr){
|
||||||
|
gtf_write_register(addr, 55, 1<<4);
|
||||||
|
gtf_write_register(addr, 56, 0);
|
||||||
|
}
|
||||||
|
|
||||||
uint16_t gtf_read_register(uint8_t address, uint8_t reg){
|
uint16_t gtf_read_register(uint8_t address, uint8_t reg){
|
||||||
uint16_t val = 0;
|
uint16_t val = 0;
|
||||||
readReg(address, reg, 1);
|
readReg(address, reg, 1);
|
||||||
int8_t res = wait_receive(1, &val, 250);
|
int8_t res = wait_receive(1, &val, 50);
|
||||||
|
|
||||||
if(!res)
|
if(!res)
|
||||||
return val;
|
return val;
|
||||||
@@ -19,13 +24,13 @@ uint16_t gtf_read_register(uint8_t address, uint8_t reg){
|
|||||||
|
|
||||||
int8_t gtf_write_register(uint8_t address, uint8_t reg, uint16_t value){
|
int8_t gtf_write_register(uint8_t address, uint8_t reg, uint16_t value){
|
||||||
writeReg(address, reg, value);
|
writeReg(address, reg, value);
|
||||||
return wait_write(100);
|
return wait_write(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t gtf_read_coil(uint8_t address, uint8_t coil){
|
int8_t gtf_read_coil(uint8_t address, uint8_t coil){
|
||||||
uint16_t val=0;
|
uint16_t val=0;
|
||||||
readCoil(address, coil);
|
readCoil(address, coil);
|
||||||
uint8_t res = wait_receive_coil(100);
|
uint8_t res = wait_receive_coil(20);
|
||||||
if(res)
|
if(res)
|
||||||
return -1;
|
return -1;
|
||||||
return val;
|
return val;
|
||||||
@@ -33,7 +38,7 @@ int8_t gtf_read_coil(uint8_t address, uint8_t coil){
|
|||||||
|
|
||||||
int8_t gtf_write_coil(uint8_t address, uint8_t coil, uint8_t val){
|
int8_t gtf_write_coil(uint8_t address, uint8_t coil, uint8_t val){
|
||||||
writeCoil(address, coil, val);
|
writeCoil(address, coil, val);
|
||||||
uint8_t res = wait_write(100);
|
uint8_t res = wait_write(20);
|
||||||
if(res)
|
if(res)
|
||||||
return -1;
|
return -1;
|
||||||
return val;
|
return val;
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define GTF_PV 0
|
||||||
|
#define GTF_OuP 2
|
||||||
#define GTF_FIRMWARE_VERSION 122
|
#define GTF_FIRMWARE_VERSION 122
|
||||||
#define GTF_OPERATING_HOURS 161
|
#define GTF_OPERATING_HOURS 161
|
||||||
#define GTF_BAUDRATE 24
|
#define GTF_BAUDRATE 24
|
||||||
@@ -7,6 +9,7 @@
|
|||||||
#define GTF_POWER 106
|
#define GTF_POWER 106
|
||||||
|
|
||||||
uint16_t gtf_firmware_version(uint8_t address);
|
uint16_t gtf_firmware_version(uint8_t address);
|
||||||
|
void gtf_init(uint8_t addr);
|
||||||
uint16_t gtf_read_register(uint8_t address, uint8_t reg);
|
uint16_t gtf_read_register(uint8_t address, uint8_t reg);
|
||||||
int8_t gtf_write_register(uint8_t address, uint8_t reg, uint16_t value);
|
int8_t gtf_write_register(uint8_t address, uint8_t reg, uint16_t value);
|
||||||
int8_t gtf_read_coil(uint8_t address, uint8_t coil);
|
int8_t gtf_read_coil(uint8_t address, uint8_t coil);
|
||||||
|
|||||||
44
heizung.c
Normal file
44
heizung.c
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#include "gefran_gtf.h"
|
||||||
|
#include "avrIOhelper/io-helper.h"
|
||||||
|
#include "temperature.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
uint8_t heizung_state = 0;
|
||||||
|
uint8_t heizung_ontemp = 0;
|
||||||
|
|
||||||
|
void do_heizung(){
|
||||||
|
|
||||||
|
if(ADC_reading[1] > 69)
|
||||||
|
heizung_ontemp = 1;
|
||||||
|
if(ADC_reading[1] < 66)
|
||||||
|
heizung_ontemp = 0;
|
||||||
|
|
||||||
|
if(heizung_state && !heizung_ontemp){
|
||||||
|
gtf_write_register(5, 56, 500);
|
||||||
|
gtf_write_register(6, 56, 500);
|
||||||
|
gtf_write_register(7, 56, 500);
|
||||||
|
set_Output(LED_HEIZUNG, BLINK);
|
||||||
|
}
|
||||||
|
else if(heizung_state && heizung_ontemp){
|
||||||
|
gtf_write_register(5, 56, 0);
|
||||||
|
gtf_write_register(6, 56, 0);
|
||||||
|
gtf_write_register(7, 56, 0);
|
||||||
|
set_Output(LED_HEIZUNG, ON);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
gtf_write_register(5, 56, 0);
|
||||||
|
gtf_write_register(6, 56, 0);
|
||||||
|
gtf_write_register(7, 56, 0);
|
||||||
|
set_Output(LED_HEIZUNG, OFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(read_Input(BTN_HEIZEN_AN, LEVEL)){
|
||||||
|
heizung_state = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(read_Input(BTN_HEIZEN_AUS, LEVEL)){
|
||||||
|
heizung_state = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
15
main.c
15
main.c
@@ -19,6 +19,7 @@
|
|||||||
#include "modbus-master.h"
|
#include "modbus-master.h"
|
||||||
#include "gefran_gtf.h"
|
#include "gefran_gtf.h"
|
||||||
#include "pumpe.h"
|
#include "pumpe.h"
|
||||||
|
#include "heizung.h"
|
||||||
|
|
||||||
#include "util/delay.h"
|
#include "util/delay.h"
|
||||||
|
|
||||||
@@ -168,11 +169,10 @@ int main()
|
|||||||
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/connected", 1);
|
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/connected", 1);
|
||||||
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/pumpe_warm", -1);
|
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/pumpe_warm", -1);
|
||||||
|
|
||||||
//gtf_write_coil(5, 0, 1);
|
|
||||||
//gtf_write_coil(5, 1, 1);
|
|
||||||
|
|
||||||
//gtf_write_register(5, 54, 6);
|
gtf_init(5);
|
||||||
//gtf_write_register(5, 56, 100);
|
gtf_init(6);
|
||||||
|
gtf_init(7);
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
@@ -191,11 +191,13 @@ int main()
|
|||||||
outStates[3] ^= outStatesBlinking[3];
|
outStates[3] ^= outStatesBlinking[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
if(millis() - timer_send_temps > 500){
|
if(millis() - timer_send_temps > 5000){
|
||||||
timer_send_temps = millis();
|
timer_send_temps = millis();
|
||||||
send_temperatures();
|
send_temperatures();
|
||||||
//printf("gefran firm: 0x%02X\n", gtf_firmware_version(5));
|
//printf("gefran firm: 0x%02X\n", gtf_firmware_version(5));
|
||||||
//printf("gefran stat2: 0x%02X\n", gtf_read_register(5, 102));
|
printf("gefran 5 OuP: 0x%02X\n", gtf_read_register(5, GTF_OuP));
|
||||||
|
printf("gefran 6 OuP: 0x%02X\n", gtf_read_register(6, GTF_OuP));
|
||||||
|
printf("gefran 7 OuP: 0x%02X\n", gtf_read_register(7, GTF_OuP));
|
||||||
//printf("gefran stat3: 0x%02X\n", gtf_read_register(5, 117));
|
//printf("gefran stat3: 0x%02X\n", gtf_read_register(5, 117));
|
||||||
////printf("gefran stell: 0x%02X\n", gtf_read_register(5, 56));
|
////printf("gefran stell: 0x%02X\n", gtf_read_register(5, 56));
|
||||||
////printf("gefran disp: 0x%02X\n", gtf_read_register(5, 0));
|
////printf("gefran disp: 0x%02X\n", gtf_read_register(5, 0));
|
||||||
@@ -223,6 +225,7 @@ int main()
|
|||||||
|
|
||||||
do_pumpe();
|
do_pumpe();
|
||||||
do_notaus();
|
do_notaus();
|
||||||
|
do_heizung();
|
||||||
|
|
||||||
#if PLC_MQTT_ENABLED
|
#if PLC_MQTT_ENABLED
|
||||||
ioHelperSetBit(outStates, LED_BUS_OK, 1);
|
ioHelperSetBit(outStates, LED_BUS_OK, 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user