Compare commits
5 Commits
c8b985ccff
...
c9b79e7339
| Author | SHA1 | Date | |
|---|---|---|---|
| c9b79e7339 | |||
| a103131163 | |||
| db6f03ef97 | |||
| 54572ac7f2 | |||
| f8f515dc59 |
3
Makefile
3
Makefile
@@ -38,6 +38,9 @@ load: $(BUILDDIR)/$(TARGET).hex
|
|||||||
|
|
||||||
program: clean load
|
program: clean load
|
||||||
|
|
||||||
|
reset:
|
||||||
|
avrdude -p $(PROGC) -c $(TOOL)
|
||||||
|
|
||||||
size: $(BUILDDIR)/$(TARGET).elf
|
size: $(BUILDDIR)/$(TARGET).elf
|
||||||
avr-size -C --mcu=$(MCU) $(BUILDDIR)/$(TARGET).elf
|
avr-size -C --mcu=$(MCU) $(BUILDDIR)/$(TARGET).elf
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
@@ -25,21 +27,42 @@ void kraftsensor_init(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void do_kraftsensor(){
|
void do_kraftsensor(){
|
||||||
|
static int32_t last_read;
|
||||||
|
static int32_t old_value;
|
||||||
uint16_t m_data[4];
|
uint16_t m_data[4];
|
||||||
|
int32_t kraftsensor_read;
|
||||||
|
|
||||||
/* read 2 16bit values and merge to 32bit signed integer */
|
/* read 2 16bit values and merge to 32bit signed integer */
|
||||||
readReg(1,0,2);
|
readReg(1,0,2);
|
||||||
if(wait_receive(2, m_data, 10)){
|
if(wait_receive(2, m_data, 100)){
|
||||||
kraftsensor_valid = 0;
|
kraftsensor_valid = 0;
|
||||||
printf("modbus error\n\r");
|
printf("modbus error\n\r");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
kraftsensor_valid = 1;
|
kraftsensor_valid = 1;
|
||||||
int32_t tmp = (uint32_t)m_data[0]<<16;
|
int32_t tmp = (uint32_t)m_data[1]<<16;
|
||||||
tmp |= m_data[1];
|
tmp |= m_data[0];
|
||||||
|
|
||||||
|
//kraftsensor_value = tmp;
|
||||||
/* conversion magic to milliNewton */
|
/* conversion magic to milliNewton */
|
||||||
kraftsensor_value = ((tmp + 539363)*9.81)/177.380;
|
kraftsensor_read = ((tmp + 197700 /*539363*/)*9.81)/177.380;
|
||||||
|
|
||||||
|
if(abs(kraftsensor_read - old_value) > 10000){
|
||||||
|
if(abs(last_read - kraftsensor_read) > 10000){
|
||||||
|
kraftsensor_value = old_value;
|
||||||
|
printf("delta: %d\tvalue:%ld\n", kraftsensor_read - old_value, kraftsensor_read);
|
||||||
|
printf("spike\n");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
kraftsensor_value = kraftsensor_read;
|
||||||
|
printf("jump\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
kraftsensor_value = kraftsensor_read;
|
||||||
|
}
|
||||||
|
last_read = kraftsensor_read;
|
||||||
|
old_value = kraftsensor_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -50,8 +73,9 @@ uint8_t wait_receive(uint8_t len, uint16_t dest[], uint8_t timeout){
|
|||||||
while(!receiveOkay && breaker) { //wait for client response, time out after 1s
|
while(!receiveOkay && breaker) { //wait for client response, time out after 1s
|
||||||
breaker--;
|
breaker--;
|
||||||
_delay_ms(1);
|
_delay_ms(1);
|
||||||
|
if(breaker==0)
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
printf("breaker: %d\n\r", breaker);
|
|
||||||
|
|
||||||
if(receiveOkay) { //if this fails, there was either no response or a crc error
|
if(receiveOkay) { //if this fails, there was either no response or a crc error
|
||||||
if(rxbuffer[1]&0x80) { //client responded with an error code
|
if(rxbuffer[1]&0x80) { //client responded with an error code
|
||||||
|
|||||||
2
main.c
2
main.c
@@ -72,7 +72,7 @@ static void avr_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void send_info(void){
|
void send_info(void){
|
||||||
char msg[4];
|
char msg[6];
|
||||||
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));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user