Dimmen ohne Triac

Loading

HINWEIS: In diesem Blogbeitrag werden Schaltungen beschrieben, in denen mit Netzspannung und Netzpotentialen gearbeitet wird. Arbeiten mit Netzspannungen sind LEBENSGEFÄHRLICH und dürfen nur mit entsprechenden Kenntnissen und Befugnissen durchgeführt werden!

DSC_4883Als klassische Variante, einen ohmschen Netzverbraucher (z.Bsp. Glühlampen) in ihrer Helligkeit zu steuern, wird üblicherweise ein Triac in einer Phasenanschnitt- oder Phasenabschnittsteuerung verwendet. Diese Schaltung ist einfach aufzubauen, kostet wenig und man kann durch Änderung der Zeitkonstante eines RC-Gliedes (durch Ändern des Widerstandes mit Hilfe eines Potentiometers) die Spannungsform an der Last beeinflussen. Dies geschieht durch „An- oder Abschneiden“ der „Sinuswelle“ zu einem gewünschten Zeitpunkt. Die daraus resultierende, verbleibende „Wellenform“ versorgt die Last mit Energie. Da die „Sinuswelle“ nun jedoch nicht mehr „vollständig“ ist, ist auch die effektiv übertragene Energie zur Last kleiner. Das bedeutet weniger Spannung liegt an der Lampe an. Somit sinkt auch die Lampenhelligkeit. Hierzu findet man reichlich Informationen im Netz. Will man eine solche Phasenanschnittsteuerung nun jedoch nicht mit einem Potentiometer steuern, sondern mit einem Microcontroller oder einer externen analogen Spannung von zum Beispiel 0-5V, so ist hier ein erweiterter Schaltungsaufwand notwendig.

Auf eine ganz andere Weise ist die hier dargestellte Schaltung aufgebaut. Hier wird nicht mit einem Triac die negative bzw. positive Halbwelle angeschnitten, sondern mit einem FET der Pfad in einem Brückengleichrichter durchgeschaltet. Der FET selbst wird per PWM (PulsWeitenModulation) angesteuert. Die PWM wiederum erzeugt der Einfachheit halber ein Atmega Microcontroller. Durch die frei wählbaren PWM Grundfrequenzen sind hier sehr schnelle und somit auch flackerfreie Schaltvorgänge realisierbar.

_20151123_104151Die Skizze soll die simple Funktionsweise veranschaulichen: Im Bild ist der Stromkreis dargestellt. Der Verbraucher liegt in Serie mit dem Brückengleichrichter an der Phase L und dem Neutralleiter N. Im Querpfad des Brückengleichrichters befindet sich ein Schalter (in der realen Anwendung ein angesteuerter Mosfet). Wird der Schalter S nun nicht betätigt, bleibt also offen, kann durch die Dioden kein Strom fließen. Weder die positive noch die negative Halbwelle finden einen geschlossenen Stromkreis.  Anders sieht es jedoch aus wenn der Schalter S geschlossen wird. Dies ist in der rechten Skizze dargestellt. Der Strompfad einer Halbwelle ist in Rot, der der anderen Halbwelle in blau dargestellt. Der Strom fließt und die Lampe leuchtet. Das Besondere daran ist es nun, verfolgt man die Stromrichtung beider Halbwellen durch den Schalter, so kann man erkennen, dass bei beiden Halbwellen dieselbe Stromrichtung vorliegt. Damit ist es nun möglich mit einem Transistor oder FET, eine Wechselspannungsquelle zu schalten. Das Ein/Aus Verhältnis (also PWM) des Schaltsignals, kann somit wieder die effektive Spannung an der Last beeinflussen.

dimmerUnd genau eine solche Schaltung habe ich hier aufgebaut. Der Atmega-Microcontroller erzeugt ein PWM Signal, das über einen Optokoppler den Mosfet ansteuert. Somit sind ganz einfach per Software alle möglichen Schalt- und Dimm-Szenarien realisierbar. (z.Bsp. Steuerung der Lampenhelligkeit über eine Analogspannung am ADC des µC …)

DSC_4882Im Bild rechts ist ein Testaufbau des Dimmers (Laststellers) dargestellt. Die Versorgungsspannung des µC wird hier noch durch einen AC/DC Converter realisiert, um eingangsseitig eine galvanische!! Trennung vom Netz herzustellen.

Raspberry als Datenlogger Teil2…Die Sensoren und Python

Loading

DSC_4789
Raspberry PI samt Powerbank im Gehäuse

In Teil1 dieses Projektes haben wir dem Raspberry ein Betriebssystem verpasst und das ein wenig für die Anwendung aufbereitet. Wir wollen ja an den PI mehrere Sensoren anschließen und diese dann zyklisch auslesen und die Daten in einer Datei auf einem USB-Stick speichern. Die Aufzeichnung soll so lange laufen, bis ein Taster gedrückt wird, der den Prozess beendet. Die einzige Anzeige des PI sind zwei Leuchtdioden, die, sowie auch der Taster, an die GPIOs des PI angeschlossen sind. Darum haben wir folgende Punkte bereits erledigt:

  • Die PI Platine gemeinsam mit einer USB Powerbank in ein Gehäuse eingebaut
  • Anschlüsse wie Ethernet, USB, HDMI durch Ausschnitte im Gehäuse nach außen geführt
  • Zwei Leuchtdioden und einen Taster ins Gehäuse eingebaut und auf die GPIOs geschaltet
  • Den I²C Bus des PI auf eine Buchse im Gehäuse geführt
  • Eine MicroSD Karte mit einem Raspi-Wheezy Image bespielt
  • Einen USB-Stick mit FAT32 formatiert
  • Das Betriebssystem soweit konfiguriert, dass das Filesystem für den Stick, alle Module für den I²C, sowie Python geladen werden.
DSC_4790
Raspberry PI im Plastikgehäuse

