Archiv der Kategorie: AVR

Mein kleiner Microcontroller

Bastelarbeiten zum Jahresende

Eine Woche Urlaub hinterlässt spuren. Der Schreibtisch hat sich in ein riesiges Steckbrett verwandelt und der Boden dürfte sich irgendwo unter der zentimeterdicken Schicht der Testverkabelung befinden. Obwohl die Post offenbar schon Weihnachtsurlaub hat und mir noch einiges an Hardware fehlt konnte ich doch einige Punke auf meiner Liste abarbeiten:

Zum einen habe ich den schwachen Dollar etwas ausgenutzt und meinem Server noch ein paar Festplatten spendiert. Neben dem bisherigem Terrabyte für die Daten (4x250GB, SATA-1, RAID 5 = effektiv 750GB) gesellen sich jetzt 2 weitere Terrabytechen ins Gehäuse (4x500GB, SATA-2, Controller PCI-X 64Bit, RAID 5 = effektiv 1,5TB) und erhöhen damit die Kapazität aller 13 Festplatten auf physikalische 3,1TB. OK, irgendwie muss ich noch einen Lüfter dabeizaubern – bei Volllast kratze ich an der 40°C-Marke. Zwar sind die Platten laut Datenblatt bis 60°C ausgelegt, aber man muss ja nichts riskieren.

1186811863

Nächster Punkt ist mein zusätzliches „Brandmeldesystem“. Zwar fehlt immernoch die endgültige Platine der Zentraleinheit, aber inzwischen hängen meine Rauchmeldeeinheiten in den Räumen, können lokal im Bandfall einen akustischen Alarm geben und liefern bereits Temperaturmesswerte an meinen Server, der fleißig Diagramme zeichnet. Die Stromversorgung läuft über ein überwachtes Schaltnetzteil, ist mit mehreren dezentralen Bleiakkus gepuffert, jeder Sensor hat eine separat abgesicherte Leitung und alle Sensoren werden (wenn die Zentraleinheit läuft) ständig auf korrekte Funktion überwacht.

Zwischendurch hat sich dann noch meine Workstation zu Wort gemeldet – ein RAID1 schützt vielleicht vor Festplattenausfällen, aber gegen Probleme des Dateisystems (ext3) ist auch das machtlos. 4 Stunden später lief ein neues Gentoo auf dem System und dank den letzten Updates klappt trotz 64Bit jetzt sogar Flash. UT ist natürlich auch drauf 😉

Meine Wetterstation närt sich langsam wieder einem funktionsfähigem Zustand – inzwischen konnte ich die Fehlfunktionen auf einen kaputten Sensor zurückführen. Zusammen mit dem Funksender können so jetzt wieder Temperatur und Luftfeuchte ermittelt werden. Auch der Luftdrucksensor müsste funktionieren, ist aber noch nicht kalibriert. Der Regensensor ist hardwareseitig auch fertig, hier fehlt noch eine passende Ergänzung Software. Gänzlich fehlen meine letzten Wunschsensoren für Wind und Sonnenenergie, die danach irgendwann mal in Angriff genommen werden.

Bei iSys bin ich noch nicht weiter. Zwar schau ich mir zwischendurch immer mal wieder einzelne Softwareteile an, aber auch hier warte ich noch auf meine Platinenbestellung, denn Softwaretest auf dem Steckbrett sind recht aufwändig.

Ansonsten herrscht das übliche Weihnachtsgeraffel – Geschenke organisieren etc. Nebenbei noch Zertifikate erneuern (ja, ich weiß, der IMAP-Server fehlt noch) und packen müsste ich natürlich auch noch…

Mediacenter Zwischenstand II

Ein Schritt weiter und zwei zurück – so ähnlich komme ich mir momentan bei meinem Mediacenter vor. Zum einen hat sich am Interface wieder was getan: Die Zimmersteuerung (Licht u.Ä.) lässt nun über eine virtuelle 3D-Ansicht des Zimmers kontrollieren, Videos haben dank Amazon noch bessere Cover und ein Feedreader im Iframe rückt immerhin ein paar Nachrichten raus. Systemmäßig läuft das Frontend auf einem alten Laptop – theoretisch. Zwar zeigen sich selbst hochauflösende Inhalte und DVDs nun ohne Ruckler, aber die Anbindung von Touchscreen und die Energieverwaltung mit TuxOnIce und Wake on LAN sind alles andere als zuverlässig – zudem erschweren Probleme mit Pulseaudio die Anbindung an mein Soundsystem. Sofern ich mir den neuen Server hole wird wohl dieser wieder dran glauben müssen.

Bei den Sensoren sieht es ähnlich aus: Zwar ist die Hardware für mein Rauch- und Temperaturmeldesystem am Bildschirm soweit fertig, aber irgendwie bekomme ich das Aufbügeln für die Prototyp-PCBs nicht mehr hin (hat Reichelt neues Papier?). Tja, leider sind Softwaresimulationen oder Steckboardgebastel nicht wirklich zuverlässig, daher siehts Softwaremäßig hier noch recht dünn aus.

Etwas besser sieht es bei den Planungen aus das Steuersystem auf meine zukünftige Wohnung auszudehnen – Hier ist die derzeit eingesetzte parallele Signalisierung zum Server natürlich fehl am Platz. Bei meinen Recherchen zum Thema Hausbus bin ich bereits vor längerem beim iSysBus gelandet, einem offenen Projekt, welches auf CAN basiert. Zwar ist die Seite nicht gerade aktuell, aber im IRC und auf dem SVN-Server wird fleißig gewerkelt: Die ersten Node-Prototypen wurden in den letzten Wochen gefertigt und werden momentan von den Aktiven auf µC und Interrupts geprüft. Wenn das ganze für mich aktuell wird hat der Bus recht gute Chancen: CAN ist weit verbreitet und sehr robust, also gut geeignet für eine solche Steuerung. Zudem verwendet iSysBus ebenfalls meine Lieblinge aus der AVR-Serie, was mir bei der Wartung sehr entgegen kommt.

btw: Woran merkt man, dass man sich schon an eine Haussteuerung gewöhnt hat? Wenn man im Büro bei Dämmerungsbeginn instinktiv mit der Maus auf die Stelle im Panel klickt, an der zu Hause der „Licht einschalten“-Button sitzt. Schade, es war dummerweise nur Firefox.

Druck von oben – ein Barometer mit AVR

Nachdem inzwischen Temperatursensoren und Feuchtigkeitsmessung an meiner „Wetterstation“ recht gut funktionieren ist es Zeit für das nächste Modul: Ein Barometer. Passend dazu konnte ich einen MPX4115A von Motorola aus einem anderen Gerät ausschlachten. Dummerweise bewegen sich die interessanten Messwerte alle in einem sehr kleinen Bereich, was den 10Bit AD-Wandler des ATMega an seine Grenzen treibt. Zwar gibts ungefäre Messwerte, aber die Schwankungen waren für meinen Geschmack zu groß. Fündig wurde ich bei tuxgraphics, welche eine eigene „Wetterstation“ im Angebot haben. Auch dort kommt ein MPX4115A zum Einsatz, der wird aber mittels eines TLC272 entsprechend verstärkt. Der TLC272 kommt zum Einsatz, da dieser nicht wie die meisten eine negative Spannung benötigt, sonder sich auch mit einer einzelnen +5V-Spannung begnügt.

Da tuxgraphics die interne 1,1V-Referenz ihres ATMega88 nutzen musste ich etwas dran drehen, denn ich habe bei meinem ATMega8 nur die Wahl zwischen 2,56V oder 5V – da letztere nach einigen Berichten stabiler wäre kommen also +5V als Referenzspannung zum Einsatz.

Wirklich verstehen tue ich die Schaltung zwar nicht, aber ich denke, dass das ganze so einigermaßen stimmt – für die letzten 18 Stunden hatte ich auf jeden Fall den selben Luftdruckverlauf wie eine angrenzende Wetterstation. Werde das Ganze noch einige Zeit weiter beobachten.

Hier der ADC-Relevante Teil meiner Schaltung:

Bild: http://adlersa.yotaweb.de/blog/wp-content/uploads/2008/07/admpx.png
OpAmp und MPX4115A an ATMega8

Die Formeln sehen momentan so aus:

$r1=100;
$r2=11;
$vcc=4.93;
$ref=3.82;
$offset=-2; //Druck Differenz zu NN und Messfehler
//$adc=Messwert

$vin=($ref+($vcc/1023*$adc/($r1/$r2+1)));
$hpa=($vin/$vcc+0.095)*1111.11+$offset;

Mehr Wetter

Ach ja… Feiertag… Endlich etwas Zeit zum Basteln. Heutiges Ziel war ein SHT11, ein Sensor, welcher mir in Zukunkt neben der bereits vorhendenen Temperatur auch die relative Luftfeuchte liefern soll. Hardwareseitig war das SMD-Gehäuse für mich als Groblöter ein Alptraum, aber mit etwas Geduld und einem guten Klecks Heißkleber sollte das ganze fürs erst halten. Softwareseitig bin ich, wie bei den meisten Problemen, bei Mikrocontroller.net schnell fündig geworden. Zwar musste der Code für meinen Mega8 noch etwas angepasst werden (dieser nutzt andere Registernamen und -größen für RS232), aber der Grundcode lief, nach ein paar Tritten gegen den MAX232, einwandfrei. Auf dem PC läuft wie immer ein PHP-Script, welches die Daten entgegen nimmt und in eine RRD verfrachtet. Das ebenfalls in PHP realisierte Frontent bedient sich zudem den Formeln von Wettermail.de und berechnet so aus Temperatur und Luftfeuchte einige Nährungswerte für Taupunkt sowie die Menge des Wassers in Gramm pro m³ Luft – und weils gerade so lustig war darf das Frontend auch noch Datum, Zeit, Sonnenaufgang, Sonnenuntergang und Sonnenhöchststand berechnen.

Jetzt muss ich nurnoch einen passenden Standort für das Gebilde finden – Werte von meinem Schreibtisch nutzen mir nicht all zu viel. Zwar habe ich bereits einen Temperatursensor außen, aber der Befindet sich auf der Südseite des Hauses, was man deutlich an den Temperatur-Peaks gegen 11-12h sehen kann. Naja, bei einer nötigen Datenrate von 8 Byte pro Sekunde sollte die Buslänge schonmal kein Problem darstellen.

90479052

Ein Plätzchen fürs Netzteil

8813

Nachdem das Innenleben meines Netzteils schon ein paar Tage steht wurde es mal Zeit für den Rest. Bisher versorgte ein alter Trafo einer Modelleisenbahn mein Bauwerk – etwas unhandlich. Passend, dass heute der Postbote was besseres brachte: Ein kleines 24V/2A Schaltnetzteil gesellt sich nun zur Platine in ein altes ATX-Netzteilgehäuse. An der Front sind die Tasten, LCD, COM-Buchse und die Anschlüsse für die Ausgangsspannung angebracht, hinten finden sich die ATX-üblichen Buchsen, Schalter und Lüfter. Innen sind LCD, Tasten und Buchsen verschraubt/geklebt, Schaltnetzteil und Platine lassen sich abstecken und austauschen.

Wir bauen ein Netzteil…

Wie schon geschrieben habe ich mir das DDC-Set von tuxgraphics schicken lassen. Inzwischen steht das ganze mehr oder weniger fertig vor mir und hat seinen ersten Test hinter sich: Mit USB-Buchse ausgestattet durfte sich die Bauteilsammlung als Handylader versuchen. Mein Akku ist voll, das Handy lebt noch und die Temperaturen der Kühlkörper waren ganz erträglich.

8452

An der verwendeten I2C-Kommunikation habe ich jedoch noch einiges auszusetzen:

  • I2C mit dem Rechner zu sprechen mag zwar den Pegelwandler einsparen, aber anscheinend funktioniert die Idee mit der I2C-Emulation auf den Statusleitungen der seriellen Schnittstelle nicht ganz so gut – sowohl USB->RS232-Adaper als auch mein Laptop konnten nicht die erforderlichen Spannungen erreichen, erst mein normaler Rechner war in der Lage mit dem Chip zu sprechen.
  • Die Kommunikationsgeschwindigkeit weit ab von brauchbar – fast eine Sekunde pro Befehl/Abfrage lassen keine richtige „Echtzeitanzeige“ zu.
  • Die eingestellten Limits lassen sich nicht über I2C abfragen -auch keine gute Basis für GUIs – das sollte sich jedoch recht einfach machen lassen.

Auch sonst habe ich noch ein paar Ideen für die Firmware:

  • Maximal/Minimalwerte aufzeichnen
  • Das LCD wird derzeit anscheinend immer vollständig aktualisiert – führt bei mir z.T. zu gehörigem flackern.Hier sollten sich inkrementelle Updates machen lassen
  • Geht man über das Limit der Eingangsspannung hinaus wird die Ausgansspannung (logischerweise) instabil. In einem solchen Fall würde ich den Ausgang eher abschalten oder auf einen „sicheren“ Wert setzen.

Ansonsten scheinen Spannungen und das Stromstärkenlimit gut zu funktionieren. Glaubt man meinen Messgeräten liegt die Schaltung bei 5V (im Leerlauf) um 0,03V daneben, stichweise Proben bei Last sahen auch brauchbar aus. Verstaut werden soll das Ganze in dem Gehäuse eines alten PC-Netzteils. Kaltgerätebuchse, Netzschalter und Lüfter können auch hier gute Dienste verrichten, an der gegenüberliegenden Seite werden einige Kühlrippen für LCD und Tasten entfernt, am Ende kommen noch Buchsen für Messschnüre und eventuell einige Schalter hin. Da mir derzeit noch ein brauchbarer Trafo zur Versorgung der Schaltung fehlt ist noch nichts fest eingebaut.

8467

Obwohl die PC-Anbindung wie oben erwähnt imo nicht so gut gelungen ist habe ich mein PHP mal wieder missbraucht und konnte immerhin den Stromverbrauch meines Handys schön anzeigen, wobei die zeitliche Zuordnung fehlt.

8582

Post aus Kanada

Billigteile aus China, Taiwan oder anderen östlichen Staaten zu organisieren ist inzwischen ja keine Seltenheit mehr. Eine kleine Premiere lag jedoch Heute auf meinem Tisch: Ein kleiner Umschlag aus Kanada. Dank Air-Mail sogar schneller als erwartet. Jetzt heißt es erst mal basteln, denn im Umschlag finden sich so einige Elektroteile, welche (laut Anleitung) ein programmierbares Netzteil ergeben sollten. Dazu ein passendes LCD (natürlich in Blau) sowie ein Universalsensor für Temperatur, Luftfeuchte und Taupunkt, welcher meine kleine „Wetterstation“ ergänzen soll, welche langsam sogar sinnvolle Werte liefert. (Merkzettel: Sensor für Luftdruck). Als kleinen Bonus lag der Sendung noch ein kleiner Bonbon bei – danke dafür.
84428447

MiniPOV3 im Kurzdurchgang

Über etwas gegoogle zum TV-B-Gone bin ich auf der Seite von Ladyada gelandet, auf der sich einiges an Spielereien finden lässt. Inzwischen liegt auch eine auf meinem Tisch: Ein Abgespecktes MiniPOV3. OK, ich habe auf den seriellen Anschluss verzichtet und einen ATMega8 als Controller genutzt, aber es funktioniert. Jetzt muss ichs nurnoch an irgendwas drehendem Festmachen, denn hin- und herwackeln geht auf die Arme…

Zwischen Heiß und Kalt – mein Tempraturmesssystem

Endlich fertig – mein letzter rumfliegender ATMega 8 hat eine sinnvolle Aufgabe gefunden. Auf Basis des Sensormodul2 von S.Huehn werden 4 Dallas 1-Wire-Busse ausgelesen und per RS232 an meinen Homeserver weitergegeben. Im Gegensatz zum Original hat meine Version allerdings mehr Alarmeingänge und zusätzlich Alarmausgänge für die Ansteuerung eines Piezo-Alarmgebers. Dafür musste das LCD dran glauben. Was noch fehlt ist die Ausgabe auf TWI, denn die RS232-Anschlüsse am Server neigen sich langsam dem Ende zu. Die Auswertung des Servers läuft über ein (na, wer erräts?) PHP-Script in Verbindung mit einer RRD. Derzeit ist alles noch im Testbetrieb, aber scheint alles stabil zu laufen.

Bild: http://adlersa.yotaweb.de/blog/wp-content/uploads/2007/09/temp_sm.thumbnail.png