top



Techdocs


Inhalt / Contents

Bits and Bytes

C, C++

Scilab

Mikrocontroller

Arduino-Projekte

Hobby-Projekte




Bits and Bytes

External Links

(Link) How to use GITHUB?
(Link) Public Available ISO/IEC Standards
(Link) IEEE manuscript templates for conference proceedings

Gnuplot/Word/PDF/PS/TEX

(PDF 150 kB) Make GNU-Vektorplots für Word, Office or PDF
(Link) Beginners guide to TeX
(Link) TeX-freeware for Windows

Windows XP - was ist wo auf meinem PC?

(Link basteln: Blauen String mit Maus markieren, Ctl-C, Explorer öffnen, Menue/Datei/neu/Verknüpfung, Ctl-V)

TeleTYpe Code - TTY

The Telex-Code 5 bit (ITA-2-Code, CCITT-2-Code, USTTY) was the code of four generations (80 years), used for teletype machines (telex). In difference to our "serial interface" (RS232) on 8x2 = sixteen wires, the TTY was bidirectional (simplex) on only two wires. This allowed digital Telex-communication on telephone wires around the world, the digital era was born 60 years before first transistors appeared - see the principle drawing of TTY and Morse's circuits.
For more see TTY history.

ASCII - Code

"American Standard Code of Information Interchange" (ASCII) is a 7-bit code for embedded UARTs and Serial Interfaces (like RS232). Find the ASCII-alphabet here incl. some often needed printf format, printf escape-sequences. It became the background for all computing and internet communication.
Further links:


HTML: Ampersand-characters

Manchmal möchte man nur eine kleine Formel in einen Text einbringen - und scheitert an ein paar Sonderzeichen. Mit den Ampersand (&) - Zeichen gibt es eine Eselsbrücke, die man sich merken kann. SelfHTML Zeichen mit Quelle. In UTF-8 flossen diese Zeichen in die auf 16-bit erweiterte Codetabelle ein, siehe UTF-8 Zeichentabelle. Browser unterstützen i.a. Ampersand-Zeichen in beiden Versionen (ANSI und UTF).

SGML-style type:   &

Test your browser - following constructs should be encoded in rows having 10 signs each:

Bildungsvorschrift griechischer Buchstaben: "& name ;"
Bildungsvorschrift deutscher Umlaute: "& name uml ;" (alles ohne Leerzeichen dazwischen).
HTML ansehen? Rechte Maustaste → Seitenquelltext anzeigen.
Elektroniker können damit schreiben: <xmp> ... </xmp> sorgt dafür, daß der Browser Steuerzeichen nicht übersetzt, die Zeile sieht im Original so aus: &nbsp; X<sub>L</sub> = &omega; &middot; L = 2&pi;f &middot; L = 6,28 &middot; 100 kHz &middot; 10 µH &asymp; 6 &Omega;

Mag man eine lange Lücke (     ) im Text einfügen, hilft nur dieses kryptische Gebilde: "&nbsp;". Es erzeugt ein Leerzeichen mit verhindertem Zeilenumbruch. Damit kann man gefahrlos schreiben 3 254 387,00 €, ohne daß im Wert ein Zeilenumbruch erfolgt. Allerdings sieht der Quelltext zu dieser Zahl nicht wirklich brauchbar aus, damit uns der Browser versteht, haben wir im HTML-File zu schreiben:

3&nbsp;254&nbsp;387,00&nbsp;&euro;

FAQ zu Unicode, UCS, UTF-8


Merke:

Do you like some more character sets? (Darf es ein wenig mehr Code sein?)


Internet-Perspektive:

Man könnte es auch anders sagen: Die Grabenkämpfe um HTML/XML/UTF-8/ISO8859/SGML/XML... sind destruktiv und nutzen niemandem: Mit dem permanenten Umbau alter Formate (z.B. PDF, dyn. HTML) und der Neuerschaffung von Codierungen (UCS, Unicode) werden Milliardenwerte vernichtet. Das Internet befindet sich am Rande des Kollaps. Niemand hat etwas dagegen, wenn neue Formate eingeführt werden. Aber bestehende Formate hat niemand zu verschlimmbessern! Softwareentwickler sollten sich auf die eigentliche Arbeit konzentrieren können - nicht auf Unfug. Haben Sie schon einmal darüber nachgedacht, wann Binärdaten nicht mehr lesbar sein werden, weil die Codierung unbekannt ist? Videos, die vor der Jahrtausendwende entstanden, sind teilweise schon jetzt nicht mehr abspielbar, weil Codecs veraltet sind und nicht mehr unterstützt werden. Zelluloid-Filme hielten immerhin ein Jahrhundert lang!

Ein ASCII-Zeichen von einem Byte durch zwei oder vier Byte (UTF, UCS...) zu ersetzen, ist wohl der Gipfel intellektueller "Erleuchtung": Wenn ein Textfile im Durchschnitt n verschiedene Zeichen enthält, dann sind i = log2(n) Bit nötig, um jedes Zeichen des Textfiles kodieren zu können. Deutsch und Englisch lassen sich mit 8 Bit wunderbar kodieren, allenfalls ein chinesisches Alphabet würde 16 Bit brauchen. Ein einziges Sonderzeichen in jedem Alphabet zur Ankündigung des nächsten Alphabets genügt übrigens, um beliebig große Alphabete in einen Byte-organisiserten File aufzunehmen. Man erinnere sich an TTY. Oder an Fonts. Wozu also braucht die Welt UCS, UTF oder Unicode? Offensichtlich nur dazu, um Terrabyte mehr an Daten durch das Web zu schaufeln! Im "grünen" Zeitalter ein Skandal, wenn wir bedenken, daß zur Übertragung dieser mehr-Terrabytes weltweit dutzende Braunkohlenkraftwerke zusätzlich gebraucht werden.

Denken wir dann noch über das ausufernde Phenomen der Software-Upgrades nach, so wird deutlich, daß Software keine Ware im herkömmlichen Sinne ist. Jede Hardware verschleißt, jede Nahrung wird aufgegessen. Software hält ewig. Ein einmal in die Welt gesetzes Codestück verschleißt nicht. Aber wenn alle Kunden meine Software gekauft haben, bin ich arbeitslos. Software paßt nur mit Verfallsdatum zum Kapital. Und genau das Verfallsdatum wird gerade erfunden: Mit dem Upgrade wird versehentlich eine unverzichtbare Programmfunktion zerschossen. Die Steuerung des Autos, Smartphons, Fernsehers, Computers oder Kühlschranks beginnt nach 3 Jahren, fehlerhaft zu arbeiten. Schon kauft der Kunde neu. Ein unsichtbarer, softer Krieg hat begonnen:

Die Folge: Die Jugend wendet sich wieder "Werten" zu: Man kauft wieder Schallplatten statt DVD oder MP3-Streams.

Ist das Internet ein OSI-Schichtenmodell?

Wie sieht eigentlich das Internet aus? (Link)



C, C++

Examples compiled with Microsoft Visual
C++ .NET Version 7 (2003), Win32-Console

C++ Listing von USB-COM-Ports (VCP) siehe Bild.
Basis: FTD2xx-Library von FTDI. Executable for WindowsXP: FTDI-finder.exe

C Wie funktioniert eigentlich
main(int argc, char *argv[ ]) ? Test: main.exe

C Strings and file read write

C Syntax-Beispiel zu Callback-Functions

C Some pointer examples

C Eselsbrücke zum Umgang mit Zeigern

C Eine Annäherung an Zeiger in C/C++ pointer_proof.exe

Heinzels Moving Average

(INO) Hat man einen rauschenden Sensor und hat man Zeit, so lassen sich dessen Daten mit einfachsten Mitteln deutlich verbessern. Die Idee dahinter: Man nehme den bereits vorhandenen Mittelwert und mittele nur ein kleines Stück des aktuell rauschenden Wertes hinzu. Das INO-Format ist ein TXT-File. Hier werden Füllstandsdaten von einem seriellen Sensor gemittelt.

C für AVR und Arduino

AVR-Portpins ganz einfach

printf() auf einem ATmega benutzen?

AVR-Strings im Flash PROGMEM und pgm_read_byte

Soft-UART mit ATtiny13 in einem Ladungssensor (PDF)

Gleitkomma mit AVR: printf, sprintf, dtostrf, utoa, itoa

Structs im EEPROM speichern EEMEM, eeprom_read, eeprom_write

Improved Arduino "Digital Humidity & Temperature Library" for sensor type DHT22/AM2302 see DHT2 (gh). Adds: The library supports more then one sensor and it calculates the absolute humidity and dew-point:

Library includes an ino-file example. Install the zip-file like a standard Arduino-Library.



Scilab

Introductions

Das Scilab-Sourceformat *.SCE oder *.SCI kann z.B. mit Wordpad geöffnet werden. Scilab ausführen: Im Sourcecode-Window CTL-(klein-)L oder Menue/Execute/Load_into_Scilab. Aber Vorsicht: Alle Quellen sind mit Scilab Version 3.1.1. (1989-2005) generiert.

(EXE) Download Scilab 3.1.1

(SCE) Shortest intro to Scilab

(SCE) Matrixoperationen unter Scilab

(SCE) Binärfile lesen/schreiben unter Scilab

(HTML) (Best intro) Jesus Olivan Palacios: An introduction to the treatment of neurophysiological signals using Scilab (2001).

(ASCII) ASCII-Tabelle mit Scilab erzeugen

(SCE) Textfiles (txt) lesen/schreiben unter Scilab

Joy of Covolution (Faltung)

(SCE) Introduction to convolution of two time-functions. Make your own convolution plots. Save plots of {x, h, convol(h,x)} in GIF-file format. Output examples: high-pass, low-pass

(SCE) Analogien zwischen Faltungsintegral und
Polynom- Multiplikation. Ausgabebeispiel als (PDF)

(SCE) (PDF) How Nerve Network Topology Defines its Behavior - Serial Code Detection with Spiking (Neural) Networks. Workshop „Autonomous Systems”, Cala Millor, Mallorca, 13.-17. Oct. 2013 publ. in Fortschritt-Berichte VDI, Reihe 10, Nr. 827, „Autononous Systems 2013“ edited by Herweg Unger & Wolfgang Halang, Scilab source code and examples see SCE-files.

(SCE) Theory of an Invisible Noise Radar. Noise has the flatest spectral distribution of all signals. Energy depends only of the length of the time function, there is no other limitation. And noise can produce a sharp interference detection. The file shows two cases. Thinks work, if one function is the key and the other is the keyhole. (Special example of "transfuncnet.sce").
Examples:
 ■ Invisible Radar: Convolution of bipolar noise with bipolar keyhole (GIF)
 ■ Nerve System: Convolution of bipolar noise (pulses) with unipolar keyhole (synapses) (GIF)


Ausgleichsrechnung

(SCE) Fehlerquadrat minimieren (GIF Ausgabe)

(SCE) mit Matrix Division (backslash) (GIF Ausgabe)

(SCE) mit Matrix Pseudoinversion (pinv) (GIF Ausgabe)

Matlab-Vorlage mit Erläuterungen


Elektrische Netzwerke

(SCE) Knotenspannungsanalyse mit Pseudoinversion

(SCE) Maschenstromanalyse mit Pseudoinversion

(SCE) Maschenstromanalyse mit konjugierten Gradienten (große Matrizen)


Strahlung, Wärme, Licht

(SCE) Das Stefan-Boltzmann-Gesetz beschreibt die Strahlungsleistung eines schwarzen Körpers (Funktion, Beispiele)

(SCE) Mit dem Wien'schen Verschiebungsgesetz kann das Maximum einer Planckstrahlungskurve bestimmt werden (Funktion, Beispiele)

(SCE) Berechnung Planckscher Strahlungskurven,
normiert oder pur, mit Wertetabellierung (Plots, Funktionen)

(ZIP, 2MB) Kennlinien-Plottprogrammkomplex für spektral selektive Photodioden: Plot verschiedener Dioden in mA oder A/W, logarithmisch, linear oder normiert. Anliegen: Vergleichbarkeit der Typen. Plotbeispiel mit log. Achse in mA.


WAV, CSV, GIF

(ZIP, 2MB) Plotprogramme für WAV-Files

(SCE), (CSV 13 kB) GIF-Plot von Zeitfunktionen aus "Comma Separated Value" Files (Excel-Format *.CSV)

Zeitfunktionsplots "WAV to GIF"; Input: WAV-Files der Zeitfunktionen; Outputs: Plots der Zeitfunktionen und simulierter Funktionen als GIF, als Excel Comma Separated Values (CSV) und als AVR-Studio4 Include File (INC)

(HTML) Animationen zu Welleninterferenzen incl. Scilab-Quellen


Füllstand einer Tonne

Die Berechnung der Füllmenge einer (querliegenden) Tonne ausgehend vom Pegelstand ist nicht ganz trivial. Daraus entstand ein kleines Scilab-Programm für den Füllstand einer Abwasser-Sammelgrube Fa. Graf, 3000 Liter, Best.-Nr.102007, mit Dom-Aufsatz.


Spektralphysik

(PDF, 14MB, 55 S.) Dynamische Untersuchung von Pulslichtbogen mit 6-Kanal Spektrometer. 2007_01_17

(PDF, 1MB, 20 S.) Zur Selektivität breitbandiger Photodioden. 2007_02_09

(HTML) Spektral geregelte Pulsschweißmaschinen, Seite des Projekt-begleitenden Ausschuß


Mikrocontroller und Hardware

Single-Wire UART (SWART)

Reduziert man Kommunikation auf das absolute Minimum, entsteht eine sehr einfache Schnittstelle, die vom Prinzip her schon in ersten NOKIA-Handies als M-Bus vorhanden war. Als Grundlage der seriellen Schnittstelle sind UART in jedem Mikrocontroller nutzbar. Legt man Rx und Tx der UART auf einem Draht zusammen, entsteht ein "Single Wire Asynchronous Receiver Transmitter" (SWART). SWART ist im Bereich intelligenter Sensorik und Aktorik bei niedrigen Datenraten oder kurzen Entfernungen vorteilhaft anwendbar. Im Vergleich zu I²C oder LIN ist SWART unkompliziert und potentiell etwas flexibler einsetzbar, da keinerlei Libraries erforderlich sind. Eine Schottky-Diode hat jeder: Einfach mal ausprobieren. Das Bild zeigt nicht etwa die deutsche Flagge, sondern die SWART-Steckerbelegung bei Verwendung von Tamiya-Verlängerungskabeln für Funkfernsteuer-Servos.

Was man sich wünschen würde, wäre eine Implementierung von SWART (ohne Schottky-Diode) in jedem Mikrocontroller. Dazu bräuchte der RX-Eingang nur per Registerbit und Transfergate auf den TX-Ausgang der UART schaltbar zu sein. Aber dieser Ruf kam bei den ehemaligen Kollegen vom IC-Design offenbar nicht an. Schade.

Download:


Ladungspumpe mit ATtiny13

Die übliche Art, Kapazitäten oder Ladungen zu messen, ist das Sägezahnverfahren mit einem RC-Glied, die beim Wasserstoff-Sensor oder beim Füllstandsmesser benutzt werden. Dort bestimmt die Kapazität die Flankensteilheit gemäß I/C = dU/dt.
Aber es gibt auch ein noch empfindlicheres Verfahren, welches nur mit geschalteten Kapazitäten funktioniert, siehe Bilder. Dabei werden abwechselnd die Schalter Mp2vcc oder Tp2gnd geschlossen. Cm ist ein fest eingebauter Kondensator und Ct ist die zu messende Kapazität. Initial werden beide Knoten auf GND gezogen, Cm ist damit leer.
Abwechselnd wird nun Mp auf VDD gezogen und Tp auf GND. Daraus ergibt sich eine Spannungsteilung zwischen Cm und Ct entsprechend deren Kapazitäten (Tp wird auf GND gezogen um Ct zu entladen). Der Wert in Cm bleibt stehen und akkumuliert mit jedem Zyklus. Die Ladung in Cm strebt umso schneller nach VDD, je kleiner Ct im Verhältnis zu Cm ist. Gemessen wird Cm an Mp immer in der Phase, in der der untere Schalter Tp2gnd geschlossen ist. Die Zyklen bis zum Erreichen einer Schwelle werden gezählt.
Im ZIP-File befinden sich drei verschiedene C-Programme für AVR-Studio4, davon ein Programm nur mit Schwellwertdetektion (für einen Füllstand etc.) und zwei sehr ähnliche Programme mit zusätzlicher Software-UART-Ausgabe für ein Eigenbau-SWART-LCD und für ein UART-LCD von Sparkfun.

Download:


Wasserstoff-Sensor

