zwischenstand
This commit is contained in:
parent
c200f5da63
commit
7a1efabe49
13
driver/examples/pegel/gnuplotscript.gp
Normal file
13
driver/examples/pegel/gnuplotscript.gp
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
set margin 10,10
|
||||||
|
unset key
|
||||||
|
set grid
|
||||||
|
set title ''
|
||||||
|
set xlabel 'U_{OUT} [V]'
|
||||||
|
set ylabel 'U_{IN} [V]'
|
||||||
|
set xrange [0:5]
|
||||||
|
set yrange [0:5]
|
||||||
|
set label at 5,5 ' [V] = 0' left
|
||||||
|
unset output
|
||||||
|
set terminal qt
|
||||||
|
unset output
|
||||||
|
plot "/tmp/tempfile0" using ($1*0.004888):($2*0.004888) binary format="%int16%int16" endian=big title ' [V] = 0' w l
|
|
@ -4,175 +4,40 @@
|
||||||
#include <b15f/plottyfile.h>
|
#include <b15f/plottyfile.h>
|
||||||
|
|
||||||
|
|
||||||
void kennlinieErsterQuadrant()
|
|
||||||
{
|
|
||||||
|
|
||||||
B15F& drv = B15F::getInstance();
|
|
||||||
PlottyFile pf;
|
|
||||||
|
|
||||||
uint16_t ba[1024];
|
|
||||||
uint16_t bb[1024];
|
|
||||||
|
|
||||||
const uint16_t sample_count = 1024;
|
|
||||||
const uint16_t delta = 1;
|
|
||||||
|
|
||||||
const uint16_t u_gs_start = 440;
|
|
||||||
const uint16_t u_gs_delta = 20;
|
|
||||||
const uint16_t u_gs_end = 600;
|
|
||||||
|
|
||||||
pf.setUnitX("V");
|
|
||||||
pf.setUnitY("mA");
|
|
||||||
pf.setUnitPara("V");
|
|
||||||
pf.setDescX("U_{DS}");
|
|
||||||
pf.setDescY("I_D");
|
|
||||||
pf.setDescPara("U_{GS}");
|
|
||||||
pf.setRefX(5);
|
|
||||||
pf.setRefY(50);
|
|
||||||
pf.setParaFirstCurve(u_gs_start);
|
|
||||||
pf.setParaStepWidth(u_gs_delta);
|
|
||||||
|
|
||||||
uint8_t curve = 0;
|
|
||||||
|
|
||||||
std::cout << "Erfasse Kennlinie erster Quadrant..." << std::endl << std::flush;
|
|
||||||
|
|
||||||
for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta)
|
|
||||||
{
|
|
||||||
drv.analogWrite1(u_gs);
|
|
||||||
|
|
||||||
drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count);
|
|
||||||
|
|
||||||
for(uint16_t k = 0; k < sample_count; k++)
|
|
||||||
{
|
|
||||||
uint16_t i_d = ba[k] - bb[k];
|
|
||||||
uint16_t u_ds = bb[k];
|
|
||||||
pf.addDot(Dot(u_ds, i_d, curve));
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush;
|
|
||||||
|
|
||||||
curve++;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "\033[1K\r" << std::flush;
|
|
||||||
|
|
||||||
// speichern und plotty starten
|
|
||||||
pf.writeToFile("test_plot");
|
|
||||||
pf.startPlotty("test_plot");
|
|
||||||
}
|
|
||||||
|
|
||||||
void kennlinieZweiterQuadrant()
|
|
||||||
{
|
|
||||||
B15F& drv = B15F::getInstance();
|
|
||||||
PlottyFile pf;
|
|
||||||
|
|
||||||
uint16_t ba[1024];
|
|
||||||
uint16_t bb[1024];
|
|
||||||
|
|
||||||
const uint16_t sample_count = 1024;
|
|
||||||
const uint16_t delta = 1;
|
|
||||||
|
|
||||||
const uint16_t u_gs_start = 300;
|
|
||||||
const uint16_t u_gs_delta = 25;
|
|
||||||
const uint16_t u_gs_end = 700;
|
|
||||||
|
|
||||||
pf.setQuadrant(2);
|
|
||||||
pf.setUnitX("V");
|
|
||||||
pf.setUnitY("mA");
|
|
||||||
pf.setUnitPara("V");
|
|
||||||
pf.setDescX("U_{GS}");
|
|
||||||
pf.setDescY("I_D");
|
|
||||||
pf.setDescPara("U_{DS}");
|
|
||||||
pf.setRefX(5);
|
|
||||||
pf.setRefY(50);
|
|
||||||
pf.setParaFirstCurve(u_gs_start);
|
|
||||||
pf.setParaStepWidth(u_gs_delta);
|
|
||||||
|
|
||||||
uint8_t curve = 0;
|
|
||||||
|
|
||||||
std::cout << "Erfasse Kennlinie zweiter Quadrant..." << std::endl << std::flush;
|
|
||||||
|
|
||||||
for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta)
|
|
||||||
{
|
|
||||||
drv.analogWrite1(u_gs);
|
|
||||||
|
|
||||||
drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count);
|
|
||||||
|
|
||||||
curve = 0;
|
|
||||||
for(uint16_t k = 0; k < sample_count; k++)
|
|
||||||
{
|
|
||||||
if(ba[k] > bb[k] && bb[k] % 50 == 0 && bb[k] != 0)
|
|
||||||
{
|
|
||||||
uint16_t i_d = ba[k] - bb[k];
|
|
||||||
pf.addDot(Dot(u_gs, i_d, bb[k] / 50));
|
|
||||||
}
|
|
||||||
curve++;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "\033[1K\r" << std::flush;
|
|
||||||
|
|
||||||
// speichern und plotty starten
|
|
||||||
pf.writeToFile("test_plot");
|
|
||||||
pf.startPlotty("test_plot");
|
|
||||||
}
|
|
||||||
|
|
||||||
void testFunktionen()
|
|
||||||
{
|
|
||||||
B15F& drv = B15F::getInstance();
|
|
||||||
|
|
||||||
std::cout << "DIP-Switch: " << (int) drv.readDipSwitch() << std::endl;
|
|
||||||
|
|
||||||
|
|
||||||
drv.digitalWrite0(0xFF);
|
|
||||||
drv.analogWrite0(128);
|
|
||||||
std::cout << (int) drv.digitalRead0() << std::endl;;
|
|
||||||
std::cout << "adc: " << (int) drv.analogRead(4) << std::endl;
|
|
||||||
|
|
||||||
drv.digitalWrite0(0x00);
|
|
||||||
drv.analogWrite0(0);
|
|
||||||
std::cout << (int) drv.digitalRead0() << std::endl;;
|
|
||||||
std::cout << "adc: " << (int) drv.analogRead(4) << std::endl;
|
|
||||||
|
|
||||||
drv.digitalWrite0(0xFF);
|
|
||||||
drv.analogWrite0(255);
|
|
||||||
std::cout << (int) drv.digitalRead0() << std::endl;
|
|
||||||
std::cout << "adc: " << (int) drv.analogRead(4) << std::endl;
|
|
||||||
|
|
||||||
|
|
||||||
std::cout << "Kennlinie..." << std::endl;
|
|
||||||
uint16_t a[1024];
|
|
||||||
uint16_t b[1024];
|
|
||||||
drv.analogSequence(0, &a[0], 0, 1, &b[0], 0, 0, 1, 1024);
|
|
||||||
|
|
||||||
/*for(uint16_t i= 0; i < sizeof(a) / sizeof(uint16_t); i++)
|
|
||||||
{
|
|
||||||
std::cout << (int) i << " : " << a[i] << " " << b[i] << std::endl;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
//testFunktionen();
|
|
||||||
//kennlinieZweiterQuadrant();
|
|
||||||
|
|
||||||
B15F& drv = B15F::getInstance();
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
//uint8_t be0 = drv.digitalRead0();
|
|
||||||
//uint8_t be1 = drv.digitalRead1();
|
|
||||||
//uint8_t dsw = drv.readDipSwitch();
|
|
||||||
drv.analogRead(0);
|
|
||||||
drv.analogRead(1);
|
|
||||||
drv.analogRead(2);
|
|
||||||
drv.analogRead(3);
|
|
||||||
drv.analogRead(4);
|
|
||||||
drv.analogRead(5);
|
|
||||||
drv.analogRead(6);
|
|
||||||
drv.analogRead(7);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Schluss." << std::endl;
|
B15F& drv = B15F::getInstance();
|
||||||
|
PlottyFile pf;
|
||||||
|
|
||||||
|
uint16_t ba[1024];
|
||||||
|
uint16_t bb[1024];
|
||||||
|
|
||||||
|
const uint16_t sample_count = 1024;
|
||||||
|
const uint16_t delta = 1;
|
||||||
|
|
||||||
|
pf.setUnitX("V");
|
||||||
|
pf.setUnitY("V");
|
||||||
|
pf.setUnitPara("V");
|
||||||
|
pf.setDescX("U_{OUT}");
|
||||||
|
pf.setDescY("U_{IN}");
|
||||||
|
pf.setDescPara("");
|
||||||
|
pf.setRefX(5);
|
||||||
|
pf.setRefY(5);
|
||||||
|
pf.setParaFirstCurve(0);
|
||||||
|
pf.setParaStepWidth(0);
|
||||||
|
|
||||||
|
uint8_t curve = 0;
|
||||||
|
|
||||||
|
|
||||||
|
drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count);
|
||||||
|
|
||||||
|
for(uint16_t x = 0; x < sample_count * delta; x += delta)
|
||||||
|
{
|
||||||
|
pf.addDot(Dot(x, ba[x], curve));
|
||||||
|
}
|
||||||
|
|
||||||
|
// speichern und plotty starten
|
||||||
|
pf.writeToFile("test_plot");
|
||||||
|
pf.startPlotty("test_plot");
|
||||||
}
|
}
|
||||||
|
|
BIN
driver/examples/pegel/test_plot
Normal file
BIN
driver/examples/pegel/test_plot
Normal file
Binary file not shown.
|
@ -9,7 +9,8 @@ COMPILER_PATH = g++
|
||||||
# Options
|
# Options
|
||||||
LIB_DRV = ../lib/libb15fdrv.so
|
LIB_DRV = ../lib/libb15fdrv.so
|
||||||
LIB_PATH = /usr/lib/
|
LIB_PATH = /usr/lib/
|
||||||
INCLUDE_PATH = /usr/include/b15f
|
INCLUDE_PATH = /usr/include/b15f/
|
||||||
|
BIN_PATH = /usr/bin/
|
||||||
OBJ_MAIN = main.o
|
OBJ_MAIN = main.o
|
||||||
OUT_CLI = ../bin/cli.elf
|
OUT_CLI = ../bin/cli.elf
|
||||||
OBJ_CLI = cli.o
|
OBJ_CLI = cli.o
|
||||||
|
@ -35,6 +36,7 @@ install: drv
|
||||||
cp $(LIB_DRV) $(LIB_PATH)
|
cp $(LIB_DRV) $(LIB_PATH)
|
||||||
mkdir -p $(INCLUDE_PATH)
|
mkdir -p $(INCLUDE_PATH)
|
||||||
cp drv/*.h $(INCLUDE_PATH)
|
cp drv/*.h $(INCLUDE_PATH)
|
||||||
|
cp plotty $(BIN_PATH)
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "This Makefile compiles the b15f driver lib and command line interface (CLI):"
|
@echo "This Makefile compiles the b15f driver lib and command line interface (CLI):"
|
||||||
|
|
|
@ -192,7 +192,7 @@ void PlottyFile::writeToFile(std::string filename)
|
||||||
|
|
||||||
void PlottyFile::startPlotty(std::string filename)
|
void PlottyFile::startPlotty(std::string filename)
|
||||||
{
|
{
|
||||||
int code = system(("./plotty --in " + filename).c_str());
|
int code = system(("plotty --in " + filename).c_str());
|
||||||
if(code)
|
if(code)
|
||||||
throw std::runtime_error("Fehler beim Aufruf von plotty");
|
throw std::runtime_error("Fehler beim Aufruf von plotty");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue