back Home http://mitschang.net - Homepage von Jonas Mitschang

Hardware Projekte


Mini MovingHead mit CAN Bus

Mini MovingHeads basierend auf PIC18F4685 (40MHz) von Microchip und MAX6969 von Maxim. Die jeweils 16 LEDs (4 Rot, 4 Grün, 4 Blau, 4 Weiß) können einzeln angesteuert werden und sind mit einem Konstantstrom versorgt. Die Bewegung wird von jeweils zwei Servos realisiert. Danke an Basti - er hat die meiste Mechanik gebaut.
Die Servos kommunizieren über CAN-Bus miteinander: Es wird ein Master gewählt der dann die anderen MovingHeads steuert.

movinghead schematic

movinghead schematic

Die Boards für 4 MovingHeads und noch andere Projekte habe ich bei PCB-Pool bestellt:
movinghead board

Die Becher-Überzieher waren zuerst als Blend-Schutz während dem Programmieren gedacht - sehen aber in Betrieb garnicht schlecht aus:
movinghead

movinghead

Als folgendes Video aufgenommen wurde lief der CAN-Bus noch nicht - die Geräte kommunizieren folglich nicht miteinander:

AVR

AVT timing library

AVR timing library für exakte aber auch lange Zeitmessungen / Delays etc.

USB to Funk (RFM12) Adapter mit ATMEGA8

Mit der CDC Erweiterung der AVR-USB Bibliothek stellt der ATMEGA8 Controller dem angeschlossenen PC eine virtuelle serielle Schnittstelle zur Verfügung auf den der Controller mit printf() schreiben kann. Unter Windows erscheint ein zusätzlicher COM Port und unter Linux ein character device (z.B. /dev/ttyACM0).
Das wireless RF transceiver module RFM12 kann nun über diese Schnittstelle programmiert (Frequenz, Filer etc.) werden und Daten senden und empfangen.

USB RFM12 Bild1 USB RFM12 Bild2

FreeRTOS mit AVR

FreeRTOS port für den AT Mega 128 (bzw. AT90CAN128)

Prinzipiell handelt es sich um die Implementierung vom AT Mega 323, es müssen lediglich Register-Bits anders gesetzt werden.

Treiber für UART des AT Mega 128 (bzw. AT90CAN128)

Der FreeRTOS Treiber für die serielle Schnittstelle ist leider nur für den ATMega323 verfügbar. Ich habe den Treiber auf AT90CAN128 bzw. ATMega128 portiert. Es werden jetzt beide UART Schnittstellen unterstützt (auch gleichzeitig) und alles läuft nach wie vor Interrupt-basierend ab.

MP3 Player mit VS1001

Ziel dieses Projekts war es, MP3 Dateien, die sich auf einer MMC karte befinen, mit einem Microcontroller (in diesem Fall PIC18F2550) abzuspielen.
Es wurde der MP3 Decoder-Chip VS1001k von VLSI Solution Oy verwendet.
Die maximal von dem Decoder-Chip unterstützte Bitrate von 320kBit konnte mit dem Microcontroller erreicht werden.

VS1001 prototyp

VS1001 prototyp


USB PIC-Brenner

Bei diesem PIC Brenner handelt es sich im Prinzip um die Schaltung PBrenner8 von Sprut (http://sprut.de).
Der Brenner hat einen Microcontroller eingebaut, der die Kommunikation über USB ermöglicht.
Es wird die Firmware und die Brennersoftware (USBurn) von Sprut verwendet.
Es wurde das Layout neu erstellt, um verschiedene Sockel erweitert und auf schicke zwei Etagen verteilt.
Der Brenner unterstützt alle bis dato verfügbaren PIC Microcontroller und ICSP.

USB PIC Brenner USB PIC Brenner
USB PIC Brenner

Inzwischen gibt es auch eine Mini-SMD-Version (bei Bilex geätzt):
USB PIC Brenner USB PIC Brenner

Ethernet Schnittstelle mit ENC28J60

Der Ethernet Controller ENC28J60 von Microchip wurde in diesem Hardwareprojekt zusammen mit den nötigen Analog-Perepherie auf eine Single-Layer-Platine verbannt.
Es ging darum, Erfahrungen mit dem Ethernet Controller zu sammeln, um später eine noch keinere Dual-Layer-Platine zu entwickeln und in großer Stückzahl fertigen zu lassen. (Home Automatisation und MP3 Streaming Client)
Die "Netzwerkkarte" wurde sowohl an einem PIC18F8722 (80 Pol TQFP) und einem ATMEGA32 (40 Pol DIL) als auch direkt am Laptop getestet (siehe unten).
ENC28J60 mit ATMEGA32

ENC28J60 mit PIC18F8722 TQFP
ENC28J60 mit PIC18F8722 TQFP

Zum Testen des ENC28J60 habe ich eine Adapterplatine geäzt, die aus der Spannungsversorgung des USB-Kabels (5V) eine 3.3V Spannungsversorgung für den ENC28J60 erzeugt.
Gleichzeitig wird die parallele Schnittstelle verwendet, um den nötigen SPI-Bus zu simulieren.
So konnte ich einen Kernel-Treiber für Linux schreiben, der den ENC28J60 über die parallele Schnittstelle als normales Ethernet device (enc0) in den Kernel einbindet.

ENC28J60 LPT loop

PIC-USB-Ethernet Platine

Nachdem hinreichend Erfahrungen gesammelt wurden, haben wir ein Platinenlayout erstellt und bei Bilex fetigen lassen.
Die bestellte Euro-Platine ist in folgende Teile unterteilt:
PCB von Bilex
Bestückt sehen die Platinen schon viel besser aus:
PCB bestueckt
Und so sieht der Webserver von Microchip aus, wenn er auf einem PIC läuft:
Embedded Webserver

Datenübertragung über Laser

Ziel dieses Projekts war es, eine TCP/IP Verbindung über Laser aufzubauen. Dafür verwendete ich zwei Laser der Firma Laserfuchs die mit dem Signal einer seriellen Schnittstelle moduliert werden. Es wird jeweils für jede Richtung ein Laser benötigt. Empfangen wird das Signal mit einem Fototransistor und Operationsverstärker.

Laser Diagramm

Mit dem Point-to-Point Protocol Daemon (pppd) lässt sich leicht aus einer seriellen Verbindung eine IP-Verbindung machen (siehe dazu auch Netzwerk Tips):
# Auf Rechner 1:
pppd /dev/ttyS0 19200 10.0.0.2:10.0.0.1 noauth nodetach nodefaultroute persist

# Auf Rechner 2:
pppd /dev/ttyACM0 19200 10.0.0.1:10.0.0.2 noauth nodetach nodefaultroute persist
ping 10.0.0.2       # Rechner 1 anpingen
Wenn man die Hand in den Laserstrahl hält, kommt kein Ping mehr durch ;-)

Laser Aufbau

Laser: Sender und Empfänger

Home Automatisation

In diesem Projekt wollte ich die Gerätschaften in meinem WG-Zimmer vom PC bedienbar machen. Es ging mir dabei um alle Lichter, die Musik und den Rolladen.
Auf dem PIC18F8722 Board (siehe PIC-USB-Ethernet Platine) läuft ein Webserver, über den man die Geräte ein- und ausschalten kann:

Home Automatisation PIC18F8722

Momentan besitze ich 12 dieser Funksteckdosen, die von dem Mikrocontroller angesteuert werden können. Insgesamt unterstützt das verwendete Protokoll 512 Funksteckdosen. Eine der Steckdosen habe ich zerlegt und in meine Deckenlampe eingebaut.

Home Automatisation Funksteckdosen

Die einzelnen Module noch einmal in der Draufsicht:
Home Automatisation Detail

Das ist ein Screenshot vom WebFrontend:
Home Automatisation Screenshot, Webfrontend


Musik-Koffer

Durch intensives Freibad-Besuchen und Zelten-Gehen wurde der Wunsch nach einem robusten "Musik-Koffer" laut. Muckebox Front
Nummerierte Teile: Muckebox Detail

Devkit IDP von BSqare

Development Board Devkit IDP von BSquare.

DevkitIDP
DevkitIDP
AD620 instrumentation amplifier board AD620 instrumentation amplifier schematic

AD620 instrumentation board

Sonstiges

Mainboards kann man manchmal reparieren, indem kaputte Kondensatoren ausgetauscht werden ;-)

mainboard kondensator
schreibtisch
schreibtisch

Mein Xilinx Spartan-3 FPGA development board von digilentinc, mit dem ich aus Zeitgründen leider bis jetzt viel zu wenig gemacht habe.

Digilentinc Spartan 3 development board

LED-Würfel (LED-cube), den ich stundenlang gelötet habe und bisher leider keine Zeit hatte, die Ansteuerplatine zu entwickeln... mache ich aber auf jeden Fall noch. Der Würfel besteht aus 5x5x5=125 Duo-LEDs (also Rot-Grün-LEDs), die alle einzeln angesteuert werden können. So lassen sich lustige Muster oder sogar Spiele auf dem Würfel spielen.
Update: Inzwischen funktioniert die Ansteuerplatine :) Muss mal ein Video davon machen.
LED-cube


Feel free to leave a beer to my bitcoin address: 1JwiWthkzWRQ9dmaqTCfQUnyoYFcJjbURt

home Valid XHTML 1.0 Strict Valid CSS! UTF-8 Encoded Coffee powered Debian powered CAcert assurer