An der HU Berlin im Institut für Physik wurde ein spezieller Wasserstoff-Sensor entwickelt. Besonderheit dieses Sensors ist ein Ladungsausgang, der Sensor verschiebt die CV-Kurve. Damit war er prädestiniert, Experimente zur Ladungsmessung nach dem Sägezahnverfahren mit einem ATtiny85 anzustellen. Hier bestimmt die Kapazität die Flankensteilheit gemäß I/C = dU/dt. Vorteil der Ladungsausgabe gegenüber Sensoren in Wheatstone-Brückenschaltung ist vermutlich eine größere Langzeitstabilität. Leider sind zum Sensor keine detailierten Informationen mehr verfügbar.
Es kam ein ATtiny85 auf einem Versuchsbrett BRBL10 zum Einsatz. Der Sensor gibt einen Dezimalwert der Messung auf SWART mittels Software-UART aus. Er übernimmt einen neuen Alarmwert aus dem Istwert auf Tastendruck, dazu ist der Sensor in ein Gefäß mit entsprechender Wasserstoff-Konzentration zu legen. Er speichert den Alarmwert automatisch im EEPROM. Die Firmware wurde unter AVR-Studio4, GUI Version 4.19, Built 730 entwickelt. Quellen befinden sich im ZIP-File. Libraries und externe h-Files sind entsprechend anzupassen. Weitere Hinweise befinden sich im main-File hydsens.c .
Zur Funktion: Die Kapazitätsmessung erfolgt mit einem Sägezahn. Es wird der interne Komparator an Pin PB3 des Mikrocontrollers genutzt. Zunächst wird PB3 auf OUTPUT geschaltet und nach Masse gezogen, die Sensorkapazität wird entladen. Dann wird auf INPUT umgeschaltet und der externe Widerstand von 220 KiloOhm lädt den Sensorknoten langsam auf VDD hoch. Übersteigt die Spannung die Komparatorschwelle von 1,1 Volt, beginnt der Prozeß von vorn. Die Anzahl der Sägezähne wird mitgezählt. Nach Ablauf der Meßzeit wird die Zahl durchlaufener Zyklen über eine in Software implementierte UART auf PB0 mit 9600 Baud / 8n1n ausgegeben. RX und TX der Soft-UART liegen auf einem Pin (PB0) und sind als Single-Wire UART (SWART) konfiguriert. An diesem Pin hängen sowohl ein USB-Adapter, als auch ein serielles Terminal, siehe Bild.
Zum Hochladen des Codes ist ein ISP AVR-Brenner erforderlich, z.B. ALL-AVR von Diamex.

Download:


USB2SERIAL - Isolierte USB/COM-Ports


Kommuniziert man mit einer Schweißmaschine von mehreren Stellen aus (PC, Datenrecorder, Video-Sync.), so genügt die Erdschleife über die Schukosteckdosen für extreme Signalstörungen. Um den PC zur Einstellung z.B. eines Spektralreglers nutzen zu können, wurden diese isolierten "Virtual COM-Port" (VCP) Konverter ("RS232" bzw. "RS485" simplex und duplex) entwickelt. RS232 steht dabei für 5 Volt Pegel der UART nichtinvertiert, die hohen, invertierten Pegel der ehemaligen seriellen Schnittstelle spielen heute im Embedded-Bereich keine Rolle mehr, siehe dazu eine betagte Intro der ersten Version (PDF, 3MB).
"RS232": Darunter ist hier nur das UART-Protokoll zu verstehen. Im Gegensatz zur RS232 sind die Signale der UART nicht invertiert. Um mit einem Minimum zu isolierender Adern auszukommen, wird nur Rx und Tx genutzt als sog. "CMOS-UART".
"RS485": Die Varianten USB2SERIAL v1 und v2 sind simplex ausgeführt, sie senden und empfangen nur alternierend mit zusätzlicher Empfangs-Sendumschaltung. Die 12 Mbit/s Variante ist duplex ausgeführt, hier laufen Rx und Tx auf je einem Adernpaar unabhängig, siehe Schaltungen.
Die Leiterkarten USB2SERIAL v1 und v2 sind so ausgeführt, daß sie alternativ als RS485 oder als RS232 bestückt werden können.

19kBaud, 900kBaud 12 MBaud

S/N-Spezifikation: Zur automatischen Identifikation per Software erhalten neue Adapter eine einheitliche Seriennummer (S/N). Die ersten drei Stellen werden ausgewertet. Wenn die dritte Stelle ein Underscore '_' ist, werden die Stellen Eins und Zwei untersucht. Die erste Stelle gibt die Geschwindigkeitsversion (v1...3) an. die zweite Stelle kennzeichnet den Typ RS485-Simplex/RS485-Duplex/RS232-UART (S/D/U). Beispiele siehe CMD-Window des FTDI-Finder.

Downloads:


Isolierte Ethernet-UART (RS232/RS485)

Zur einfachen Kommunikation vom Hyperterminal zum Schweißregler IONv10 via Ethernet wurde dieser isolierte Modul entwickelt. Kern des Moduls ist ein Lantronix-XPORT. Wir arbeiten typisch mit 115200 Baud. Der Modul besitzt dieselbe duplex-RS485 Schnittstelle, wie der USBDUX-Modul, siehe Belegung der RJ45-Buchse. Links ist der Ethernet-Anschluß, rechts der duplex-RS485 Anschluß zu erkennen. Am Stecker ST1 kann über die Pins BYG und BYO eine Spannungseinspeisung für an die RS485 angeschlossene Verbraucher erfolgen.

12 MBaud

Die mit BYG und BYO gekennzeichneten Pins können genutzt werden, um zwei zusätzliche Signale über die RJ45-Buchse zu führen. Beim Spektralregler wird ein schnelles Schaltsignal darüber geführt (Bypass).

Eine Steckverbindung zwischen BU3 und ST1 genügt, um den Modul als CMOS-UART ("RS232") nutzen zu können. Man verbinde dazu BU3-2 mit ST1-3 und BU3-3 mit ST1-4. Allerdings darf U1 nicht eingelötet sein. In der Pinbelegung erkennt man Kompatibilität zu 4P4C-Varianten mit RJ10 (GND Tx Rx +5V):

12 MBaud

Download:


SMD-Optokoppler Reihe HCPL

(PDF) - Übersicht


Bidirektionales Stereo USB-Headset

Für vergleichende Untersuchung der akustischen Qualität von PKW-Innengeräuschen wurde 2007 dieses Doppel-Stereo Headset entwickelt. In beiden Ohrmuscheln ist mittig je ein Mikrophon (rechtes Bild) angeordnet. Auf dem Bügel des Kopfhörers befindet sich ein Stereo-In/Out USB-Transceiver. Das Headset wird über USB mit dem Netbook verbunden. Die Software "AudioOverIP" gestattet eine Verbindung von bis zu vier Headsets über WLAN. Jeweils ein Set darf senden, die anderen hören zu. Mit externen WLAN-Boostern (Accesspoint D-Link DAP1353) wurde 2007 eine Reichweite bis zu 1000 Metern erreicht.

Download:


Mini-Development Board AT13

Für kleine Signalverarbeitungsaufgaben (z.B. Plasmasimulator, Steueraufgaben) ist dieses Mini-Devboard für den Microcontroller ATtiny13 / ATtiny85 recht nützlich. Er bietet fünf freie Pins (das RESET-Pin sollte man besser meiden) und kostet wenige Cent. Durch die steckbare Verbindung kann das Board entweder an den Programmer (AVR-ISP, BU2) gesteckt werden, oder an die Applikation. Die Pins tragen maximal 40 mA, sie sind frei programmierbar als input/output/tristate/open collector . 10-Bit ADC und Timer gibt es gratis. Nie wieder TTL oder programmierbare Logik, um x-beliebige, kleine analog/digital gemischte Hilfsschaltungen mit wenigen Pins aufzubauen.
Die angenehme Entwicklungsumgebung (ASM: AVR Studio4, C-Compiler im WINAVR) ist gratis, AVR-ISP-MKII Programmer gibt es schon ab 30 Euro. Auf dem Board links sind fünf SOT23-Transistorausgänge (n-chl) vorhanden, das rechte Board ist als gekürzte PCB ohne Transistoren zu erkennen. Zum Programmieren wird ISP (SPI) umgesteckt. Mit Power-MOS Transistoren im SOT23 Gehäuse (n-chl) TSM3400 (70mOhm/5V) oder Si2312DS (33mOhm/5V) bestückt, läßt sich bis zu einem Ampere ohne Kühlung schalten.

Download:

Weitere Applikationen des Boards:


DAC 2x4 Bit Zeitfunktionsgenerator mit Atmel ATtiny261A

Für die Entwicklung erster, spektral geregelter Schweißmaschinen wurde (neben dem Plasmasimulator) ein flexibles Werkzeug gebraucht, mit dem zwei gegenläufige oder phasenversetzte Zeitfunktionen generiert werden können. Die DIL-Variante des ATtiny261/261A besitzt beiderseitig durchgehende Ports, sie ist für diese Aufgabe bestens geeignet. Auf Port A (rechts) werden zwei Nibble (4 Bit) an zwei R-2R-Netzwerke ausgegeben, an Port B (links) liegen drei Jumper zur Einstellung von 8 Zeitfunktionen, eine verschieden blinkende LED und der AVR-ISP Programmierstecker. Damit sind zwei quasi analoge Zeitfunktionen in je 16 Quantisierungsstufen darstellbar. Jede Zeitfunktion wird über Reihenwiderstände an drei Ausgänge geleitet. Die Reihenwiderstände wandeln Ausgangsspannung in Ausgangsstrom. Wird an Stelle der Widerstände je eine Kurzschlußbrücke eingelötet, gibt das Teil eine Ausgangsspannung mit einem Innenwiderstand nahe R des R-2R-Wandlers (ca. 1 kOhm). Die sechs Ausgänge gehen auf einen Stecker, der zu neueren Spektralreglern paßt.

