Ultraschall-Entfernungsmessung mit Conrad C-Control V1.1 und Ultraschall-Empfangs-/Sendeeinheit HC-SR04
-------------------------------------------------------------------------------------------------------

M.Piering, 01/2021...02/2022

Disclaimer:
Die Erarbeitung der vorliegenden Arbeitsergebnisse erfolgte nach bestem Wissen und Gewissen.
Trotzdem knnen eventuelle Schden durch den Nutzer dieser Informationen und Software nicht ausgeschlossen werden.
Keine bernahme der Verantwortung fr Schden jeglicher Art durch den Author.

Die Informationen und die Dateien knnen frei fr die Gemeinschaft genutzt und -gemeinsam und vollstndig- weitergegeben werden.
Keine, wie auch immer geartete, kommerzielle Nutzung als auch Nutzung in sicherheitsrelevanten bzw. medizinischen Anwendungen erlaubt.

Hardware:
- Conrad C-Control V1.1 Main-Unit (getestet auf Starterboard); sollte auch mit M-Unit und Station 1 funktionieren,
- Ultraschall Sensor Modul Platine JOY-IT LINKER SEN-US01 (Baugleich HC-SR04); Pollin Bestellnummer 810481,
- Kabel aus Busch Elektronikbox zum verbinden von CC1 und US-Modul

Dateien:
- "lies_mich.txt", diese Datei.
- "SR04_002.ASM", Assembler-Routine zum Messen der US-Laufzeit,
- "SR04_002.s19", assemblierte Routine im S19-Format zum einbinden in CCBASIC-Programm,
- "SR04LAD.ASM", Assembler-Programm zum Einbinden der Messroutine in TCAP-Interrupt,
- "SR04LAD.lst", Listing des Assemblerprogramms; der im Listing kommentierte Maschinencode wird ber den CCBASIC auf den Stack ab Adresse $91 geladen und
  mittels SYS-Befehl ausgefhrt,
- "HC_SR04_Messung_Rev0_2.BAS", CCBASIC-Programm zur kontinuierlichen Entfernungsmessung; Formatierung der gemessenen Entfernung in [cm] und Aus-
  gabe auf serielle Schnittstelle,
- "Fehlerabschtzung.xls", Abschtzung des entstehenden Fehlers durch vereinfachte Umrechnung der gemessenen Laufzeit (Vielfache von 2us) in eine
  Entfernung [cm]; siehe Kommentare im CCBASIC-Programm

Beschaltung:
HC-SR04
- "VCC" an 5V Versorgung (nicht von CC1-Portpin nehmen, da Stromaufnahme >10mA),
- "GND" an Masse,
- "Trig" an CC1 Portpin 1 (kann auch anders belegt werden; mu im CCBASIC-Programm entsprechend angepasst werden),
- "Echo" an CC1 DCF-Port (=TCAP1; knnte auch ber TCAP2 gemessen werden nach einer entsprechenden Modifikation der Assembler-Routine)

Funktionsweise:
- Messung der Entfernung von (3...450)cm mit einem max. Fehler von ~1cm bei 450cm ermittelter Entfernung,
- im CCBASIC-Programm kann die Messroutine ber das Bit "VALECHO" gesteuert, also aktiv bzw. inaktiv geschalten werden;
- die US-Messroutine im TCAP-Interrupt unterdrckt die Abarbeitung der OS-Internen TCAP-Interruptroutinen; ein DCF-Empfang bzw. eine Frequenzmessung am
  FREQ2-Eingang sind mit eingebundener US-Messroutine nicht mglich,
- Um einen DCF-EMpfang bzw. FREQ2-Messungen ber das OS der CC1 zu ermglichen, msste die US-Messroutine im laufenden CCBASIC-Programm "entladen" werden,
  also der Einsprungvektor fr den TCAP-Interrupt msste wieder auf Null geschrieben werden (siehe CCBASIC-Programm "HC_SR04_Messung_Rev0_2.BAS"),
- der US-Messaufbau ist nicht temperaturkompensiert, Temperaturschwankungen knnen zu greren Messtoleranzen fhren,
- fr weitere Hinweise bitte die kommentierte Software durchsehen.

Weitere Ideen:
Das US-Modul knnte auf einem Servo befestigt und zusammen mit der C-Control 1 z.B. auf einem fahrbaren Roboter als "Umgebungsscanner" eingesetzt werden.
Statt die Entfernung mit Nachkommastelle in [cm] zu erfassen, ordnet ein CCBASIC-Programm die gemessenen ENtfernungen groben Entfernungsbereichen zu
(z.B. "nah" = 1, "mittel" = 2 , "fern" = 3). Damit wre es u.U. mglich mittels des "Scanners" eine grobe topologische Karte von der nchsten Umgebung zu
erstellen und dies fr weitere Entscheidungen, z.B. bei der Fortbewegung des Roboters, zu nutzen.

Rckmeldung erwnscht unter mak.kleist@gmx.de.
