zurück



Technische Hilfsmittel


Inhalt / Contents




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). In difference to our "serial interface" (RS232) on 8x2 = sixteen wires, the TTY was bidirectional (simplex) on two wires. This allowed digital Telex-communication on telephone wires around the world, the digital era was born 60 years before first transistors - see the principle drawing of TTY and Morse's circuit. 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-Code here incl. some often needed printf format, printf escape-sequences. It became the background for all 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:


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 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 oder kapazitiv?

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 prima, 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:


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 einfach. 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. Leider ist die Dichtung aller Pumpen dieses Typs am Motoranschluß etwas undicht. Vielleicht eine andere Pumpe benutzen. Zusätzlich wurde eine 3,5 mm Klinkenbuchse für Fernschaltung ein/aus installiert, siehe Bild rechts.

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:


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 einem ATmega32U4, 19 speziellen Photodioden und einer Laserdiode lassen sich hervorragende Resultate erzielen.

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 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 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. Diesen Dynamikbereich möchte man mit einem diskreten Schaltungsaufbau erst einmal bewerkstelligen.

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 Winzling entwickelt. Die Herausforderung besteht darin, einen prellfreien Schlag (Single-Hit) zu erzeugen. Der Hammer darf nur genau einmal auf die Oberfläche aufschlagen!

Mit einem Schrittmotor wird der Hammerarm beschleunigt. Unmittelbar vor dem Aufprall wird die Drehrichtung umgekehrt. Die Federkraft des Hammerarms läßt ihn dennoch 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 wohl inzwischen ein Produkt daraus wurde, müssen wir auf Details verzichten.

Download:




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

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