Download:


Servotester mit ATtiny13

Variierende Pulsbreiten und Pulsbreitenmodulation werden in verschiedenen Technikbereichen vorteilhaft eingesetzt. Zur Darstellung einer variierenden Pulslänge von ein- bis zwei Millisekunden bei einer Pulspause von 25 Millisekunden wurde diese kleine Hilfsschaltung entwickelt. Sie eignet sich zur Simulation des Pulsplasmas von Pulsschweißmaschinen ebenso, wie als Pulsgeber für Tests an PPM-Servos zum Test von Endlage und Stellgeschwindigkeit. Drei Tasten dienen der fixen Vorgabe von Pulszeiten (1.0, 1.5, 2.0 ms). Im Automatik-Mode wird zwischen den Endlagen alternierend gewechselt. Einstellbar sind Wechselzeiten zwischen 1.0 sec und 0.1 sec in Schritten von einer zehntel Sekunde. Die Wechseldauer wird an den LEDs b[3...0] binär blinkend in Zehntelsekunden angezeigt.
Beispiel:

Der Pfiff der Schaltung besteht darin, über die fünf freien I/O-Pins sowohl vier LEDs zu schalten als auch vier Tasten abzufragen als auch den ATtiny13 mit AVR-ISP-mkII zu programmieren. Und ein I/O-Pin ist auch noch für die Signalausgabe gebunden.

Download:


SyncSwitch - Isolierter Synchronschalter für dRec192

Zum synchronen Start eines GFaI-Datenrecorders dRec192 mit einer high-speed Videokamera und einem Schweißgerät wurde 2007 diese Schaltung entwickelt. Alle Leitungen sind mit Optokopplern gegeneinander isoliert, um Erdschleifen zu verhindern. Ein Transverter sorgt für isolierte Spannungsversorgung. Damit wird ein störungsfreier Betrieb der empfindlichen Geräte auch in EMV-haltiger Umgebung am Schweißgerät möglich.

Download:


UART-Testmodul

Tx/Rx-Spiegel und UART-Zeichengenerator für UART, TOSLINK, RS485, RS422 (duplex/simplex)

Um Störanfälligkeit von UART-basierten Schnittstellen (RS232, optisch isolierte USB-VCP, RS485, TOSLINK) beim Schweißen zu testen, benötigt man einen Signalgenerator und einen Signalempfänger - oder einen Signal-Spiegel. (Auch können damit Echtzeitfähigkeiten eines C-Compilers für den aktuellen Prozessor getestet werden). Ein preiswertes Board mit Spielwiese (Rasterplatte 2,54 mm) ist das Olimex AVR-P28.

Es wurde um RS485-Konverter, um optische Schnittstellen TOTX/TORX173 und um direkte TxRx-UART-Schnittstellen erweitert. Damit können Flankenbedingungen (z.B. das Schreib-/Lese-Umschaltsignal der RS485) getestet werden. Auch dient es als Signalgenerator, siehe Hyperterminal-Dialog. Auf RET (Return-Taste) wird der Text periodisch alle Sekunde zurückgesendet. Andere ASCII-Zeichen werden periodisch zurückgesendet. Das Rücksenden wird solange wiederholt, bis mit ESC abgebrochen wird. Zusätzlich wird jedes ASCII-Zeichen auf 8 LEDs angezeigt. Die Baudrate (9600/115200 Baud) ist an einem Schalter wählbar.

Mit dem Spiegel konnten insbesondere Versuche zu dynamischer Terminierung gemacht werden. Diese zeigen, daß beim Übergang auf kapazitive Kopplung einerseits der Stromverbrauch sinkt. Andererseits erhöht sich (rechnerisch) die Störsicherheit, da nierderohmige Verkopplungen der symmetrischen Adern mit VCCR (meist 5V) und GNDR (0V) um etwa zwei Zehnerpotenzen vermindert werden. Folglich werden bei mir seither alle RS485-Schaltungen, die in hochgestörten Umgebungen arbeiten, dynamisch terminiert. Hinweis: Leider vertragen sich dynamische und statische Terminierung nicht auf einem Bus. Entweder beide Seiten werden statisch oder dynamisch terminiert.

Download:


2-Kanal Spektralregler

Im Rahmen eines BMBF-Projekts entstand die Idee, Schweißprozesse spektral zu steuern. Aus dem Verhältnis von UV- und IR-Emission kann man die Metalldampfkonzentration und die Plasmatemperatur schätzen. Maß für die Temperatur ist die Metalldampfkonzentration, diese verursacht den Blaulichtanteil. Bei Überschreiten der Temperatur wird der Puls abgeschaltet, der Tropfen wird abgesprengt. Nach Abkühlung kann wieder eingeschaltet werden, falls die Pausenvorgabe nicht von der Schweißmaschine kommt. Es entsteht ein "natürlicher" Pulsschweißprozess, der extrem stabil auf Prozeßstörungen reagiert. Fehlerhafte Stromeinstellungen um einen Faktor 2 werden noch korrigiert. Am 30.11.2007 konnte damit die welterste, spektralgesteuerte Pulsschweißmaschine (Cloos Quinto 403) der Schweißindustrie vorgeführt werden (Bild unten). Auszeichnung 2008 mit den Abicor-Innovationspreis (3.) des DVS. Das Verfahren wurde zum Schutz der deutschen Wirtschaft patentiert DE102008045501, WO/2010/025709. Technische Dokumentationen (Beschreibung, Schaltungen, Patent-OS) befinden sich im Downloadbereich (SPS-PBA).

Und so sah der erste Spektralregler (v5) aus, Bild rechts. Handverdrahteter Prototyp, mit dem ab 18.11.2007 an der TU Berlin die ersten Pulsschweißungen öffentlich vorgeführt wurden. Die Schaltung war identisch der danach entstandenen PCB-Version v10, Bild oben.


6-Kanal Photo-Amplifier