Der Pi sieht fertig zusammengebaut nun so aus (siehe Bild rechts). Nun können die Sensoren angeschlossen werden. In diesem Fall handelt es sich um Luftfeuchtigkeits-/Temperatursensoren mit der Bezeichnung HYT939 des Herstellers Hygrochip. Hier ein Auszug der technischen Daten aus dem Datenblatt des Herstellers:

Ausführung: Feuchtesensor im TO39 Gehäuse, druckfest, mit Edelstahl-Sinterfilter
Genauigkeit:
Feuchte ±1,8% rF, Temperatur ±0,2 °C
Genauigkeit 0…10% rF (0 … 50°C): ±(0,1% rF + 17% aw)
Messbereich: Feuchte 0 … 100% r.F. (max. dp = +80 °C), Temperatur – 40 … +125 °C
Abmessungen: 5,2 x 9 mm
Anschlüsse: TO 39 Footprint
Auflösung Feuchte: 0,02% rF
Hysterese bei 50% rF: < ±1% rF
Linearitätsfehler: < ±1% rF
Ansprechzeit t63: < 10 sec (Mit Edelstahl-Sinterfilter)
Auflösung Temperatur: 0,015 °C
Digitale Schnittstelle: I2C, Adresse 0x28 oder Alternativadresse
Betriebsspannung: 2,7 … 5,5 V
Stromaufnahme (typ): < 1µA in Bereitschaft < 22µA bei 1Hz Messrate 850 µA maximal

DSC_4792
HYT939 Sensor

Eine kleine Platine dient als „Sensorboard“. Hier besteht die Möglichkeit, vier HYT´s anzustecken. Natürlich müssen auch die Adressen der Sensoren unterschliedlich sein. Der HYT939 ist per default auf hex 0x28 eingestellt. Will man diese Deviceadresse ändern, so muss der der HYT in den Command-Mode versetzt werden, um dann die Konfigurationsdaten empfangen und in sein EEprom schreiben zu können. Dazu muß der Sensor innerhalb der ersten 10ms nach seinem PowerUp in den Command-Mode gebootet werden. Das lässt sich am einfachsten mit einem ArduinoUno bewerkstelligen… Dabei wird der Powerpin des HYT über einen Digital Out Pin des Arduino versorgt. So ist es möglich, das Timing genau einzuhalten und den Command Mode zu erreichen.

Nachdem der Sensor nun an den Raspberry angeschlossen ist, fehlt nur mehr ein Programm, um ihn oder auch mehrere anzusteuern und auszulesen. Hier verwende ich den Python Interpreter. Damit lassen sich auf einfache Weise die Daten auslesen und auch auf Datenträgern speichern. Das „Programm“ besteht aus zwei Teilen:

  • Hauptscript: beinhaltet nur eine Endlosschleife, die die LEDs steuert, den Taster abfragt, die Sensorfunktion aufruft, deren ausgelesene Werte übergibt, aufbereitet und auf den Stick speichert.
  • Funktion Sensor auslesen: addressiert den I²C Bus, liest die Sensordaten aus, rechnet sie in lesbare Werte um und übergibt den Output an die Funktion
# /usr/bin/python
# License: GPL 2.0
# edited by Ingmar B. Aug.2015

import os
from time import *
import time
import threading
import hyt939o 
import RPi.GPIO as GPIO

# Setup LED Ports (pin12 = LED rot, pin18 = LED gruen)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(16, GPIO.IN)

# LED Gruen einschalten sobald das Script gestartet ist
GPIO.output(18, GPIO.HIGH)

#gpsd = None #seting the global variable
address = [0x2a, 0x29] 
#hyt939 = [0, 0]
hum = [0, 0]
temphyt = [0, 0]
loopon = True         #set variable for loop
i=1             #counter for address selection
os.system('clear')     #clear the terminal (optional)
 
while loopon:
        # bei beginn des auslesens aller daten die rote Led einschalten
    GPIO.output(12, GPIO.HIGH)
    if GPIO.input(16)== GPIO.HIGH:
      loopon = False
        os.system('clear')
         
      # Variablen fuer Sensor HYT 939 uebergeben 
    for i in range(2):
                
        hyt939=hyt939o.ReadMeasurement(address[i])            
        time.sleep(0.1)
        hum[i]=hyt939[0]
        temphyt[i]=hyt939[1]
      
                print '--------------------------------------- '
            print 'SENSORS reading Sensor Nr.:' , i
            print
            print 'humidity    hyt939         ' , hum[i]
            print 'temperature hyt939         ' , temphyt[i]
            print '--------------------------------------- '
            print
    print 'data to write:' , str(hum[0]), str(temphyt[0]), str(hum[1]), str(temphyt[1])
    print ("date :" + time.strftime("%x"))         
        print ("time :" + time.strftime("%X"))
    print
    date = time.strftime("%x")
    zeit = time.strftime("%X")
    
      ## write all data to usbstick
      
        fileout = open("/media/usbstick/wetterfrosch.txt", "a")

    time.sleep(0.1)

        fileout.write(date+";"+zeit+";"+str(hum[0])+";"+str(temphyt[0])+";"+str(hum[1])+";"+str(temphyt[1])+"\n") 
    
        time.sleep(0.1)
        fileout.close()
        time.sleep(0.1)

      # nach schreiben bzw auslesen der daten rote LED wieder abschalten
        GPIO.output(12, GPIO.LOW)
        time.sleep(0.8) #set to whatever

GPIO.output(18, GPIO.LOW) # gruene Led ausschalten

print "Ende" 

Das folgende Listing liest den Sensor aus:

# Reading mesaurements from HYT 939 humidity and temperature sensor
# First Version by Caerandir May 2014 modified by i.bihlo 2015

import smbus, time
bus = smbus.SMBus(1)    # Raspberry Rev. 2
address = 0x28          # Fixed default address of HYT 939

# Initialize sensor to acquire measurements
def MeasurementRequest():
        void = bus.write_quick(address)
    time.sleep(0.1)

