Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Moderator: Co-Administratoren
- kopy
- Beiträge: 121
- Registriert: 28.12.2015, 14:35
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 8 Mal
Re: Spannungsüberwachung HILFE
Hat jemand eine Idee, ich bekomme beim kompilieren immer die gleiche Fehlermeldung.
D:\Arduino\HB-UNI-Sen-VOLT\HB-UNI-Sen-VOLT.ino: In member function 'virtual void MeasureChannel::trigger(as::AlarmClock&)':
HB-UNI-Sen-VOLT:133: error: 'as::Channel<Hal, UList1, as::EmptyList, as::List4, 6, UList0>::DeviceType' has no member named 'broadcastEvent'
if (msgcnt % 20 == 1) device().sendPeerEvent(msg, *this); else device().broadcastEvent(msg, *this);
^
exit status 1
'as::Channel<Hal, UList1, as::EmptyList, as::List4, 6, UList0>::DeviceType' has no member named 'broadcastEvent'
Danke schon mal im voraus, Gerd
D:\Arduino\HB-UNI-Sen-VOLT\HB-UNI-Sen-VOLT.ino: In member function 'virtual void MeasureChannel::trigger(as::AlarmClock&)':
HB-UNI-Sen-VOLT:133: error: 'as::Channel<Hal, UList1, as::EmptyList, as::List4, 6, UList0>::DeviceType' has no member named 'broadcastEvent'
if (msgcnt % 20 == 1) device().sendPeerEvent(msg, *this); else device().broadcastEvent(msg, *this);
^
exit status 1
'as::Channel<Hal, UList1, as::EmptyList, as::List4, 6, UList0>::DeviceType' has no member named 'broadcastEvent'
Danke schon mal im voraus, Gerd
-
- Beiträge: 12084
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 847 Mal
- Danksagung erhalten: 2139 Mal
- Kontaktdaten:
- kopy
- Beiträge: 121
- Registriert: 28.12.2015, 14:35
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 8 Mal
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
habe ich inzwischen an einem anderen PC hinbekommen. Mit neuer LIB.
Wie kriege ich den die an dem anderen Rechner aktualisiert?????
Ach ja. funktioniert schon mal ganz toll. Bin begeistert.
Wie kriege ich den die an dem anderen Rechner aktualisiert?????
Ach ja. funktioniert schon mal ganz toll. Bin begeistert.
-
- Beiträge: 681
- Registriert: 09.12.2019, 21:24
- Hat sich bedankt: 151 Mal
- Danksagung erhalten: 61 Mal
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Im Explorer die Datei lib suchen, bei mir unter Dokumente/Arduino/Lib, die Asksinmaster löschen. Die neue runter laden entpacken und in den Lib Ordner kopieren. Ich hebe mir die alten immer auf.
Gruß Martin
Gruß Martin
Gruß Martin
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Der Sketch funktioniert bei mir mit voltage = random(2300) hervorragend. Danke für eure Mühen.
Habe aber leider nicht verstanden, wie ich den voltage einen Messkanal zuordne.
Bitte um Hinweis, was ich bei den Punkten hinschreiben soll.
Gruß Franz
Habe aber leider nicht verstanden, wie ich den voltage einen Messkanal zuordne.
Bitte um Hinweis, was ich bei den Punkten hinschreiben soll.
Gruß Franz
-
- Beiträge: 1790
- Registriert: 30.08.2017, 23:25
- Hat sich bedankt: 175 Mal
- Danksagung erhalten: 399 Mal
- Kontaktdaten:
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Eventuell hilft das hier weiter:
viewtopic.php?f=76&t=44871&start=40#p510432
viewtopic.php?f=76&t=44871&start=40#p510432
Viele Grüße,
Tom
Tom
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Danke für die schnelle Antwort - war ein Hardwarefehler, Eingang war kurzgeschlossen!
-
- Beiträge: 27
- Registriert: 28.05.2020, 00:07
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 2 Mal
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Hallo,
ich möchte gerne den INA226 einbinden. Im normalen Arduinoumfeld funktioniert der Chip in Verbindung mit der LIB "ina226.h" super.
Leider schaffe ich es nicht, den Sketch von jp112sdl für den INA226 zu ergänzen. Kann mir vielleicht jemand dabei helfen und ein paar Tipps geben?
Der INA226 ist wohl der Nachfolgetyp von TI und liefert hochgenau U,I und P über den I2C-Bus.
Schönen Gruß
Helmut
ich möchte gerne den INA226 einbinden. Im normalen Arduinoumfeld funktioniert der Chip in Verbindung mit der LIB "ina226.h" super.
Leider schaffe ich es nicht, den Sketch von jp112sdl für den INA226 zu ergänzen. Kann mir vielleicht jemand dabei helfen und ein paar Tipps geben?
Der INA226 ist wohl der Nachfolgetyp von TI und liefert hochgenau U,I und P über den I2C-Bus.
Schönen Gruß
Helmut
-
- Beiträge: 12084
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 847 Mal
- Danksagung erhalten: 2139 Mal
- Kontaktdaten:
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Zeig doch mal, wie du es bisher versucht hast
-
- Beiträge: 27
- Registriert: 28.05.2020, 00:07
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 2 Mal
Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"
Hallo Jérôme,
Danke für die Antwort,
ich habe Teile von meinem Arduino-Sketch in Deinen Vorschlag kopiert. Wahrscheinlich mache ich da grundsätzlich etwas falsch.
Hier mal mein kläglicher Versuch:
Danke für die Mühe.
Ist hier mein erster Beitrag/Frage
mfG
Helmut
Danke für die Antwort,
ich habe Teile von meinem Arduino-Sketch in Deinen Vorschlag kopiert. Wahrscheinlich mache ich da grundsätzlich etwas falsch.
Hier mal mein kläglicher Versuch:
Code: Alles auswählen
//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
// 2018-09-14 jp112sdl Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------
// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER
#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>
#include <Register.h>
#include <MultiChannelDevice.h>
#include <INA226.h>
INA226 ina;
// Arduino Pro mini 8 Mhz
// Arduino pin for the config button
#define CONFIG_BUTTON_PIN 8
#define LED_PIN 4
// Number of voltage measurement channels
#define NUM_CHANNELS 2
// number of available peers per channel
#define PEERS_PER_CHANNEL 6
// all library classes are placed in the namespace 'as'
using namespace as;
//Korrekturfaktor der Clock-Ungenauigkeit, wenn keine RTC verwendet wird
#define SYSCLOCK_FACTOR 0.88
// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
{0xF3, 0x4A, 0x00}, // Device ID
"JPVOLT0000", // Device Serial
{0xF3, 0x4A}, // Device Model
0x10, // Firmware Version
0x53, // Device Type
{0x01, 0x01} // Info Bytes
};
/**
Configure the used hardware
*/
typedef AskSin<StatusLed<LED_PIN>, BatterySensor, Radio<AvrSPI<10, 11, 12, 13>, 2>> BaseHal;
class Hal : public BaseHal {
public:
void init (const HMID& id) {
BaseHal::init(id);
// measure battery every 1h
battery.init(seconds2ticks(60UL * 60), sysclock);
battery.low(22);
battery.critical(19);
}
bool runready () {
return sysclock.runready() || BaseHal::runready();
}
} hal;
DEFREGISTER(UReg0, MASTERID_REGS, DREG_LOWBATLIMIT, 0x20, 0x21)
class UList0 : public RegList0<UReg0> {
public:
UList0 (uint16_t addr) : RegList0<UReg0>(addr) {}
bool Sendeintervall (uint16_t value) const {
return this->writeRegister(0x20, (value >> 8) & 0xff) && this->writeRegister(0x21, value & 0xff);
}
uint16_t Sendeintervall () const {
return (this->readRegister(0x20, 0) << 8) + this->readRegister(0x21, 0);
}
void defaults () {
clear();
lowBatLimit(22);
Sendeintervall(180);
}
};
DEFREGISTER(UReg1, 0x01, 0x02, 0x03)
class UList1 : public RegList1<UReg1> {
public:
UList1 (uint16_t addr) : RegList1<UReg1>(addr) {}
void defaults () {
clear();
}
};
class MeasureEventMsg : public Message {
public:
void init(uint8_t msgcnt, uint8_t channel, uint16_t voltage) {
Message::init(0x0e, msgcnt, 0x53, BIDI | WKMEUP, channel & 0xff, (voltage >> 8) & 0xff);
pload[0] = voltage & 0xff;
}
};
class MeasureChannel : public Channel<Hal, UList1, EmptyList, List4, PEERS_PER_CHANNEL, UList0>, public Alarm {
MeasureEventMsg msg;
uint16_t voltage;
uint8_t last_flags = 0xff;
public:
MeasureChannel () : Channel(), Alarm(0), voltage(0) {}
virtual ~MeasureChannel () {}
void measure() {
// HIER DIE MESSUNG DURCHFÜHREN
// Spannung muss mit Faktor 10 übertragen werden
// 12.8V -> voltage = 128;
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
//float voltage = 0; // ?????FEHLER GEFUNDEN float voltage = 0; das war mist!
shuntvoltage = ina226.getShuntVoltage_mV();
busvoltage = ina226.getBusVoltage_V();
current_mA = ina226.getCurrent_mA();
power_mW = ina226.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
voltage = ina.getBusVoltage_V() * 10;
Serial.print("voltage: "); Serial.print(voltage); //Serial.println(" V");
Serial.println("");
voltage = random(2300);
}
virtual void trigger (__attribute__ ((unused)) AlarmClock& clock) {
uint8_t msgcnt = device().nextcount();
measure();
if (last_flags != flags()) {
if (number() == 1) this->changed(true);
last_flags = flags();
}
tick = delay();
msg.init(msgcnt, number(), voltage);
if (msgcnt % 20 == 1) device().sendPeerEvent(msg, *this); else device().broadcastEvent(msg, *this);
sysclock.add(*this);
}
uint32_t delay () {
uint16_t d = (max(10, device().getList0().Sendeintervall()) * SYSCLOCK_FACTOR) + random(10); //add some small random difference between channels
return seconds2ticks(d);
}
void configChanged() {
}
void setup(Device<Hal, UList0>* dev, uint8_t number, uint16_t addr) {
Channel::setup(dev, number, addr);
sysclock.add(*this);
}
uint8_t status () const {
return 0;
}
uint8_t flags () const {
uint8_t flags = this->device().battery().low() ? 0x80 : 0x00;
return flags;
}
};
class UType : public MultiChannelDevice<Hal, MeasureChannel, NUM_CHANNELS, UList0> {
public:
typedef MultiChannelDevice<Hal, MeasureChannel, NUM_CHANNELS, UList0> TSDevice;
UType(const DeviceInfo& info, uint16_t addr) : TSDevice(info, addr) {}
virtual ~UType () {}
virtual void configChanged () {
TSDevice::configChanged();
DPRINT(F("*LOW BAT Limit: "));
DDECLN(this->getList0().lowBatLimit());
this->battery().low(this->getList0().lowBatLimit());
DPRINT(F("*Sendeintervall: ")); DDECLN(this->getList0().Sendeintervall());
}
};
UType sdev(devinfo, 0x20);
ConfigButton<UType> cfgBtn(sdev);
void setup () {
DINIT(57600, ASKSIN_PLUS_PLUS_IDENTIFIER);
sdev.init(hal);
buttonISR(cfgBtn, CONFIG_BUTTON_PIN);
sdev.initDone();
/* // ******************** Configuration INA226 **********************
ina.begin(0x40); //***** Default INA226 address is 0x40 aber auch 0x44 und 0x50
ina.configure(INA226_AVERAGES_16, INA226_BUS_CONV_TIME_1100US,
INA226_SHUNT_CONV_TIME_1100US, INA226_MODE_SHUNT_BUS_CONT);
/***** Calibrate INA226. Rshunt = 0.001 ohm, max zu erwartender Strom = 80A
ina.calibrate(0.001 , 80 );*/
}
void loop() {
bool worked = hal.runready();
bool poll = sdev.pollRadio();
if ( worked == false && poll == false ) {
hal.activity.savePower<Sleep<>>(hal);
}
}
Ist hier mein erster Beitrag/Frage
mfG
Helmut