Digital einstellbarer 6-Kanal Photodioden-Verstärker zur Aufnahme von Zeitfunktionen an Schweißmaschinen im Spektralbereich 300nm bis 3µm. Die Einstellung der Verstärkung der sechs Kanäle erfolgt am PC mit Windows-Hyperterminal über UART, RS485 oder USB mit isolierendem USB/RS485-Adapter (siehe #usb2serial).

Versionen:

Besonderheiten:

Download:


CHAMP6v20 Experimentierset

Das Experimentierset gestattet eigene Versuche mit spektral selektiven Photodioden. Der am Brennerkopf angebrachte Champ6v20 liefert Signale von sechs Photodioden. Am BNC-Adapter können beliebige Datenrecorder mit einem Eingangsbereich +/- 2,5V DC angeschlossen werden. Die Verstärkung der Kanäle wird über USB-VCP und Hyperterminal eingestellt, siehe Kommunikation.

Download:


Trübungssensor TS6

Zur Untersuchung klarer bis trüber Flüssigkeiten (Trinkwasser, Brauchwasser, Bier, Milch etc.) auf 850nm wurde auf Hardware-Basis Champ6v21 dieser Trübungssensor entwickelt. Er gestattet Static Light Scattering (SLS) für 5 Kanäle (20°, 90°, 135°, 160°, 180°). Die Kommunikation über UART oder USB-VCP 115200 Baud, 8n1n. Ausgaben können absolut, relativ, logarithmisch oder in NHU (Trübungseinheit) erfolgen.

Download TS6 v30, Stand 11/2014:


Schweißregler WCTR

Als Experimentierbasis für spektralgeregelte Puls-Schweißmaschinen entstand diese Baugruppe. Kernstück ist ein 32-Bit ARM-Cortex-M3 (CM3) von ST-Microelectronisc STM32F103RET6 mit fünf UARTs. In der Schweißmaschine wurde die UART-Schnittstelle zwischen Bedienteil und Stromquelle aufgetrennt. Der CM3 belauscht den Datenverkehr, und kann selbst seinen Kommentar dazu abgeben - in Form von parametrischen Anweisungen.

Download:


Spektralregler Ion

Verschiedene Schweißprozesse sind wärmeempfindlich. Man denke an Brennlöcher beim Schweißen oder Löten von Dünnblech, an unschöne, farbige Ränder beim Schweißen von Edelstahl, an wärmeempfindliche Stähle, an Verspödung oder Erweichung des Gefüges unter Temperatureinfluß oder an zu minimierenden Verzug beim Schweißen. Temperaturen im Lichtbogen, wie im Bad können aber über die spektrale Zusammensetzung des Schweißlichts gemessen werden.

Es entstand ein Spektralregler (ION), der Zeitfunktionen in sechs verschiedenen Spektralbereichen von µm bis nm aufnimmt und in Echtzeit bewertet. Er steuert eine Pulsschweißmaschine. Je nach Einsatzfeld kann der Energieeintrag bei Überhitzung des Lichtbogens oder des Schweißbades innerhalb von etwa 100 Mikrosekunden nachgeregelt werden. Der Spektralregler stellt den wichtigsten Ausgangspunkt dar, um spektral geregelte high-tech-Schweißmaschinen entwickeln zu können. Mit ION wird es möglich, thermische Prozesse an Festkörpern als auch atomare (linienartige) und voll ionisierte (kontinuierliche) Plasmaprozesse zu bearbeiten. Derzeit existieren eine Reihe von problematischen Schweißprozessen, man denke an eingangs genannte Beispiele, die mit spektraler Regelung "erweckbar" sein könnten.

Download:


Smart Sensor

Um Erfahrungen mit Bluetooth-LE und dem Nordic-SDK auf Basis des CM4 N52832 zu gewinnen, wurde ein Miniatursensor für Beschleunigungsmessungen (analog und digital) entwickelt. Er wird über einen Mini-Lipo-Akku von 120 mAh gespeist, der unter dem Dach Platz findet. Der klobige Fuß beherbergt drei analoge Beschleunigungsaufnehmer. Sie sind noch immer einen Größenordnung rauschärmer, als digitale. Aber auch enorm viel größer.

Geladen wird der Akku über USB. Eine Akkuladung reicht etwa für zwei Stunden Meßzeit. Eine Darstellung der komplexen Softwaremöglichkeiten würde den Raum dieses Beitrags allerdings sprengen.

Download:


Arduino-Projekte

Natürlich dürfen hier ein paar kleine Arduino-Projekte nicht fehlen. Arduino ist wie eine Sucht: Mäkelt man anfangs über die arg begrenzten Debug-Möglichkeiten, so hüpft das Herz spätestens dann höher, wenn man innnerhalb einer Stunde ein USB-CDC Projekt erstellen konnte, und der eigene Arduino Maus oder Tastatur spielt. Die Libraries sind wirklich genial und einfach gestrickt. Sie decken zu 90% die häufigsten Anwendungen ab. Nach einigen Arduino-Projekten wird schnell klar, daß die Zeitersparnis gegenüber der Methode zu Fuß (C unter AVR-Studio) vielleicht typisch einen Faktor von zehn bis hundert ausmacht. Insbesondere kommt dieser Vorzug bei Experimenten zum tragen. Für professionelle Anwendungen kann man ja trotzdem eigene Funktionen auf Registerniveau schreiben. Meine Lieblinge sind der Arduino-Micro, der A.-Nano und der A.-Mini. Aber auch der Tiny85 von Digispark (mit USB-Schnittstelle) kam schon zum Einsatz. Siehe dazu auch einen Vortrag Arduino in Beispielen vom 27.4.2016.

Bug in der Arduino-IDE 1.8.5:
"Hilfe, mein Arduino hängt beim speichern!"
(siehe auch forum.arduino.cc)

Merke: Keinen mit der IDE 1.8.5 bereits compilierten .ino-File umbenennen oder verschieben. Und wenn, dann den ungültigen Pfad unter preferences.txt löschen! Hinweis: Arduino speichert dort alles beim Beenden.


Schrittmotor mit Arduino-"Pro Micro" steuern

Dies ist ein Projekt für Einsteiger. Für 4,95 € kann man bei Pollin einen winzigen Schrittmotor mit Motortreiber kaufen. Der Motor hat ein Getriebe integriert und kommt damit auf 2048 Schritte pro Umdrehung. Der Motor-Treiber auf Basis des IC ULN2003A läßt sich mit 6 Jumper-Kabeln (Buchse/Buchse) an einen Arduino-"Pro Micro" stecken. Für Tests benötigt man nicht einmal ein Netzteil, er kann über USB mitversorgt werden (5V, 300mA). ZIP-File herunterladen und auspacken (Arduinos Stepper.h Library wird benutzt). INO-File doppelklicken, Board und COM-Schnittstelle einstellen, hochladen und seriellen Monitor öffnen. Schon sind erste Experimente mit einem Schrittmotor möglich.

Wird der Motortreiber über USB gespeist, Jumper (rot) auf dem ULN2003-Board stecken wie im Bild zu sehen und GND/VCC vom Treiber mit GND/VCC vom "Pro Micro" verbinden. Wird der Treiber von einem separaten Netzteil gespeist, Jumper unbedingt entfernen! Die Treiber-Pins IN1, IN2, IN3, IN4 gehen auf die Arduino-Pins 6, 7, 8, 9. Der Arduino erzeugt alle vier Motorphasen per Software. Die Bewegung wird über das interne, serielle Terminal der Arduino-Software oder über eine anderes Terminalprogramm (z.B. PuTTY) gesteuert. Dazu auf 115200 Baud, 8n1n einstellen. h oder ? für Hilfe eingeben, es erscheint ein Menue mit einigen Befehlen, wie f/b v/r +/- c, s, z, e. Einfach mal ausprobieren und Spaß haben!

Downloads:


Servotestung mit USB-Terminal

Um Eigenschaften eines Servos beurteilen zu können, wurde für einen Experimentalaufbau ein Servo gebraucht, welches einen mechanischen Ausschlag von mindestens +/- 90° haben sollte. Auch sollte es die Nullstellung präzise anfahren und in kleinen Schritten von links und von rechts präzise fahren können. Verschiedene Typen waren zu bewerten. So entstand dieses winzige Arduino-Projekt. Bedient wird der Arduino-"Pro-Micro" über ein serielles USB-VCP-Terminal, entweder über das der Arduino-Software oder über andere, wie PuTTY. Benutzt wurde die Library Servo.h von Michael Margolis. Mit ein paar Minuten Nachdenken ginge es aber auch direkt über die Timer-Funktionen delayMicros() oder micros().
Um den maximalen, mechanischen Ausschlag zu testen, wurde in einer zweiten Variante ein Stromsensor integriert, der das Servo abschaltet, sobald der Anschlag erreicht ist (Funktionen R und L). Dazu generiert die Software extremere Pulsbreiten zwischen 0,5 und 2,5 Millisekunden (Standard sind 1,0...1,5...2,0 ms). Vorsicht: die Software wurde nur wenig genutzt und erprobt. Sie stellt eher ein Fragment dar, um darauf eigene Ideen zu gründen.

Download:


Rechteckgenerator

Dieses Arduino-Projekt ist für Einsteiger geeignet. Der "Arduino Pro Micro" gibt auf 16 Pins jeweils eine Rechteck-Funktion aus mit Upeak = 5 Volt, beginnend von 2048 Hertz bis 1/16 Hertz. Alles, was man braucht, sind ein Arduino "Pro Micro" und ein USB-Kabel. Arduino-IDE herunterladen und starten, beiliegenden ZIP-File auspacken und rectgen.ino-File doppelklicken. Dann unter "Werkzeuge" das Board einstellen, den COM-Port einstellen (zu finden im Gerätemanager von Windows unter Anschlüsse), und über USB das Programm über "Sketch/Hochladen" compilieren und hochladen. (Hinweis: Ältere "Pro Micro" Exemplare melden sich unter "Arduino Leonardo" bei Windows an). Schon sollte die RX-LED gemütlich anfangen zu blinken und der Rechteckgenerator sollte funktionieren.

Um zu schauen, was unser Arduino gerade macht, kann man unter "Werkzeuge/Serieller Monitor" ein serielles Terminal starten und auf 115200 Baud, "Kein Zeilenende" einstellen, "h" für Hilfe eingeben und "Senden" drücken. Das Modul sendet dann diesen Hilfe-Text.
Unter Arduino "Hilfe/Referenz" findet man eine Beschreibung aller speziellen C-Funktionen, die Arduino ausmachen. Aber auch "Datei/Beispiele" sollte man für erste Schritte inspizieren. Nicht zuletzt kann man mit dem "Boardverwalter" exotische Boards installieren und unter "Sketch" neue oder eigene Libraries einbinden.

Beim letzten Test unter WindowsXP bemerkt:
1) Upgrade-Versuch auf IDE arduino-1.8.12 unter WindowsXP gescheitert: Installer wird nicht mehr akzeptiert. Die letzte, funktionierende WindowsXP-Version ist arduino-1.8.9 vom 15.3.2019.
2) Inaktive Bluetooth-Ports verstopfen die COM-Ports von WindowsXP. Erst wenn sie im Gerätemanager gelöscht sind, funktioniert das Hochladen wieder. Hintergrund: Zum Hochladen wird ein zweiter COM-Port für den Bootloader geöffnet (so kann der serielle Monitor offen bleiben). Windows aber braucht ein wenig zu lange, da hat AVRdude das Hochladen schon mit Fehlermeldung beendet.

Download:


SWART-LCD Adapter

Alphanumerische Displays von 1x8 bis 4x20 Zeichen sind für schnelle Experimente beliebt. Allerdings nerven die vielen Anschlüsse. Und UARTs sind überall vorhanden. Nach Feierabend wurde eine kleine, einlagige Leiterplatte entwickelt, die den überall vorhandenen UART-Anschluß (TX) nutzt. Ein Praktikant interessierte sich dafür, die Software zu entwickeln. Daraus wurde dann seine Bachelor-Arbeit, die er mit "sehr gut" verteidigte.

Über das RX-Pin der UART des ATtiny861 werden ankommende Daten gelesen (115200 Baud, 8n1n) und für das LCD parallelisiert. Es sind LCD von 1x8 bis 4x20 ansteuerbar. Der ATtiny861 kann mit internem Oszillator oder mit 16 MHz Quartz arbeiten (empfohlen). Über die UART lassen sich mit ESC-Commands die Baudrate und der Displaytyp einstellen, siehe Liste der ESC-Commands. Der Adapter kam z.B. bei den Projekten Wasserstoffsensor und Aircontrol zum Einsatz.

Download:


Steuerung einer Western-Lok

Menschliche Neigungen liegen oft im Verborgenen. Manchmal entbehren sie jeder Rationalität. Eines Tages hatte die Nachbarin ihre Garage ausgemüllt. Da stand nun ein nagelneuer Westernzug originalverpackt auf der Straße, direkt vor meinem Fenster. Und Ich? Ich konnte nicht widerstehen!

Natürlich war er kaputt. Das Batteriefach hatte unter ausgelaufener Säure gelitten, der Motor streikte, ein Schienenverbinder war abgebrochen und an einem Wagen waren zwei Achszapfen aus Plast abgebrochen. Kein Problem, nach drei Stunden war alles repariert. Damit die Achszapfen nie wieder abbrechen, wurden neue, längere Achsen angefertigt und die Räder wurden durchbohrt.

Dann sollte Probefahrt sein. Vier neue AA-Batterien hinein, Zug auf den Schienenkreis gestellt und Lok links unten am schwergängigen Schiebeschalter eingeschaltet: Denkste! Beim ersten Mal schob die Lok sofort die Gleise unter sich davon, Crash! Beim zweiten Mal entgleiste nur die Lok. Beim dritten Versuch entgleisten nur die Wagen... Nach dem zehnten Versuch hatte ich keine Lust mehr. Die Motordrehzahl muß reduziert werden. Ein Ingenieur ist nicht in der Lage, so einen Zug fahren zu lassen? Wie erst soll ein Kind diese Übung schaffen? Das durfte nicht sein!

Was also tun? Für PWM braucht es einen Mikrocontroller. Zusätzlich eine Infrarot-Fernsteuerung einbauen? Langweilig. Einen Klatschschalter? Einen Bewegungsdetektor? Einen Bluetooth-Empfänger? Schließlich hatte meine Frau eine Idee. "Unter meinem Schreibtisch liegt seit Jahren dieser blinkende Zauberstab. Die Enkeltochter wird ihn nicht mehr anfassen. Wie wäre es denn damit?" Kurz entschlossen klebte ich in dessen Spitze einen Magneten ein. Der Zug sollte mit einem Reed-Kontakt unter dem Dach ausgelöst und wieder gestoppt werden können.

Ein Controller wurde aufgebaut mit einem ATtiny85, der als Arduino in C zu programmieren ist. Die fünf Pins des ATtiny werden alle belegt: PB0 Fahrmotor-PWM, PB1 Kesselfeuer-LED-PWM, PB2 Soundkarte ein/aus, PB3 Speed-Poti (analog Input), PB4 Reedschalter (digital Input). Die in der Lok befindliche Soundkarte wird natürlich weiter benutzt, schaltet man die Lok ein, dann gibt sie alle paar Sekunden Ventilgeräusche ab. Bei Berührung des Daches mit dem Zauberstab fängt die Lok an zu schnaufen und zu bimmeln, mit PWM fährt sie ganz langsam los und wird immer schneller. Wird das Dach wieder berührt, so verlangsamt sie bis zum Stillstand. Die Endgeschwindigkeit kann am Führerhaus an einem Poti eingestellt werden. Natürlich werden die erkannten Befehle irgendwie erwidert. Und damit sich der Prozessor nicht langweilt, flackert das Kesselfeuer permanent mit Zufallszahlen und PWM.

Dann die Vorführung. Nicht nur Kinder, auch Erwachsene rissen sich um den Zauberstab. Solange die Lok steht, trifft man das Dach ganz einfach. Wenn sie aber fährt, ist es nicht so leicht.

Informatik-Professoren dürfte der problemangepaßte Programmierstil entzücken. Aber Vorsicht, der Prozessor wird mit 5,5 Volt betrieben, die Siliziumdiode D1 schützt ihn vor Latch-up. Der ATtiny85 steckt in einer Fassung. Zum Programmieren wird er herausgezogen.

PS: Nach diversen Reparaturen ist zu erkennen: Ich sah noch nie ein Produkt mit sovielen, offenbar absichtlich eingebauten Sollbruchstellen. Alles soll möglichst schnell kaputt gehen: Wir leben in einer Wegwerfgesellschaft.

Download:


Kehrmaschine mit Panzersteuerung

Wer ein flaches Glasdach eines Wintergartens hat, kennt das Problem: Um es zu reinigen, kann man es nur unter Lebensgefahr betreten. Man riskiert, einzubrechen. Also wurde nach Feierabend "mal schnell" eine Kehrmaschine mit Funkfernsteuerung gebastelt. Der Reiz lag in der Echtzeit der differenziellen Lenkung: Wie mischt man effizient den Gas- mit dem Lenkkanal der Funkfernsteuerung? Wie geht das mit der PWM zusammen, wenn man nur einen Timer pro Motor für vorwärts/rückwärts hat? Kann man ohne zu stottern mit einem 8-bit ATmega328 gleichzeitig die Pulsweiten von drei Funkfernsteuerkanälen messen, zwei Kanäle mischen und für drei Motoren die PWM ausgeben?

In der Tat - man braucht keinen Cortex-CM4 dafür. Und der ATmega328 langweilt sich noch. Die Getriebemotoren kamen aus China. Für die drei Vollbrücken wurden paarige Dual-Power-MOS p- und n-Kanal ICs direkt und ohne Kühlkörper zusammengelötet und in einen Schrumpfschlauch gesteckt. Als Akku dient ein Smartphone-Typ mit 3000 mAh. Die Walze aus einem Staubwedel wurde beidseitig kugelgelagert. Und schon konnte es losgehen. Nicht im Bild: Um die Traktion der Räder zu erhöhen wurde später hinten ein Gegengewicht angebracht, und der Walzenträger wurde leichter gemacht.

Download:


Füllstandsmesser mit Ultraschall

Regenwassertonnen oder Abwasserbehälter füllen sich. Um den Füllstand experimentell zu beobachten, wurde ein Sensor entwickelt, der kapazitiv oder mit Ultraschall arbeiten kann. Mit einem Jumper wird die Betriebsart eingestellt: Offen: Ultraschall, gesteckt: Kapazitiv. Bei Ultraschall wird die Laufzeit gemessen. Kapazitiv mißt er die Ladezeit eines Kondensators. Hier tut ein ATmega328 als Arduino-Mini sein Werk, der über einen FTDI232-Adapter programmiert wird (Bild). Drückt man die einzige Taste am Gehäuse, wird der Füllstand auf einem Heltec-OLED-Display mit 128x64 Pixeln angezeigt. Man kann zusehen, wie die Tonne sich füllt. Als Ultraschallsensor wird ein HC-SR04-Modul verwendet.

Schnell zeigen sich die Grenzen des Ultraschalls: Hat die vergrabene Abwassertonne einen hohen Dom, wird der Schall an dessen Unterkante reflektiert: Sie scheint ständig voll zu sein. Auch die Resistenz gegen Feuchtigkeit ist bescheiden. Deshalb der zweite Versuch als kapazitiver Sensor. Der funktioniert aber auch nur über kurze Strecken, wenn man ein Coax-Antennenkabel als Sensorleitung zur Tonne benutzt. In die Tonne wird der isolierte Innenleiter und ein Erdungsdraht getaucht. Was noch fehlt, wäre ein Isolationstest und eine Kalibrierfunktion. Aber Vorsicht: Mit der verwendeten Library u8glib von Oli Kraus für das 128x64-Pixel OLED-Display stoßen die ATmega328 an ihre Programmspeichergrenze. Ein Arduino-"Pro Micro" mit dem ATmega32U4 tut es schon nicht mehr. Andere Libraries existieren, wurden aber nicht erprobt.

Download:


Füllstandsmesser mit separatem Kapazitätssensor

Um einen Grubensensor zu bauen, bei dem die Grube weit entfernt vom Ableseort liegen kann, wurde ein zweiteiliges System entwickelt. Der kapazitive Sensor (mit ATtiny13) ist am Grubenschacht abgebracht. Er mißt die Kapazität und wandelt sie in ein Soft-UART-Signal (9600 Baud, 8n1n) mit 5 Volt Hub um. Dieses Signal läßt sich mühelos über 50 Meter zu einem Display übertragen (erprobt). Zur Kapazitätsmessung wird hier eine Ladungspumpe benutzt, wie im Abschnitt #qmess beschrieben.

Die Display-Einheit ist mit einem Arduino-proMini auf Basis ATmega328 bestückt. Konkret ist der Füllstand einer 3m³-Grube (liegende Tonne) anzuzeigen. Zwischen Gartenhaus und Grube sind etwa 15 Meter zu überbrücken, die Anzeige ist im Gartenhaus installiert. Kapazitiver Sensor und Displayeinheit wurden deshalb getrennt aufgebaut.

Der in Wachs vergossene, kapazitive Sensor ist am Grubenschacht außen befestigt, er wandelt die gemessene Kapazität eines in die Grube hängenden Adernpaares "Strickleiter" in ein UART-Signal um (Soft-UART in ASM). Das Signal geht über ein 3-adriges Elektro-Installationskabel ins Haus. Dort endet die Leitung in einer UAE-Telefondose. Ein stabilisiertes 5-Volt-Netzteil (>200mA) mit RJ-Stecker liefert die Versorgungsspannung für drinnen und draußen. Der andere RJ-Stecker geht zur Displayeinheit.


Die Displayeinheit zeigt den aktuellen Füllstand in Metern als Pegel sowie die Grubenfüllung in Prozent und in Kubikmetern an, siehe Bild. Zur Kalibrierung des Systems dienen zwei hinter der Frontblende verborgene Tasten ("min" und "max"), bei leerer Grube ist die min-Taste zu drücken, bei voller Grube die max-Taste. Um versehentliche Betätigung zu verhindern, befinden sich beide hinter der Frontabdeckung. Über eine OK-Taste werden die Abfragen bestätigt. Überprüfen kann man das System mit einem Laser-Entfernungsmesser und mit einer Scilab-Kalibriertabelle (im File fuellstand.sce).

Download:


Lüftungssteuerung

Sie haben einen feuchten Keller, eine feuchte Garage, oder einen muffigen Bungalow? Den hatten wir auch. Bis uns dieses Gerät die Ursache verriet. Nun ist er wieder trocken und duftet wie neu.
Funktion: Über vier Sensoren und fünf Relais ist die Klimatisierung z.B. eines Gartenhäuschens steuerbar. Es stehen vier Sensoren und vier Aktoren zur Verfügung: zwei Lüfter-Relais (Umluft Dach und Frischluft von außen), ein Heizungsrelais und zwei Relais für einen Aktor mit drei Zuständen (auf/zu/aus) für einen Fensterantrieb (Comunello LIWIN). Als Sensoren wurden vier Adsong AM2302 verwendet, siehe auch 10-Kanal Temperatur und Feuchtesensor.

Pro Sensor werden die Temperatur in °C und die relative Feuchte in % gemessen und daraus die absolute Feuchte in g/m³ und der Taupunkt in °C (Kondensationstemperatur) berechnet. Auf dem 4x20 Zeichen SWART-Display (Eigenbau) oder über ein USB-Terminal kann man je nach Bedarf die Sensoren oder die Aktoren beobachten, dazu dient der zentrale Drehknopf mit Drucktaster. Über die USB-VCP-Schnittstelle des Arduino lassen sich die Werte auch auf dem PC inspizieren, siehe rechtes Bild.
Die vier Sensoren sind an verschiedenen Orten anzubringen: im Dach, an der Hauswand außen am Lüfter, im Zimmer nahe der Decke und im Zimmer nahe am Fußboden.
Vier Aktoren stehen zur Verfügung. Zwei Lüfter für Umluft (um über einen Konvektor Dachwärme hereinzuholen) und für Zuluft, um trockene Frischluft von außen zuzuführen. Dazu kann ein Fensterantrieb über zwei Relais bedient werden. Nicht zuletzt ist ein starkes Relais verbaut um eine Heizung als Frostschutz schalten zu können. Es können 12V-Lüfter oder 230V-Lüfter angeschlossen werden.
Das Steuerungsprinzip ist komplex. Die Heizung wird eingeschaltet unter 5°C. Mit dem Lüfter für Umluft wird Dachwärme hereingeholt. Ist die Luftfeuchte draußen geringer als drinnen, wird der Lüfter für Zuluft eingeschaltet und das Klappfenster geöffnet. Dito wenn es draußen wärmer als drinnen ist. Man ahnt, daß Widersprüche entstehen. Zum Glück ist der Programmspeicher nicht einmal halbvoll: Als Freak könnte man über unscharfe Schaltregeln (Fuzzy-Sets) nachdenken.
Was noch fehlt, wäre ein Simulator für die Sensorsignale. Das Problem: Man kann nach Inbetriebnahme nicht so einfach prüfen, ob das Gerät wirklich funktioniert, weil sich weder Temperaturen, noch Luftfeuchtigkeiten schnell mal testweise ändern lassen.
PS: Manche Arduino-Nano werden mit dem chinesischen Clone des FT232, dem CH340/341 geliefert. Dafür ist ein spezieller Treiber zu installieren. Der FTDI-Treiber für den original im Nano verbauten FT232 ist unter WindowsXP bereits vorhanden.

Downloads:


10-kanaliger Temperatur- und Feuchtesensor

Im Haus soll an zehn Meßstellen gleichzeitig auf Temperatur, relative Luftfeuchte, absolute Luftfeuchte und Taupunkt (Kondensationstemperatur) gemessen werden? Kein Problem. Die Ausgabe erfolgt über USB-VCP (PuTTY-Terminal o.ä.) oder über ein SWART-Display. Es kam ein Arduino-Nano (ATmega328P + FT232RL) zum Einsatz. Als Sensoren wurden Adsong AM2302 verwendet. Der Sensor hat ein sehr exotisches Eindraht-Protokoll. Für das Protokoll existierte eine Arduino-Library DHT, die allerdings schwächelte: Sie ließ nur einen Sensor zu und berechnete weder absolute Luftfeuchte in g/cm³ noch den Taupunkt in °C. Auch besaß sie ein Initialisierungsproblem. Deshalb wurde aus der DHT-Lib die DHT2-Lib gemacht, die allerdings vorher unter Arduino installiert werden muß.

Mit Tangit (PVC-Kleber für Dachrinnen) wurden in ein Leergehäuse zehn RJ45-Buchsen eingeklebt. Dazu noch eine Buchse für ein SWART-Display links und eine Befestigung für den Arduino-Nano. Die USB-Buchse des Nano ragt seitlich rechts heraus. Je ein pull-up Widerstand von 10kOhm ist zwischen SDA und VDD auf jede RJ45-Buchse zu löten. Die Pinbelegung der AM2302-Sensoren an den RJ45-Buchsen ist:

damit sind auch 4-polige RJ10-Stecker einsetzbar. Die Pins der DHT-Sensoren AM2302 sind im Quelltext bezeichnet.

Downloads:


Drehzahlsteuerung mit ATtiny85

Um eine Drehzahlsteuerung (hier für eine Zahnradpumpe) aufzubauen, kann man einen Mikrocontroller nutzen, der einen Timer für die PWM-Generierung besitzt und einen ADC, um einen Stellwert von einem Poti abzulesen. Dazu sollte ein ATtiny genügen. Mit der Software-Library für die USB-Schnittstelle als gelingt es, den ATtiny85 über USB zu programmieren, sowie Daten über USB auszutauschen. Der Motor RS360SH wird mit einem Logic Level PowerMOS-Transistor geschaltet. Der kommt ohne Kühlkörper aus. Die dicken Elkos gestatten den Betrieb an einem Steckernetzteil mit 9 Volt, 1 Ampere.

