2024
HOME

Ergänzung zum Buch: MSR mit Word & Excel 4
Ultraschall in Office
Messdaten live in Word & Excel via USB ohne zusätzlichen Mikrocontroller

Bit-Schreiber Red Needle

Das sehr preiswerte Modul SR04M kann eigenständig laufende Messwerte seriell ausgeben. Mit einem FTDI-Adapter, wie er im Buch mehrfach zum Einsatz kommt, landen die RX/TX-Daten direkt über USB am PC an einer seriellen Schnittstelle. Ein kurzes VBA-Makro fängt die Daten ein.

Die beiden Platinen verbinden sich mit den vier Leitungen: 5V, TX, RX und GND, wobei die beiden mittleren seriellen Leitungen gekreuzt werden müssen. Das US-Board verfügt über einen eigenen STM8S-Controller, der beim Einschalten zunächst die beiden links neben der Masse angebrachten Anschlüsse für einen R19 überprüft. Im Auslieferungszustand ist dort kein Widerstand eingebaut und das Modul benutzt die RX/TX-Pins als Trigger/Echo, wie bei dem noch mehr verbreiteten US-Sensor HC-SR04 mit getrennter Sende- und Empfangs-Kapsel. Ist dort ein 0 Ohm Widerstand, bzw. eine Brücke eingebaut, arbeitet das Board im Modus 5. Dabei sendet die Platine nach einer Aufforderung auf der Sendeleitung Adapter und Empfangsleitung Modul durch ein Zeichen oder Byte (z. B. 0x01) das Messergebnis als Zeichenkette der Form "Gap=1678mm" auf der anderen Leitung zurück. Dabei handelt es sich vermutlich um den Abstand in Luft bei einer Temperatur von 20 °C. Bei anderen Temperaturen oder Medien muss umgerechnet werden.

Ist der US-Kopf angesteckt, Adapter und Platine korrekt verbunden, die Brücke bei R19 gelegt und der PC per USB mit dem Adapter verbunden, so kann nun über den neuen COM-Anschluss gemessen werden:

Erster Test mit COM15:

'US Measuring Transducer Sensor Model: AJ -SR04M

Sub dist()
 If OPENCOM("COM15:9600,N,8,1") < 1 Then MsgBox "Fehler": End
 SENDBYTE 1
 A$ = "xxxxxxxxxxxxxxxx" 'Platzhalter
 Result = Left(A$, READSTRINGNL(A$))
 Debug.Print Result ' Gap=1464mm
End Sub

Soll die Messwertanzeige dynamisch in einem Dialog, wie weiter oben dargestellt erfolgen, so ist hier der Quelltext für eine UserForm2 mit den Elementen Label1, Label4 und CommandButton1, sowie den in einem anderen Modul deklarierten Aufrufen der RSAPI64.

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Dim t0

Private Sub CommandButton1_Click()
  End
  'Selection.TypeText Text:=Label1.Caption + Chr(9) + Label1.Caption + Chr(11)
End Sub

Private Sub UserForm_Activate()
  If OPENCOM("COM15:9600,N,8,1") < 1 Then MsgBox "Fehler": End
  w0 = Label4.Width
  t0 = Timer
  While UserForm2.Visible
    DoEvents
    SENDBYTE 1
    Label4.BackColor = &HC00000
    A$ = "xxxxxxxxxxxxxxxx" 'Platzhalter
    Result = Left(A$, READSTRINGNL(A$))
    Result = Replace(Result, "Gap=", "")
    Result = Replace(Result, "mm", "")
    If Result <= 200 Then Label4.BackColor = &HFF&
    Label1.Caption = Format(Result / 1000, "0.000") + " m"
    Label4.Width = w0 * Result / 8000
   Sleep 200
 Wend
End Sub


												
Obige Zeilen ergänzen die Ausführungen von Kapitel 5, in dem verschiedene externe Daten direkt über die seriellen Leitungen eingelesen werden. Das Auslesen eines GPS-Sensors in 5.2 oder eines Messgerätes in 5.3 verwenden das gleiche Prinzip.

LibreOffice und Calc kann Messdaten ebenfalls seriell direkt verarbeiiten und das auch ohne RSAPI und auch auf Linux.


												

												


MSR mit Word und Excel 4
MSR mit LibreOffice
Mehr Software

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt