Heartbleed

heartbleed

Nachdem immer wieder mal Fragen zu Heartbleed auftauchen, hier eine kurze Info!
Das Geotrust SSL Zertifikat dieser Website war und ist nicht betroffen.
Auf folgender Seite könnt ihr eure Webserver testen: https://filippo.io/
Diese Seite ist vertrauenswürdig und wurde mir von Geotrust empfolen.
Unter http://mashable.com/ könnt ihr nachschauen, bei welchen Diensten ihr eure Passwörter ändern, und bei welchen ihr mit der Änderung noch warten solltet.

Slotcar Controller V2

Inzwischen ist mein neuer Slotcar Controller fertig.

Die Elektronik ist in ihrem Gehäuse.
Alle benötigten Steuerelemente und Stecker sind eingebaut.

Nachdem die Hardware komplett getestet ist, und alles läuft, habe ich das Gehäuse inzwischen geschlossen.

Mein erstes eigenes Mikrocontrollerprojekt (Software) wächst auch.
An der ein oder anderen Stelle hängt es zwar noch beim c++ Programmieren, und ich muß zum Nachhilfeunterricht.
Beispielsweise habe ich Chan’s FAT32 Treiberpacket nicht zum laufen bekommen.

Aber es geht voran, und inzwischen komme ich ganz gut mit dem GCC und Atmel Studio 6 klar.

Die Basisfunktionen laufen.
Das Display zeigt die diversesten Informationen.
Man wird durch den Kalibrierablauf für den angeschlossenen Controller geführt.
Die gewünschte Drückerkennlinie wird dynamisch berechnet.
Es wird zwischen Poti und SD-Karten Betrieb unterschieden.
Im Poti Betrieb werden die Parameter, die nicht an den Potis eingestellt werden, aus dem EEProm geladen.
Alle Parameter können über die Buttons geändert werden.
Alle Parameter können über USB abgefragt und geändert werden.
Die SD-Karte wird initialisiert, und Dateien können ausgelesen werden.
Die Struktur auf der SD-Karte ist festgelegt.
Man kann die User und Fahrzeug auswählen.

In der Software fehlt jetzt noch:
ASR Berechnung
Motor Preload
SD-Karten Modus
Anzeige der Fahrzeugnummer (danke für die Idee Markus)

Übersicht aller Parameter:

preload
// 0-255 Motorspannung bei 0 power_out; 0 = OFF
zero_brake
// 0-1 Nullpunktbremse ON/OFF
zero_brake_release
// 0-255 *1000 ms Nullpunktbremse loslassen; Wenn preload ON
motion_brake
// 0-255 Bremsintensität der Bremse beim Fahren; 0 = OFF
motion_brake_duretion
// 0-255 *1 msec Bremsdauer; Wenn motion_brake ON
motion_brake_delta
// 0-255 Eingreifgrenze bei negativer PWM-Änderung; Wenn motion_brake ON
motion_brake_msec
// 0-255 Zeit für motion_brake_delta; Wenn motion_brake ON
motion_brake_dynamic
// 0-1 Dynamisches verhalten der Fahrbremse in Intensität und Dauer
boost
// 0-255 Boostintensität des Turbos (PWM); 0 = OFF
boost_duretion
// 0-255 msec Boostdauer; Wenn boost ON
boost_delta
// 0-255 Eingreifgrenze bei positiver PWM-Änderung; Wenn boost ON
boost_msec
// 0-255 Zeit für boost_delta; Wenn boost ON
boost_dynamic
// 0-1 Dynamisches verhalten des Turbos in Intensität und Dauer
asr
// 0-255 maximal x PWM-Schritte pro msec steigern; 0 = OFF
asr_max
// 0-255 ASR verwenden bis x PWM; Wenn asr ON
asr_dynamic
// 0-1 Dynamisches Verhalten der ASR

Nun noch ein paar Bilder

Die Blenden

Das Innenleben

Frontseite

Rückseite

CNC Projekt

Version 3.0

Fräsen von Standard TrueType Schriften hinzugefügt.

TrueType Fonts, SingleLine Fonts, Kerning, Variabler Zeichenabstand, Innencontourberechnung, Füllen, Rotieren, etc…

Version 3.1 (Bugfixes)

Änderung: Splines mit 2 Punkten ergeben eine Gerade.
Änderung: Wenn Fräse unten, wird der erste Punkte einer Lochschiene nicht gebohrt, da schon vorhanden.
Fehlerbeseitigung: Splines bei denen alle X-Punkte oder alle Y-Punkte 0 sind, müssen funktionieren.
Fehlerbeseitigung: Durch einen Typo wurde ein Button im Handmodus nicht deaktiviert.

CNC Projekt

Inzwischen bin ich mit dem Update der Fräsensoftware etwas weiter gekommen.
Ich kann Fonts laden, auf Endmaß skalieren, Abstände festlegen, usw.
Es werden aktuell erst mal nur die Stützpunkte angezeigt, und mit Geraden verbunden. So kann ich mit dem nächsten Schritt, dem Rotieren und berechnen der Konturen zum Füllen besser weiterarbeiten, da ich so auf die Vektoren schließen kann.
Splines ersetzen später die Geraden.

Beim Programmieren und prüfen der Kernings (hierbei werden unschöne Buchstabenkombinationen eingerückt) habe ich dann festgestellt, das dieses zwar in der Spec von Microsoft definirt sind, allerdings nicht zur Anwendung kommen.

Von oben nach unten:
Microsoft Word Arial 146pt
Berechnung ohne Kerning
Berechnung mit Kerning

XML Font Cleaner

Da ich mit meiner Fräse unter anderem auch Beschriften will, habe ich nach einer Lösung gesucht, wie ich normale Windows Fonts über Koordinaten „Zeichnen“ kann.
Dabei bin ich auf diversen Seiten über etwas interresantes gestolpert.
TrueType Schriftarten bestehen aus Koordinaten, die über Splines verbunden sind.
Nachdem ich bei Microsoft auf eine Spec gestoßen bin, in der erklärt wurde, wie das genau funktionieren soll, mußte ich erst mal Basti mit ins Boot holen.

Mit seiner Hilfe und einem Tag diskutieren und Kopf zerbrechen, hatte ich die erste verwendbare Datei. Durch manuelles editieren des in XML dargestellten Codes, konnte ich mit dem G-Code Tool meiner Fräsensoftware schonmal die Koordinatenpunkte darstellen.

Ich habe zum Testen ein B verwendet.
Das verbinden der Koordinaten war ein Kinderspiel. Das nutzen der Koordinaten, um sie über Splines zu verbinden wiederum, hat mir einiges abverlangt. Man kann keine 3 nicht linear angebrachte Punkte über eine Spline verbinden und bekommt eine Gerade heraus.
Inzwischen allerdings habe ich schon die ersten erfolgreichen Tests hinter mich gebracht.

Allerdings stand nun eine andere Herausforderung vor der Tür.
Basti hat mir 2 Gigabyte an TrueType Fonts gegeben. Die Dateien sind mir viel zu wuchtig, um sie in meiner Fräsensoftware abzulegen. Hierzu habe ich ein Programm erstellt, um die Dateien abzuspecken und als XML zu speichern.

Nun nachdem die Fonts eine angenehme Größe aufweisen, gehts daran, eine Funktion in meine Fräsensoftware einzubauen, mit der ich die Fonts auswählen, skalieren und rotieren kann, um sie per Knopfdruck ins CNC Programm einzufügen.

CNC Projekt

So, nun ist es soweit. Die Software, inzwischen Version 2.1, ist fertig.

6600 Zeilen Quellcode, 238 Funktionen und 20 Records in 10 Units.

Da ist der Drops gelutscht!

Ich habe versucht, die Programmierumgebung (ich nenne es den Editor) so einfach wie möglich zu gestalten, um auch Personen, die mit NC-Code nichts am Hut haben, die Bedienung zu ermöglichen.

Durch 140 Registry Einträge, werden alle Einstellungen sowie die Werkzeugliste gespeichert, und das Einstellen fast aller Maschinenparameter ermöglicht.

Selbstverständlich ist auch ein Import von NC-Code möglich, wobei mein G-Code Interpreter durch meinen Debugger hier auch den NC-Code analysiert, und auf Plausibilität und Fehler prüft.
Dadurch kann man die Software auch zum Programmieren von NC-Code nutzen.

Es gibt etliches an Möglichkeiten. Einiges kann man auf den Screenshots der Software sehen.

Als nächstes ermittle ich die Parameter der Fräse, und stelle alle Werte ein.

Gruß Steffen

CNC Projekt

Nach dem mich vor zwei Wochen meine Muse geküsst hat, konnte ich wieder mal an der Software für meine Fräse weiterarbeiten.
Nach einigen Knoten in den Gehirnwindungen, gings wieder besser von der Hand.

Zuerst habe ich einen simplen Simulator programmiert, der das Verhalten der Fräse auf Basis der ursprünglich erstellten Spec imitiert.

Danach habe ich zwei Virtuelle Ports erstellt

welche ich über eine Pipe „\\.\pipe\vpipe“ verbunden habe.

Nun konnte ich die Schnittstellen-Unit für meine Software programmieren, ohne immer an der Hardware testen zu müssen.
Wärend der arbeiten, sind mir ein paar Dinge aufgefallen, die mir nicht so gut gefallen haben.
Diese wurde sogleich in der Firmware der Steuerung geändert.

Heute habe ich die letzte Verbesserung in den Microcontroller der Steuerung eingespielt, und getestet.

Die Software zeigt nun stetig die Antwortzeit der Steuerung an.

Der Screenshot zeigt die Antwortzeit des Simulators. Zur Steuerung sind es konstant 15ms.

CNC Projekt

Heute bin ich mit Hilfe von Basti wieder einen gewaltigen Schritt weiter gekommen.

Die letzten Tage habe ich meine Software Scope (DE: Oszilloskop) optimiert, wärend Basti an der Firmware geschraubt und optimiert hat. Die Bussgeschwindigkeit auf dem Com-Port ist inzwischen auf üble 460800 Baud eingestellt, um jede Millisekunde alle Benötigten Daten in Echtzeit zur Verfügung zu haben.

Auf Wunsch habe ich noch eine Option ins Scope eingebaut, um den Datenstrom in eine Datei (.csv) zu schreiben.
Mit Excel kann man dann schön die Werte analysieren.

Basti hat inzwischen die Firmware soweit fertiggestellt, das ein PID-Regler integriert ist, um die Pulsweitenmodulation dynamisch zu regeln und beim verfahren den gewünschten Stromwert hält. Es gibt einen Idle Strom (Ruhezustand), einen Verfahrstromwert, und einen Maximalstromwert. Im Idelmode hällt der Motor seine Possition, beim Verfahren wird der Sollstrom auf den Wert des Verfahrstroms geregelt, welcher nach einer Sicherheitszeit wieder auf den Idelwert fällt. Pulslänge, Hi-Phasenlänge, Idel-Strom, Verfahr-Strom, Max-Strom, Proportional, Integral, und Diferenzial – Regelkonstante, Einschaltverzögerung, Abfallverzögerung, Geberschrittweite, und viele Werte mehr, lassen sich über USB verändern und fest auf den Flashspeicher der Steuerung schreiben.

Heute, nachdem wir beide soweit waren, haben wir zusammen die Optimierung der Regelung, und noch ein bisschen feintuning an der Firmware und den Regelwerten vorgenommen.

Dann gings ans Messen der Leistungsgrenzen, und das justieren der Steuerung wenn die Motoren unter Last stehen.
Angefangen mit Testwerten haben wir es gleich gewagt, den Verfahrstrom um 100% zu erhöhen, und die Maximalleistung auf 80% (Pulsweite zu Hi-Phase) zu setzen. Drehmomentsimulator auf 1,5 Nm eingestellt, Verfahrimpuls drauf, und …

Das Läuft aber gut, ich hätte hier erstmal nicht mehr als 1 Nm erwartet

Am Ende der Tests waren es dann weit über 2,5 Nm und es wäre sicherlich noch mehr gegangen.

Wow, wie der das rumzieht …

Zugegebenermaßen war der Motor danach doch schon recht heiß. Aus Temperaturgründen, und natürlich auch aus Angst, den Rotor zu entmagnetisieren, (Hier traten kurzzeitig Bedenken wegen eines Fehlers auf) haben wir den Strom geringfügig reduziert, wobei die Maximalleistung noch bei 80% liegt.

Das zu sehen, wie alles harmonisch zusammenspielt, wie toll das alles Funktioniert, entschädigt 10x die lange Zeit beim bauen der Steuerung.

Als nächstes habe ich dann die Geschwindigkeit der Verfahrimpulse erhöht und mit einem Drehzahlmesser die U/min des Motors gemessen.
Auf die Achse umgelegt, könnte ein Tischvorschub von 0-420 mm/min realistisch machbar sein.

Um die genauen Werte zu ermitteln, muß nun allerdings als nächstes die Hardware gebaut werden, die Motoren auf die Hardware abgestimmt, und getestet werden.

Gruß Steffen