Aber Vorsicht: Bei der Installation des USB-Micronucleus ist erhöhte Aufmerksamkeit gefragt. Das Projekt ist eher nicht für Einsteiger geeignet. Zusätzlich wurde eine 3,5 mm Klinkenbuchse für Fernschaltung ein/aus installiert, siehe Bild rechts. Leider war die Dichtung meiner Pumpen dieses Typs am Motoranschluß undicht. Zu spät bemerkt. Pumpe vorher erproben!

Downloads:


Mini-Spektrometer mit Arduino-"Pro Micro"

Seit einigen Jahren vertreibt Hamamatsu den vielleicht kleinsten Spektrometermodul weltweit für etwa 200 Euro. Was liegt da näher, als mit einem Arduino zu versuchen, dem Modul Leben einzuhauchen. Hamamatsu bot 2016 zwar einen Arduino Quellcode an, der aber wollte beim Autor nicht funktionieren. Das schwer verständliche Timing der Spezifikation macht es nicht einfacher. So wurde aus dem Beispielcode etwas funktionierendes gemacht.

Einfach den Spektrometer-Modul an einen Arduino-"Pro Micro" anstecken, Arduino Code (*.ino) laden, Board und Port einstellen und Code auf den "Pro Micro" hochladen. Die Pins des Hamamatsu-Moduls sind sehr zart. Um sie zu schützen, wurde eine kleine Adapterplatine entwickelt, die es gestattet, ihn mit üblichen Jumperkabeln zu testen. Orcad- und Gerberdaten liegen anbei. Einige Platinchen liegen noch herum, gegen frankierten Rücksendeumschlag gibt es die gratis von mir.

Um die Ergebnisse zu visualisieren, wurde eine kleine Windows GUI geschrieben mit Java- Processing3, die mit dem Arduino über USB-VCP kommuniziert. Ausführbare Dateien liegen bei. ZIP-File der GUI auspacken und gewünschte EXE doppelklicken. Wichtig: die EXE braucht die neben ihr stehenden Directories (Pfade nicht ändern!). Fortgeschrittene können auch mit dem Quellcode (*.pde) experimentieren. Weil das Spektrometer extrem lichtempfindlich ist (in schwarze Kiste packen), wurde eine automatische Nachregelung der Integrationszeit eingefügt. Diese verhindert allerdings die Messung der absoluten Helligkeit. Auch fehlt noch eine Normierung der Linienamplituden auf die spektrale Kennlinie des Sensormoduls.

In die GUI sind folgende Funktionen integriert: Mit 'a' kann auf gleitenden Mittelwert umgeschaltet werden (graue <--> grünliche Darstellung); mit 'h' wird die Hilfe aufgerufen; mit 't' lassen sich zwei Kalibrierlinien (532 nm und 660 nm) anzeigen, mit denen die x-Achse mit zwei Laserpointern kalibriert werden kann; mit 's' läßt sich die Skala ein- und ausschalten und mit 'd' sieht man alle vom Arduino an die GUI übertragenen Daten in der Processing3-Konsole. PS: Die GUI nimmt den ersten freien, seriellen Port auf USB - kann schiefgehen, wenn vorher schon andere steckten: Windows-Gerätemanager (devmgr) befragen.

Downloads:


Kältesensor

Manchmal friert man im Winter - und manchmal nicht. Unser Kälteempfinden ist nicht in Grad Cesius angebbar. Luftfeuchte, Regen, oder Windstärke mischen mit. Um also einen Kälte-Empfindungs-Sensor zu bauen, braucht man mindestens ein Thermometer, einen Regenmesser, einen Feuchtemesser und einen Windmesser. Und dann noch hochkomplizierte Vorhersagemodelle, für die man keine Referenzwerte zur Validierung findet. Was also tun? Ganz einfach: Man nehme einen Körper, der grob das Größenverhältnis unseres Körpers hat und heize ihn auf 37°C auf. Die dazu nötige Heizleistung ist dann ungefähr ein Maß unseres Kälteempfindens.

Als Stubenhocker lieben wir eine Zimmertemperatur von mindestens 24°C - damit haben wir einen Referenzpunkt für die "Normalleistung" (Bild mitte). Nun können wir den Sensor nach draußen in die Kälte hängen und sehen, was geschieht. Wir können ihm Mütze, Anorak und Pullover anziehen, um die Heizleistung wieder auf "Normalleistung" herunter zu bringen.
Um die Bedienung zu erleichtern, sendet der Sensor seine Daten via Bluetooth. Er hängt an geeigneter Stelle im Freien. Seine Zieltemperatur regelt ein Thermostat, der mit einem NTC bestückt ist. Eine Roboremo-App gestattet den Dialog unter Android. Geheizt wird intern mit einem Widerstand, dazu hängt der Sensor an einem USB-Netzteil (stabilisiert 5 Volt / 1 Ampere). Die nichtlineare Kennlinie des NTC wurde vorab mit einem Scilab-Script berechnet. Vier Referenzpunkte wurden gemessen, um daraus ein Korrekturpolynom zu bestimmen (Bild rechts).


19-Kanal Trübungssensor

Soll die Qualität einer trüben Substanz (Brauchwasser, Bier, Lack, Glas etc.) als Ortskurve der Rückstreuung bestimmt werden, kommt ein "Multi-Angle Light Scattering" (MALS) Sensor zum Einsatz, der die Licht-Rückstreuung rundum in 10-Grad-Schritten mißt. Eine rote Laserdiode (635 nm) leuchtet dazu in die Trübsubstanz (Glasrohr 20 mm), die winkelabhängige Rückstreuung wird von Photodioden gemessen. Bei diskretem Aufbau würde dieser Sensor soviel kosten, wie ein Mittelklassewagen. Geht es einfacher? Ja, es geht. Mit dem Arduino-Compiler, einem ATmega32U4, 19 speziellen Photodioden und einer Laserdiode lassen sich hervorragende Resultate erzielen. Eine Mini-GUI für Windows/Linux/Android unter Processing3 (Java) ist nützlich zur Ergebnisdarstellung.

Kernprobleme jedes Photosensors sind Dunkelmessung und Dynamikbereich. Bei der Dunkelmessung siegt der Sensor, der am wenigsten rauscht. Und dieses Rauschen wird maßgeblich von der noch beherrschbaren Größe des Widerstands der Gegenkopplung des ersten OPV bestimmt, der als UI-Wandler (Photostrom -> Spannung) arbeitet. Will man höchste Empfindlichkeit erreichen, muß man bis in den hohen Megaohm-Bereich gehen. Das aber bedeutet, Leitflächen zwischen Photodiode und erstem OPV perfekt zu isolieren, also einzugießen oder zu lackieren. Firma TAOS (heute AMS) hatte damals eine bessere Idee: Man stellt seither Photodioden mit integriertem UI-Wandler her. Und die geben eine Frequenz statt eines Analogwertes aus, die über einen Dynamikbereich von 6 Zehnerpotenzen variert. Dieser Dynamikbereich ist mit einem diskreten Schaltungsaufbau kaum zu erreichen.

Download:


Modalhammer

Man sagt, im Gleichschritt marschierende Soldaten hätten schon Brücken zum Einsturz gebracht. Ob es stimmt, ist ungewiß. In der Tat besitzt jedes Objekt mehr oder minder starke Eigenresonanzen, man denke an den Klang eines Glases oder einer Glocke. Zur Anregung kann man weißes Rauschen benutzen, oder einen Dirac-Impuls. Idealerweise hat dieser auch (nahezu) ein weißes Spektrum. Um die Qualität von Geschirr oder Gläsern zu prüfen, wurde dieser Hammer entwickelt. Die Herausforderung besteht darin, einen prellfreien Schlag (Single-Hit) zu erzeugen. Die Herausforderung besteht darin, daß der Hammer nur genau einmal auf die Oberfläche aufschlagen darf.

Mit einem Schrittmotor wird der Hammerarm beschleunigt. Unmittelbar vor dem Aufprall wird die Drehrichtung umgekehrt. Die Federkraft des Hammerarms läßt ihn nur genau einmal aufschlagen. Bis dieses Husarenstück das erste mal gelang, verging ein Jahr. Umso größer war der Jubel! Nicht nur das Timing in der Software war zu optimieren, auch die Federkonstante des Hammerarms. Im Bild rechts wurden 32 Single-Hits nacheinander geschlagen (blau: Hammersensor, braun: Motorstrom, rot: Drehrichtung, grün: Motor-PWM). Da inzwischen ein Produkt daraus wurde, müssen wir auf weitere Details verzichten.

Download:




If not otherwise noted, pages are "open source":

www.gheinz.de/techdocs
info@gheinz.de



Besucher seit 6. Dez. 2021: