2017
|
|
Seit November 2017 ist das Buch Messen, Steuern und Regeln mit Word & Excel als Reprint wieder erhältlich. Seit Erscheinen der Originalausgabe hat sich das Thema gewandelt, was in anderen Titeln berücksichtigt wurde (siehe unten).
Aber auch heute kann mit den Mitteln dieses Buches ein preiswertes Messgerät zur Anwendung gebracht werden, um damit direkt in Word und Excel zu messen, zu steuern und zu regeln.
Im Buch wird das damals aktuelle Interface CompuLab benutzt und von der Anwendungsbibliothek RSAPI.DLL auch besonders unterstützt. Die Hardware ist so nicht mehr erhältlich bzw. nicht verfügbar, lässt sich aber mit einem Arduino nachbilden. Um eine direkte Messung in Excel durchzuführen wären also folgende Komponenten erforderlich:
- Arduino Uno mit Arduino IDE
- Buch-Anwendungsbibliothek RSAPI.DLL
- Microsoft Excel
Damit soll es möglich sein, Messdaten direkt vom Arduino zu erhalten und bei Bedarf auszuwerten. Der Ablauf entspricht den Beschreibungen zum YT-Schreiber in Kapitel 3.
|
Arduino als serielles Interface
|
Ein Arduino wird per USB mit dem PC verbunden und erscheint dort als serielle Schnittstelle. Darauf greift die RSAPI in gewohnter Weise zu, die mit VBA-Makros in Excel aufgerufen werden kann. Um die fertigen eingebauten Interfaceroutinen zu benutzen, soll sich der Arduino so verhalten als sei an der Schnittstelle ein CompuLab angeschlossen. Ein kurzer Sketch erreicht dieses Ziel:
// CLAB_RSAPI17.INO
// Arduino als Compulab-Interface
// in Word und Excel ansprechen
// 2x Analog Eingang mit 8 Bit
// 8x Digital Eingang
// 8x Digitalausgang
// Getestet mit RSAPI.DLL V1.7
// Original nur COM1: bis COM8:
// http://www.hjberndt.de/soft/indexcom.html
// http://www.hjberndt.de
#define AIN1 60
#define AIN2 58
#define DIN 211
#define DOUT 81
//DIGITAL OUT PINS 0 - 7 CLAB
byte Douts[] = {10,11,12,13, 16,17,18,19};
//DIGITAL IN PINS 0 - 7 CLAB
byte Dins[] = { 2, 3, 4, 5, 6, 7, 8, 9};
byte Bits[] = {1,2,4,8,16,32,64,128};
// EXCEL:
// INITCOMPULAB(4)
// DELAY 2000 //!experimental!//
void setup()
{Serial.begin(19200);
for(int i= 0;i<8;i++)pinMode(Douts[i],OUTPUT);
for(int i= 0;i<8;i++)
{pinMode(Dins [i],INPUT);// OPEN IS HIGH
digitalWrite(Dins[i],HIGH); //WITH PULLUP
}
}
void loop()
{int i, inbyte; byte b;
if (Serial.available()>0)
{inbyte=Serial.read(); //data
delay(20);//!experimental!//
switch(inbyte)
{case DIN: for(i=0,b=0;i<8;i++) //PINS to BYTE
b+= (digitalRead(Dins[i])==HIGH?Bits[i]:0);
Serial.write(b);break;
case AIN1: Serial.write(analogRead(A0)>>2);break;
case AIN2: Serial.write(analogRead(A1)>>2);break;
case DOUT: b=Serial.read(); //OUTBYTE
for(i=0;i<8;i++)
digitalWrite(Douts[i],b&Bits[i]?HIGH:LOW);
break;
}
}
}
Dieser Sketch benutzt die 2 Analogeingänge A0 und A1 des Arduino. Die 8 digitalen Ein- und Ausgänge können dem Listing entnommen werden. Wird dieser Sketch in den Arduino übertragen, so kann die RSAPI seriell mit dem Arduino als CompuLab kommunizieren, wenn dieser per USB verbunden ist.
|
Excel ruft Arduino
|
In einem neuen VBA-Modul sind für einen Test folgende Deklarationen erforderlich:
Declare Function INITCOMPULAB% Lib "rsapi" (ByVal x%)
Declare Function AIN% Lib "rsapi" (ByVal x%)
Declare Sub DELAY Lib "rsapi" (ByVal x%)
Damit können nun analoge Messungen nach CompuLab-Manier in Excel durchgeführt werden:
Sub test()
INITCOMPULAB 4
DELAY 2000
For Z = 1 To 10
Cells(Z, 1) = AIN(1) / 51
Cells(Z, 2) = AIN(2) / 51
DELAY 100
Next Z
End Sub
Die RSAPI öffnet hier mit INITCOMPULAB COM4 mit den CompuLab-Parametern und setzt intern die entsprechende Hardware. Der Aufruf von AIN reagiert nun so, als wäre ein CompuLab angeschlossen. Wie man eine Schnittstelle "umlegen" kann, ist hier beschrieben. Die 2 Sekunden Bedenkzeit nach dem Öffnen sollten eingehalten werden.
Der Aufruf des Tests liefert 10 Zeilen mit den Spannungen an A0 und A1 des Arduino in 0,1-Sekunden-Schritten im aktuellen Tabellenblatt.
Excel 15 und Arduino Messwerte |
Mit den wenigen entsprechenden Änderungen, wie oben dargestellt, funktioniert auch der in Kapitel 3 beschriebene TY-Schreiber, wie er auch auf dem Cover dargestellt ist, mit dem Arduino in Excel.
Der obige Sketch liefert die beiden Analogwerte mit AIN (1) und AIN(2) der Arduino Pins A0 und A1. Die Messung erfolgte bei offenem Eingang 1 und mit den 3,3 Volt des Arduino Uno an Eingang 2 (grün).
Um die LED an PIN 13 blinken zu lassen, müsste die sub DOUT aus der DLL deklariert werden, um dann mit DOUT 8 und DOUT 0 die Arduino-LED zu schalten - was ja übrigens auch im Direkt-Fenster funktioniert.
Die Windows-Umgebung besteht aus einem Tablet Dell Venue 8 Pro mit Windows 8.1 und dem mit gelieferten Office mit der Excelversion 15 (2013).
|
Messen und Auswerten
|
Mit dem Arduino und den zwei Bauteilen R = 100 k und C = 10 µF kann in Excel direkt gemessen und ausgewertet werden. Die Trendlinie zeigt das Ergebnis mit Formel:
Zeit in Spalte A, Schaltspannung in Spalte B und Kondensatorspannung in Spalte C
Der Widerstand an A2, Kondensator (+) und Widerstand an A1, Kondensator (-) an GND und eine Brücke von A2 nach A1 stellt den Aufbau dar. A2 ist als Ausgang konfiguriert und wird über A1 gemessen.
Declare Function INITCOMPULAB Lib "rsapi" (ByVal x%) As Integer
Declare Function AIN Lib "rsapi" (ByVal x%) As Integer
Declare Sub DELAY Lib "rsapi" (ByVal x%)
Declare Sub DOUT Lib "rsapi" (ByVal x%)
Declare Sub TIMEINIT Lib "rsapi" ()
Declare Function TIMEREAD Lib "rsapi" () As Long
Const dt = 500
Sub test()
Range("A:C").ClearContents
Range("A1") = "Öffne Schnittstelle": DoEvents
Range("c1") = "COM" + Str(INITCOMPULAB(3))
DELAY 2000
' Aufladen
DOUT 255
TIMEINIT
For Z = 1 To 10
t = TIMEREAD
Cells(Z, 1) = t / 1000
Cells(Z, 2) = AIN(1) / 51
Cells(Z, 3) = AIN(2) / 51
Calculate
While (t + dt) > TIMEREAD
DoEvents
Wend
Next Z
DELAY 2000
' Entladen
DOUT 0
TIMEINIT
For Z = 1 To 10
t = TIMEREAD
Cells(Z, 1) = t / 1000
Cells(Z, 2) = AIN(1) / 51
Cells(Z, 3) = AIN(2) / 51
Calculate
While (t + dt) > TIMEREAD
DoEvents
Wend
Next Z
End Sub
|
Tipps zu aktuellen Office-Versionen ab 201X
|
VBA ist vermutlich aus Sicherheitsüberlegungen von Microsoft versteckt worden. Folgende Schritte stellen den Zustand wieder etwas her: Im Office-Menü Datei/Optionen/Menüband anpassen im rechten Teil den Haken bei Entwicklertools setzen. Im jetzt sichtbaren Menu Entwicklertools die Makro-Sicherheit entsprechend einstellen und die Anwendung neu starten. Exceldateien als *.xlsm speichern, da sonst die Makros fehlen. Falls, auf Grund von Restiktionen, die DLL nicht in das Windowsverzeichnis kopiert werden kann, läßt sich die DLL von beliebiger Stelle aus aufrufen, wenn dieser Pfad in jeder Deklaration richtig angegeben ist, wie z.B.: Declare Sub DELAY Lib "E:\Test\rsapi.dll" (ByVal x%) |
|
Hier also die Schnittmenge der beiden Bücher Messen Steuern Regeln mit Smartphone und Tablet und Messen, Steuern und Regeln mit Word & Excel.
Der neuere Titel beinhaltet auch die Boards ESP8266 und Digispark mit deren Programmierbarkeit und Anwendungen in diesem Kontext - lässt aber die RSAPI außen vor. Es ist durchaus möglich den Sketch für diese Hardware und deren Anschlüsse leicht anzupassen und damit auch diese beiden Hardware-Elemente als CompuLab auf die Bühne von Word & Excel zu heben.
|
|
|
Weitere Bücher
Weitere Software
|