# Read Humidiy and Temperature to 14 bit accuracy
def ReadMeasurement():
    void= bus.write_quick(address)

    time.sleep(0.1)    
        # Acquire 4 byte from sensor
        #time.sleep(0.1)
    Readout = bus.read_i2c_block_data(address,0,4)

    # Calculiere die relLF in % aus den vier Bytes in "Readout"
    RelHum = Readout[0]<<8 | Readout[1]
    RelHum = RelHum & 0x3FFF
    RelativeHumidity = 100*RelHum/(2**14)

    # Calculiere die Temperatur vom Sensor
    Readout[3] = Readout[3] & 0x3F
    temp = Readout[2]<<6 | Readout[3]
    Temperature = 165.0*temp/(2**14)-40
       
        print "Hrel: ", RelativeHumidity, " %"
        print "T: ", Temperature, " C"

        return RelativeHumidity, Temperature

MeasurementRequest()
time.sleep(0.2)

ReadMeasurement()

 

Eine Versuchsmessung über einen Tag und eine Nacht mit drei Sensoren hat folgendes Ergebnis geliefert. Hier sind die Temperaturwerte der Sensoren dargestellt. (Die Daten vom USB-Stick wurden mit Matlab importiert und daraus ein Plot erstellt.)

temperature_3sensoren

Raspberry als Datenlogger Teil1…Das Betriebssystem einrichten

Loading

Der Raspberry Pi ist ja mittlerweile ein bekannter und beliebter Scheckkartenplatinen-Computer mit dem sich allerlei anstellen lässt. Vom TV-Frontend mit Kodi, über Spielekonsolenemulatoren mit Retropi bis hin zum Bürorechner, ist damit fast alles möglich. In diesem Projekt möchte ich vorstellen, wie mit Hilfe des Raspberry Pi Model2 physikalische Größen wie Temperatur und Luftfeuchtigkeit gemessen und auf einem Speichermedium geloggt werden. Und zwar mit einem Feuchtesensor der Type HYT939 der am I²C Bus angeschlossen wird, genauer gesagt: mehrere I²C Feuchtesensoren am Bus…

DSC_4789Wir beginnen zuallererst mit der Versorgung des Raspberry PI. Im Bild ist ein Pi2 in ein einfaches Kunststoffgehäuse eingebaut und an eine 2Ah USB-Powerbank von RS-Components angeschlossen. Der Ladeanschluss der Powerbank ist vom Gehäuse nach aussen geführt. So kann der Pi wahlweise über die Powerbank (mit einer nicht rechenintensiven Anwendung bis zu 3h) oder über eine externe USB-Versorgung (z.Bsp. einem Handyladeadapter) betrieben werden. Der I²C Bus des PI (Pin 3 SDA und Pin 5 SCL sowie Pin 2,4 +5V und GND an Pin 6,14…) ist auf einen RJ Stecker im Gehäuse ausgeführt. Um später irgendwelche Statusmeldungen ausgeben zu können, sind zwei LEDs an die GPIOs 24 und 18 (an Pin18 und Pin12) angeschlossen. Ein weiterer GPIO wird über einen 22k Pulldown-Widerstand an einen Taster an 5V geschaltet. (GPIO23 an Pin16).

Für die USB Anschlüsse, Ethernet und HDMI wurden im Gehäuse passende Ausschnitte gemacht, an eine USB Schnittstelle ein Keyboard und an den HDMI Port ein Monitor angeschlossen. Die LAN Verbinung mit Internetzugang sollte auch hergestellt sein, um nach der Ersteinrichtung die benötigten Module und Updates laden zu können.

Jetzt fehlt nur noch das Speichermedium mit Betriebssystem. Der PI2 ist mit einem Micro-SD Slot ausgestattet. Ich habe hier eine 4GB Micro SD mit einem raspian-wheezy image bespielt. Um das Imagefile auf einfache Weise auf die SD-Karte zu bekommen, empfiehlt es sich, das Tool win32diskimager zu verwenden. Ist die Speicherkarte dann fertiggestellt, kann man beginnen.

Der Raspberry zeigt nach dem Einschalten kurz seinen Farbverlauf und dann beginnt auch schon der Bootprozess. Ist der dann beendet, so startet das OS am PI erstmal eine Setup-Routine.

Hier sind nun folgende Schritte durchzuführen:

  • im Menu internationalisation options unter I1 die entsprechenden locals einstellen -> DE_UTF_8
  • in advanced options unter A2… einen Hostname vergeben z.Bsp.:“raspisensor“, in A4… SSH enablen, in A7 …I²C enablen und „load per default“ und in A8 … „serial enable“ und „login shell“ aktivieren
  • dann noch expand  filesystem wählen damit der Speicherplatz der gesamten SD-Karte genutzt wird
  • jetzt noch mit finish -> reboot neu starten

Jetzt fährt der PI wieder hoch und bleibt beim Login-Prompt stehen. Mit login: pi und dem passwort: raspberry loggt man sich nun ein. Mit den folgenden Kommandos werden Updates und benötigte Module installiert:

sudo apt-get update
sudo apt-get install python-smbus    
(installiert den system management bus)
sudo modprobe i2c_bcm2708             (kernelmodule für I²C von Hand laden)
sudo modprobe i2c_dev
lsmod                                                         (geladene Module listen)
sudo i2cdetect -y 1                                  (I²C ports scannen)

Es empfiehlt sich, die Kernelmodule per Autostart zu laden. Das geht wie folgt:

sudo nano /etc/modules                        (mit dem Nano-Editor die Datei modules öffnen …)

dann folgende Zeilen hinzufügen:

i2c_bcm2708
i2c_dev

dann mit STRG+X den Editor beenden und bei Speichern JA wählen.
danach mit:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

überprüfen, ob hier bereits ein Eintrag „blacklist i2c-bcm 2708“ existiert.
Falls ja, ist der auszukommentieren oder zu löschen.

jetzt wieder neustarten mit:

sudo shutdown -r now

danach wieder einloggen und mit

lsmod

überprüfen ob die gwünschten Module korrekt geladen sind.

Da wir später die Daten von den Sensoren in eine Datei loggen wollen und diese Datei auf einem USB-Stick gespeichert werden soll, sind folgende Schritte notwendig:

  • einen USB-Sick mit FAT32 Filesystem auf einem Windowsrechner formatieren
  • auf dem PI das Filesystem FAT32 installieren
  • den Stick in den PI stecken und die Mountlist um den Stick erweitern

Zuerst laden und installieren wir das Filesystem:

sudo apt-get -y install ntfs-3g hfsutils hfsprogs exfat-fuse

dann legen wir folgendes Verzeichnis an:

sudo mkdir /media/usbstick (usbstick dient hier als beispielname…)

sudo blkid -o list -w /dev/null

(listet die IDs der Datenträger auf -> unser Stick sollte in der Liste als vfat mit einer ID in dem Format XXXX-XXXX erscheinen)

sudo mount -t vfat -o utf8,uid=pi,gid=pi,noatime /dev/sda /media/usbstick

nun öffnen wir folgende Datei mit dem Editor:

sudo nano -w /etc/fstab

die ID des USB-Sticks von vorher tragen wir nun samt folgender Zeile ein und speichern dann wieder ab:

UUID=XXXX-XXXX /media/usbstick/ vfat utf8,uid=pi,gid=pi,noatime 0

weiter geht’s mit der Einrichtung der GPIOs und den Python libraries:

sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

Noch ein paar allgemeine Einstellungen:

sudo nano /etc/networks/interfaces  (Wir wollen eine fixe IP Adresse vergeben, um später einfach per SSH auf den PI zugreifen zu können)

folgende Zeile ersetzen:

iface eth0 inet dhcp

durch:

iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask yyy.yyy.yyy.yyy
gateway zzz.zzz.zzz.zzz

und wieder speichern:

Das zu Anfang gestartete Setup Script lässt sich immer über folgenden Befehl aufrufen:

sudo raspi-config

Die Systemzeit des Raspi (für meine Anwendung benötige ich auch einen Zeitstempel) lässt sich mit folgendem Befehl stellen:

sudo date „MMTThhmmJJ“

Das war´s für den Anfang. Im zweiten Teil beschreibe ich dann die Sensorhardware und die Python-Scripts, die die Sensoren dann auslesen…

 

 

 

 

 

 

 

 

CASIO VL-1

Loading

IMG_4791Ein spannendes Stück Technik aus meiner Jugendzeit ist mir diesmal beim Herumstöbern im Keller in die Hände gefallen: Der oder die CASIO VL-TONE. Es handelt sich dabei um ein Mini-Musikinstrument, ein Keyboard bzw. Synthesizer, der auch ein Taschenrechner ist. Man sollte die Bezeichnung „Taschenrechner“ jedoch nicht ganz wörtlich nehmen. Vielleicht passt eher der Ausdruck „mit den Funktionen eines Taschenrechners „. Der VL-TONE oder VL-1 ist ein Miniatursynthesizer der japanischen Firma Casio, der von 1981 bis 1984 hergestellt und verkauft wurde.

Der von einem der Casio Gründer entwickelte sehr kostengünstige LSI-Chip wurde zur Musikerzeugung genutzt. Ein Taschenrechnerchip erweiterte den mageren Funktionsumfang des LSI (LargeScaleIntegration) Chip und machte den VL1 verkaufstauglich.IMG_4793

Die 17 Vollton-Tasten (also zwei Oktaven) waren in drei Oktaven (LOW-MID-HIGH) umschaltbar. Das ergibt insgesamt vier Oktaven und eine große Terz. Der  VL1 ist mit nur einem Klangmodulator ausgestattet. Das bedeutet es kann immer nur ein einziger Ton wiedergegeben werden. Polyphone Töne wie Akkorde sind nicht möglich. Die Vielfalt der vorprogrammierten Instrumente ist auch sehr überschaubar: Es gibt die Einstellungen: Piano, Fantasy, Violin, Flute, Guitar und ADSR. Wobei bei ADSR eine eigene Stimme (Klangbild) programmiert werden kann. Die besteht aus einer achtstelligen Zahl, die im Taschenrechnermodus eingegeben und im Speicher abgelegt wird. Aus dieser Zahl wird dann im Keyboard-Modus ein eigenes Klangbild moduliert. Jede dieser Acht Stellen ändert einen anderen Parameter des Modulators …

IMG_4792

Der VL-1 besitzt auch einen Rhythmuserzeuger der zehn vordefinierte Rhythmen enthält. Dazu gehören: March, Waltz, 4-Beat, Swing, Rock-1, Rock-2, Bossanova, Samba, Rhumba und Beguine. Den Kultstatus erhielt das Gerät insbesondere durch einen Hit der Popgruppe „TRIO“, die während der Neuen Deutschen Welle 1982 bekannt wurde. Der Song „DA DA DA“ wird sicher den älteren Generationen der Blogleser noch bekannt sein.

In den VL-1 hat man auch einen einfachen Sequenzer integriert, der ein Speichervermögen von 100 Noten hat. Diese konnten in Echtzeit eingegeben werden. Für Menschen wie mich steht auch eine Schritt für Schritt Eingabe zur Wahl, die es ermöglicht, jede Note samt Tempo händisch zu editieren. Ist das Werk dann vollendet, kann per „One Key Play“ abgespielt werden…

 

IMG_4789Die originale Umverpackung des „Instruments“ besteht aus bunt bedrucktem Karton…

IMG_4788Handgezeichnete Bildchen an der Umverpackung waren damals möglicherweise viel günstiger, als die Fotorechte von irgendwelchen Models zu erwerben.

IMG_4790Mit zwei Styroporkörpern wurde die Casio in der Verpackung gehalten. Zum Lieferumfang gehörte neben der Bedienungsanleitung auch eine Schutzhülle aus Kunststoffleder.

IMG_4796Das geöffnete Gehäuse zeigt zwei Platinen. Unten ist die Keyboardplatine und unter der weissen zylindrischen Abdeckung der kleine Lautsprecher zu erkennen. Und in der anderen Gehäusehälfte befindet sich die analoge Elektronik in diskreter Bauweise. Die Stromversorgung wurde entweder über vier Stück 1,5V AA Batterien oder optional auch mittels Netzteil hergestellt.

 

IMG_4799Hier sieht man die Keyboardplatine mit dem Microchip und dem Flexiprint zum LC-Display. Die Tasten wurden mit leitfähig beschichteten Gummimatten, die direkt die Kontaktflächen auf der Platine überbrückten, realisiert.

IMG_4798

Hier ist das Platinenlayout des Analogboards dargestellt. Großzügige Leiterbahnführung und satte Lötaugen garantieren auch noch nach über 30 Jahren eine tadellose Funktion …

Neuer Webauftritt der Fachhochschule Kärnten

Loading

website
Ausschnitt: FH-Webauftritt NEU

Studieren am Puls der Zeit …

Frisch, übersichtlich, benutzerfreundlich und informativ. Seit heute ist die neue Website der Fachhochschule Kärnten online. Die Fachhochschule Kärnten hat ihren Internetauftritt übersichtlicher, schneller und mobiler gemacht. Unter www.fh-kaernten.at ist nicht nur eine völlig neue Optik zu sehen. Auch unterwegs zeigt sich die Fachhochschule jetzt optimal auf dem Display. Egal ob IOS, Android oder Windows – das Design passt sich den mobilen Geräten an.

Der Aufbau basiert auf Bootstrap und ist dadurch auf allen gängigen Geräten mit den unterschiedlichsten Bildschirmformaten darstellbar. Das FH – aCTIons System ist durch eigene Typo3 Extensions in die Homepage integriert worden und ermöglicht daher eine perfekte Einbindung von z.B.Teamlisten, Kontaktwidgets, Publikationslisten, der Mitartbeitersuche bzw. -details.

webmasterDank der engagierten und intensiven Arbeit der Webmaster bzw. – programmierer, Herrn Mario Wehr und Herrn Hannes Klingberg wurde es möglich, die neue Website pünktlich zum 20Jahr-Jubiläum der Fachhochschule ins Netz zu stellen. Ein immenser Vorteil der inHouse – Programmierung ist natürlich auch der Fokus auf die Möglichkeiten der strategischen Weiterentwicklung.

 

 

 

MiniSystem für NI-myDaq

Loading

IMAG1034
myDAQ mit miniSystem

Ein neues Stichwort  in den FH Studiengängen Systems Engineering, Wirtschaftsingenieurwesen und Maschinenbau ist „Blended Learning„.  Dabei stellte die Fachhochschule den Studierenden  kompakte, universelle Datenerfassungsgeräte von NI (National Instruments) zur Verfügung, die ihnen die eine praxisorientierte, effektive Lernmethode ermöglicht.  Bei den myDAQ (my DataAQuistion) Geräten handelt es sich um ein Gerät, das, an den USB-Port eines Rechners angeschlossen, eine Vielzahl von Möglichkeiten, Daten aufzunehmen bzw. auszugeben, bereitstellt.

Dies kann auf einfachste Weise mit der graphischen Programmier- und Entwicklungsumgebung LabView von National Instruments realisiert werden, aber auch in anspruchsvolleren Programmiersprachen wie C++, C#, etc. bis hin zu Assembler. Das myDaq-Kästchen stellt beispielsweise acht digitale IOs, zwei analoge Eingänge, zwei analoge Ausgänge, sowie eine symmetrische +/-15V Spannungsversorgung (die zumindest für die Versorgung von OP-Amps ausreicht) und eine +5V Spannungsversorgung zur Verfügung. Als besonderes Feature sind zwei 3,5mm Klinkenbuchsen vorhanden, die als Audio IN, bzw Audio OUT zu den AD- bzw DA- Chips geführt sind und für die Erzeugung und Aufzeichnung von Audiosignalen genutzt werden können. Des Weiteren sind drei Messgerätebuchsen eingebaut, die über einen Isolationsverstärker (max. 60V) das myDAQ auf einfache Weise zu einem Digitalmultimeter machen.

IMAG1032
miniSystem fertig bestückt

Die digitale und analoge IO-Sektion, sowie die Spannungsversorgung wird an das myDAQ über einen 20poligen Steckverbinder angeschlossen. Um den Studierenden nun eine Plattform bieten zu können, wurde ich beauftragt ein einfaches „miniSystem“ zu entwickeln, dass zumindest aus jedem Bereich (Analog und Digital) eine praktische Anwendung bereitstellt. So sollen die Zustände der digitalen Ausgänge in Form von LEDs dargestellt werden, analoge Spannungen von einem einstellbaren Spannungsteiler, bzw. einem Temperatursensor aufgenommen werden. Mit Hilfe des Layout Tools Eagle von CadSoft  habe ich die Schaltung erstellt und ein Layout gefertigt, das einfach an die myDAQ – Box angesteckt werden kann. Der Schaltplan kann hier eingesehen werden und das Boardlayout hier. Die Platine bietet auch die Möglichkeit an alle IOs über einen Pinheader eigene Schaltungen oder Experimente anzuschließen. Um die Analogausgabe darstellen zu können, habe ich ein Drehspulmesswerk gewählt.

Im folgenden Video ist zu sehen, wie das miniSystem nach der Bestückung im Testbetrieb auf Funktion geprüft wird.

 

 

 

Mechanisches Heimkino

Loading

IMG_4464
EUMIG MARK S807

Ein technisches Produkt mit dem Label „Made in Austria“ ist der Tonfilmprojektor Mark S807 der Firma EUMIG. 1919 wurde die „Elektrizitäts- und Metallwaren-Industrie Gesellschaft“ (kurz: EUMIG) durch Herrn Handler und Herrn Vockenhuber gegründet. Zu Anfang fertigte das Unternehmen Patronenhülsen, Elektromaterial und Feuerzeuge. 1924 begann das Unternehmen mit der Entwicklung von Rundfunkempfangsgeräten und 1931 dann mit den ersten Filmprojektoren. (eumig P1 und eumig C2). Die Werke befanden sich in Wien Buchengasse und Micheldorf in Oberösterreich, sowie Fohnsdorf. EUMIG produzierte Neben Radios, Filmprojektoren auch Schmalfilmkameras und die Eumigetta, einen Fotoapparat. Im Jahr 1978 stieg der Mitarbeiterstand der Werke auf 7000. Im Jahr 1986 wurde EUMIG nach einem Konkursverfahren aus dem Handelsregister gelöscht.

IMG_4474

Viele der EUMIG Geräte sind noch existent, da die Videotechnik für den Heimgebrauch in den 70er Jahren noch in den Kinderschuhen steckte und auch kaum leistbar war. So können sich sicherlich noch viele Kinder dieser Generationen and die surrenden Super8 Filmkameras erinnern, mit denen die Eltern damals alles mögliche mitgefilmt und auf die 3-Minuten Spule gebannt hatten. Waren dann über einige Zeit mehrere Spulen belichtet, konnten sie zur Entwicklung eingesandt werden. Nach ein bis zwei Wochen kamen die Entwickelten Filmröllchen dann per Post zurück und konnten dann per Schneid- und Klebetechnik zu einem Gesamtwerk zusammengefügt werden. Dieses Werk, meist nur ein Stummfilm (die Tonspur konnte man nachträglich laminieren lassen und dann per Magnetaufzeichnung bespielen), wurde dann im Rahmen einer Familienzusammenkunft feierlich im Wohnzimmer auf eine Leinwand projiziert.IMG_4469

Als Projektor stand in unserer Familie der Eumig MARK S807 zur Verfügung. Der S807 besitzt bereits eine Einfädelautomatik, die es ermöglicht, den Film vollautomatisch bis zum Kern der Wickelspule zu führen. Dies setzt jedoch folgende Bedingungen voraus: Die Zahnrollenklappen müssen geschlossen sein, die Klebestellen müssen einwandfrei sein und einen ca. 50 cm langen Vorspannstreifen besitzen. Eine Bedienungsanleitung ist hier zu finden.

Der Projektor dient noch heute dazu, die alten Super8 Filme per Projektionsspiegel eine Mattscheibe zu belichten und diese dann per neuer HD-Technik zu scannen und so zu digitalisieren und für die nächsten Jahre zu speichern…

Wie der Projektor zu bedienen ist, zeige ich im folgenden kurzen Video:

 

 

Basteln am Motorrad – Gasgriff optimieren

Loading

Der Sommer hält immer noch an und es wird nach wie vor viel Motorrad gefahren und natürlich auch geschraubt. Ein kleines Stück Folie aus Teflon soll dieses mal zwischen Gasgriff und Lenker geschoben werden, um das Spiel des Gasgriffes zu minimieren. Die Folie ermöglicht ein sauberes Gleiten des Griffes am Lenker und erspart den Schmierstoff.  Diese Teflongleitfolie ist für ein paar wenige Euro bei einem bekannten Motorrad-Zubehör-Händler mit dem Namen L***S erhältlich.

IMG-20150830-WA0028
Kawasaki ER-6N

Den Einbau habe ich bei einer Kawasaki ER-6N vorgenommen und die Arbeitsschritte einwenig mit der Kamera dokumentiert.

Insgesamt dreht sich der Gasgriff nun wesentlich sauberer und dies merkt man auch beim Lastwechselspiel bei niedrigen Drehzahlen …

 

Arduino als USB-Joystick

Loading

IMAG1861
Arduino als USB-Joystickinterface

Die große Welt der kleinen Microcontroller und vor allem der sehr günstigen Microcontroller und deren Vielfältigkeit, hat mich beim folgenden ‚Projektchen‘ wieder motiviert sie zu verwenden. Für die eher weniger outdoorlastigen kalten Wintertage habe ich mir ein Projekt vorgenommen, dass das Thema Retrocomputer betrifft. Zum einen habe geplant, die Website um die Rubrik der alten Computer zu erweitern (zumindest sollen die paar wenigen aus meiner Sammlung vorgestellt und in Betrieb genommen werden…) und zum anderen will ich mir eine Arcade-Station bauen, deren Kern das neue RaspBerry2 Modell ist . Auf dem soll die Emulatorplattform Retropie aus dem gleichnamigen Projekt zu Einsatz kommen. Die ersten Versuche mit den Images aus dem Projekt sehen sehr gut aus. Die alten 8-Bit und 16-Bit Computer laufen in der Emulation ausgezeichnet (C64, Atari, Amiga usw…). Was die Anbindung von Eingabegeräten betrifft, kann man natürlich Maus und Keyboard vom PC an den Raspberry anschliessen und alles steuern. Die Jungs aus dem Projekt haben auch selbst einige Boards entwickelt, die die Anbindung von Joysticks und co an des Raspberry ermöglichen. (zB. den GPIO Adapter). Aber da ich ein paar Arduino Unos herumliegen habe, dachte ich mir, warum nicht diese verwenden. Da es beim Arduino möglich ist, den Mega 16U2 zu flashen (der Chip wird als Programmer für den Atmega 328 auf dem Uno – Board verwendet) und aus dem Uno-Board so zum Beispiel ein USB-HID (Human Interface Device) zu machen -sprich Keyboard, Mouse, was auch immer, bot sich der als ideale Plattform an.

Tutorials, den Arduino zu einem HID-Interface zu flashen, gibt es mittlerweile schon sehr viele. Zum Beispiel findet man hier eine schöne Anleitung. Je nach dem welche Arduino-Uno Boardversion man hat, kann man sich den zusätzlichen Widerstand fürs DFU-Flashen sparen. (z.Bsp. bei meinen Boardversionen R3 ist der Widerstand nicht nötig.) Auf den neuen Boards ist auch nicht mehr der Atmega 8U2 verbaut, sondern der 16U2. Man muß einfach im Atmega Flash-Tool „ATMEL-FLIP“ den entsprechenden Chip auswählen. Die entsprechenden Firmwarefiles findet man im Netz…

Arduino-keyboard-0.3.hex
Arduino-mouse-0.1.hex

Ist der Arduino dann geflasht, so wird er beim Anschluss an den PC eben als Keyboard oder Maus erkannt. Jetzt braucht man nur mehr den gewünschten Code in den Atmega328 zu schreiben und die Arduino UNO Eingänge führen z.Bsp. Tastaturbefehle aus. Um die Firmware jetzt nicht jedes Mal zwischen Programmer und USB-HID zu ändern, verwende ich einfach einen zweiten UNO der als Programmer dient und stecke einfach den geflashten Chip immer um (ist viel einfacher beim Testen).

Da das Interface jetzt soweit passt, habe ich mich mit dem HID-Codetable beschäftigt und die entsprechenden Tasten, die die Joystickbewegungen an den PC senden sollen herausgesucht.

Hier der sehr einfache Code der momentan die alten Commodore Joystickbewegungen umsetzt:)

/* HID Joystickinterface für Arduino UNO im HID Modus
 Jun2015 by I.Bihlo
 Die Tasten brauch i  Taste/Hexcode/Dec-Code  
  KEY_LEFT_CTRL    0x01  //01 
  KEY_LEFT_SHIFT    0x02  //02 
  KEY_LEFT_ALT    0x04  //04 
  KEY_LEFT_GUI    0x08  //08 
  KEY_RIGHT_CTRL    0x10  //16 
  KEY_RIGHT_SHIFT 0x20  //32 
  KEY_RIGHT_ALT   0x40  //64 
  KEY_RIGHT_GUI   0x80  //128 

  KEY_RIGHT_ARROW 0x4F  //79 
  KEY_LEFT_ARROW  0x50  //80 
  KEY_DOWN_ARROW  0x51  //81 
  KEY_UP_ARROW    0x52  //82 
  KEY_TAB         0x2B  //43 
  KEY_ENTER       0x28  //40 
  KEY_SPC         0x2C  //44 
 */ 
     uint8_t keyNone[8] = { 0, 0, 0, 0, 0, 0, 0 }; 
     uint8_t keyA[8] = { 0, 0, 4, 0, 0, 0, 0 };  //left 
     uint8_t keyD[8] = { 0, 0, 7, 0, 0, 0, 0 }; //right 
     uint8_t keyW[8] = { 0, 0, 26, 0, 0, 0, 0 }; //up 
     uint8_t keyS[8] = { 0, 0, 22, 0, 0, 0, 0 }; //down 
     uint8_t keySPACE[8] = { 0, 0, 44, 0, 0, 0, 0 }; //space 
      
     uint8_t keyLEFT[8] = { 0, 0, 80, 0, 0, 0, 0 };  //left 
     uint8_t keyRIGHT[8] = { 0, 0, 79, 0, 0, 0, 0 }; //right 
     uint8_t keyUP[8] = { 0, 0, 82, 0, 0, 0, 0 }; //up 
     uint8_t keyDOWN[8] = { 0, 0, 81, 0, 0, 0, 0 }; //down 
     uint8_t keyENTER[8] = { 0, 0, 40, 0, 0, 0, 0 }; //enter 
      
 // DEFINE inputs 
 const int UPA = 12; 
 const int DOWNA = 13; 
 const int LEFTA = 2; 
 const int RIGHTA = 3; 

 const int UPB = 4; 
 const int DOWNB = 5; 
 const int LEFTB = 6; 
 const int RIGHTB = 7; 

 int out=0; //fürs Testen am Serial Monitor im Programmermodus 

 void setup() { 
    
   // Die Pins als Eingang definieren (Intern PullUP setzen - ist bei mir nötig da actice Low geschaltet wird 
   pinMode(UPA, INPUT_PULLUP); pinMode(DOWNA, INPUT_PULLUP); pinMode(LEFTA, INPUT_PULLUP); pinMode(RIGHTA, INPUT_PULLUP);  
   pinMode(A0, INPUT); 
   pinMode(UPB, INPUT_PULLUP); pinMode(DOWNB, INPUT_PULLUP); pinMode(LEFTB, INPUT_PULLUP); pinMode(RIGHTB, INPUT_PULLUP);  
   pinMode(A1, INPUT);    
    
   Serial.begin(9600); 
    
 } 

  void loop() { 
     
    // Joystickbewegungen abfragen und senden 
    // Da das Interface einen Invert-Schmitt Trigger verpasst bekommen hat, werden die Ausgänge auf active LOW abgefragt - wenn nix passiert sind alles Eingänge HIGH 
     
    if (digitalRead(UPA)==LOW) {out=120; Serial.write(keyW, 8);}   
      
    if (digitalRead(DOWNA)==LOW) {out=121; Serial.write(keyS, 8);}   
      
    if (digitalRead(LEFTA)==LOW) {out=122; Serial.write(keyA, 8);}  
      
    if (digitalRead(RIGHTA)==LOW) {out=123; Serial.write(keyD, 8);}  
     
    if (digitalRead(A0)==LOW) {out=124; Serial.write(keySPACE, 8);}  
      
     
    if (digitalRead(UPB)==LOW) {out=130; Serial.write(keyUP, 8);}  
      
    if (digitalRead(DOWNB)==LOW) {out=131; Serial.write(keyDOWN, 8);}  
       
    if (digitalRead(LEFTB)==LOW) {out=132; Serial.write(keyLEFT, 8);}  
       
    if (digitalRead(RIGHTB)==LOW) {out=133; Serial.write(keyRIGHT, 8);}  
       
    if (digitalRead(A1)==LOW) {out=134; Serial.write(keyENTER, 8);}  
      
  delay(20);   
  //Serial.println(out); //des is nur fürs debuggen im serial monitor 
  Serial.write(keyNone, 8); // den Tastendruck beenden 

 delay(20); 
}
IMAG1858
Lochrasterplatine am Arduino

Als nächstes habe ich ein Interfaceboard (eine einfache Lochrasterplatine) mit zwei 9-poligen SUB-D-Buchsen für den Anschluss der Joysticks gebastelt. Da der Arduino genügend Ports besitzt, habe ich auf ein Multiplexen oder Matrixverschalten der insgesamt zehn Steuerleitungen verzichtet und jeden Joystickkontakt direkt auf einen Port gelegt. Das funktioniert schon einmal ganz gut. Aber das Prellen der Federkontakte und Microtaster in den Joysticks muss natürlich softwaremäßig entfernt werden. Um jetzt nicht in jeder Softwareversion einen debounce-code mitzuführen entschloss ich mich das Entprellen in der Hardware zu machen. Einfach ein RC-Glied (10k – 1uF) an einen Schmitt-Trigger und gut ist´s. Also schnell ein Board gelayoutet (das geht schneller als am Lochrasterprint zu löten), geätzt und bestückt… und heraus kam das Board hier:

IMAG1870
Board geätzt und gebohrt
IMAG1871
fertig bestückt am Arduino

Der Funktionstest verlief positiv. Die Bewegungen des Sticks werden sauber umgesetzt. Ein schneller Test mit WinVice ließ sofort das Zockergefühl von vor 30 Jahren aufkommen 😉

IPhone 5s unter dem Wirebonder

Loading

 

IMAG1839
IPhone 5S unter der Lupe 😀

Wenn der Bildschirm eines IPhone 5S einmal seinen Geist aufgibt (sprich zerbricht o.ä.), dann hilft nur mehr der Tausch desselben. Aber Vorsicht ! Die Schräubchen, die das Schirmblech über den drei Flexiprint-Steckern vom Display halten sind NICHT gleich lang.

Es gibt hier Schrauben unterschiedlicher Länge – auch wenn man das optisch nicht unbedingt gleich erkennt. Achtet man beim Zusammenbau nicht peinlich genau darauf, wieder alle Schrauben in die ursprüngliche Gewindebuchse zu drehen, dann ist es auch schon passiert. Die ca. 0.1mm längern Schräubchen stehen über die Buchse und berühren und beschädigen die Oberfläche der Platine. Wenn jemand es dann ganz genau nimmt und die Schrauben auch fest genug anzieht, dann drückt sich diese ins in den zweiten Layer der Platine. Und genau dort verlaufen sieben parallele Leiterbahnen, die zusammen eine Breite von knapp 1000um (1mm) benötigen. Jetzt kann man sich vorstellen, was die Spitze einer Schraube hier anrichten kann.

Genau – Chaos und Zerstörung. Die knapp 50um breiten Leiterbahnen haben keine Chance gegen den Koloss von Schraube mit 1000um.

Das Resultat: Mehrere dieser Leiterbahnen werden durchtrennt und das Handy findet nach dem Einschalten nicht mehr alle seine elektronischen Komponenten und beginnt den Bootvorgang zyklisch neu.(mit kurzem Aufleuchten eines Bluescreen)

Normalerweise ist das Gerät jetzt reif für die Tonne, oder zumindest wäre ein neues Mainboard fällig. Genau so ein Handy ist letztens bei mir auf dem Tisch gelandet.

IMAG1829_1
Bild 1

Im Bild 1 sind die Anschlüsse zum Display zu erkennen. Rechts unten, am schwarzen Fleck, war die Gewindebuchse montiert, in die die zu lange Schraube gedreht wurde. Wenn man die Buchse nun entfernt, kann man den Schaden begutachten.

Die Vergrößerung in Bild 2 zeigt deutliche Abdrücke der Schraube und ein leichtes kupfernes Schimmern ist auch zu erkennen.

Das Ausmaß der Beschädigung lässt sich aber nur feststellen, wenn der Layer in dem Bereich freigelegt wird. Mit einem geeigneten Mikroskalpell habe ich nun versucht, die Ebene freizulegen.

IMAG1827_1
Bild 2
IMAG1831
Bild 3

In Bild 3 sind die Leiterbahnen und deren Unterbrechungen zu sehen. Eine Reparatur mit Lötkolben und Reparaturlitze ist hier allerdings nicht mehr möglich.

IMAG1835
Bild 4

Da ich aber die Möglichkeit habe, an einem Wirebonder arbeiten zu können, kam mir die Idee, diesen für einen Reparaturversuch heranzuziehen. Der Bonder der Firma TPT-Wirebond bietet die Funktionen Wedge- und Ballbonden in verschiedenen Drahtdurchmessern. Das Wedgebonden konnte ich mir als geeignete und realisierbare Variante vorstellen. Der Bonddraht mit 25um Durchmesser sollte passen. Einzig für das Problem mit der Temperatur des Chuck hatte ich keine Lösung. Denn es ist sicher keine gute Idee, das IPhone aufzuheizen. Also versuchte ich kalt zu bonden. Kurzerhand den Chuck von seiner Stromversorgung getrennt und dafür die Ultraschallenergie des Bondwerkzeugs erhöht und einen Versuch gestartet. Und siehe da, der Bond hält. Also kurzerhand sechs von den sieben Leitung mit Golddrahtbrücken wieder leitend gemacht (Bild 4) und danach das Display für einen Startversuch angeschlossen. Und siehe da, das IPhone startete wieder normal.

IMAG1837_1
Bild 5

Jetzt ging es nur mehr darum, die empfindlichen Bonddrähte vor Beschädigung zu schützen.

Hier bot sich ein Kunstharz-Zweikomponenten-Kleber an, von dem ich eine stecknadelspitzengroße Menge abmischte und mit diesem Tröpfchen die Reparaturstelle überzog. Nach dem Aushärten konnte ich das Phone dann wieder zusammensetzen (an der Reparaturstelle natürlich ohne Schraube. Ein kurzer Funktionstest verlief positiv. 😉